{"version":3,"sources":["webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/swiper/dist/js/swiper.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/waypoints/lib/noframework.waypoints.js","webpack:///./node_modules/es6-promise/dist/es6-promise.js","webpack:///./node_modules/process/browser.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/smoothscroll-polyfill/dist/smoothscroll.js"],"names":["global","module","exports","window","Math","self","Function","__g","it","core","version","__e","Object","defineProperty","get","a","exec","e","factory","OldCookies","Cookies","api","noConflict","extend","i","result","arguments","length","attributes","key","decode","s","replace","decodeURIComponent","init","converter","set","value","document","path","defaults","expires","Date","toUTCString","JSON","stringify","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","split","cookie","json","jar","cookies","parts","slice","join","charAt","name","read","parse","getJSON","remove","withConverter","dP","createDesc","object","f","id","px","random","concat","undefined","toString","store","push","mode","copyright","aFunction","fn","that","call","b","c","apply","doc","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","location","hash","win","navigator","userAgent","history","CustomEvent","this","getComputedStyle","getPropertyValue","Image","screen","setTimeout","clearTimeout","Dom7","arr","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","match","nodeType","unique","uniqueArray","prototype","Class","Methods","addClass","className","classes","j","classList","add","removeClass","hasClass","contains","toggleClass","toggle","attr","attrs","arguments$1","getAttribute","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","assign","args","len","eventType","targetSelector","listener","capture","handleLiveEvent","target","eventData","dom7EventData","unshift","is","parents","k","handleEvent","events","event$1","dom7LiveListeners","proxyListener","event","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","toAdd","keys","forEach","methodName","ua","testDiv","Utils","deleteProps","obj","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","href","paramsPart","isObject","o","constructor","len$1","to","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","Modernizr","maxTouchPoints","DocumentTouch","pointerEvents","pointerEnabled","PointerEvent","prefixedPointerEvents","msPointerEnabled","transforms3d","csstransforms3d","flexbox","observer","passiveListener","supportsPassive","opts","gestures","Browser","isIE","isEdge","isSafari","toLowerCase","isUiWebView","SwiperClass","eventsListeners","eventName","staticAccessors","components","configurable","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","eventsArray","useModulesParams","instanceParams","instance","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","use","installModule","proto","static","install","m","defineProperties","update","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","floor","ceil","slidesPerView","slidesPerColumnFill","max","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","boxSizing$1","swiperSlideSize","centeredSlides","abs","effect","setWrapperSize","i$1","slidesGridItem","i$2","slidesGridItem$1","centerInsufficientSlides","allSlidesSize","slideSizeValue","allSlidesOffset","snap","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","visibleSlides","slideProgress","minTranslate","slideBefore","slideAfter","progress","updateProgress","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","loop","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","x","y","previousTranslate","transition$1","transitionStart","runCallbacks","direction","autoHeight","dir","animating","slideTo","internal","swiper","slideIndex","preventInteractionOnTransition","initialSlide","allowSlideNext","allowSlidePrev","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","device","ios","android","androidChrome","desktop","windows","iphone","ipod","ipad","cordova","phonegap","os","osVersion","webView","osVersionArr","metaViewport","minimalUi","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","threshold","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","preventedByNestedSwiper","touchReleaseOnEdges","touchAngle","diffX","diffY","sqrt","pow","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","clickTimeout","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","onResize","breakpoints","setBreakpoint","newTranslate","min","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","touchEventsTarget","breakpointsInverse","uniqueNavElements","preloadImages","updateOnImagesReady","noSwipingClass","passiveListeners","containerModifierClass","slideClass","slideBlankClass","wrapperClass","prototypes","attachEvents","touchEvents","wrapperEl","start","passive","move","end","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","directionChanged","needsReLoop","changeDirection","points","point","sort","innerWidth","wasLocked","navigation","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","src","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","touchEventsTouch","touchEventsDesktop","__proto__","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","support","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","options","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Virtual","force","ref","ref$1","addSlidesBefore","addSlidesAfter","ref$2","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","innerHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","isSupported","element","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","sensitivity","timeout","autoplayDisableOnInteraction","stop","getTime","eventsTarged","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","nextEl","prevEl","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bullet","$bullet","bulletIndex","bulletActiveClass","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragEl","draggable","Parallax","setTransform","p","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","minRatio","onGestureEnd","changedTouches","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","guess","i1","i3","binarySearch","array","interpolate","getInterpolateFunction","controller","spline","setTranslate$1","multiplier","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","Controller$1","a11y","makeElFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","$targetEl","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","pushState","hashNavigation","paths","getPathValues","scrollToSlide","replaceState","setHistoryPopState","pathArray","pathname","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowAngle","sin","cos","scale1","shadowScale","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","hideOnClick","toEdge","fromEdge","isHidden","bulletElement","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","dragClass","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","loadOnTransitionStart","preloaderClass","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","beforeTransitionStart","sliderFirstMove","slideChange","beforeDestroy","$export","$forEach","STRICT","P","F","callbackfn","redefine","ctx","source","own","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","expProto","U","W","R","anObject","IE8_DOM_DEFINE","toPrimitive","O","Attributes","TypeError","valueOf","bitmap","writable","has","SRC","$toString","TPL","inspectSource","safe","isFunction","hasOwnProperty","IObject","toObject","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","res","cof","propertyIsEnumerable","defined","toInteger","isNaN","speciesConstructor","original","SPECIES","C","arg","uid","Symbol","USE_SYMBOL","fails","keyCounter","allWaypoints","Waypoint","Error","Adapter","adapter","horizontal","triggerPoint","group","Group","findOrCreate","Context","findOrCreateByElement","offsetAliases","queueTrigger","refresh","previous","invokeAll","allWaypointsArray","waypointKey","destroyAll","disableAll","enableAll","refreshAll","viewportHeight","documentElement","viewportWidth","adapters","continuous","requestAnimationFrameShim","contexts","oldWindowLoad","didScroll","didResize","oldScroll","waypoints","vertical","waypointContextKey","windowContext","createThrottledScrollHandler","createThrottledResizeHandler","waypoint","checkEmpty","horizontalEmpty","isEmptyObject","verticalEmpty","isWindow","handleResize","scrollHandler","handleScroll","isTouch","triggeredGroups","axes","newScroll","forward","backward","axisKey","wasBeforeTriggerPoint","nowAfterTriggerPoint","groupKey","flushTriggers","contextOffset","contextScroll","contextDimension","contextModifier","wasBeforeScroll","nowAfterScroll","triggeredForward","adjustment","oldTriggerPoint","elementOffset","freshWaypoint","findByElement","contextId","mozRequestAnimationFrame","webkitRequestAnimationFrame","byTriggerPoint","byReverseTriggerPoint","groups","clearTriggerQueues","triggerQueues","up","down","right","reverse","inArray","first","last","getWindow","defaultView","NoFrameworkAdapter","removeListeners","listeners","eventParts","namespace","ns","ownerDocument","rect","pageYOffset","pageXOffset","nsHandlers","includeMargin","computedStyle","merge","vertxNext","customSchedulerFn","asap","queue","flush","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","WebKitMutationObserver","isNode","process","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","channel","iterations","node","then","onFulfillment","onRejection","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","promise","resolve","createTextNode","port1","onmessage","port2","postMessage","vertx","require","runOnLoop","runOnContext","attemptVertx","substring","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","reject","reason","handleOwnThenable","sealed","error","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","hasCallback","succeeded","Enumerator","Constructor","input","_instanceConstructor","_remaining","_enumerate","_eachEntry","entry","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","enumerator","Promise","resolver","needsResolver","initializePromise","needsNew","catch","finally","all","entries","race","_","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","polyfill","local","promiseToString","cast","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","title","env","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","g","w","d","__forceSmoothScrollPolyfill__","Element","HTMLElement","scrollTo","scrollBy","elementScroll","scrollElement","scrollIntoView","performance","ROUNDING_TOLERANCE","RegExp","shouldBailOut","smoothScroll","SyntaxError","behavior","scrollableParent","findScrollableParent","parentRects","clientRects","firstArg","hasScrollableSpace","scrollHeight","scrollWidth","canOverflow","overflowValue","isScrollable","isScrollableY","isScrollableX","host","step","elapsed","startTime","scrollable"],"mappings":"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","file":"js/1.9078f618.chunk.js","sourcesContent":["// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","/**\n * Swiper 4.5.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2019 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 13, 2019\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Swiper = factory());\n}(this, function () { 'use strict';\n\n /**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\n var doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n } : document; // eslint-disable-line\n\n var win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n } : window; // eslint-disable-line\n\n /**\n * Dom7 2.1.3\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: February 11, 2019\n */\n\n var Dom7 = function Dom7(arr) {\n var self = this;\n // Create array-like object\n for (var 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 function $(selector, context) {\n var arr = [];\n var 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 var els;\n var tempParent;\n var html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [doc.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || doc).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 === win || selector === doc) {\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\n function unique(arr) {\n var uniqueArray = [];\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }\n }\n return uniqueArray;\n }\n\n // Classes and attributes\n function addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var 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 }\n function removeClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var 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 }\n function hasClass(className) {\n if (!this[0]) { return false; }\n return this[0].classList.contains(className);\n }\n function toggleClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var 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 }\n function attr(attrs, value) {\n var arguments$1 = arguments;\n\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 (var i = 0; i < this.length; i += 1) {\n if (arguments$1.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (var 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\n function removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n }\n function data(key, value) {\n var 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 var 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 (var 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 }\n // Transforms\n // eslint-disable-next-line\n function transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n }\n function transition(duration) {\n if (typeof duration !== 'string') {\n duration = duration + \"ms\"; // eslint-disable-line\n }\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n }\n // Events\n function on() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) { return; }\n var 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 var parents = $(target).parents(); // eslint-disable-line\n for (var 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 var 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 var events = eventType.split(' ');\n var j;\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) { el.dom7Listeners = {}; }\n if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }\n el.dom7Listeners[event].push({\n listener: 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 var event$1 = events[j];\n if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }\n if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }\n el.dom7LiveListeners[event$1].push({\n listener: listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event$1, handleLiveEvent, capture);\n }\n }\n }\n return this;\n }\n function off() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n var events = eventType.split(' ');\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = (void 0);\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 (var k = handlers.length - 1; k >= 0; k -= 1) {\n var 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 && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === 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 }\n function trigger() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var events = args[0].split(' ');\n var eventData = args[1];\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var evt = (void 0);\n try {\n evt = new win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = doc.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n }\n function transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var 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 }\n function outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var 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 }\n function outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var 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 }\n function offset() {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = doc.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === win ? win.scrollY : el.scrollTop;\n var scrollLeft = el === win ? win.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n }\n function styles() {\n if (this[0]) { return win.getComputedStyle(this[0], null); }\n return {};\n }\n function css(props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (var 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 // Iterate over the collection passing elements to `callback`\n function each(callback) {\n // Don't bother continuing without a callback\n if (!callback) { return this; }\n // Iterate over the current collection\n for (var 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 }\n // eslint-disable-next-line\n function html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n }\n // eslint-disable-next-line\n function 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 (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n }\n function is(selector) {\n var el = this[0];\n var compareWith;\n var 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 === doc) { return el === doc; }\n else if (selector === win) { return el === win; }\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 }\n function index() {\n var child = this[0];\n var 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\n function eq(index) {\n if (typeof index === 'undefined') { return this; }\n var length = this.length;\n var 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 }\n function append() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var newChild;\n\n for (var k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.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 (var 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 function prepend(newChild) {\n var i;\n var j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.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 function 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 }\n function nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.nextElementSibling) {\n var 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 }\n function prev(selector) {\n if (this.length > 0) {\n var 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 }\n function prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.previousElementSibling) {\n var 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 }\n function parent(selector) {\n var parents = []; // eslint-disable-line\n for (var 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 }\n function parents(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var 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 }\n function closest(selector) {\n var 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 }\n function find(selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n }\n function children(selector) {\n var children = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].childNodes;\n\n for (var 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 }\n function remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }\n }\n return this;\n }\n function add() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var dom = this;\n var i;\n var j;\n for (i = 0; i < args.length; i += 1) {\n var 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 }\n\n var Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n data: data,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n remove: remove,\n add: add,\n styles: styles,\n };\n\n Object.keys(Methods).forEach(function (methodName) {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n });\n\n var Utils = {\n deleteProps: function deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (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: function nextTick(callback, delay) {\n if ( delay === void 0 ) delay = 0;\n\n return setTimeout(callback, delay);\n },\n now: function now() {\n return Date.now();\n },\n getTranslate: function getTranslate(el, axis) {\n if ( axis === void 0 ) axis = 'x';\n\n var matrix;\n var curTransform;\n var transformMatrix;\n\n var curStyle = win.getComputedStyle(el, null);\n\n if (win.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) { return 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 win.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 (win.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 (win.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: function parseUrlQuery(url) {\n var query = {};\n var urlToParse = url || win.location.href;\n var i;\n var params;\n var param;\n var length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) { return 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: function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend: function extend() {\n var args = [], len$1 = arguments.length;\n while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n var to = Object(args[0]);\n for (var i = 1; i < args.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var 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\n var Support = (function Support() {\n var testDiv = doc.createElement('div');\n return {\n touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() {\n return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));\n }()),\n\n pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0)),\n prefixedPointerEvents: !!win.navigator.msPointerEnabled,\n\n transition: (function checkTransition() {\n var style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n var 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 var style = testDiv.style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i += 1) {\n if (styles[i] in style) { return true; }\n }\n return false;\n }()),\n\n observer: (function checkObserver() {\n return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n },\n });\n win.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in win;\n }()),\n };\n }());\n\n var Browser = (function Browser() {\n function isSafari() {\n var ua = win.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),\n isEdge: !!win.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),\n };\n }());\n\n var SwiperClass = function SwiperClass(params) {\n if ( params === void 0 ) params = {};\n\n var 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(function (eventName) {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n };\n\n var staticAccessors = { components: { configurable: true } };\n\n SwiperClass.prototype.on = function on (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }\n self.eventsListeners[event][method](handler);\n });\n return self;\n };\n\n SwiperClass.prototype.once = function once (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n function onceHandler() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n handler.apply(self, args);\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n };\n\n SwiperClass.prototype.off = function off (events, handler) {\n var self = this;\n if (!self.eventsListeners) { return self; }\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n };\n\n SwiperClass.prototype.emit = function emit () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var self = this;\n if (!self.eventsListeners) { return self; }\n var events;\n var data;\n var context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsListeners && self.eventsListeners[event]) {\n var handlers = [];\n self.eventsListeners[event].forEach(function (eventHandler) {\n handlers.push(eventHandler);\n });\n handlers.forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n };\n\n SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n };\n\n SwiperClass.prototype.useModules = function useModules (modulesParams) {\n if ( modulesParams === void 0 ) modulesParams = {};\n\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(function (modulePropName) {\n var 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(function (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\n staticAccessors.components.set = function (components) {\n var Class = this;\n if (!Class.use) { return; }\n Class.use(components);\n };\n\n SwiperClass.installModule = function installModule (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (!Class.prototype.modules) { Class.prototype.modules = {}; }\n var 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(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(function (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\n SwiperClass.use = function use (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (Array.isArray(module)) {\n module.forEach(function (m) { return Class.installModule(m); });\n return Class;\n }\n return Class.installModule.apply(Class, [ module ].concat( params ));\n };\n\n Object.defineProperties( SwiperClass, staticAccessors );\n\n function updateSize () {\n var swiper = this;\n var width;\n var height;\n var $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: width,\n height: height,\n size: swiper.isHorizontal() ? width : height,\n });\n }\n\n function updateSlides () {\n var swiper = this;\n var params = swiper.params;\n\n var $wrapperEl = swiper.$wrapperEl;\n var swiperSize = swiper.size;\n var rtl = swiper.rtlTranslate;\n var wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children((\".\" + (swiper.params.slideClass)));\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n\n var offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.snapGrid.length;\n\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 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 var 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 var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = (void 0);\n var column = (void 0);\n var row = (void 0);\n if (\n (params.slidesPerColumnFill === 'column')\n || (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1)\n ) {\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 } else {\n var groupIndex = Math.floor(i / params.slidesPerGroup);\n row = Math.floor(i / params.slidesPerView) - groupIndex * params.slidesPerColumn;\n column = i - row * params.slidesPerView - groupIndex * params.slidesPerView;\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 var slideStyles = win.getComputedStyle(slide[0], null);\n var currentTransform = slide[0].style.transform;\n var 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 (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n var width = parseFloat(slideStyles.getPropertyValue('width'));\n var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box' && !Browser.isIE) {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n var height = parseFloat(slideStyles.getPropertyValue('height'));\n var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n var boxSizing$1 = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing$1 && boxSizing$1 === 'border-box' && !Browser.isIE) {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\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) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n if ((index) % 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;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var 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 (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {\n var slidesGridItem = snapGrid[i$1];\n if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }\n if (snapGrid[i$1] < 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 (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {\n var slidesGridItem$1 = snapGrid[i$2];\n if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }\n if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem$1);\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 if (params.centerInsufficientSlides) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: 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\n function updateAutoHeight (speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var 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 var index = swiper.activeIndex + i;\n if (index > swiper.slides.length) { break; }\n activeSlides.push(swiper.slides.eq(index)[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 var 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\n function updateSlidesOffset () {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n }\n\n function updateSlidesProgress (translate) {\n if ( translate === void 0 ) translate = (this && this.translate) || 0;\n\n var swiper = this;\n var params = swiper.params;\n\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n\n if (slides.length === 0) { return; }\n if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }\n\n var offsetCenter = -translate;\n if (rtl) { offsetCenter = translate; }\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n }\n\n function updateProgress (translate) {\n if ( translate === void 0 ) translate = (this && this.translate) || 0;\n\n var swiper = this;\n var params = swiper.params;\n\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress;\n var isBeginning = swiper.isBeginning;\n var isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var 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: progress,\n isBeginning: isBeginning,\n isEnd: 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\n function updateSlidesClasses () {\n var swiper = this;\n\n var slides = swiper.slides;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n var realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(((params.slideActiveClass) + \" \" + (params.slideNextClass) + \" \" + (params.slidePrevClass) + \" \" + (params.slideDuplicateActiveClass) + \" \" + (params.slideDuplicateNextClass) + \" \" + (params.slideDuplicatePrevClass)));\n\n var 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 var 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 var 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\n function updateActiveIndex (newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\n var previousIndex = swiper.activeIndex;\n var previousRealIndex = swiper.realIndex;\n var previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (var 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 var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n }\n\n function updateClickedSlide (e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest((\".\" + (params.slideClass)))[0];\n var slideFound = false;\n if (slide) {\n for (var 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\n var update = {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide,\n };\n\n function getTranslate (axis) {\n if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';\n\n var swiper = this;\n\n var params = swiper.params;\n var rtl = swiper.rtlTranslate;\n var translate = swiper.translate;\n var $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) { currentTranslate = -currentTranslate; }\n\n return currentTranslate || 0;\n }\n\n function setTranslate (translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var progress = swiper.progress;\n var x = 0;\n var y = 0;\n var 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 var newProgress;\n var 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\n function minTranslate () {\n return (-this.snapGrid[0]);\n }\n\n function maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n }\n\n var translate = {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n };\n\n function setTransition (duration, byController) {\n var swiper = this;\n\n swiper.$wrapperEl.transition(duration);\n\n swiper.emit('setTransition', duration, byController);\n }\n\n function transitionStart (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var params = swiper.params;\n var previousIndex = swiper.previousIndex;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var 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\n function transitionEnd$1 (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var previousIndex = swiper.previousIndex;\n swiper.animating = false;\n swiper.setTransition(0);\n\n var 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\n var transition$1 = {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd$1,\n };\n\n function slideTo (index, speed, runCallbacks, internal) {\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) { slideIndex = 0; }\n\n var params = swiper.params;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var previousIndex = swiper.previousIndex;\n var activeIndex = swiper.activeIndex;\n var rtl = swiper.rtlTranslate;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var 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 var translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (var 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 var 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(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.onSlideToWrapperTransitionEnd = null;\n delete 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\n function slideToLoop (index, speed, runCallbacks, internal) {\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var newIndex = index;\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\" */\n function slideNext (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\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\" */\n function slidePrev (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var rtlTranslate = swiper.rtlTranslate;\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 var 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 var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });\n var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });\n\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n var 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\" */\n function slideReset (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideToClosest (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var index = swiper.activeIndex;\n var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n\n if (snapIndex < swiper.snapGrid.length - 1) {\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n index = swiper.params.slidesPerGroup;\n }\n }\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n }\n\n function slideToClickedSlide () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var 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(function () {\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(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n\n var slide = {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide,\n };\n\n function loopCreate () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n // Remove duplicated slides\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n\n var slides = $wrapperEl.children((\".\" + (params.slideClass)));\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(doc.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 var prependSlides = [];\n var appendSlides = [];\n slides.each(function (index, el) {\n var slide = $(el);\n if (index < swiper.loopedSlides) { appendSlides.push(el); }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }\n slide.attr('data-swiper-slide-index', index);\n });\n for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {\n $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {\n $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n }\n\n function loopFix () {\n var swiper = this;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var slides = swiper.slides;\n var loopedSlides = swiper.loopedSlides;\n var allowSlidePrev = swiper.allowSlidePrev;\n var allowSlideNext = swiper.allowSlideNext;\n var snapGrid = swiper.snapGrid;\n var rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n var snapTranslate = -snapGrid[activeIndex];\n var 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 var 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 var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged$1 && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n }\n\n function loopDestroy () {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var slides = swiper.slides;\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \",.\" + (params.slideClass) + \".\" + (params.slideBlankClass))).remove();\n slides.removeAttr('data-swiper-slide-index');\n }\n\n var loop = {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy,\n };\n\n function setGrabCursor (moving) {\n var swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }\n var 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\n function unsetGrabCursor () {\n var swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }\n swiper.el.style.cursor = '';\n }\n\n var grabCursor = {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor,\n };\n\n function appendSlide (slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var 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\n function prependSlide (slides) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n var newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var 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\n function addSlide (index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n var slidesBuffer = [];\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {\n $wrapperEl.append(slidesBuffer[i$2]);\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\n function removeSlide (slidesIndexes) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var 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\n function removeAllSlides () {\n var swiper = this;\n\n var slidesIndexes = [];\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n }\n\n var manipulation = {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides,\n };\n\n var Device = (function Device() {\n var ua = win.navigator.userAgent;\n\n var 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: win.cordova || win.phonegap,\n phonegap: win.cordova || win.phonegap,\n };\n\n var windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var 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 var osVersionArr = device.osVersion.split('.');\n var metaViewport = doc.querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !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 = win.devicePixelRatio || 1;\n\n // Export object\n return device;\n }());\n\n function onTouchStart (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }\n if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; }\n if (data.isTouched && data.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 var startX = touches.currentX;\n var 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 var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= win.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\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.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) { data.allowThresholdMove = false; }\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(data.formElements)) { preventDefault = false; }\n if (\n doc.activeElement\n && $(doc.activeElement).is(data.formElements)\n && doc.activeElement !== e.target\n ) {\n doc.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n }\n\n function onTouchMove (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') { return; }\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var 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.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.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.isTouched = false;\n data.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.isTouchEvent && doc.activeElement) {\n if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.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 var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.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.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.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.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.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.isMoved = true;\n\n var 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.currentTranslate = diff + data.startTranslate;\n\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.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.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.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.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n }\n\n function onTouchEnd (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n var touchEndTime = Utils.now();\n var timeDiff = touchEndTime - data.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.lastClickTime) > 300) {\n if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n data.clickTimeout = Utils.nextTick(function () {\n if (!swiper || swiper.destroyed) { return; }\n swiper.emit('click', e);\n }, 300);\n }\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n swiper.emit('doubleTap', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(function () {\n if (!swiper.destroyed) { swiper.allowClick = true; }\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n var currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n 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.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n\n var distance = lastMoveEvent.position - velocityEvent.position;\n var 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.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) { newPosition = -newPosition; }\n\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var 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.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.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n } else if (params.freeModeSticky) {\n var nextSlide;\n for (var 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', function () {\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(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }\n swiper.emit('momentumBounce');\n\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\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(function () {\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 var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n for (var 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 var 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\n function onResize () {\n var swiper = this;\n\n var params = swiper.params;\n var el = swiper.el;\n\n if (el && el.offsetWidth === 0) { return; }\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n var allowSlideNext = swiper.allowSlideNext;\n var allowSlidePrev = swiper.allowSlidePrev;\n var snapGrid = swiper.snapGrid;\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 var 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 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\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\n function onClick (e) {\n var 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\n function attachEvents() {\n var swiper = this;\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\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 var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var 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 doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var 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 } : 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 doc.addEventListener('mousemove', swiper.onTouchMove, capture);\n doc.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\n function detachEvents() {\n var swiper = this;\n\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\n\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var 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 doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var 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 doc.removeEventListener('mousemove', swiper.onTouchMove, capture);\n doc.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\n var events = {\n attachEvents: attachEvents,\n detachEvents: detachEvents,\n };\n\n function setBreakpoint () {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var initialized = swiper.initialized;\n var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;\n var params = swiper.params;\n var breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }\n\n // Set breakpoint for window width and update parameters\n var breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') { return; }\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\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\n swiper.emit('breakpoint', breakpointParams);\n }\n }\n\n function getBreakpoint (breakpoints) {\n var swiper = this;\n // Get breakpoint for window width\n if (!breakpoints) { return undefined; }\n var breakpoint = false;\n var points = [];\n Object.keys(breakpoints).forEach(function (point) {\n points.push(point);\n });\n points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });\n for (var i = 0; i < points.length; i += 1) {\n var point = points[i];\n if (swiper.params.breakpointsInverse) {\n if (point <= win.innerWidth) {\n breakpoint = point;\n }\n } else if (point >= win.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n }\n\n var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };\n\n function addClasses () {\n var swiper = this;\n var classNames = swiper.classNames;\n var params = swiper.params;\n var rtl = swiper.rtl;\n var $el = swiper.$el;\n var suffixes = [];\n\n suffixes.push('initialized');\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 || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push((\"wp8-\" + (params.direction)));\n }\n\n suffixes.forEach(function (suffix) {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n }\n\n function removeClasses () {\n var swiper = this;\n var $el = swiper.$el;\n var classNames = swiper.classNames;\n\n $el.removeClass(classNames.join(' '));\n }\n\n var classes = { addClasses: addClasses, removeClasses: removeClasses };\n\n function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady() {\n if (callback) { callback(); }\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new win.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\n function preloadImages () {\n var 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 (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var 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\n var images = {\n loadImage: loadImage,\n preloadImages: preloadImages,\n };\n\n function checkOverflow() {\n var swiper = this;\n var 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\n var checkOverflow$1 = { checkOverflow: checkOverflow };\n\n var defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 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 breakpointsInverse: false,\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 centerInsufficientSlides: false,\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 touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\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\n /* eslint no-param-reassign: \"off\" */\n\n var prototypes = {\n update: update,\n translate: translate,\n transition: transition$1,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow$1,\n classes: classes,\n images: images,\n };\n\n var extendedDefaults = {};\n\n var Swiper = /*@__PURE__*/(function (SwiperClass) {\n function Swiper() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var el;\n var params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n (assign = args, el = assign[0], params = assign[1]);\n }\n if (!params) { params = {}; }\n\n params = Utils.extend({}, params);\n if (el && !params.el) { params.el = el; }\n\n SwiperClass.call(this, params);\n\n Object.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n var swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) { 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 var 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 var $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n var swipers = [];\n $el.each(function (index, containerEl) {\n var 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 var $wrapperEl = $el.children((\".\" + (swiper.params.wrapperClass)));\n\n // Extend Swiper\n Utils.extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $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: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function 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 var touch = ['touchstart', 'touchmove', 'touchend'];\n var 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\n if ( SwiperClass ) Swiper.__proto__ = SwiperClass;\n Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );\n Swiper.prototype.constructor = Swiper;\n\n var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };\n\n Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides;\n var slidesGrid = swiper.slidesGrid;\n var swiperSize = swiper.size;\n var activeIndex = swiper.activeIndex;\n var spv = 1;\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n for (var 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 (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {\n if (slides[i$1] && !breakLoop) {\n slideSize += slides[i$1].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) { breakLoop = true; }\n }\n }\n } else {\n for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {\n if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n };\n\n Swiper.prototype.update = function update () {\n var swiper = this;\n if (!swiper || swiper.destroyed) { return; }\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\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 var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n var 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\n Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) {\n if ( needUpdate === void 0 ) needUpdate = true;\n\n var swiper = this;\n var currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass((\"\" + (swiper.params.containerModifierClass) + currentDirection + \" wp8-\" + currentDirection))\n .addClass((\"\" + (swiper.params.containerModifierClass) + newDirection));\n\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n swiper.$el.addClass(((swiper.params.containerModifierClass) + \"wp8-\" + newDirection));\n }\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each(function (slideIndex, slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) { swiper.update(); }\n\n return swiper;\n };\n\n Swiper.prototype.init = function init () {\n var 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\n Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {\n if ( deleteInstance === void 0 ) deleteInstance = true;\n if ( cleanStyles === void 0 ) cleanStyles = true;\n\n var swiper = this;\n var params = swiper.params;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\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 ].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(function (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\n Swiper.extendDefaults = function extendDefaults (newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n };\n\n staticAccessors.extendedDefaults.get = function () {\n return extendedDefaults;\n };\n\n staticAccessors.defaults.get = function () {\n return defaults;\n };\n\n staticAccessors.Class.get = function () {\n return SwiperClass;\n };\n\n staticAccessors.$.get = function () {\n return $;\n };\n\n Object.defineProperties( Swiper, staticAccessors );\n\n return Swiper;\n }(SwiperClass));\n\n var Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n };\n\n var Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n };\n\n var Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n };\n\n var Resize = {\n name: 'resize',\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n // Emit resize\n win.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy() {\n var swiper = this;\n win.removeEventListener('resize', swiper.resize.resizeHandler);\n win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n };\n\n var Observer = {\n func: win.MutationObserver || win.WebkitMutationObserver,\n attach: function attach(target, options) {\n if ( options === void 0 ) options = {};\n\n var swiper = this;\n\n var ObserverFunc = Observer.func;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(observerUpdate);\n } else {\n win.setTimeout(observerUpdate, 0);\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: function init() {\n var swiper = this;\n if (!Support.observer || !swiper.params.observer) { return; }\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n for (var 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: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n };\n\n var Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create: function create() {\n var 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: function init() {\n var swiper = this;\n swiper.observer.init();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.destroy();\n },\n },\n };\n\n var Virtual = {\n update: function update(force) {\n var swiper = this;\n var ref = swiper.params;\n var slidesPerView = ref.slidesPerView;\n var slidesPerGroup = ref.slidesPerGroup;\n var centeredSlides = ref.centeredSlides;\n var ref$1 = swiper.params.virtual;\n var addSlidesBefore = ref$1.addSlidesBefore;\n var addSlidesAfter = ref$1.addSlidesAfter;\n var ref$2 = swiper.virtual;\n var previousFrom = ref$2.from;\n var previousTo = ref$2.to;\n var slides = ref$2.slides;\n var previousSlidesGrid = ref$2.slidesGrid;\n var renderSlide = ref$2.renderSlide;\n var previousOffset = ref$2.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n\n var offsetProp;\n if (swiper.rtlTranslate) { offsetProp = 'right'; }\n else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }\n\n var slidesAfter;\n var slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from: from,\n to: to,\n offset: offset,\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 !== previousOffset) {\n swiper.slides.css(offsetProp, (offset + \"px\"));\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset,\n from: from,\n to: to,\n slides: (function getSlides() {\n var slidesToRender = [];\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n var prependIndexes = [];\n var appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass))).remove();\n } else {\n for (var 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 (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (i$1 >= from && i$1 <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i$1);\n } else {\n if (i$1 > previousTo) { appendIndexes.push(i$1); }\n if (i$1 < previousFrom) { prependIndexes.push(i$1); }\n }\n }\n }\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + \"px\"));\n onRendered();\n },\n renderSlide: function renderSlide(slide, index) {\n var swiper = this;\n var params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n var $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $((\"
\" + slide + \"
\"));\n if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }\n if (params.cache) { swiper.virtual.cache[index] = $slideEl; }\n return $slideEl;\n },\n appendSlide: function appendSlide(slides) {\n var swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { swiper.virtual.slides.push(slides[i]); }\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide: function prependSlide(slides) {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var newActiveIndex = activeIndex + 1;\n var numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); }\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide: function removeSlide(slidesIndexes) {\n var swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; }\n var activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; }\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) { activeIndex -= 1; }\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides: function removeAllSlides() {\n var swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n };\n\n var Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create: function create() {\n var 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 removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"virtual\"));\n var overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.virtual.update();\n },\n },\n };\n\n var Keyboard = {\n handle: function handle(event) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n var 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 var windowWidth = win.innerWidth;\n var windowHeight = win.innerHeight;\n var swiperOffset = swiper.$el.offset();\n if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }\n var 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 for (var i = 0; i < swiperCoord.length; i += 1) {\n var 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 === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) { swiper.slideNext(); }\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) { swiper.slidePrev(); }\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n if (kc === 34 || kc === 40) { swiper.slideNext(); }\n if (kc === 33 || kc === 38) { swiper.slidePrev(); }\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable: function enable() {\n var swiper = this;\n if (swiper.keyboard.enabled) { return; }\n $(doc).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n if (!swiper.keyboard.enabled) { return; }\n $(doc).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n };\n\n var Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create: function create() {\n var 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: function init() {\n var swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n };\n\n function isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in doc;\n\n if (!isSupported) {\n var element = doc.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && doc.implementation\n && doc.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && doc.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n }\n var Mousewheel = {\n lastScrollTime: Utils.now(),\n event: (function getEvent() {\n if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }\n return isEventSupported() ? 'wheel' : 'mousewheel';\n }()),\n normalize: function normalize(e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n\n var sX = 0;\n var sY = 0; // spinX, spinY\n var pX = 0;\n var 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: function handleMouseEnter() {\n var swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n var swiper = this;\n swiper.mouseEntered = false;\n },\n handle: function handle(event) {\n var e = event;\n var swiper = this;\n var params = swiper.params.mousewheel;\n\n if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; }\n\n if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n var data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; }\n else { return true; }\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; }\n else { return true; }\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.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 win.Date()).getTime();\n } else {\n // Freemode or scrollContainer:\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n var position = swiper.getTranslate() + (delta * params.sensitivity);\n var wasBeginning = swiper.isBeginning;\n var 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(function () {\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: function enable() {\n var swiper = this;\n if (!Mousewheel.event) { return false; }\n if (swiper.mousewheel.enabled) { return false; }\n var 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: function disable() {\n var swiper = this;\n if (!Mousewheel.event) { return false; }\n if (!swiper.mousewheel.enabled) { return false; }\n var 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\n var 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: function create() {\n var 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: function init() {\n var swiper = this;\n if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }\n },\n },\n };\n\n var Navigation = {\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\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 onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) { return; }\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) { return; }\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) { return; }\n\n var $nextEl;\n var $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', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n };\n\n var 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: function create() {\n var 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 onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.navigation.destroy();\n },\n click: function click(e) {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n var isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n };\n\n var Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n // Current/Total\n var current;\n var 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 var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var 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(function (index, bullet) {\n var $bullet = $(bullet);\n var 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 var $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n for (var 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 var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n var 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 var progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n var scale = (current + 1) / total;\n var scaleX = 1;\n var 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: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (var 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 $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: function init() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el) { return; }\n\n var $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 var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) { index += swiper.loopedSlides; }\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el: $el,\n el: $el[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var $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\n var 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: function (number) { return number; },\n formatFractionTotal: function (number) { return 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: function create() {\n var 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: function init() {\n var swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange() {\n var 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: function snapIndexChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange() {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.pagination.destroy();\n },\n click: function click(e) {\n var 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 var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n };\n\n var Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var progress = swiper.progress;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n\n var newSize = dragSize;\n var 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(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var 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.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition: function getPointerPosition(e) {\n var swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n },\n setDragPosition: function setDragPosition(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n var dragStartPos = scrollbar.dragStartPos;\n\n var positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n var 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: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\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: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\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: function onDragEnd(e) {\n var swiper = this;\n\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $el = scrollbar.$el;\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(function () {\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: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEventsTouch = swiper.touchEventsTouch;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEventsTouch = swiper.touchEventsTouch;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n\n var $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 var $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: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n };\n\n var 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: function create() {\n var 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 getPointerPosition: Scrollbar.getPointerPosition.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: function init() {\n var swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize: function resize() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n };\n\n var Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n\n var $el = $(el);\n var rtlFactor = rtl ? -1 : 1;\n\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var 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 var 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 var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\"));\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\n var progress = swiper.progress;\n var snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideIndex, slideEl) {\n var 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], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition(duration) {\n if ( duration === void 0 ) duration = this.params.speed;\n\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each(function (index, parallaxEl) {\n var $parallaxEl = $(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) { parallaxDuration = 0; }\n $parallaxEl.transition(parallaxDuration);\n });\n },\n };\n\n var Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create: function create() {\n var 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: function beforeInit() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTransition(duration);\n },\n },\n };\n\n var Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) { return 1; }\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\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: function onGestureChange(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\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 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) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));\n }\n gesture.$imageEl.transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\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: function onTouchStart(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\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: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\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 var scaledWidth = image.width * zoom.scale;\n var 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 } 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) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (Math.pow( ((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: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\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 var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var 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 var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var 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: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\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\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle: function toggle(e) {\n var swiper = this;\n var 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: function in$1(e) {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\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 var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var 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: function out() {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\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: function enable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.enabled) { return; }\n zoom.enabled = true;\n\n var 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: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled) { return; }\n\n swiper.zoom.enabled = false;\n\n var 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\n var 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: function create() {\n var swiper = this;\n var 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\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom: zoom,\n });\n\n var scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get: function get() {\n return scale;\n },\n set: function set(value) {\n if (scale !== value) {\n var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.zoom.disable();\n },\n touchStart: function touchStart(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(e) {\n var swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n };\n\n var Lazy = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if ( loadInDuplicate === void 0 ) loadInDuplicate = true;\n\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index === 'undefined') { return; }\n if (swiper.slides.length === 0) { return; }\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n var $slideEl = isVirtual\n ? swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\"))\n : swiper.slides.eq(index);\n\n var $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(function (imageIndex, imageEl) {\n var $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {\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 var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + (swiper.params.slideDuplicateClass) + \")\"));\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var 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: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var swiperParams = swiper.params;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n\n var slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children((\".\" + (swiperParams.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\")).length) {\n return true;\n }\n } else if (slides[index]) { 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(function (elIndex, slideEl) {\n var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (var 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 var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {\n if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }\n }\n // Prev Slides\n for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {\n if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }\n }\n } else {\n var nextSlide = $wrapperEl.children((\".\" + (swiperParams.slideNextClass)));\n if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }\n\n var prevSlide = $wrapperEl.children((\".\" + (swiperParams.slidePrevClass)));\n if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }\n }\n }\n },\n };\n\n var 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: function create() {\n var 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: function beforeInit() {\n var swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll: function scroll() {\n var swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize: function resize() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove: function scrollbarDragMove() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart() {\n var 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: function transitionEnd() {\n var 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\n var Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = (function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (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 var i1;\n var 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: function getInterpolateFunction(c) {\n var 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: function setTranslate(setTranslate$1, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var 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 var 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 (var 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: function setTransition(duration, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(function () {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(function () {\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 };\n var Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create: function create() {\n var 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: function update() {\n var 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: function resize() {\n var 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: function observerUpdate() {\n var 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: function setTranslate(translate, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTransition(duration, byController);\n },\n },\n };\n\n var a11y = {\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey: function onEnterKey(e) {\n var swiper = this;\n var params = swiper.params.a11y;\n if (e.keyCode !== 13) { return; }\n var $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: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) { return; }\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\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: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {\n var $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: function init() {\n var swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n var params = swiper.params.a11y;\n var $nextEl;\n var $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: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }\n\n var $nextEl;\n var $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 };\n var 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: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $((\"\")),\n },\n });\n Object.keys(a11y).forEach(function (methodName) {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updatePagination();\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.destroy();\n },\n },\n };\n\n var History = {\n init: function init() {\n var swiper = this;\n if (!swiper.params.history) { return; }\n if (!win.history || !win.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n var 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 win.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.history.replaceState) {\n win.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState: function setHistoryPopState() {\n var swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues: function getPathValues() {\n var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return { key: key, value: value };\n },\n setHistory: function setHistory(key, index) {\n var swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }\n var slide = swiper.slides.eq(index);\n var value = History.slugify(slide.attr('data-history'));\n if (!win.location.pathname.includes(key)) {\n value = key + \"/\" + value;\n }\n var currentState = win.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n win.history.replaceState({ value: value }, null, value);\n } else {\n win.history.pushState({ value: value }, null, value);\n }\n },\n slugify: function slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n if (value) {\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n };\n\n var History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create: function create() {\n var 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: function init() {\n var swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n };\n\n var HashNavigation = {\n onHashCange: function onHashCange() {\n var swiper = this;\n var newHash = doc.location.hash.replace('#', '');\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n var newIndex = swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-hash=\\\"\" + newHash + \"\\\"]\")).index();\n if (typeof newIndex === 'undefined') { return; }\n swiper.slideTo(newIndex);\n }\n },\n setHash: function setHash() {\n var swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }\n if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {\n win.history.replaceState(null, null, ((\"#\" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));\n } else {\n var slide = swiper.slides.eq(swiper.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n doc.location.hash = hash || '';\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }\n swiper.hashNavigation.initialized = true;\n var hash = doc.location.hash.replace('#', '');\n if (hash) {\n var speed = 0;\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(win).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(win).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n };\n var HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create: function create() {\n var 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: function init() {\n var swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n };\n\n /* eslint no-underscore-dangle: \"off\" */\n\n var Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var 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 clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(function () {\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: function start() {\n var 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: function stop() {\n var 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: function pause(speed) {\n var 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\n var 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: function create() {\n var 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: function 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: function init() {\n var swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n var 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: function sliderFirstMove() {\n var 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: function destroy() {\n var swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n },\n },\n };\n\n var Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var 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: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) { return; }\n if (!swiper || swiper.destroyed) { return; }\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create: function create() {\n var 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: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"fade\"));\n var 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: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTransition(duration);\n },\n },\n };\n\n var Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var rtl = swiper.rtlTranslate;\n var swiperSize = swiper.size;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $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 (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var 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 var transform = \"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);\n if (params.slideShadows) {\n // Set shadows\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var 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 var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n var multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var offset = params.shadowOffset;\n $cubeShadowEl.transform((\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + ((swiperHeight / 2) + offset) + \"px, \" + (-swiperHeight / 2 / scale2) + \"px) rotateX(-90deg)\"));\n }\n }\n var 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: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\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\n var 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: function create() {\n var 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: function beforeInit() {\n var 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 var 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: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTransition(duration);\n },\n },\n };\n\n var Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n var offset = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset;\n var 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 var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var 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: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var $wrapperEl = swiper.$wrapperEl;\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 var 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 var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create: function create() {\n var 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: function beforeInit() {\n var 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 var 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: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTransition(duration);\n },\n },\n };\n\n var Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform = swiper.translate;\n var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth;\n // Each slide offset from center\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n\n var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n var 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 var 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 var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $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 var ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = center + \"px 50%\";\n }\n },\n setTransition: function setTransition(duration) {\n var 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\n var 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: function create() {\n var 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: function beforeInit() {\n var 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: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n };\n\n var Thumbs = {\n init: function init() {\n var swiper = this;\n var ref = swiper.params;\n var thumbsParams = ref.thumbs;\n var SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; }\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }\n var slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n var prevIndex = swiper.slides.eq(currentIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; }\n else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; }\n else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; }\n else { slideToIndex = prevIndex; }\n }\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0).index();\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0).index();\n if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; }\n else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; }\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; }\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; }\n else { newThumbsIndex = prevThumbsIndex; }\n } else {\n newThumbsIndex = swiper.realIndex;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\")).addClass(thumbActiveClass);\n }\n } else {\n for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass);\n }\n }\n },\n };\n var Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n var ref = swiper.params;\n var thumbs = ref.thumbs;\n if (!thumbs || !thumbs.swiper) { return; }\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n update: function update() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n };\n\n // Swiper Class\n\n var 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 Thumbs$1\n ];\n\n if (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n }\n\n Swiper.use(components);\n\n return Swiper;\n\n}));\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","module.exports = false;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","/*!\nWaypoints - 4.0.1\nCopyright © 2011-2016 Caleb Troughton\nLicensed under the MIT license.\nhttps://github.com/imakewebthings/waypoints/blob/master/licenses.txt\n*/\n(function() {\n 'use strict'\n\n var keyCounter = 0\n var allWaypoints = {}\n\n /* http://imakewebthings.com/waypoints/api/waypoint */\n function Waypoint(options) {\n if (!options) {\n throw new Error('No options passed to Waypoint constructor')\n }\n if (!options.element) {\n throw new Error('No element option passed to Waypoint constructor')\n }\n if (!options.handler) {\n throw new Error('No handler option passed to Waypoint constructor')\n }\n\n this.key = 'waypoint-' + keyCounter\n this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)\n this.element = this.options.element\n this.adapter = new Waypoint.Adapter(this.element)\n this.callback = options.handler\n this.axis = this.options.horizontal ? 'horizontal' : 'vertical'\n this.enabled = this.options.enabled\n this.triggerPoint = null\n this.group = Waypoint.Group.findOrCreate({\n name: this.options.group,\n axis: this.axis\n })\n this.context = Waypoint.Context.findOrCreateByElement(this.options.context)\n\n if (Waypoint.offsetAliases[this.options.offset]) {\n this.options.offset = Waypoint.offsetAliases[this.options.offset]\n }\n this.group.add(this)\n this.context.add(this)\n allWaypoints[this.key] = this\n keyCounter += 1\n }\n\n /* Private */\n Waypoint.prototype.queueTrigger = function(direction) {\n this.group.queueTrigger(this, direction)\n }\n\n /* Private */\n Waypoint.prototype.trigger = function(args) {\n if (!this.enabled) {\n return\n }\n if (this.callback) {\n this.callback.apply(this, args)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy */\n Waypoint.prototype.destroy = function() {\n this.context.remove(this)\n this.group.remove(this)\n delete allWaypoints[this.key]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable */\n Waypoint.prototype.disable = function() {\n this.enabled = false\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable */\n Waypoint.prototype.enable = function() {\n this.context.refresh()\n this.enabled = true\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/next */\n Waypoint.prototype.next = function() {\n return this.group.next(this)\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/previous */\n Waypoint.prototype.previous = function() {\n return this.group.previous(this)\n }\n\n /* Private */\n Waypoint.invokeAll = function(method) {\n var allWaypointsArray = []\n for (var waypointKey in allWaypoints) {\n allWaypointsArray.push(allWaypoints[waypointKey])\n }\n for (var i = 0, end = allWaypointsArray.length; i < end; i++) {\n allWaypointsArray[i][method]()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy-all */\n Waypoint.destroyAll = function() {\n Waypoint.invokeAll('destroy')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable-all */\n Waypoint.disableAll = function() {\n Waypoint.invokeAll('disable')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable-all */\n Waypoint.enableAll = function() {\n Waypoint.Context.refreshAll()\n for (var waypointKey in allWaypoints) {\n allWaypoints[waypointKey].enabled = true\n }\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/refresh-all */\n Waypoint.refreshAll = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-height */\n Waypoint.viewportHeight = function() {\n return window.innerHeight || document.documentElement.clientHeight\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-width */\n Waypoint.viewportWidth = function() {\n return document.documentElement.clientWidth\n }\n\n Waypoint.adapters = []\n\n Waypoint.defaults = {\n context: window,\n continuous: true,\n enabled: true,\n group: 'default',\n horizontal: false,\n offset: 0\n }\n\n Waypoint.offsetAliases = {\n 'bottom-in-view': function() {\n return this.context.innerHeight() - this.adapter.outerHeight()\n },\n 'right-in-view': function() {\n return this.context.innerWidth() - this.adapter.outerWidth()\n }\n }\n\n window.Waypoint = Waypoint\n}())\n;(function() {\n 'use strict'\n\n function requestAnimationFrameShim(callback) {\n window.setTimeout(callback, 1000 / 60)\n }\n\n var keyCounter = 0\n var contexts = {}\n var Waypoint = window.Waypoint\n var oldWindowLoad = window.onload\n\n /* http://imakewebthings.com/waypoints/api/context */\n function Context(element) {\n this.element = element\n this.Adapter = Waypoint.Adapter\n this.adapter = new this.Adapter(element)\n this.key = 'waypoint-context-' + keyCounter\n this.didScroll = false\n this.didResize = false\n this.oldScroll = {\n x: this.adapter.scrollLeft(),\n y: this.adapter.scrollTop()\n }\n this.waypoints = {\n vertical: {},\n horizontal: {}\n }\n\n element.waypointContextKey = this.key\n contexts[element.waypointContextKey] = this\n keyCounter += 1\n if (!Waypoint.windowContext) {\n Waypoint.windowContext = true\n Waypoint.windowContext = new Context(window)\n }\n\n this.createThrottledScrollHandler()\n this.createThrottledResizeHandler()\n }\n\n /* Private */\n Context.prototype.add = function(waypoint) {\n var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'\n this.waypoints[axis][waypoint.key] = waypoint\n this.refresh()\n }\n\n /* Private */\n Context.prototype.checkEmpty = function() {\n var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)\n var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)\n var isWindow = this.element == this.element.window\n if (horizontalEmpty && verticalEmpty && !isWindow) {\n this.adapter.off('.waypoints')\n delete contexts[this.key]\n }\n }\n\n /* Private */\n Context.prototype.createThrottledResizeHandler = function() {\n var self = this\n\n function resizeHandler() {\n self.handleResize()\n self.didResize = false\n }\n\n this.adapter.on('resize.waypoints', function() {\n if (!self.didResize) {\n self.didResize = true\n Waypoint.requestAnimationFrame(resizeHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.createThrottledScrollHandler = function() {\n var self = this\n function scrollHandler() {\n self.handleScroll()\n self.didScroll = false\n }\n\n this.adapter.on('scroll.waypoints', function() {\n if (!self.didScroll || Waypoint.isTouch) {\n self.didScroll = true\n Waypoint.requestAnimationFrame(scrollHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.handleResize = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Private */\n Context.prototype.handleScroll = function() {\n var triggeredGroups = {}\n var axes = {\n horizontal: {\n newScroll: this.adapter.scrollLeft(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left'\n },\n vertical: {\n newScroll: this.adapter.scrollTop(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n var isForward = axis.newScroll > axis.oldScroll\n var direction = isForward ? axis.forward : axis.backward\n\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n if (waypoint.triggerPoint === null) {\n continue\n }\n var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint\n var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint\n var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint\n var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint\n if (crossedForward || crossedBackward) {\n waypoint.queueTrigger(direction)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n\n this.oldScroll = {\n x: axes.horizontal.newScroll,\n y: axes.vertical.newScroll\n }\n }\n\n /* Private */\n Context.prototype.innerHeight = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportHeight()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerHeight()\n }\n\n /* Private */\n Context.prototype.remove = function(waypoint) {\n delete this.waypoints[waypoint.axis][waypoint.key]\n this.checkEmpty()\n }\n\n /* Private */\n Context.prototype.innerWidth = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportWidth()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerWidth()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-destroy */\n Context.prototype.destroy = function() {\n var allWaypoints = []\n for (var axis in this.waypoints) {\n for (var waypointKey in this.waypoints[axis]) {\n allWaypoints.push(this.waypoints[axis][waypointKey])\n }\n }\n for (var i = 0, end = allWaypoints.length; i < end; i++) {\n allWaypoints[i].destroy()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-refresh */\n Context.prototype.refresh = function() {\n /*eslint-disable eqeqeq */\n var isWindow = this.element == this.element.window\n /*eslint-enable eqeqeq */\n var contextOffset = isWindow ? undefined : this.adapter.offset()\n var triggeredGroups = {}\n var axes\n\n this.handleScroll()\n axes = {\n horizontal: {\n contextOffset: isWindow ? 0 : contextOffset.left,\n contextScroll: isWindow ? 0 : this.oldScroll.x,\n contextDimension: this.innerWidth(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left',\n offsetProp: 'left'\n },\n vertical: {\n contextOffset: isWindow ? 0 : contextOffset.top,\n contextScroll: isWindow ? 0 : this.oldScroll.y,\n contextDimension: this.innerHeight(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up',\n offsetProp: 'top'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n var adjustment = waypoint.options.offset\n var oldTriggerPoint = waypoint.triggerPoint\n var elementOffset = 0\n var freshWaypoint = oldTriggerPoint == null\n var contextModifier, wasBeforeScroll, nowAfterScroll\n var triggeredBackward, triggeredForward\n\n if (waypoint.element !== waypoint.element.window) {\n elementOffset = waypoint.adapter.offset()[axis.offsetProp]\n }\n\n if (typeof adjustment === 'function') {\n adjustment = adjustment.apply(waypoint)\n }\n else if (typeof adjustment === 'string') {\n adjustment = parseFloat(adjustment)\n if (waypoint.options.offset.indexOf('%') > - 1) {\n adjustment = Math.ceil(axis.contextDimension * adjustment / 100)\n }\n }\n\n contextModifier = axis.contextScroll - axis.contextOffset\n waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)\n wasBeforeScroll = oldTriggerPoint < axis.oldScroll\n nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll\n triggeredBackward = wasBeforeScroll && nowAfterScroll\n triggeredForward = !wasBeforeScroll && !nowAfterScroll\n\n if (!freshWaypoint && triggeredBackward) {\n waypoint.queueTrigger(axis.backward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (!freshWaypoint && triggeredForward) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n Waypoint.requestAnimationFrame(function() {\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n })\n\n return this\n }\n\n /* Private */\n Context.findOrCreateByElement = function(element) {\n return Context.findByElement(element) || new Context(element)\n }\n\n /* Private */\n Context.refreshAll = function() {\n for (var contextId in contexts) {\n contexts[contextId].refresh()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-find-by-element */\n Context.findByElement = function(element) {\n return contexts[element.waypointContextKey]\n }\n\n window.onload = function() {\n if (oldWindowLoad) {\n oldWindowLoad()\n }\n Context.refreshAll()\n }\n\n\n Waypoint.requestAnimationFrame = function(callback) {\n var requestFn = window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n requestAnimationFrameShim\n requestFn.call(window, callback)\n }\n Waypoint.Context = Context\n}())\n;(function() {\n 'use strict'\n\n function byTriggerPoint(a, b) {\n return a.triggerPoint - b.triggerPoint\n }\n\n function byReverseTriggerPoint(a, b) {\n return b.triggerPoint - a.triggerPoint\n }\n\n var groups = {\n vertical: {},\n horizontal: {}\n }\n var Waypoint = window.Waypoint\n\n /* http://imakewebthings.com/waypoints/api/group */\n function Group(options) {\n this.name = options.name\n this.axis = options.axis\n this.id = this.name + '-' + this.axis\n this.waypoints = []\n this.clearTriggerQueues()\n groups[this.axis][this.name] = this\n }\n\n /* Private */\n Group.prototype.add = function(waypoint) {\n this.waypoints.push(waypoint)\n }\n\n /* Private */\n Group.prototype.clearTriggerQueues = function() {\n this.triggerQueues = {\n up: [],\n down: [],\n left: [],\n right: []\n }\n }\n\n /* Private */\n Group.prototype.flushTriggers = function() {\n for (var direction in this.triggerQueues) {\n var waypoints = this.triggerQueues[direction]\n var reverse = direction === 'up' || direction === 'left'\n waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)\n for (var i = 0, end = waypoints.length; i < end; i += 1) {\n var waypoint = waypoints[i]\n if (waypoint.options.continuous || i === waypoints.length - 1) {\n waypoint.trigger([direction])\n }\n }\n }\n this.clearTriggerQueues()\n }\n\n /* Private */\n Group.prototype.next = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n var isLast = index === this.waypoints.length - 1\n return isLast ? null : this.waypoints[index + 1]\n }\n\n /* Private */\n Group.prototype.previous = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n return index ? this.waypoints[index - 1] : null\n }\n\n /* Private */\n Group.prototype.queueTrigger = function(waypoint, direction) {\n this.triggerQueues[direction].push(waypoint)\n }\n\n /* Private */\n Group.prototype.remove = function(waypoint) {\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n if (index > -1) {\n this.waypoints.splice(index, 1)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/first */\n Group.prototype.first = function() {\n return this.waypoints[0]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/last */\n Group.prototype.last = function() {\n return this.waypoints[this.waypoints.length - 1]\n }\n\n /* Private */\n Group.findOrCreate = function(options) {\n return groups[options.axis][options.name] || new Group(options)\n }\n\n Waypoint.Group = Group\n}())\n;(function() {\n 'use strict'\n\n var Waypoint = window.Waypoint\n\n function isWindow(element) {\n return element === element.window\n }\n\n function getWindow(element) {\n if (isWindow(element)) {\n return element\n }\n return element.defaultView\n }\n\n function NoFrameworkAdapter(element) {\n this.element = element\n this.handlers = {}\n }\n\n NoFrameworkAdapter.prototype.innerHeight = function() {\n var isWin = isWindow(this.element)\n return isWin ? this.element.innerHeight : this.element.clientHeight\n }\n\n NoFrameworkAdapter.prototype.innerWidth = function() {\n var isWin = isWindow(this.element)\n return isWin ? this.element.innerWidth : this.element.clientWidth\n }\n\n NoFrameworkAdapter.prototype.off = function(event, handler) {\n function removeListeners(element, listeners, handler) {\n for (var i = 0, end = listeners.length - 1; i < end; i++) {\n var listener = listeners[i]\n if (!handler || handler === listener) {\n element.removeEventListener(listener)\n }\n }\n }\n\n var eventParts = event.split('.')\n var eventType = eventParts[0]\n var namespace = eventParts[1]\n var element = this.element\n\n if (namespace && this.handlers[namespace] && eventType) {\n removeListeners(element, this.handlers[namespace][eventType], handler)\n this.handlers[namespace][eventType] = []\n }\n else if (eventType) {\n for (var ns in this.handlers) {\n removeListeners(element, this.handlers[ns][eventType] || [], handler)\n this.handlers[ns][eventType] = []\n }\n }\n else if (namespace && this.handlers[namespace]) {\n for (var type in this.handlers[namespace]) {\n removeListeners(element, this.handlers[namespace][type], handler)\n }\n this.handlers[namespace] = {}\n }\n }\n\n /* Adapted from jQuery 1.x offset() */\n NoFrameworkAdapter.prototype.offset = function() {\n if (!this.element.ownerDocument) {\n return null\n }\n\n var documentElement = this.element.ownerDocument.documentElement\n var win = getWindow(this.element.ownerDocument)\n var rect = {\n top: 0,\n left: 0\n }\n\n if (this.element.getBoundingClientRect) {\n rect = this.element.getBoundingClientRect()\n }\n\n return {\n top: rect.top + win.pageYOffset - documentElement.clientTop,\n left: rect.left + win.pageXOffset - documentElement.clientLeft\n }\n }\n\n NoFrameworkAdapter.prototype.on = function(event, handler) {\n var eventParts = event.split('.')\n var eventType = eventParts[0]\n var namespace = eventParts[1] || '__default'\n var nsHandlers = this.handlers[namespace] = this.handlers[namespace] || {}\n var nsTypeList = nsHandlers[eventType] = nsHandlers[eventType] || []\n\n nsTypeList.push(handler)\n this.element.addEventListener(eventType, handler)\n }\n\n NoFrameworkAdapter.prototype.outerHeight = function(includeMargin) {\n var height = this.innerHeight()\n var computedStyle\n\n if (includeMargin && !isWindow(this.element)) {\n computedStyle = window.getComputedStyle(this.element)\n height += parseInt(computedStyle.marginTop, 10)\n height += parseInt(computedStyle.marginBottom, 10)\n }\n\n return height\n }\n\n NoFrameworkAdapter.prototype.outerWidth = function(includeMargin) {\n var width = this.innerWidth()\n var computedStyle\n\n if (includeMargin && !isWindow(this.element)) {\n computedStyle = window.getComputedStyle(this.element)\n width += parseInt(computedStyle.marginLeft, 10)\n width += parseInt(computedStyle.marginRight, 10)\n }\n\n return width\n }\n\n NoFrameworkAdapter.prototype.scrollLeft = function() {\n var win = getWindow(this.element)\n return win ? win.pageXOffset : this.element.scrollLeft\n }\n\n NoFrameworkAdapter.prototype.scrollTop = function() {\n var win = getWindow(this.element)\n return win ? win.pageYOffset : this.element.scrollTop\n }\n\n NoFrameworkAdapter.extend = function() {\n var args = Array.prototype.slice.call(arguments)\n\n function merge(target, obj) {\n if (typeof target === 'object' && typeof obj === 'object') {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n target[key] = obj[key]\n }\n }\n }\n\n return target\n }\n\n for (var i = 1, end = args.length; i < end; i++) {\n merge(args[0], args[i])\n }\n return args[0]\n }\n\n NoFrameworkAdapter.inArray = function(element, array, i) {\n return array == null ? -1 : array.indexOf(element, i)\n }\n\n NoFrameworkAdapter.isEmptyObject = function(obj) {\n /* eslint no-unused-vars: 0 */\n for (var name in obj) {\n return false\n }\n return true\n }\n\n Waypoint.adapters.push({\n name: 'noframework',\n Adapter: NoFrameworkAdapter\n })\n Waypoint.Adapter = NoFrameworkAdapter\n}())\n;","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = { polyfill: polyfill };\n } else {\n // global\n polyfill();\n }\n\n}());\n"],"sourceRoot":""}