{"version":3,"sources":["webpack:///./node_modules/svg4everybody/dist/svg4everybody.js","webpack:///./node_modules/swiper/dist/js/swiper.esm.bundle.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./src/static/scripts/plugins/jquery.dotdotdot.js","webpack:///./src/static/scripts/plugins/jquery.fancybox.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./src/static/scripts/script.js"],"names":["$","undef","fn","dotdotdot","o","length","debug","selector","each","$dot","orgContent","contents","data","trigger","attr","css","bind_events","bind","e","c","removeClass","preventDefault","stopPropagation","opts","height","maxHeight","call","getTrueInnerHeight","tolerance","nodeType","append","$inr","wrapInner","children","detach","end","clone","find","replaceWith","after","trunc","conf","afterElement","show","test","wrap","ellipsis","isFunction","callback","isTruncated","unwatch","unbind_events","unbind","watch","$window","window","_wWidth","width","_wHeight","dotId","windowResizeFix","watchInt","clearInterval","setTimeout","watchOrg","getSizes","setInterval","is","watchNew","extend","defaults","lastCharacter","remove","Array","defaultArrays","noEllipsis","getElement","msg","$elem","$elements","empty","a","l","$e","eq","$d","$i","notx","noty","ellipsisElement","addClass","txt","getTextContent","space","indexOf","separator","textArr","split","position","midPos","startPos","endPos","fallbackToLetter","m","Math","floor","setTextContent","slice","join","toggle","addEllipsis","$w","parent","afterLength","closest","findLastTextNode","$parent","trim","html","innerHeight","inArray","innerWidth","content","innerText","nodeValue","textContent","getPrevNode","n","previousSibling","$el","$top","excludeCurrent","p","text","last","jquery","h","z","parseInt","isNaN","_orgHtml","str","apply","arguments","_orgText","jQuery","document","ready","watch_window","hasClass","watch_timer","classList","index","item","matchResult","match","Number","x","Object","on","undefined","speed","loop","opacity","margin","gutter","infobar","buttons","slideShow","fullScreen","thumbs","closeBtn","smallBtn","image","preload","protect","ajax","settings","fancybox","iframe","tpl","scrolling","baseClass","slideClass","baseTpl","spinnerTpl","errorTpl","closeTpl","parentEl","touch","keyboard","focus","closeClickOutside","beforeLoad","noop","afterLoad","beforeMove","afterMove","onComplete","onInit","beforeClose","afterClose","onActivate","onDeactivate","$W","$D","called","isQuery","obj","hasOwnProperty","requestAFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","isElementInViewport","el","rect","getBoundingClientRect","bottom","right","left","documentElement","clientWidth","top","clientHeight","FancyBox","self","id","group","currIndex","prevIndex","prevPos","currPos","firstRun","createGroup","$lastFocus","activeElement","blur","slides","init","prototype","galleryHasHtml","testWidth","$container","scrollTop","scrollLeft","getInstance","isTouch","key","type","appendTo","hide","prependTo","$refs","container","bg","controls","slider_wrap","slider","caption","activate","current","jumpTo","items","makeArray","i","$item","src","srcParts","isPlainObject","options","thumb","srcset","$orig","charAt","$thumb","shift","modal","push","addEvents","removeEvents","close","previous","next","originalEvent","update","instance","target","contains","keycode","keyCode","which","SlideShow","FullScreen","Thumbs","off","duration","to","pos","isAnimating","abs","$slide","updateSlide","createSlide","isMoved","isComplete","updateControls","loadSlide","$ghost","found","isLoaded","zoomInOut","$what","$placeholder","thumbPos","offset","slidePos","props","start","stop","parseFloat","scaleX","scaleY","getFitPos","getTranslate","$image","updateCursor","setTranslate","reset","canPan","rez","isScaledDown","scaleToActual","y","imgPos","posX","posY","canvasWidth","canvasHeight","newImgWidth","newImgHeight","animate","scaleToFit","slide","$content","imgWidth","imgHeight","minRatio","min","andSlides","andContent","leftValue","leftPos","isClosing","nextWidth","nextHeight","canScale","ajaxLoad","isLoading","setImage","setIframe","setContent","setError","showLoading","url","success","textStatus","error","jqXHR","one","abort","temp","pxRatio","windowWidth","hasError","devicePixelRatio","map","ret","forEach","value","substring","postfix","sort","b","j","revealImage","setBigImage","$img","clearTimeout","timouts","naturalWidth","naturalHeight","complete","button","isRevealed","$iframe","replace","Date","getTime","isReady","$wrap","$contents","$body","scrollWidth","frameWidth","frameHeight","ignore","contentWindow","ceil","outerWidth","outerHeight","prepend","hideLoading","parents","insertAfter","placeholder","replaceAll","$spinner","siblings","prev","filter","uid","body","done","proxy","cleanUp","hideControls","removeAttr","name","args","unshift","toggleControls","force","isHiddenControls","$caption","toggleClass","version","command","open","all","createTouch","navigator","userAgent","use3d","div","createElement","getComputedStyle","getPropertyValue","documentMode","matrix","get","transform","easing","easeOutCubic","t","d","easeInCubic","easeOutSine","sin","PI","easeInSine","cos","removeData","from","lastTime","animTime","curr","diff","finish","frame","timestamp","now","prop","animateID","_run","currentTarget","format","params","param","media","youtube","matcher","autoplay","autohide","fs","rel","hd","wmode","enablejsapi","html5","paramPlace","vimeo","show_title","show_byline","show_portrait","fullscreen","api","metacafe","dailymotion","additionalInfos","autoStart","vine","instagram","google_maps","urlParams","provider","decodeURIComponent","pointers","result","touches","changedTouches","pageX","pageY","clientX","clientY","distance","point2","point1","what","sqrt","pow","isClickable","onclick","hasScrollbars","overflowY","overflowX","vertical","scrollHeight","horizontal","isScrollable","Guestures","$slider","destroy","ontouchstart","$target","startPoints","round","startEvent","endPoints","ontap","startTime","distanceX","distanceY","canTap","isPanning","isSwiping","isZooming","sliderStartPos","contentStartPos","contentLastPos","centerPointStartX","centerPointStartY","percentageOfImageAtPinchPointX","percentageOfImageAtPinchPointY","startDistanceBetweenFingers","ontouchmove","newPoints","onSwipe","onPan","onZoom","swiping","angle","atan2","sliderLastPos","newOffsetX","newOffsetY","newPos","limitMovement","newWidth","newHeight","minTranslateX","minTranslateY","maxTranslateX","maxTranslateY","currentOffsetX","currentOffsetY","max","limitPosition","currentWidth","currentHeight","endDistanceBetweenFingers","pinchRatio","translateFromZoomingX","translateFromZoomingY","centerPointEndX","centerPointEndY","translateFromTranslatingX","translateFromTranslatingY","ontouchend","dMs","panning","zooming","velocityX","velocityY","speedX","speedY","endPanning","endZooming","endSwiping","isActive","tapped","timer","$button","set","clear","fnMap","val","request","elem","requestFullscreen","ALLOW_KEYBOARD_INPUT","exit","exitFullscreen","isFullscreen","Boolean","fullscreenElement","enabled","fullscreenEnabled","button_fs","requestOnStart","fullscreenchange","FancyThumbs","$grid","$list","isVisible","create","list","thumbWidth","thumbHeight","widthRatio","heightRatio","first","second","showOnStart","hideOnClosing","escapeSelector","sel","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","toString","currentHash","parseUrl","hash","location","substr","pop","gallery","triggerFromUrl","getGallery","origHash","history","pushState","title","pathname","search","svg4everybody","showinfo","swiperButtons","navigation","prevEl","containerSelector","nextEl","swiperButtonsUnderscore","element","slidesPerView","spaceBetween","itemActive","block","findGetParameter","headerHeight","href","offsetTop","parameterName","tmp"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,yBAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,qBAAqB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,4BAA4B,gEAAgE;AAC5F;AACA;AACA;AACA,CAAC,E;;;;;;;;;ACzGD;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE+T;AACpS;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4CAA4C,GAAG,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,gCAAgC;AACvD,mBAAmB,oCAAoC;;AAEvD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB,uCAAuC;AAC3D,oDAAoD,oBAAoB;AACxE;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,qCAAqC,UAAU;AAC/C,SAAS;AACT,sCAAsC,UAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,WAAW,yCAAyC,KAAK;AAC7E;AACA;AACA,+CAA+C,WAAW,yCAAyC,KAAK;AACxG,yBAAyB,YAAY,yCAAyC,KAAK;AACnF;;AAEA;AACA;AACA;AACA,+CAA+C,WAAW,yCAAyC,KAAK;AACxG,yBAAyB,YAAY,yCAAyC,KAAK;AACnF;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,gBAAgB,aAAa,KAAK;AAC7D,uBAAuB,iBAAiB,aAAa,KAAK;AAC1D,KAAK,kBAAkB,kBAAkB,aAAa,KAAK;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,4CAA4C;AAC3D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA,oDAAoD,UAAU;AAC9D;;AAEA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,4BAA4B;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO,+BAA+B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA,wBAAwB,wBAAwB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,iCAAiC,GAAG,+BAA+B,GAAG,+BAA+B;;AAE1M;AACA;AACA,6CAA6C,kBAAkB,4BAA4B,YAAY;AACvG,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB,QAAQ,2BAA2B,6BAA6B,UAAU;AAClH;AACA,KAAK;AACL;AACA,sBAAsB,kBAAkB,GAAG,2BAA2B,4BAA4B,UAAU;AAC5G;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB;AAC5D;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB,QAAQ,2BAA2B,6BAA6B,0CAA0C;AAClJ;AACA,KAAK;AACL;AACA,sBAAsB,kBAAkB,GAAG,2BAA2B,4BAA4B,0CAA0C;AAC5I;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB,QAAQ,2BAA2B,6BAA6B,0CAA0C;AAClJ;AACA,KAAK;AACL;AACA,sBAAsB,kBAAkB,GAAG,2BAA2B,4BAA4B,0CAA0C;AAC5I;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gHAAwC,kBAAkB;AAC1D;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kEAAkE,EAAE,MAAM,EAAE,MAAM,EAAE;AACpF,2CAA2C,EAAE,MAAM,EAAE;AACrD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS,qCAAqC;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,6BAA6B;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS,oBAAoB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS,qBAAqB;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB,4BAA4B,UAAU,UAAU,2BAA2B;AACrH;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,kBAAkB,4BAA4B,UAAU,UAAU,2BAA2B;AACnH;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,qBAAqB;AAC9B;AACA,0BAA0B,kBAAkB,GAAG,2BAA2B;;AAE1E,uCAAuC,kBAAkB;;AAEzD;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC,mMAAuE,kBAAkB,GAAG,uBAAuB;AACnH;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,iBAAiB,yBAAyB;AAC1C;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,6BAA6B;AACtC,0BAA0B,kBAAkB,GAAG,2BAA2B;AAC1E;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,qBAAqB;AAC9B;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,kCAAkC;;AAE3C;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,kCAAkC;AAC3C;AACA;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,SAAS,kCAAkC;;AAE3C;AACA;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;AACA;AACA;;AAEA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,oBAAoB;AAChE,sCAAsC,oBAAoB;AAC1D;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,SAAS,kBAAkB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gLAAwG,sBAAsB;AAC9H;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,aAAa;;AAEtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS,2CAA2C;;AAEpD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,4HAA4H,gCAAgC;AAC5J;AACA,iGAAiG,0BAA0B;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,8HAA8H,gCAAgC;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,SAAS,kBAAkB;;AAE3B;AACA;;AAEA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gCAAgC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,4BAA4B;AAC5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,KAAK;;AAEL;AACA,wCAAwC;AACxC;;AAEA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,yCAAyC;;AAEzC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,WAAW,kBAAkB;AACtE;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,wCAAwC,2BAA2B;;AAEnE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA,2CAA2C,mBAAmB;;AAE9D;AACA,kDAAkD,oBAAoB;AACtE,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,gDAAgD;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yBAAyB;AAC1D,KAAK;AACL,gCAAgC,iBAAiB;AACjD;AACA,qCAAqC,yBAAyB,4BAA4B,EAAE;AAC5F;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,mEAAmE,UAAU;AAC7E;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAyB,yBAAyB,6BAA6B,SAAS,IAAI,MAAM;AAClG;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yBAAyB,wCAAwC,+BAA+B;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;AACA,OAAO,OAAO;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,6CAA6C;AAC7C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,mBAAmB;;AAE9B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,+DAA+D;AAC9H;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yBAAyB,GAAG,yBAAyB,QAAQ,yBAAyB,aAAa,yBAAyB,QAAQ,yBAAyB,aAAa,yBAAyB;AAChO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA;AACA;AACA,6BAA6B,yBAAyB;AACtD;AACA,6BAA6B,yBAAyB;AACtD;AACA;AACA;AACA;AACA,6BAA6B,yBAAyB;AACtD;AACA,6BAA6B,yBAAyB;AACtD;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,sCAAsC,yBAAyB;AAC/D;AACA;AACA;AACA,yBAAyB,yBAAyB;AAClD;AACA,yBAAyB,yBAAyB;AAClD;AACA;AACA,yBAAyB,yBAAyB;AAClD;AACA,yBAAyB,yBAAyB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,cAAc;AACjF;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,mBAAmB,4BAA4B,0CAA0C,OAAO,WAAW,OAAO;AAClH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA,SAAS;AACT,gCAAgC,qBAAqB,UAAU,mBAAmB,MAAM,qBAAqB;AAC7G;AACA;AACA;AACA,+CAA+C,mBAAmB;AAClE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,wBAAwB,oBAAoB;AAC5C;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,yCAAyC,4BAA4B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,sBAAsB,qBAAqB,EAAE,YAAY;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,yCAAyC;AACpD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD,OAAO;AACP,wCAAwC,OAAO;AAC/C;AACA,kCAAkC,QAAQ;AAC1C,KAAK;AACL;AACA,8CAA8C,OAAO;AACrD,OAAO;AACP,wCAAwC,OAAO;AAC/C;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,WAAW,YAAY;AACvB,WAAW,eAAe;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C,KAAK;AACL,mCAAmC,SAAS;AAC5C;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA,WAAW,+BAA+B;AAC1C,WAAW,2BAA2B;;AAEtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,eAAe;AAC1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,eAAe;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,WAAW,YAAY;AACvB,WAAW,MAAM;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gFAAgF,iCAAiC;AACjH,iFAAiF,gCAAgC;AACjH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gFAAgF,iCAAiC;AACjH,iFAAiF,gCAAgC;AACjH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,WAAW,4BAA4B;AACvC;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B,kCAAkC;AACjE;AACA,yGAAiC,kCAAkC;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,MAAM;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,aAAa,uCAAuC;AACpD,KAAK;AACL,aAAa,yBAAyB;AACtC;AACA;AACA,aAAa,2BAA2B;AACxC,KAAK;AACL,aAAa,aAAa;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,EAAE,IAAI,EAAE;AAC3C,KAAK;AACL;AACA,mCAAmC,EAAE,IAAI,EAAE,eAAe,aAAa;AACvE;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;AACH;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,sBAAsB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,WAAW;AACtE,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,WAAW;AACtG;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,WAAW,2BAA2B;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,eAAe,MAAM,eAAe;AACtF,GAAG;AACH;AACA;AACA;AACA,WAAW,2BAA2B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+EAA+E,eAAe,MAAM,eAAe;AACnH,GAAG;AACH;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;;AAE5B;AACA;AACA;AACA,yDAAyD,sBAAsB;AAC/E;AACA;;AAEA,iCAAiC,wBAAwB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kEAAkE,WAAW,MAAM,WAAW;AAC9F,2EAA2E,WAAW;AACtF,GAAG;AACH;AACA;;AAEA;AACA;AACA,WAAW,UAAU;;AAErB;AACA;AACA;AACA,yDAAyD,sBAAsB;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,sIAAsI,gCAAgC;;AAEtK;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,sDAAsD,kCAAkC;AACxF,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,sIAAsI,gCAAgC;;AAEtK;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,kCAAkC;AACzF,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,0BAA0B;AAC1B,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,yBAAyB,4BAA4B,SAAS;AACrG;;AAEA,oCAAoC,oBAAoB,QAAQ,mBAAmB,SAAS,oBAAoB;AAChH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD,WAAW;AAC9D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA,0FAA0F,mBAAmB,UAAU,kCAAkC;AACzJ;AACA,WAAW;AACX,mEAAmE,kCAAkC,4BAA4B,mBAAmB;AACpJ;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,wBAAwB,4BAA4B,SAAS;AACjG;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA,OAAO;AACP,KAAK;AACL,+BAA+B,iCAAiC;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,cAAc;AAC/D;AACA;AACA;AACA,8BAA8B,iBAAiB;AAC/C;AACA;AACA,OAAO;AACP,kDAAkD,4BAA4B;AAC9E;;AAEA,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA,iCAAiC,kBAAkB;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,8CAA8C,qCAAqC;AACnF;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,WAAW,mBAAmB;;AAE9B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,OAAO;AAC3F,OAAO;AACP;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C,qCAAqC;AACnF;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,qCAAqC;AACpF;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,8GAAsC,qCAAqC;AAC3E,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,IAAI,GAAG,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,uFAAmC,QAAQ;AAC3C,KAAK;AACL,oFAAgC,QAAQ;AACxC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yBAAyB,cAAc,QAAQ;AACnG;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uGAAmD,uDAAuD;AAC1G,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kCAAkC,GAAG,MAAM,GAAG;AAC9C;AACA,GAAG;AACH;AACA;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY,YAAY,KAAK;AACxD,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC,+BAA+B,eAAe,8BAA8B,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sIAA8D,8BAA8B;AAC5F;AACA;AACA;AACA,qIAA6D,kCAAkC;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,eAAe;AAC7D,2CAA2C,eAAe;AAC1D,0CAA0C,eAAe;AACzD,sCAAsC,eAAe;AACrD,KAAK;;AAEL;AACA;AACA,oDAAoD,wCAAwC,MAAM,iBAAiB,yCAAyC,mBAAmB;AAC/K,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO,OAAO,OAAO,qBAAqB,+BAA+B,MAAM,2BAA2B;AACrJ;AACA;AACA;AACA;AACA,sCAAsC,QAAQ,cAAc,0CAA0C,eAAe,2CAA2C;AAChK,GAAG;AACH;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE,gCAAgC,qCAAqC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,4BAA4B;AACvC,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,sIAA8D,uCAAuC;AACrG;AACA;AACA;AACA,qIAA6D,2CAA2C;AACxG;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,GAAG,MAAM,GAAG,mBAAmB,QAAQ,eAAe,QAAQ;AAChG;AACA,GAAG;AACH;AACA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE,gCAAgC,qCAAqC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,WAAW,KAAK,WAAW,KAAK,WAAW,eAAe,QAAQ,eAAe,QAAQ;;AAErI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yIAAiE,8BAA8B;AAC/F;AACA;AACA;AACA,wIAAgE,kCAAkC;AAClG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA,gCAAgC,qCAAqC;AACrE,gCAAgC,qCAAqC;;AAErE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3iNA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC2B;;AAE3B;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kCAAkC;AACrD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C,IAAI;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mCAAmC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS,IAAI;AAC/B;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,uBAAuB,qBAAqB;AAC5C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA,KAAK;AACL,iBAAiB,qBAAqB;AACtC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA,KAAK;AACL,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA,KAAK;AACL,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB,iBAAiB;AAClC,oCAAoC;AACpC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB,iBAAiB;AAClC;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEQ;;;;;;;;;;AC5zCR;;;;;;;;;;;;;AAaA,CAAC,UAAUA,CAAV,EAAaC,KAA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","file":"script.js","sourcesContent":["!function(root, factory) {\n \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function() {\n return root.svg4everybody = factory();\n }) : \"object\" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n function embed(parent, svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute(\"viewBox\", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n // append the fragment into the svg\n parent.appendChild(fragment);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.parent, item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live collection\n for (// get the cached index\n var index = 0; index < uses.length; ) {\n // get the current \n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/svg4everybody/dist/svg4everybody.js\n// module id = 108\n// module chunks = 0","/**\n * Swiper 4.3.3\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2018 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: June 5, 2018\n */\n\nimport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, remove, add, styles } from 'dom7/dist/dom7.modular';\nimport { window, document } from 'ssr-window';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = Methods[methodName];\n});\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\n\nconst Support = (function Support() {\n const testDiv = document.createElement('div');\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!(window.navigator.pointerEnabled || window.PointerEvent),\n prefixedPointerEvents: !!window.navigator.msPointerEnabled,\n\n transition: (function checkTransition() {\n const style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (window.Modernizr && window.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n const style = testDiv.style;\n return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n }()),\n\n flexbox: (function checkFlexbox() {\n const style = testDiv.style;\n const styles$$1 = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (let i = 0; i < styles$$1.length; i += 1) {\n if (styles$$1[i] in style) return true;\n }\n return false;\n }()),\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n handler.apply(self, args);\n self.off(events, onceHandler);\n }\n return self.on(events, onceHandler, priority);\n }\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else {\n self.eventsListeners[event].forEach((eventHandler, index$$1) => {\n if (eventHandler === handler) {\n self.eventsListeners[event].splice(index$$1, 1);\n }\n });\n }\n });\n return self;\n }\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data$$1;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data$$1 = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data$$1 = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data$$1);\n });\n }\n });\n return self;\n }\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach(m => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nfunction updateSize () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n\nfunction updateSlides () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index$$1 = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide\n .css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (swiper.isHorizontal()) {\n slideSize = slide[0].getBoundingClientRect().width +\n parseFloat(slideStyles.getPropertyValue('margin-left')) +\n parseFloat(slideStyles.getPropertyValue('margin-right'));\n } else {\n slideSize = slide[0].getBoundingClientRect().height +\n parseFloat(slideStyles.getPropertyValue('margin-top')) +\n parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index$$1) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index$$1) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index$$1 += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (!Support.flexbox || params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.css({ marginLeft: `${spaceBetween}px` });\n else slides.css({ marginRight: `${spaceBetween}px` });\n } else slides.css({ marginBottom: `${spaceBetween}px` });\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n\nfunction updateAutoHeight (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index$$1 = swiper.activeIndex + i;\n if (index$$1 > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index$$1)[0]);\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress =\n (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size) ||\n (slideAfter > 0 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n}\n\nfunction updateProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n}\n\nfunction updateClickedSlide (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (!params.virtualTranslate) {\n if (Support.transforms3d) $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n else $wrapperEl.transform(`translate(${x}px, ${y}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n};\n\nfunction setTransition (duration, byController) {\n const swiper = this;\n\n swiper.$wrapperEl.transition(duration);\n\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n\nfunction transitionEnd$1 (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex } = swiper;\n swiper.animating = false;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n\nvar transition$1 = {\n setTransition,\n transitionStart,\n transitionEnd: transitionEnd$1,\n};\n\nfunction slideTo (index$$1 = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index$$1;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl,\n } = swiper;\n if (swiper.animating && params.preventIntercationOnTransition) {\n return false;\n }\n\n let snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n\n if (speed === 0 || !Support.transition) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd$$1(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nfunction slideToLoop (index$$1 = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index$$1;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map(val => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n const prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let index$$1 = swiper.activeIndex;\n const snapIndex = Math.floor(index$$1 / swiper.params.slidesPerGroup);\n\n if (snapIndex < swiper.snapGrid.length - 1) {\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n index$$1 = swiper.params.slidesPerGroup;\n }\n }\n\n return swiper.slideTo(index$$1, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) ||\n (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n\nfunction loopCreate () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index$$1, el) => {\n const slide = $(el);\n if (index$$1 < swiper.loopedSlides) appendSlides.push(el);\n if (index$$1 < slides.length && index$$1 >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index$$1);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\nfunction loopFix () {\n const swiper = this;\n const {\n params, activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n}\n\nfunction loopDestroy () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) return;\n swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n\nfunction prependSlide (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index$$1, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index$$1 <= 0) {\n swiper.prependSlide(slides);\n return;\n } else if (index$$1 >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index$$1 ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index$$1; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index$$1 ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n\nconst Device = (function Device() {\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windows: false,\n iphone: false,\n ipod: false,\n ipad: false,\n cordova: window.cordova || window.phonegap,\n phonegap: window.cordova || window.phonegap,\n };\n\n const windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n const ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n\n\n // Windows\n if (windows) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windows = true;\n }\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.iphone = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n\n // Webview\n device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n\n // Minimal UI\n if (device.os && device.os === 'ios') {\n const osVersionArr = device.osVersion.split('.');\n const metaViewport = document.querySelector('meta[name=\"viewport\"]');\n device.minimalUi =\n !device.webView &&\n (ipod || iphone) &&\n (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) &&\n metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nfunction onTouchStart (event) {\n const swiper = this;\n const data$$1 = swiper.touchEventsData;\n const { params, touches } = swiper;\n if (swiper.animating && params.preventIntercationOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n data$$1.isTouchEvent = e.type === 'touchstart';\n if (!data$$1.isTouchEvent && 'which' in e && e.which === 3) return;\n if (data$$1.isTouched && data$$1.isMoved) return;\n if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$(e).closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n if (\n Device.ios &&\n !Device.cordova &&\n params.iOSEdgeSwipeDetection &&\n ((startX <= params.iOSEdgeSwipeThreshold) ||\n (startX >= window.screen.width - params.iOSEdgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data$$1, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data$$1.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data$$1.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($(e.target).is(data$$1.formElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data$$1.formElements) &&\n document.activeElement !== e.target\n ) {\n document.activeElement.blur();\n }\n if (preventDefault && swiper.allowTouchMove) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n const swiper = this;\n const data$$1 = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data$$1.isTouched) {\n if (data$$1.startMoving && data$$1.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data$$1.isTouchEvent && e.type === 'mousemove') return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data$$1.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data$$1.touchStartTime = Utils.now();\n }\n return;\n }\n if (data$$1.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data$$1.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data$$1.formElements)) {\n data$$1.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data$$1.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n\n if (typeof data$$1.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data$$1.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data$$1.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data$$1.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data$$1.startMoving = true;\n }\n }\n if (data$$1.isScrolling) {\n data$$1.isTouched = false;\n return;\n }\n if (!data$$1.startMoving) {\n return;\n }\n swiper.allowClick = false;\n e.preventDefault();\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data$$1.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data$$1.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data$$1.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data$$1.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data$$1.currentTranslate = diff + data$$1.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data$$1.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data$$1.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data$$1.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data$$1.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data$$1.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data$$1.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data$$1.currentTranslate < data$$1.startTranslate) {\n data$$1.currentTranslate = data$$1.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data$$1.currentTranslate > data$$1.startTranslate) {\n data$$1.currentTranslate = data$$1.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data$$1.allowThresholdMove) {\n if (!data$$1.allowThresholdMove) {\n data$$1.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data$$1.currentTranslate = data$$1.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data$$1.currentTranslate = data$$1.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data$$1.velocities.length === 0) {\n data$$1.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data$$1.touchStartTime,\n });\n }\n data$$1.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data$$1.currentTranslate);\n // Update translate\n swiper.setTranslate(data$$1.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n const swiper = this;\n const data$$1 = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data$$1.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data$$1.allowTouchCallbacks = false;\n if (!data$$1.isTouched) {\n if (data$$1.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data$$1.isMoved && data$$1.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data$$1.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap', e);\n if (timeDiff < 300 && (touchEndTime - data$$1.lastClickTime) > 300) {\n if (data$$1.clickTimeout) clearTimeout(data$$1.clickTimeout);\n data$$1.clickTimeout = Utils.nextTick(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.emit('click', e);\n }, 300);\n }\n if (timeDiff < 300 && (touchEndTime - data$$1.lastClickTime) < 300) {\n if (data$$1.clickTimeout) clearTimeout(data$$1.clickTimeout);\n swiper.emit('doubleTap', e);\n }\n }\n\n data$$1.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data$$1.isTouched || !data$$1.isMoved || !swiper.swipeDirection || touches.diff === 0 || data$$1.currentTranslate === data$$1.startTranslate) {\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n return;\n }\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data$$1.currentTranslate;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n } else if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data$$1.velocities.length > 1) {\n const lastMoveEvent = data$$1.velocities.pop();\n const velocityEvent = data$$1.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data$$1.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data$$1.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data$$1.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data$$1.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + params.slidesPerGroup);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n if (params.freeMode) {\n const newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n {\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n const capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.addEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n const capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.removeEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n attachEvents,\n detachEvents,\n};\n\nfunction setBreakpoint () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n // Set breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakPointsParams = breakpoint in breakpoints ? breakpoints[breakpoint] : swiper.originalParams;\n const needsReLoop = params.loop && (breakPointsParams.slidesPerView !== params.slidesPerView);\n\n Utils.extend(swiper.params, breakPointsParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n swiper.emit('breakpoint', breakPointsParams);\n }\n}\n\nfunction getBreakpoint (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n const points = [];\n Object.keys(breakpoints).forEach((point) => {\n points.push(point);\n });\n points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n for (let i = 0; i < points.length; i += 1) {\n const point = points[i];\n if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isIE: !!window.navigator.userAgent.match(/Trident/g) || !!window.navigator.userAgent.match(/MSIE/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nfunction addClasses () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (!Support.flexbox) {\n suffixes.push('no-flexbox');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n // WP8 Touch Events Fix\n if (Browser.isIE && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push(`wp8-${params.direction}`);\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n\nfunction preloadImages () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n\nvar images = {\n loadImage,\n preloadImages,\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const wasLocked = swiper.isLocked;\n\n swiper.isLocked = swiper.snapGrid.length === 1;\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventIntercationOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n\nconst prototypes = {\n update,\n translate,\n transition: transition$1,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object') return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object' &&\n !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index$$1, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n const $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n } else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static get Class() {\n return SwiperClass;\n }\n static get $() {\n return $;\n }\n}\n\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n\nvar Resize = {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n mutations.forEach((mutation) => {\n swiper.emit('observerUpdate', mutation);\n });\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: false });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1);\n slidesBefore = slidesPerGroup;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset$$1 = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset: offset$$1,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset$$1 !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset$$1}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset$$1,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index$$1) => {\n swiper.$wrapperEl.append(renderSlide(slides[index$$1], index$$1));\n });\n prependIndexes.sort((a, b) => a < b).forEach((index$$1) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index$$1], index$$1));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset$$1}px`);\n onRendered();\n },\n renderSlide(slide, index$$1) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index$$1]) {\n return swiper.virtual.cache[index$$1];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index$$1))\n : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index$$1);\n if (params.cache) swiper.virtual.cache[index$$1] = $slideEl;\n return $slideEl;\n },\n appendSlide(slide) {\n const swiper = this;\n swiper.virtual.slides.push(slide);\n swiper.virtual.update(true);\n },\n prependSlide(slide) {\n const swiper = this;\n swiper.virtual.slides.unshift(slide);\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n newCache[cachedIndex + 1] = cache[cachedIndex];\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideNext(0);\n },\n};\n\nvar Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n swiper.virtual.update();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth &&\n point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !rtl) || (kc === 37 && rtl)) swiper.slideNext();\n if ((kc === 37 && !rtl) || (kc === 39 && rtl)) swiper.slidePrev();\n } else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) swiper.slideNext();\n if (kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported &&\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n event: (function getEvent() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n }()),\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (!swiper.mouseEntered && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data$$1 = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data$$1.pixelX) > Math.abs(data$$1.pixelY)) delta = data$$1.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data$$1.pixelY) > Math.abs(data$$1.pixelX)) delta = data$$1.pixelY;\n else return true;\n } else {\n delta = Math.abs(data$$1.pixelX) > Math.abs(data$$1.pixelY) ? -data$$1.pixelX * rtlFactor : -data$$1.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n }\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n } else {\n // Freemode or scrollContainer:\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest();\n }, 300);\n }\n // Emit event\n swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n enable() {\n const swiper = this;\n if (!Mousewheel.event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n if (!Mousewheel.event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nvar Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n lastScrollTime: Utils.now(),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.nextEl === 'string' &&\n $nextEl.length > 1 &&\n swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.prevEl === 'string' &&\n $prevEl.length > 1 &&\n swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', (e) => {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n });\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', (e) => {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n });\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click');\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click');\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nvar Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(e.target).is($prevEl) &&\n !$(e.target).is($nextEl)\n ) {\n if ($nextEl) $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n if ($prevEl) $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n },\n },\n};\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index$$1, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index$$1 = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index$$1 += swiper.loopedSlides;\n swiper.slideTo(index$$1);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nvar Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n swiper.pagination.$el.length > 0 &&\n !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n if (Support.transforms3d) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n } else {\n $dragEl.transform(`translateX(${newPos}px)`);\n }\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n if (Support.transforms3d) {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n } else {\n $dragEl.transform(`translateY(${newPos}px)`);\n }\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbarHide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el, dragSize, trackSize } = scrollbar;\n\n let pointerPosition;\n if (swiper.isHorizontal()) {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n } else {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n }\n let positionRatio;\n positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEvents, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListener ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListener ? { passive: true, capture: false } : false;\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n if (Support.touch) {\n target.addEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);\n }\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEvents, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListener ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListener ? { passive: true, capture: false } : false;\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n if (Support.touch) {\n target.removeEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);\n }\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nvar Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index$$1, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index$$1, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index$$1, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nvar Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest('.swiper-slide');\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n swiper.zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal() &&\n (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } else if (\n !swiper.isHorizontal() &&\n (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n },\n};\n\nvar Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n\nconst Lazy = {\n loadInSlide(index$$1, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index$$1 === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index$$1}\"]`)\n : swiper.slides.eq(index$$1);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index$$1) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index$$1}\"]`).length) {\n return true;\n }\n } else if (slides[index$$1]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index$$1 = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index$$1);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nvar Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ?\n new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) :\n new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nvar Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nvar A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index$$1) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index$$1);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text$$1) {\n return text$$1.toString().toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index$$1 = slide.index();\n swiper.slideTo(index$$1, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nvar History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n swiper.slideTo(swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index());\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index$$1 = slide.index();\n swiper.slideTo(index$$1, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nvar HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nvar Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n },\n },\n};\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset$$1 = $slideEl[0].swiperSlideOffset;\n let tx = -offset$$1;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ?\n Math.max(1 - Math.abs($slideEl[0].progress), 0) :\n 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform$$1 = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform$$1);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) +\n (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset$$1 = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset$$1}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nvar EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset$$1 = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset$$1;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform$$1 = swiper.translate;\n const center = isHorizontal ? -transform$$1 + (swiperWidth / 2) : -transform$$1 + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n let translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
`);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nvar EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n\n// Swiper Class\n\nconst components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nexport default Swiper;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/swiper/dist/js/swiper.esm.bundle.js\n// module id = 109\n// module chunks = 0","/**\n * Dom7 2.0.7\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2018, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: June 14, 2018\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function proxy(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n return dom.on(eventName, targetSelector, proxy, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n // eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n // eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom7/dist/dom7.modular.js\n// module id = 110\n// module chunks = 0","/*\r\n *\tjQuery dotdotdot 1.8.3\r\n *\r\n *\tCopyright (c) Fred Heusschen\r\n *\twww.frebsite.nl\r\n *\r\n *\tPlugin website:\r\n *\tdotdotdot.frebsite.nl\r\n *\r\n *\tLicensed under the MIT license.\r\n *\thttp://en.wikipedia.org/wiki/MIT_License\r\n */\r\n\r\n(function( $, undef )\r\n{\r\n\tif ( $.fn.dotdotdot )\r\n\t{\r\n\t\treturn;\r\n\t}\r\n\r\n\t$.fn.dotdotdot = function( o )\r\n\t{\r\n\t\tif ( this.length == 0 )\r\n\t\t{\r\n\t\t\t$.fn.dotdotdot.debug( 'No element found for \"' + this.selector + '\".' );\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( this.length > 1 )\r\n\t\t{\r\n\t\t\treturn this.each(\r\n\t\t\t\tfunction()\r\n\t\t\t\t{\r\n\t\t\t\t\t$(this).dotdotdot( o );\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\r\n\t\tvar $dot = this;\r\n\t\tvar orgContent\t= $dot.contents();\r\n\r\n\t\tif ( $dot.data( 'dotdotdot' ) )\r\n\t\t{\r\n\t\t\t$dot.trigger( 'destroy.dot' );\r\n\t\t}\r\n\r\n\t\t$dot.data( 'dotdotdot-style', $dot.attr( 'style' ) || '' );\r\n\t\t$dot.css( 'word-wrap', 'break-word' );\r\n\t\tif ($dot.css( 'white-space' ) === 'nowrap')\r\n\t\t{\r\n\t\t\t$dot.css( 'white-space', 'normal' );\r\n\t\t}\r\n\r\n\t\t$dot.bind_events = function()\r\n\t\t{\r\n\t\t\t$dot.bind(\r\n\t\t\t\t'update.dot',\r\n\t\t\t\tfunction( e, c )\r\n\t\t\t\t{\r\n\t\t\t\t\t$dot.removeClass(\"is-truncated\");\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t\tswitch( typeof opts.height )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcase 'number':\r\n\t\t\t\t\t\t\topts.maxHeight = opts.height;\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'function':\r\n\t\t\t\t\t\t\topts.maxHeight = opts.height.call( $dot[ 0 ] );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\topts.maxHeight = getTrueInnerHeight( $dot );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\topts.maxHeight += opts.tolerance;\r\n\r\n\t\t\t\t\tif ( typeof c != 'undefined' )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif ( typeof c == 'string' || ('nodeType' in c && c.nodeType === 1) )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t \t\tc = $('
').append( c ).contents();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( c instanceof $ )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\torgContent = c;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$inr = $dot.wrapInner( '
' ).children();\r\n\t\t\t\t\t$inr.contents()\r\n\t\t\t\t\t\t.detach()\r\n\t\t\t\t\t\t.end()\r\n\t\t\t\t\t\t.append( orgContent.clone( true ) )\r\n\t\t\t\t\t\t.find( 'br' )\r\n\t\t\t\t\t\t.replaceWith( '
' )\r\n\t\t\t\t\t\t.end()\r\n\t\t\t\t\t\t.css({\r\n\t\t\t\t\t\t\t'height'\t: 'auto',\r\n\t\t\t\t\t\t\t'width'\t\t: 'auto',\r\n\t\t\t\t\t\t\t'border'\t: 'none',\r\n\t\t\t\t\t\t\t'padding'\t: 0,\r\n\t\t\t\t\t\t\t'margin'\t: 0\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvar after = false,\r\n\t\t\t\t\t\ttrunc = false;\r\n\r\n\t\t\t\t\tif ( conf.afterElement )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tafter = conf.afterElement.clone( true );\r\n\t\t\t\t\t after.show();\r\n\t\t\t\t\t\tconf.afterElement.detach();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( test( $inr, opts ) )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif ( opts.wrap == 'children' )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttrunc = children( $inr, opts, after );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttrunc = ellipsis( $inr, $dot, $inr, opts, after );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$inr.replaceWith( $inr.contents() );\r\n\t\t\t\t\t$inr = null;\r\n\r\n\t\t\t\t\tif ( $.isFunction( opts.callback ) )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\topts.callback.call( $dot[ 0 ], trunc, orgContent );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconf.isTruncated = trunc;\r\n\t\t\t\t\treturn trunc;\r\n\t\t\t\t}\r\n\r\n\t\t\t).bind(\r\n\t\t\t\t'isTruncated.dot',\r\n\t\t\t\tfunction( e, fn )\r\n\t\t\t\t{\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t\tif ( typeof fn == 'function' )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfn.call( $dot[ 0 ], conf.isTruncated );\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn conf.isTruncated;\r\n\t\t\t\t}\r\n\r\n\t\t\t).bind(\r\n\t\t\t\t'originalContent.dot',\r\n\t\t\t\tfunction( e, fn )\r\n\t\t\t\t{\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t\tif ( typeof fn == 'function' )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfn.call( $dot[ 0 ], orgContent );\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn orgContent;\r\n\t\t\t\t}\r\n\r\n\t\t\t).bind(\r\n\t\t\t\t'destroy.dot',\r\n\t\t\t\tfunction( e )\r\n\t\t\t\t{\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t\t$dot.unwatch()\r\n\t\t\t\t\t\t.unbind_events()\r\n\t\t\t\t\t\t.contents()\r\n\t\t\t\t\t\t.detach()\r\n\t\t\t\t\t\t.end()\r\n\t\t\t\t\t\t.append( orgContent )\r\n\t\t\t\t\t\t.attr( 'style', $dot.data( 'dotdotdot-style' ) || '' )\r\n\t\t\t\t\t\t.removeClass( 'is-truncated' )\r\n\t\t\t\t\t\t.data( 'dotdotdot', false );\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t\treturn $dot;\r\n\t\t};\t//\t/bind_events\r\n\r\n\t\t$dot.unbind_events = function()\r\n\t\t{\r\n\t\t\t$dot.unbind('.dot');\r\n\t\t\treturn $dot;\r\n\t\t};\t//\t/unbind_events\r\n\r\n\t\t$dot.watch = function()\r\n\t\t{\r\n\t\t\t$dot.unwatch();\r\n\t\t\tif ( opts.watch == 'window' )\r\n\t\t\t{\r\n\t\t\t\tvar $window = $(window),\r\n\t\t\t\t\t_wWidth = $window.width(),\r\n\t\t\t\t\t_wHeight = $window.height();\r\n\r\n\t\t\t\t$window.bind(\r\n\t\t\t\t\t'resize.dot' + conf.dotId,\r\n\t\t\t\t\tfunction()\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif ( _wWidth != $window.width() || _wHeight != $window.height() || !opts.windowResizeFix )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t_wWidth = $window.width();\r\n\t\t\t\t\t\t\t_wHeight = $window.height();\r\n\r\n\t\t\t\t\t\t\tif ( watchInt )\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tclearInterval( watchInt );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\twatchInt = setTimeout(\r\n\t\t\t\t\t\t\t\tfunction()\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t$dot.trigger( 'update.dot' );\r\n\t\t\t\t\t\t\t\t}, 100\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\twatchOrg = getSizes( $dot );\r\n\t\t\t\twatchInt = setInterval(\r\n\t\t\t\t\tfunction()\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif ( $dot.is( ':visible' ) )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar watchNew = getSizes( $dot );\r\n\t\t\t\t\t\t\tif ( watchOrg.width != watchNew.width ||\r\n\t\t\t\t\t\t\t\t watchOrg.height != watchNew.height )\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t$dot.trigger( 'update.dot' );\r\n\t\t\t\t\t\t\t\twatchOrg = watchNew;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 500\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn $dot;\r\n\t\t};\r\n\t\t$dot.unwatch = function()\r\n\t\t{\r\n\t\t\t$(window).unbind( 'resize.dot' + conf.dotId );\r\n\t\t\tif ( watchInt )\r\n\t\t\t{\r\n\t\t\t\tclearInterval( watchInt );\r\n\t\t\t}\r\n\t\t\treturn $dot;\r\n\t\t};\r\n\r\n\t\tvar\topts \t\t= $.extend( true, {}, $.fn.dotdotdot.defaults, o ),\r\n\t\t\tconf\t\t= {},\r\n\t\t\twatchOrg\t= {},\r\n\t\t\twatchInt\t= null,\r\n\t\t\t$inr\t\t= null;\r\n\r\n\r\n\t\tif ( !( opts.lastCharacter.remove instanceof Array ) )\r\n\t\t{\r\n\t\t\topts.lastCharacter.remove = $.fn.dotdotdot.defaultArrays.lastCharacter.remove;\r\n\t\t}\r\n\t\tif ( !( opts.lastCharacter.noEllipsis instanceof Array ) )\r\n\t\t{\r\n\t\t\topts.lastCharacter.noEllipsis = $.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis;\r\n\t\t}\r\n\r\n\r\n\t\tconf.afterElement\t= getElement( opts.after, $dot );\r\n\t\tconf.isTruncated\t= false;\r\n\t\tconf.dotId\t\t\t= dotId++;\r\n\r\n\r\n\t\t$dot.data( 'dotdotdot', true )\r\n\t\t\t.bind_events()\r\n\t\t\t.trigger( 'update.dot' );\r\n\r\n\t\tif ( opts.watch )\r\n\t\t{\r\n\t\t\t$dot.watch();\r\n\t\t}\r\n\r\n\t\treturn $dot;\r\n\t};\r\n\r\n\r\n\t//\tpublic\r\n\t$.fn.dotdotdot.defaults = {\r\n\t\t'ellipsis'\t\t\t: '... ',\r\n\t\t'wrap'\t\t\t\t: 'word',\r\n\t\t'fallbackToLetter'\t: true,\r\n\t\t'lastCharacter'\t\t: {},\r\n\t\t'tolerance'\t\t\t: 0,\r\n\t\t'callback'\t\t\t: null,\r\n\t\t'after'\t\t\t\t: null,\r\n\t\t'height'\t\t\t: null,\r\n\t\t'watch'\t\t\t\t: false,\r\n\t\t'windowResizeFix'\t: true\r\n\t};\r\n\t$.fn.dotdotdot.defaultArrays = {\r\n\t\t'lastCharacter'\t\t: {\r\n\t\t\t'remove'\t\t\t: [ ' ', '\\u3000', ',', ';', '.', '!', '?' ],\r\n\t\t\t'noEllipsis'\t\t: []\r\n\t\t}\r\n\t};\r\n\t$.fn.dotdotdot.debug = function( msg ) {};\r\n\r\n\r\n\t//\tprivate\r\n\tvar dotId = 1;\r\n\r\n\tfunction children( $elem, o, after )\r\n\t{\r\n\t\tvar $elements \t= $elem.children(),\r\n\t\t\tisTruncated\t= false;\r\n\r\n\t\t$elem.empty();\r\n\r\n\t\tfor ( var a = 0, l = $elements.length; a < l; a++ )\r\n\t\t{\r\n\t\t\tvar $e = $elements.eq( a );\r\n\t\t\t$elem.append( $e );\r\n\t\t\tif ( after )\r\n\t\t\t{\r\n\t\t\t\t$elem.append( after );\r\n\t\t\t}\r\n\t\t\tif ( test( $elem, o ) )\r\n\t\t\t{\r\n\t\t\t\t$e.remove();\r\n\t\t\t\tisTruncated = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif ( after )\r\n\t\t\t\t{\r\n\t\t\t\t\tafter.detach();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn isTruncated;\r\n\t}\r\n\tfunction ellipsis( $elem, $d, $i, o, after )\r\n\t{\r\n\t\tvar isTruncated\t= false;\r\n\r\n\t\t//\tDon't put the ellipsis directly inside these elements\r\n\t\tvar notx = 'a, table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style';\r\n\r\n\t\t//\tDon't remove these elements even if they are after the ellipsis\r\n\t\tvar noty = 'script, .dotdotdot-keep';\r\n\r\n\t\t$elem\r\n\t\t\t.contents()\r\n\t\t\t.detach()\r\n\t\t\t.each(\r\n\t\t\t\tfunction()\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tvar e\t= this,\r\n\t\t\t\t\t\t$e\t= $(e);\r\n\r\n\t\t\t\t\tif ( typeof e == 'undefined' )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ( $e.is( noty ) )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t$elem.append( $e );\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ( isTruncated )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t$elem.append( $e );\r\n\t\t\t\t\t\tif ( after && !$e.is( o.after ) && !$e.find( o.after ).length )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t$elem[ $elem.is( notx ) ? 'after' : 'append' ]( after );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( test( $i, o ) )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif ( e.nodeType == 3 ) // node is TEXT\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tisTruncated = ellipsisElement( $e, $d, $i, o, after );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tisTruncated = ellipsis( $e, $d, $i, o, after );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ( !isTruncated )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif ( after )\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tafter.detach();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t$d.addClass(\"is-truncated\");\r\n\t\treturn isTruncated;\r\n\t}\r\n\tfunction ellipsisElement( $e, $d, $i, o, after )\r\n\t{\r\n\t\tvar e = $e[ 0 ];\r\n\r\n\t\tif ( !e )\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar txt\t\t\t= getTextContent( e ),\r\n\t\t\tspace\t\t= ( txt.indexOf(' ') !== -1 ) ? ' ' : '\\u3000',\r\n\t\t\tseparator\t= ( o.wrap == 'letter' ) ? '' : space,\r\n\t\t\ttextArr\t\t= txt.split( separator ),\r\n\t\t\tposition \t= -1,\r\n\t\t\tmidPos\t\t= -1,\r\n\t\t\tstartPos\t= 0,\r\n\t\t\tendPos\t\t= textArr.length - 1;\r\n\r\n\r\n\t\t//\tOnly one word\r\n\t\tif ( o.fallbackToLetter && startPos == 0 && endPos == 0 )\r\n\t\t{\r\n\t\t\tseparator\t= '';\r\n\t\t\ttextArr\t\t= txt.split( separator );\r\n\t\t\tendPos\t\t= textArr.length - 1;\r\n\t\t}\r\n\r\n\t\twhile ( startPos <= endPos && !( startPos == 0 && endPos == 0 ) )\r\n\t\t{\r\n\t\t\tvar m = Math.floor( ( startPos + endPos ) / 2 );\r\n\t\t\tif ( m == midPos )\r\n\t\t\t{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tmidPos = m;\r\n\r\n\t\t\tsetTextContent( e, textArr.slice( 0, midPos + 1 ).join( separator ) + o.ellipsis );\r\n\t\t\t$i.children()\r\n\t\t\t\t.each(\r\n\t\t\t\t\tfunction()\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t$(this).toggle().toggle();\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\tif ( !test( $i, o ) )\r\n\t\t\t{\r\n\t\t\t\tposition = midPos;\r\n\t\t\t\tstartPos = midPos;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tendPos = midPos;\r\n\r\n\t\t\t\t//\tFallback to letter\r\n\t\t\t\tif (o.fallbackToLetter && startPos == 0 && endPos == 0 )\r\n\t\t\t\t{\r\n\t\t\t\t\tseparator\t= '';\r\n\t\t\t\t\ttextArr\t\t= textArr[ 0 ].split( separator );\r\n\t\t\t\t\tposition\t= -1;\r\n\t\t\t\t\tmidPos\t\t= -1;\r\n\t\t\t\t\tstartPos\t= 0;\r\n\t\t\t\t\tendPos\t\t= textArr.length - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( position != -1 && !( textArr.length == 1 && textArr[ 0 ].length == 0 ) )\r\n\t\t{\r\n\t\t\ttxt = addEllipsis( textArr.slice( 0, position + 1 ).join( separator ), o );\r\n\t\t\tsetTextContent( e, txt );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tvar $w = $e.parent();\r\n\t\t\t$e.detach();\r\n\r\n\t\t\tvar afterLength = ( after && after.closest($w).length ) ? after.length : 0;\r\n\r\n\t\t\tif ( $w.contents().length > afterLength )\r\n\t\t\t{\r\n\t\t\t\te = findLastTextNode( $w.contents().eq( -1 - afterLength ), $d );\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\te = findLastTextNode( $w, $d, true );\r\n\t\t\t\tif ( !afterLength )\r\n\t\t\t\t{\r\n\t\t\t\t\t$w.detach();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( e )\r\n\t\t\t{\r\n\t\t\t\ttxt = addEllipsis( getTextContent( e ), o );\r\n\t\t\t\tsetTextContent( e, txt );\r\n\t\t\t\tif ( afterLength && after )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar $parent = after.parent();\r\n\r\n\t\t\t\t\t$(e).parent().append( after );\r\n\r\n\t\t\t\t\tif ( !$.trim( $parent.html() ) )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t$parent.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\tfunction test( $i, o )\r\n\t{\r\n\t\treturn $i.innerHeight() > o.maxHeight;\r\n\t}\r\n\tfunction addEllipsis( txt, o )\r\n\t{\r\n\t\twhile( $.inArray( txt.slice( -1 ), o.lastCharacter.remove ) > -1 )\r\n\t\t{\r\n\t\t\ttxt = txt.slice( 0, -1 );\r\n\t\t}\r\n\t\tif ( $.inArray( txt.slice( -1 ), o.lastCharacter.noEllipsis ) < 0 )\r\n\t\t{\r\n\t\t\ttxt += o.ellipsis;\r\n\t\t}\r\n\t\treturn txt;\r\n\t}\r\n\tfunction getSizes( $d )\r\n\t{\r\n\t\treturn {\r\n\t\t\t'width'\t: $d.innerWidth(),\r\n\t\t\t'height': $d.innerHeight()\r\n\t\t};\r\n\t}\r\n\tfunction setTextContent( e, content )\r\n\t{\r\n\t\tif ( e.innerText )\r\n\t\t{\r\n\t\t\te.innerText = content;\r\n\t\t}\r\n\t\telse if ( e.nodeValue )\r\n\t\t{\r\n\t\t\te.nodeValue = content;\r\n\t\t}\r\n\t\telse if (e.textContent)\r\n\t\t{\r\n\t\t\te.textContent = content;\r\n\t\t}\r\n\r\n\t}\r\n\tfunction getTextContent( e )\r\n\t{\r\n\t\tif ( e.innerText )\r\n\t\t{\r\n\t\t\treturn e.innerText;\r\n\t\t}\r\n\t\telse if ( e.nodeValue )\r\n\t\t{\r\n\t\t\treturn e.nodeValue;\r\n\t\t}\r\n\t\telse if ( e.textContent )\r\n\t\t{\r\n\t\t\treturn e.textContent;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\tfunction getPrevNode( n )\r\n\t{\r\n\t\tdo\r\n\t\t{\r\n\t\t\tn = n.previousSibling;\r\n\t\t}\r\n\t\twhile ( n && n.nodeType !== 1 && n.nodeType !== 3 );\r\n\r\n\t\treturn n;\r\n\t}\r\n\tfunction findLastTextNode( $el, $top, excludeCurrent )\r\n\t{\r\n\t\tvar e = $el && $el[ 0 ], p;\r\n\t\tif ( e )\r\n\t\t{\r\n\t\t\tif ( !excludeCurrent )\r\n\t\t\t{\r\n\t\t\t\tif ( e.nodeType === 3 )\r\n\t\t\t\t{\r\n\t\t\t\t\treturn e;\r\n\t\t\t\t}\r\n\t\t\t\tif ( $.trim( $el.text() ) )\r\n\t\t\t\t{\r\n\t\t\t\t\treturn findLastTextNode( $el.contents().last(), $top );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tp = getPrevNode( e );\r\n\t\t\twhile ( !p )\r\n\t\t\t{\r\n\t\t\t\t$el = $el.parent();\r\n\t\t\t\tif ( $el.is( $top ) || !$el.length )\r\n\t\t\t\t{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tp = getPrevNode( $el[0] );\r\n\t\t\t}\r\n\t\t\tif ( p )\r\n\t\t\t{\r\n\t\t\t\treturn findLastTextNode( $(p), $top );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\tfunction getElement( e, $i )\r\n\t{\r\n\t\tif ( !e )\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif ( typeof e === 'string' )\r\n\t\t{\r\n\t\t\te = $(e, $i);\r\n\t\t\treturn ( e.length )\r\n\t\t\t\t? e\r\n\t\t\t\t: false;\r\n\t\t}\r\n\t\treturn !e.jquery\r\n\t\t\t? false\r\n\t\t\t: e;\r\n\t}\r\n\tfunction getTrueInnerHeight( $el )\r\n\t{\r\n\t\tvar h = $el.innerHeight(),\r\n\t\t\ta = [ 'paddingTop', 'paddingBottom' ];\r\n\r\n\t\tfor ( var z = 0, l = a.length; z < l; z++ )\r\n\t\t{\r\n\t\t\tvar m = parseInt( $el.css( a[ z ] ), 10 );\r\n\t\t\tif ( isNaN( m ) )\r\n\t\t\t{\r\n\t\t\t\tm = 0;\r\n\t\t\t}\r\n\t\t\th -= m;\r\n\t\t}\r\n\t\treturn h;\r\n\t}\r\n\r\n\r\n\t//\toverride jQuery.html\r\n\tvar _orgHtml = $.fn.html;\r\n\t$.fn.html = function( str )\r\n\t{\r\n\t\tif ( str != undef && !$.isFunction( str ) && this.data( 'dotdotdot' ) )\r\n\t\t{\r\n\t\t\treturn this.trigger( 'update', [ str ] );\r\n\t\t}\r\n\t\treturn _orgHtml.apply( this, arguments );\r\n\t};\r\n\r\n\r\n\t//\toverride jQuery.text\r\n\tvar _orgText = $.fn.text;\r\n\t$.fn.text = function( str )\r\n\t{\r\n\t\tif ( str != undef && !$.isFunction( str ) && this.data( 'dotdotdot' ) )\r\n\t\t{\r\n\t\t\tstr = $( '
' ).text( str ).html();\r\n\t\t\treturn this.trigger( 'update', [ str ] );\r\n\t\t}\r\n\t\treturn _orgText.apply( this, arguments );\r\n\t};\r\n\r\n\r\n})( jQuery );\r\n\r\n/*\r\n\r\n## Automatic parsing for CSS classes\r\nContributed by [Ramil Valitov](https://github.com/rvalitov)\r\n\r\n### The idea\r\nYou can add one or several CSS classes to HTML elements to automatically invoke \"jQuery.dotdotdot functionality\" and some extra features. It allows to use jQuery.dotdotdot only by adding appropriate CSS classes without JS programming.\r\n\r\n### Available classes and their description\r\n* dot-ellipsis - automatically invoke jQuery.dotdotdot to this element. This class must be included if you plan to use other classes below.\r\n* dot-resize-update - automatically update if window resize event occurs. It's equivalent to option `watch:'window'`.\r\n* dot-timer-update - automatically update if window resize event occurs. It's equivalent to option `watch:true`.\r\n* dot-load-update - automatically update after the window has beem completely rendered. Can be useful if your content is generated dynamically using using JS and, hence, jQuery.dotdotdot can't correctly detect the height of the element before it's rendered completely.\r\n* dot-height-XXX - available height of content area in pixels, where XXX is a number, e.g. can be `dot-height-35` if you want to set maximum height for 35 pixels. It's equivalent to option `height:'XXX'`.\r\n\r\n### Usage examples\r\n*Adding jQuery.dotdotdot to element*\r\n \r\n\t
\r\n\t

Lorem Ipsum is simply dummy text.

\r\n\t
\r\n\t\r\n*Adding jQuery.dotdotdot to element with update on window resize*\r\n \r\n\t
\r\n\t

Lorem Ipsum is simply dummy text.

\r\n\t
\r\n\t\r\n*Adding jQuery.dotdotdot to element with predefined height of 50px*\r\n \r\n\t
\r\n\t

Lorem Ipsum is simply dummy text.

\r\n\t
\r\n\t\r\n*/\r\n\r\njQuery(document).ready(function($) {\r\n\t//We only invoke jQuery.dotdotdot on elements that have dot-ellipsis class\r\n\t$(\".dot-ellipsis\").each(function(){\r\n\t\t//Checking if update on window resize required\r\n\t\tvar watch_window=$(this).hasClass(\"dot-resize-update\");\r\n\t\t\r\n\t\t//Checking if update on timer required\r\n\t\tvar watch_timer=$(this).hasClass(\"dot-timer-update\");\r\n\t\t\r\n\t\t//Checking if height set\r\n\t\tvar height=0;\t\t\r\n\t\tvar classList = $(this).attr('class').split(/\\s+/);\r\n\t\t$.each(classList, function(index, item) {\r\n\t\t\tvar matchResult = item.match(/^dot-height-(\\d+)$/);\r\n\t\t\tif(matchResult !== null)\r\n\t\t\t\theight = Number(matchResult[1]);\r\n\t\t});\r\n\t\t\r\n\t\t//Invoking jQuery.dotdotdot\r\n\t\tvar x = new Object();\r\n\t\tif (watch_timer)\r\n\t\t\tx.watch=true;\r\n\t\tif (watch_window)\r\n\t\t\tx.watch='window';\r\n\t\tif (height>0)\r\n\t\t\tx.height=height;\r\n\t\t$(this).dotdotdot(x);\r\n\t});\r\n\t\t\r\n});\r\n\r\n//Updating elements (if any) on window.load event\r\njQuery(window).on('load', function(){\r\n\tjQuery(\".dot-ellipsis.dot-load-update\").trigger(\"update.dot\");\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/static/scripts/plugins/jquery.dotdotdot.js","// ==================================================\r\n// fancyBox v3.0.47\r\n//\r\n// Licensed GPLv3 for open source use\r\n// or fancyBox Commercial License for commercial use\r\n//\r\n// http://fancyapps.com/fancybox/\r\n// Copyright 2017 fancyApps\r\n//\r\n// ==================================================\r\n;(function (window, document, $, undefined) {\r\n 'use strict';\r\n\r\n // If there's no jQuery, fancyBox can't work\r\n // =========================================\r\n\r\n if ( !$ ) {\r\n return undefined;\r\n }\r\n\r\n // Private default settings\r\n // ========================\r\n\r\n var defaults = {\r\n\r\n // Animation duration in ms\r\n speed : 330,\r\n\r\n // Enable infinite gallery navigation\r\n loop : true,\r\n\r\n // Should zoom animation change opacity, too\r\n // If opacity is 'auto', then fade-out if image and thumbnail have different aspect ratios\r\n opacity : 'auto',\r\n\r\n // Space around image, ignored if zoomed-in or viewport smaller than 800px\r\n margin : [44, 0],\r\n\r\n // Horizontal space between slides\r\n gutter : 30,\r\n\r\n // Should display toolbars\r\n infobar : true,\r\n buttons : true,\r\n\r\n // What buttons should appear in the toolbar\r\n slideShow : true,\r\n fullScreen : true,\r\n thumbs : true,\r\n closeBtn : true,\r\n\r\n // Should apply small close button at top right corner of the content\r\n // If 'auto' - will be set for content having type 'html', 'inline' or 'ajax'\r\n smallBtn : 'auto',\r\n\r\n image : {\r\n\r\n // Wait for images to load before displaying\r\n // Requires predefined image dimensions\r\n // If 'auto' - will zoom in thumbnail if 'width' and 'height' attributes are found\r\n preload : \"auto\",\r\n\r\n // Protect an image from downloading by right-click\r\n protect : false\r\n\r\n },\r\n\r\n ajax : {\r\n\r\n // Object containing settings for ajax request\r\n settings : {\r\n\r\n // This helps to indicate that request comes from the modal\r\n // Feel free to change naming\r\n data : {\r\n fancybox : true\r\n }\r\n }\r\n\r\n },\r\n\r\n iframe : {\r\n\r\n // Iframe template\r\n tpl : '',\r\n\r\n // Preload iframe before displaying it\r\n // This allows to calculate iframe content width and height\r\n // (note: Due to \"Same Origin Policy\", you can't get cross domain data).\r\n preload : true,\r\n\r\n // Scrolling attribute for iframe tag\r\n scrolling : 'no',\r\n\r\n // Custom CSS styling for iframe wrapping element\r\n css : {}\r\n\r\n },\r\n\r\n // Custom CSS class for layout\r\n baseClass : '',\r\n\r\n // Custom CSS class for slide element\r\n slideClass : '',\r\n\r\n // Base template for layout\r\n baseTpl\t: '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n ' / ' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
',\r\n\r\n // Loading indicator template\r\n spinnerTpl : '
',\r\n\r\n // Error message template\r\n errorTpl : '

The requested content cannot be loaded.
Please try again later.

',\r\n\r\n // This will be appended to html content, if \"smallBtn\" option is not set to false\r\n closeTpl : '',\r\n\r\n // Container is injected into this element\r\n parentEl : 'body',\r\n\r\n // Enable gestures (tap, zoom, pan and pinch)\r\n touch : true,\r\n\r\n // Enable keyboard navigation\r\n keyboard : true,\r\n\r\n // Try to focus on first focusable element after opening\r\n focus : true,\r\n\r\n // Close when clicked outside of the content\r\n closeClickOutside : true,\r\n\r\n // Callbacks\r\n beforeLoad\t : $.noop,\r\n afterLoad : $.noop,\r\n beforeMove \t : $.noop,\r\n afterMove : $.noop,\r\n onComplete\t : $.noop,\r\n\r\n onInit : $.noop,\r\n beforeClose\t : $.noop,\r\n afterClose\t : $.noop,\r\n onActivate : $.noop,\r\n onDeactivate : $.noop\r\n\r\n };\r\n\r\n var $W = $(window);\r\n var $D = $(document);\r\n\r\n var called = 0;\r\n\r\n // Check if an object is a jQuery object and not a native JavaScript object\r\n // ========================================================================\r\n\r\n var isQuery = function (obj) {\r\n return obj && obj.hasOwnProperty && obj instanceof $;\r\n };\r\n\r\n // Handle multiple browsers for requestAnimationFrame()\r\n // ====================================================\r\n\r\n var requestAFrame = (function() {\r\n return window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n function( callback ) {\r\n window.setTimeout(callback, 1000 / 60); };\r\n })();\r\n\r\n\r\n // Check if element is inside the viewport by at least 1 pixel\r\n // ===========================================================\r\n\r\n var isElementInViewport = function( el ) {\r\n var rect;\r\n\r\n if ( typeof $ === \"function\" && el instanceof $ ) {\r\n el = el[0];\r\n }\r\n\r\n rect = el.getBoundingClientRect();\r\n\r\n return rect.bottom > 0 && rect.right > 0 &&\r\n rect.left < (window.innerWidth || document.documentElement.clientWidth) &&\r\n rect.top < (window.innerHeight || document.documentElement.clientHeight);\r\n };\r\n\r\n\r\n // Class definition\r\n // ================\r\n\r\n var FancyBox = function( content, opts, index ) {\r\n var self = this;\r\n\r\n self.opts = $.extend( true, { index : index }, defaults, opts || {} );\r\n self.id = self.opts.id || ++called;\r\n self.group = [];\r\n\r\n self.currIndex = parseInt( self.opts.index, 10 ) || 0;\r\n self.prevIndex = null;\r\n\r\n self.prevPos = null;\r\n self.currPos = 0;\r\n\r\n self.firstRun = null;\r\n\r\n // Create group elements from original item collection\r\n self.createGroup( content );\r\n\r\n if ( !self.group.length ) {\r\n return;\r\n }\r\n\r\n // Save last active element and current scroll position\r\n self.$lastFocus = $(document.activeElement).blur();\r\n\r\n // Collection of gallery objects\r\n self.slides = {};\r\n\r\n self.init( content );\r\n\r\n };\r\n\r\n $.extend(FancyBox.prototype, {\r\n\r\n // Create DOM structure\r\n // ====================\r\n\r\n init : function() {\r\n var self = this;\r\n\r\n var galleryHasHtml = false;\r\n\r\n var testWidth;\r\n var $container;\r\n\r\n self.scrollTop = $D.scrollTop();\r\n self.scrollLeft = $D.scrollLeft();\r\n\r\n if ( !$.fancybox.getInstance() ) {\r\n testWidth = $( 'body' ).width();\r\n\r\n $( 'html' ).addClass( 'fancybox-enabled' );\r\n\r\n if ( $.fancybox.isTouch ) {\r\n\r\n // Ugly workaround for iOS page shifting issue (when inputs get focus)\r\n // Do not apply for images, otherwise top/bottom bars will appear\r\n $.each( self.group, function( key, item ) {\r\n if ( item.type !== 'image' && item.type !== 'iframe' ) {\r\n galleryHasHtml = true;\r\n return false;\r\n }\r\n });\r\n\r\n if ( galleryHasHtml ) {\r\n $('body').css({\r\n position : 'fixed',\r\n width : testWidth,\r\n top : self.scrollTop * -1\r\n });\r\n }\r\n\r\n } else {\r\n\r\n // Compare page width after adding \"overflow:hidden\"\r\n testWidth = $( 'body' ).width() - testWidth;\r\n\r\n // Width has changed - compensate missing scrollbars\r\n if ( testWidth > 1 ) {\r\n $( '