{"version":3,"sources":["webpack:///../src/index.ts","webpack:///(webpack)/buildin/harmony-module.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///./node_modules/tiny-slider/src/helpers/Object.keys.js","webpack:///./node_modules/tiny-slider/src/helpers/childNode.remove.js","webpack:///./node_modules/tiny-slider/src/helpers/raf.js","webpack:///./node_modules/tiny-slider/src/helpers/caf.js","webpack:///./node_modules/tiny-slider/src/helpers/extend.js","webpack:///./node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///./node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///./node_modules/tiny-slider/src/helpers/getBody.js","webpack:///./node_modules/tiny-slider/src/helpers/docElement.js","webpack:///./node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///./node_modules/tiny-slider/src/helpers/forEach.js","webpack:///./node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///./node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///./node_modules/tiny-slider/src/helpers/addClass.js","webpack:///./node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///./node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///./node_modules/tiny-slider/src/helpers/showElement.js","webpack:///./node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///./node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///./node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/events.js","webpack:///./node_modules/tiny-slider/src/tiny-slider.js","webpack:///./node_modules/tiny-slider/src/helpers/calc.js","webpack:///./node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///./node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///./node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///./node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///./node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///./node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///./node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///./node_modules/lazysizes/plugins/unveilhooks/ls.unveilhooks.js","webpack:///./node_modules/lazysizes/plugins/bgset/ls.bgset.js"],"names":["options","module","exports","originalModule","webpackPolyfill","Object","create","children","defineProperty","enumerable","get","l","i","__webpack_amd_options__","g","this","Function","e","window","factory","lazySizes","document","Date","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","init","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","docElem","documentElement","supportPicture","HTMLPictureElement","addEventListener","bind","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","forEach","Array","prototype","hasClass","ele","cls","RegExp","test","addClass","setAttribute","trim","removeClass","reg","replace","addRemoveLoadEvents","dom","fn","add","action","evt","triggerEvent","elem","name","detail","noBubbles","noCancelable","event","createEvent","instance","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","style","getComputedStyle","getWidth","parent","width","offsetWidth","_lazysizesWidth","parentNode","rAF","firstFns","secondFns","fns","run","runFns","length","running","waiting","shift","rafBatch","queue","apply","arguments","push","hidden","_lsFlush","rAFIt","simple","that","args","debounce","func","timeout","timestamp","later","last","now","loader","regImg","regIframe","supportScroll","navigator","userAgent","currentExpand","isLoading","lowRuns","resetPreloading","target","isVisible","isBodyHidden","body","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","offsetParent","getBoundingClientRect","left","right","top","bottom","checkElements","eLlen","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","clientWidth","_defEx","eLvW","innerWidth","elvH","innerHeight","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","lastTime","gDelay","rICTimeout","idleCallback","isPriority","delay","throttle","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","handleSources","source","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","resetPreloadingTimer","call","getElementsByTagName","contentWindow","location","changeIframeSrc","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","started","_","persisted","loadingElements","querySelectorAll","img","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","_aLSL","sizeElement","sources","len","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW","keys","object","hasOwnProperty","Element","remove","removeChild","raf","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","caf","cancelAnimationFrame","mozCancelAnimationFrame","id","extend","obj","copy","undefined","checkStorageValue","value","indexOf","JSON","parse","setLocalStorage","storage","key","access","setItem","getBody","doc","createElement","fake","docElement","setFakeBody","docOverflow","overflow","background","appendChild","resetFakeBody","offsetHeight","addCSSRule","sheet","selector","rules","index","insertRule","addRule","getCssRulesLength","cssRules","arr","callback","scope","classListSupport","str","classList","contains","className","hasAttr","attr","hasAttribute","getAttr","getAttribute","isNodeList","item","setAttrs","els","attrs","toString","removeAttrs","attrLength","j","removeAttribute","arrayFromNodeList","nl","hideElement","forceHide","display","showElement","whichProperty","props","Props","charAt","toUpperCase","substr","prefix","getEndProperty","propIn","propOut","endProp","toLowerCase","supportsPassive","passiveOption","passive","addEvents","preventScrolling","option","removeEvents","removeEventListener","Events","topics","on","eventName","off","splice","emit","data","type","tns","container","mode","axis","items","gutter","edgePadding","fixedWidth","autoWidth","viewportMax","slideBy","center","controls","controlsPosition","controlsText","controlsContainer","prevButton","nextButton","nav","navPosition","navContainer","navAsThumbnails","arrowKeys","speed","autoplay","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","loop","rewind","autoHeight","responsive","lazyload","lazyloadSelector","touch","mouseDrag","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","onInit","useLocalStorage","win","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","uid","localStorage","getItem","removeItem","CALC","div","result","val","vals","calc","PERCENTAGELAYOUT","supported","wrapper","outer","innerHTML","Math","abs","count","percentageLayout","CSSMQ","position","rule","styleSheet","cssText","createTextNode","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","slice","insertBefore","getPropertyValue","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","console","warn","tnsList","optionsElements","querySelector","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","outerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","media","getOption","viewport","getViewportWidth","floor","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","ceil","min","max","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","events","newContainerClasses","slideId","tnsId","disable","disabled","freeze","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","keyIndex","keyCode","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","Number","targetIndexBase","pages","goTo","navCurrentIndex","animating","stopAutoplay","curElement","activeElement","setFocus","navItems","hoverEvents","stopAutoplayTimer","autoplayHoverPaused","setAutoplayTimer","visibilityEvent","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","imgCompleteClass","imgEvents","imgLoaded","imgCompleted","preventScroll","prevIsButton","nextIsButton","controlsContainerHTML","prevButtonHTML","nextButtonHTML","navContainerHTML","getPages","pagesCached","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayTimer","autoplayUserPaused","autoplayButtonHTML","autoplayHtmlStrings","translateInit","rafIndex","initPosition","lastPosition","panStart","getDist","a","b","x","y","resetVariblesWhenDisable","fragmentBefore","createDocumentFragment","fragmentAfter","num","cloneFirst","cloneNode","firstChild","cloneLast","initStructure","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","update_carousel_transition_duration","parseInt","opts","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","element","postfix","to","duration","tick","unit","from","positionTick","resetDuration","doContainerTransform","getContainerTransformValue","moveElement","updateContentWrapperHeight","eve","animateSlide","version","getInfo","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","destroy","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","rebuild","condition","ind","getAbsIndex","absIndex","getInsertPosition","pos","gap","getClientWidth","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","substring","imgs","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","toFixed","initSliderTransformCore","setSlidePositions","updateSlideStatus","insertAdjacentHTML","getLiveRegionStr","txt","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","resizeTasks","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","classN","enableUI","enableSlider","margin","unfreezeSlider","height","html","updateLiveRegion","updateGallerySlidePositions","autoheightTem","deleteRule","removeRule","removeCSSRule","vp","getVisibleSlideRange","start","end","rangestart","rangeend","parseFloat","point","cell","stopPropagation","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","base","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","number","classOut","classIn","isOut","render","sliderMoved","strTrans","propertyName","targetIndex","indexGap","isNaN","factor","dir","passEventObject","targetIn","updateAutoplayButton","focus","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","preventDefault","returnValue","getMoveDirectionExpected","angle","atan2","PI","direction","$","clientX","clientY","panUpdate","err","dist","preventClick","indexMoved","moved","rough","displayIndex","bgLoad","regBgUrlEscape","uniqueUrls","addStyleScript","insertElem","rel","href","url","onerror","tmp","bg","poster","preload","er","requireJs","backgroundImage","stringify","regWhite","regSplitSet","regSource","regType","allowedBackgroundSize","contain","cover","setTypeOrMedia","match","typeMatch","proxyLoad","_lazybgset","image","currentSrc","useSrc","_lazybgsetLoading","set","alt","sets","picture","ratio","optimumx","writable","split","createPicture","bgSize","backgroundSize","getBgSize","_lazysizesParentFit"],"mappings":"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","file":"vendors.js","sourcesContent":["const defaults = {\n duration: 400,\n easing: (currentTime, startValue, diffValue, dureation) => {\n return -diffValue * (currentTime /= dureation) * (currentTime - 2) + startValue;\n }\n};\nconst directions = {\n OPEN: 1,\n CLOSE: 2\n};\nexport const slideUp = (element, args = {}) => {\n if (isInteger(args)) {\n args = { duration: args };\n }\n const options = extend(defaults, args);\n options.direction = directions.CLOSE;\n options.to = 0;\n options.startingHeight = element.scrollHeight;\n options.distanceHeight = -options.startingHeight;\n setElementAnimationStyles(element);\n window.requestAnimationFrame((timestamp) => animate(element, options, timestamp));\n};\nexport const slideDown = (element, args = {}) => {\n if (isInteger(args)) {\n args = { duration: args };\n }\n element.style.height = '0px';\n setElementAnimationStyles(element);\n const options = extend(defaults, args);\n options.direction = directions.OPEN;\n options.to = element.scrollHeight;\n options.startingHeight = 0;\n options.distanceHeight = options.to;\n window.requestAnimationFrame((timestamp) => animate(element, options, timestamp));\n};\nconst animate = (element, options, now) => {\n if (!options.startTime) {\n options.startTime = now;\n }\n const currentTime = now - options.startTime;\n let animationContinue = currentTime < options.duration;\n let newHeight = options.easing(currentTime, options.startingHeight, options.distanceHeight, options.duration);\n if (animationContinue) {\n element.style.height = `${newHeight.toFixed(2)}px`;\n window.requestAnimationFrame((timestamp) => animate(element, options, timestamp));\n }\n else {\n if (options.direction === directions.CLOSE) {\n element.style.display = 'none';\n }\n if (options.direction === directions.OPEN) {\n element.style.display = 'block';\n }\n removeElementAnimationStyles(element);\n }\n};\nconst setElementAnimationStyles = (element) => {\n element.style.display = 'block';\n element.style.overflow = 'hidden';\n element.style.marginTop = '0';\n element.style.marginBottom = '0';\n element.style.paddingTop = '0';\n element.style.paddingBottom = '0';\n};\nconst removeElementAnimationStyles = (element) => {\n element.style.height = null;\n element.style.overflow = null;\n element.style.marginTop = null;\n element.style.marginBottom = null;\n element.style.paddingTop = null;\n element.style.paddingBottom = null;\n};\nconst isInteger = (value) => {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n};\nconst extend = (defaults, options) => {\n const extendedOptions = {};\n for (let key in defaults) {\n extendedOptions[key] = options[key] || defaults[key];\n }\n return extendedOptions;\n};\n//# sourceMappingURL=index.js.map","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\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","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, function l(window, document, Date) { // Pass in the windoe Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes, lazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\tcfg: lazySizesCfg,\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\ttry {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} catch(e){\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, 'ls-is-cached');\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}","// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","export var docElement = document.documentElement;","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nexport { removeClass };","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","export function Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n};","import './helpers/Object.keys';\nimport './helpers/childNode.remove';\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true\n }, options || {});\n \n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'], \n optionsElements = {};\n \n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to: \n // 300: { \n // items: 2 \n // } \n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = slideCountNew; i--;) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ? \n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n \n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex : \n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : \n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ? \n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : \n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? \n CALC + '(100% / ' + dividend + ')' : \n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes \n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(), \n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add complete class if all images are loaded/failed\n forEach(imgs, function(img) {\n var src = img.src;\n \n if (src && src.indexOf('data:image') < 0) {\n addEvents(img, imgEvents);\n img.src = '';\n img.src = src;\n addClass(img, 'loading');\n } else if (!lazyload) {\n imgLoaded(img);\n }\n });\n\n // All imgs are completed\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // Check imgs in window only for auto height\n if (!autoWidth && horizontal) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n (function stylesApplicationCheck() {\n slideItems[num - 1].getBoundingClientRect().right.toFixed(2) === slideItems[num].getBoundingClientRect().left.toFixed(2) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) { \n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '