{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/slim-select/dist/slimselect.min.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:///./assets/src/js/modules/carousels.js","webpack:///./assets/src/js/pages/gallery-carousel-listing.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","e","bubbles","cancelable","detail","document","createEvent","initCustomEvent","hasClassInTree","classList","contains","parentNode","ensureElementInView","scrollTop","offsetTop","clientHeight","a","putContent","offsetHeight","getBoundingClientRect","top","bottom","innerHeight","debounce","arguments","length","self","clearTimeout","setTimeout","apply","isValueInArrayOfObjects","Array","isArray","highlight","RegExp","trim","match","index","toString","substring","replace","kebabCase","toLowerCase","toUpperCase","CustomEvent","Event","newOption","id","String","Math","floor","random","text","innerHTML","selected","display","disabled","placeholder","class","data","mandatory","add","this","push","parseSelectData","main","select","element","childNodes","nodeName","label","options","pullOptionData","config","placeholderText","dataset","className","style","cssText","setSelectedFromSelect","isMultiple","getObjectFromData","setSelected","selectedIndex","shouldBeSelected","getSelected","addToSelected","removeFromSelected","onDataChange","onChange","isOnChangeEnabled","JSON","parse","stringify","search","searchValue","searchFilter","slice","map","filter","assign","filtered","contentOpen","contentPosition","console","error","Data","validateData","validateOption","validate","querySelector","Error","tagName","set","setValue","render","close","setData","isAjax","reverse","unshift","addData","open","isEnabled","beforeOpen","slim","multiSelected","plus","singleSelected","arrowIcon","arrow","remove","container","openAbove","openBelow","addToBody","content","height","scrollY","left","scrollX","width","showContent","moveContentAbove","moveContentBelow","list","searchFocus","input","focus","afterOpen","timeoutDelay","beforeClose","removeAttribute","blur","afterClose","margin","transformOrigin","enable","triggerMutationObserver","disable","isSearching","ajax","setSearchText","searchText","values","deselect","destroy","removeEventListener","documentClick","windowScroll","ssid","parentElement","removeChild","body","addable","beforeOnChange","target","Config","showSearch","searchPlaceholder","searchingText","searchHighlight","closeOnSelect","allowDeselect","allowDeselectOption","hideSelectedOption","deselectLabel","valuesUseText","showOptionTooltips","selectByGroup","limit","Select","Slim","insertBefore","nextSibling","addEventListener","default","indexOf","valueText","valueDelete","searchHighlighter","optgroup","optgroupLabel","optgroupLabelSelectable","option","optionSelected","highlighted","hide","split","multiple","dispatchEvent","addAttributes","tabIndex","addEventListeners","addMutationObserver","mutationObserver","MutationObserver","forEach","attributeName","updateContainerDivClass","observeMutationObserver","observe","attributes","childList","characterData","disconnectMutationObserver","disconnect","createElement","appendChild","createOption","setAttribute","keys","containerDiv","singleSelectedDiv","onclick","stopPropagation","outerHTML","multiSelectedDiv","h","u","HTMLElement","insertAdjacentElement","valueDiv","f","preventDefault","splice","contentDiv","searchDiv","readOnly","type","onkeydown","highlightUp","highlightDown","onkeyup","ctrlKey","click","onfocus","previousSibling","querySelectorAll","listDiv","children","textContent","raf","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","caf","cancelAnimationFrame","mozCancelAnimationFrame","extend","obj","copy","undefined","checkStorageValue","setLocalStorage","storage","access","setItem","getBody","doc","fake","docElement","documentElement","setFakeBody","docOverflow","overflow","background","resetFakeBody","addCSSRule","sheet","selector","rules","insertRule","addRule","getCssRulesLength","cssRules","arr","callback","scope","classListSupport","hasClass","el","str","addClass","removeClass","hasAttr","attr","hasAttribute","getAttr","getAttribute","isNodeList","item","setAttrs","els","attrs","removeAttrs","attrLength","j","arrayFromNodeList","nl","hideElement","forceHide","showElement","isVisible","getComputedStyle","whichProperty","props","Props","charAt","substr","prefix","prop","getEndProperty","propIn","propOut","endProp","test","supportsPassive","passiveOption","passive","addEvents","preventScrolling","removeEvents","Events","topics","on","eventName","fn","off","emit","Element","tns","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","nonce","win","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","navigator","userAgent","uid","Date","localStorage","getItem","removeItem","CALC","div","result","val","vals","offsetWidth","calc","PERCENTAGELAYOUT","supported","wrapper","outer","abs","count","percentageLayout","CSSMQ","matchMedia","msMatchMedia","position","rule","styleSheet","createTextNode","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","getPropertyValue","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","warn","tnsList","optionsElements","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","media","getOption","viewport","getViewportWidth","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","running","events","newContainerClasses","slideId","tnsId","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","hidden","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","imgCompleteClass","imgEvents","imgLoaded","img","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","b","x","y","resetVariblesWhenDisable","fragmentBefore","createDocumentFragment","fragmentAfter","num","cloneFirst","cloneNode","firstChild","cloneLast","initStructure","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","parseInt","opts","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","postfix","to","duration","tick","unit","from","positionTick","resetDuration","doContainerTransform","getContainerTransformValue","moveElement","updateContentWrapperHeight","eve","animateSlide","version","getInfo","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","rebuild","condition","ind","getAbsIndex","absIndex","innerWidth","clientWidth","getInsertPosition","pos","gap","getClientWidth","rect","right","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","imgs","src","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","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","unfreezeSlider","html","len","updateLiveRegion","updateGallerySlidePositions","deleteRule","removeRule","removeCSSRule","vp","getVisibleSlideRange","start","end","rangestart","rangeend","parseFloat","point","cell","arg","srcset","imgSelector","complete","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","sliderMoved","strTrans","event","propertyName","targetIndex","indexGap","isNaN","factor","dir","passEventObject","targetIn","setInterval","updateAutoplayButton","action","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","returnValue","getMoveDirectionExpected","angle","atan2","PI","direction","$","clientX","clientY","panUpdate","err","dist","preventClick","indexMoved","moved","rough","displayIndex","LoadCarousels","captionSliderDiv","imageSliderDiv","captionSlider","imageSlider","sliderUpdating","sliderDiv","closest","slideContainer","LoadHomeCarousel","LoadProductCarousel","applyFilters","queryString","filterForm","httpRequest","XMLHttpRequest","formData","FormData","addError","log","onreadystatechange","readyState","DONE","status","response","LoadGalleryCarousels","selectClass","SlimSelect","setRequestHeader","send","scrollToTop","scroll","behavior","includes","pageUrl","location","href","handlers"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,kBClFoJC,OAAxIjC,EAAOD,QAAwI,WAAW,OAAOiC,EAAE,GAAGN,EAAErB,EAAEJ,EAAE,CAAC,SAASiC,EAAEf,EAAElB,GAAG,aAAa,SAAS+B,EAAEE,EAAEf,GAAGA,EAAEA,GAAG,CAACgB,SAAQ,EAAGC,YAAW,EAAGC,YAAO,GAAQ,IAAIpC,EAAEqC,SAASC,YAAY,eAAe,OAAOtC,EAAEuC,gBAAgBN,EAAEf,EAAEgB,QAAQhB,EAAEiB,WAAWjB,EAAEkB,QAAQpC,EAAE,IAAIyB,EAAEP,EAAEE,YAAW,EAAGF,EAAEsB,eAAe,SAASP,EAAEf,GAAG,SAASa,EAAEE,EAAEf,GAAG,OAAOA,GAAGe,GAAGA,EAAEQ,WAAWR,EAAEQ,UAAUC,SAASxB,GAAGe,EAAE,KAAK,OAAOF,EAAEE,EAAEf,IAAI,SAASe,EAAEf,EAAElB,GAAG,OAAOkB,GAAGA,IAAImB,SAASN,EAAEb,EAAElB,GAAGkB,EAAEe,EAAEf,EAAEyB,WAAW3C,GAAG,KAAlE,CAAwEiC,EAAEf,IAAIA,EAAE0B,oBAAoB,SAASX,EAAEf,GAAG,IAAIlB,EAAEiC,EAAEY,UAAUZ,EAAEa,UAAUf,EAAE/B,EAAEiC,EAAEc,aAAatB,EAAEP,EAAE4B,UAAUE,EAAEvB,EAAEP,EAAE6B,aAAatB,EAAEzB,EAAEiC,EAAEY,WAAW7C,EAAEyB,EAAEM,EAAEiB,IAAIf,EAAEY,WAAWG,EAAEjB,IAAIb,EAAE+B,WAAW,SAAShB,EAAEf,EAAElB,GAAG,IAAI+B,EAAEE,EAAEiB,aAAazB,EAAEQ,EAAEkB,wBAAwBH,EAAEhD,EAAEyB,EAAE2B,IAAI3B,EAAE2B,IAAIrB,EAAEtB,EAAET,EAAEyB,EAAE4B,OAAO5B,EAAE4B,OAAOtB,EAAE,OAAOiB,GAAG,EAAE,QAAQvC,GAAGuB,OAAOsB,YAAY,QAAQtD,EAAEkB,EAAE,SAASA,EAAEqC,SAAS,SAAS9B,EAAEuB,EAAEvC,GAAG,IAAIR,EAAE,YAAO,IAAS+C,IAAIA,EAAE,UAAK,IAASvC,IAAIA,GAAE,GAAI,WAAW,IAAI,IAAIwB,EAAE,GAAGf,EAAE,EAAEA,EAAEsC,UAAUC,OAAOvC,IAAIe,EAAEf,GAAGsC,UAAUtC,GAAG,IAAIlB,EAAE0D,KAAK3B,EAAEtB,IAAIR,EAAE0D,aAAa1D,GAAGA,EAAE2D,YAAW,WAAW3D,EAAE,KAAKQ,GAAGgB,EAAEoC,MAAM7D,EAAEiC,KAAIe,GAAGjB,GAAGN,EAAEoC,MAAM7D,EAAEiC,KAAKf,EAAE4C,wBAAwB,SAAS7B,EAAEf,EAAElB,GAAG,IAAI+D,MAAMC,QAAQ/B,GAAG,OAAOA,EAAEf,KAAKlB,EAAE,IAAI,IAAI+B,EAAE,EAAEN,EAAEQ,EAAEF,EAAEN,EAAEgC,OAAO1B,IAAI,CAAC,IAAIiB,EAAEvB,EAAEM,GAAG,GAAGiB,GAAGA,EAAE9B,IAAI8B,EAAE9B,KAAKlB,EAAE,OAAM,EAAG,OAAM,GAAIkB,EAAE+C,UAAU,SAAShC,EAAEf,EAAElB,GAAG,IAAI+B,EAAEE,EAAER,EAAE,IAAIyC,OAAO,IAAIhD,EAAEiD,OAAO,sBAAsB,KAAK,IAAIlC,EAAEmC,MAAM3C,GAAG,OAAOQ,EAAE,IAAIe,EAAEf,EAAEmC,MAAM3C,GAAG4C,MAAM5D,EAAEuC,EAAEf,EAAEmC,MAAM3C,GAAG,GAAG6C,WAAWb,OAAOxD,EAAEgC,EAAEsC,UAAUvB,EAAEvC,GAAG,OAASsB,EAAEyC,QAAQ/C,EAAE,gBAAgBzB,EAAE,KAAKC,EAAE,YAAYiB,EAAEuD,UAAU,SAASxC,GAAG,IAAIf,EAAEe,EAAEuC,QAAQ,oCAAmC,SAASvC,GAAG,MAAM,IAAIA,EAAEyC,iBAAgB,OAAOzC,EAAE,KAAKA,EAAE,GAAG0C,cAAczD,EAAEqD,UAAU,GAAGrD,GAAG,mBAAmBO,EAAEO,QAAQ4C,cAAc7C,EAAEH,UAAUH,EAAEoD,MAAMjD,UAAUH,EAAEmD,YAAY7C,IAAI,SAASE,EAAEf,EAAElB,GAAG,aAAakB,EAAEE,YAAW,EAAG,IAAIW,GAAGN,EAAEG,UAAUkD,UAAU,SAAS7C,GAAG,MAAM,CAAC8C,GAAG9C,EAAE8C,GAAG9C,EAAE8C,GAAGC,OAAOC,KAAKC,MAAM,IAAID,KAAKE,WAAWlE,MAAMgB,EAAEhB,MAAMgB,EAAEhB,MAAM,GAAGmE,KAAKnD,EAAEmD,KAAKnD,EAAEmD,KAAK,GAAGC,UAAUpD,EAAEoD,UAAUpD,EAAEoD,UAAU,GAAGC,WAAWrD,EAAEqD,UAAUrD,EAAEqD,SAASC,aAAQ,IAAStD,EAAEsD,SAAStD,EAAEsD,QAAQC,WAAWvD,EAAEuD,UAAUvD,EAAEuD,SAASC,cAAcxD,EAAEwD,aAAaxD,EAAEwD,YAAYC,MAAMzD,EAAEyD,MAAMzD,EAAEyD,WAAM,EAAOC,KAAK1D,EAAE0D,KAAK1D,EAAE0D,KAAK,GAAGC,YAAY3D,EAAE2D,WAAW3D,EAAE2D,YAAYnE,EAAEG,UAAUiE,IAAI,SAAS5D,GAAG6D,KAAKH,KAAKI,KAAK,CAAChB,GAAGC,OAAOC,KAAKC,MAAM,IAAID,KAAKE,WAAWlE,MAAMgB,EAAEhB,MAAMmE,KAAKnD,EAAEmD,KAAKC,UAAU,GAAGC,UAAS,EAAGC,SAAQ,EAAGC,UAAS,EAAGC,aAAY,EAAGC,WAAM,EAAOE,UAAU3D,EAAE2D,UAAUD,KAAK,MAAMlE,EAAEG,UAAUoE,gBAAgB,WAAWF,KAAKH,KAAK,GAAG,IAAI,IAAI1D,EAAE,EAAEf,EAAE4E,KAAKG,KAAKC,OAAOC,QAAQC,WAAWnE,EAAEf,EAAEuC,OAAOxB,IAAI,CAAC,IAAIjC,EAAEkB,EAAEe,GAAG,GAAG,aAAajC,EAAEqG,SAAS,CAAC,IAAI,IAAItE,EAAE,CAACuE,MAAMtG,EAAEsG,MAAMC,QAAQ,IAAI9E,EAAE,EAAEuB,EAAEhD,EAAEoG,WAAW3E,EAAEuB,EAAES,OAAOhC,IAAI,CAAC,IAAIhB,EAAEuC,EAAEvB,GAAG,GAAG,WAAWhB,EAAE4F,SAAS,CAAC,IAAIpG,EAAE6F,KAAKU,eAAe/F,GAAGsB,EAAEwE,QAAQR,KAAK9F,GAAGA,EAAEwF,aAAa,KAAKxF,EAAEmF,KAAKjB,SAAS2B,KAAKG,KAAKQ,OAAOC,gBAAgBzG,EAAEmF,OAAOU,KAAKH,KAAKI,KAAKhE,OAAO,WAAW/B,EAAEqG,WAAWpG,EAAE6F,KAAKU,eAAexG,GAAG8F,KAAKH,KAAKI,KAAK9F,GAAGA,EAAEwF,aAAa,KAAKxF,EAAEmF,KAAKjB,SAAS2B,KAAKG,KAAKQ,OAAOC,gBAAgBzG,EAAEmF,SAAS3D,EAAEG,UAAU4E,eAAe,SAASvE,GAAG,MAAM,CAAC8C,KAAK9C,EAAE0E,SAAS1E,EAAE0E,QAAQ5B,IAAIC,OAAOC,KAAKC,MAAM,IAAID,KAAKE,WAAWlE,MAAMgB,EAAEhB,MAAMmE,KAAKnD,EAAEmD,KAAKC,UAAUpD,EAAEoD,UAAUC,SAASrD,EAAEqD,SAASE,SAASvD,EAAEuD,SAASC,YAAY,SAASxD,EAAE0E,QAAQlB,YAAYC,MAAMzD,EAAE2E,UAAUC,MAAM5E,EAAE4E,MAAMC,QAAQnB,KAAK1D,EAAE0E,QAAQf,YAAY3D,EAAE0E,SAAS,SAAS1E,EAAE0E,QAAQf,YAAYnE,EAAEG,UAAUmF,sBAAsB,WAAW,GAAGjB,KAAKG,KAAKQ,OAAOO,WAAW,CAAC,IAAI,IAAI/E,EAAE,GAAGf,EAAE,EAAElB,EAAE8F,KAAKG,KAAKC,OAAOC,QAAQI,QAAQrF,EAAElB,EAAEyD,OAAOvC,IAAI,CAAC,IAAIa,EAAE/B,EAAEkB,GAAG,GAAGa,EAAEuD,SAAS,CAAC,IAAI7D,EAAEqE,KAAKmB,kBAAkBlF,EAAEd,MAAM,SAASQ,GAAGA,EAAEsD,IAAI9C,EAAE8D,KAAKtE,EAAEsD,KAAKe,KAAKoB,YAAYjF,EAAE,UAAU,CAAC,IAAIe,EAAE8C,KAAKG,KAAKC,OAAOC,QAAQ,IAAI,IAAInD,EAAEmE,cAAc,CAAC,IAAI1G,EAAEuC,EAAEuD,QAAQvD,EAAEmE,eAAelG,MAAM6E,KAAKoB,YAAYzG,EAAE,YAAYgB,EAAEG,UAAUsF,YAAY,SAASjF,EAAEf,QAAG,IAASA,IAAIA,EAAE,MAAM,IAAI,IAAIlB,EAAE,EAAE+B,EAAE+D,KAAKH,KAAK3F,EAAE+B,EAAE0B,OAAOzD,IAAI,CAAC,IAAIyB,EAAEM,EAAE/B,GAAG,GAAGyB,EAAEI,eAAe,UAAU,GAAGJ,EAAEI,eAAe,WAAW,CAAC,IAAImB,EAAEvB,EAAE8E,QAAQ,GAAGvD,EAAE,IAAI,IAAIvC,EAAE,EAAER,EAAE+C,EAAEvC,EAAER,EAAEwD,OAAOhD,IAAI,CAAC,IAAIK,EAAEb,EAAEQ,GAAGK,EAAE2E,cAAc3E,EAAEwE,SAASQ,KAAKsB,iBAAiBtG,EAAEmB,EAAEf,WAAWO,EAAE6D,SAASQ,KAAKsB,iBAAiB3F,EAAEQ,EAAEf,KAAKO,EAAEG,UAAUwF,iBAAiB,SAASnF,EAAEf,EAAElB,GAAG,QAAG,IAASA,IAAIA,EAAE,MAAM+D,MAAMC,QAAQ9C,GAAG,IAAI,IAAIa,EAAE,EAAEN,EAAEP,EAAEa,EAAEN,EAAEgC,OAAO1B,IAAI,CAAC,IAAIiB,EAAEvB,EAAEM,GAAG,GAAG/B,KAAKiC,GAAG+C,OAAO/C,EAAEjC,MAAMgF,OAAOhC,GAAG,OAAM,OAAQ,GAAGhD,KAAKiC,GAAG+C,OAAO/C,EAAEjC,MAAMgF,OAAO9D,GAAG,OAAM,EAAG,OAAM,GAAIO,EAAEG,UAAUyF,YAAY,WAAW,IAAI,IAAIpF,EAAE,CAACmD,KAAK,GAAGK,YAAYK,KAAKG,KAAKQ,OAAOC,iBAAiBxF,EAAE,GAAGlB,EAAE,EAAE+B,EAAE+D,KAAKH,KAAK3F,EAAE+B,EAAE0B,OAAOzD,IAAI,CAAC,IAAIyB,EAAEM,EAAE/B,GAAG,GAAGyB,EAAEI,eAAe,UAAU,GAAGJ,EAAEI,eAAe,WAAW,CAAC,IAAImB,EAAEvB,EAAE8E,QAAQ,GAAGvD,EAAE,IAAI,IAAIvC,EAAE,EAAER,EAAE+C,EAAEvC,EAAER,EAAEwD,OAAOhD,IAAI,CAAC,IAAIK,EAAEb,EAAEQ,GAAGK,EAAEwE,WAAWQ,KAAKG,KAAKQ,OAAOO,WAAW9F,EAAE6E,KAAKjF,GAAGmB,EAAEnB,UAAUW,EAAE6D,WAAWQ,KAAKG,KAAKQ,OAAOO,WAAW9F,EAAE6E,KAAKtE,GAAGQ,EAAER,GAAG,OAAOqE,KAAKG,KAAKQ,OAAOO,WAAW9F,EAAEe,GAAGR,EAAEG,UAAU0F,cAAc,SAASrF,EAAEf,GAAG,QAAG,IAASA,IAAIA,EAAE,MAAM4E,KAAKG,KAAKQ,OAAOO,WAAW,CAAC,IAAIhH,EAAE,GAAG+B,EAAE+D,KAAKuB,cAAc,GAAGtD,MAAMC,QAAQjC,GAAG,IAAI,IAAIN,EAAE,EAAEuB,EAAEjB,EAAEN,EAAEuB,EAAES,OAAOhC,IAAI,CAAC,IAAIhB,EAAEuC,EAAEvB,GAAGzB,EAAE+F,KAAKtF,EAAES,IAAIlB,EAAE+F,KAAK9D,GAAG6D,KAAKoB,YAAYlH,EAAEkB,KAAKO,EAAEG,UAAU2F,mBAAmB,SAAStF,EAAEf,GAAG,QAAG,IAASA,IAAIA,EAAE,MAAM4E,KAAKG,KAAKQ,OAAOO,WAAW,CAAC,IAAI,IAAIhH,EAAE,GAAG+B,EAAE,EAAEN,EAAEqE,KAAKuB,cAActF,EAAEN,EAAEgC,OAAO1B,IAAI,CAAC,IAAIiB,EAAEvB,EAAEM,GAAGiD,OAAOhC,EAAE9B,MAAM8D,OAAO/C,IAAIjC,EAAE+F,KAAK/C,EAAE9B,IAAI4E,KAAKoB,YAAYlH,EAAEkB,KAAKO,EAAEG,UAAU4F,aAAa,WAAW1B,KAAKG,KAAKwB,UAAU3B,KAAK4B,mBAAmB5B,KAAKG,KAAKwB,SAASE,KAAKC,MAAMD,KAAKE,UAAU/B,KAAKuB,kBAAkB5F,EAAEG,UAAUqF,kBAAkB,SAAShF,EAAEf,QAAG,IAASA,IAAIA,EAAE,MAAM,IAAI,IAAIlB,EAAE,EAAE+B,EAAE+D,KAAKH,KAAK3F,EAAE+B,EAAE0B,OAAOzD,IAAI,CAAC,IAAIyB,EAAEM,EAAE/B,GAAG,GAAGkB,KAAKO,GAAGuD,OAAOvD,EAAEP,MAAM8D,OAAO/C,GAAG,OAAOR,EAAE,GAAGA,EAAEI,eAAe,YAAYJ,EAAE8E,QAAQ,IAAI,IAAIvD,EAAE,EAAEvC,EAAEgB,EAAE8E,QAAQvD,EAAEvC,EAAEgD,OAAOT,IAAI,CAAC,IAAI/C,EAAEQ,EAAEuC,GAAG,GAAGgC,OAAO/E,EAAEiB,MAAM8D,OAAO/C,GAAG,OAAOhC,GAAG,OAAO,MAAMwB,EAAEG,UAAUkG,OAAO,SAASrG,GAAG,GAAG,MAAMqE,KAAKiC,YAAYtG,GAAG0C,OAAO,CAAC,IAAInB,EAAE8C,KAAKG,KAAKQ,OAAOuB,aAAa/F,EAAE6D,KAAKH,KAAKsC,MAAM,GAAGxG,EAAEA,EAAE0C,OAAO,IAAIjD,EAAEe,EAAEiG,KAAI,SAASjG,GAAG,GAAGA,EAAEJ,eAAe,WAAW,CAAC,IAAIX,EAAEe,EAAEjC,EAAE,GAAG,GAAGkB,EAAEqF,UAAUvG,EAAEkB,EAAEqF,QAAQ4B,QAAO,SAASlG,GAAG,OAAOe,EAAEf,EAAER,OAAM,IAAIzB,EAAEyD,OAAO,CAAC,IAAI1B,EAAErB,OAAO0H,OAAO,GAAGlH,GAAG,OAAOa,EAAEwE,QAAQvG,EAAE+B,GAAG,OAAOE,EAAEJ,eAAe,SAASmB,EAAEf,EAAER,GAAGQ,EAAE,QAAO6D,KAAKuC,SAASnH,EAAEiH,QAAO,SAASlG,GAAG,OAAOA,UAAS6D,KAAKuC,SAAS,MAAM5G,GAAG,SAASA,EAAEQ,GAAG6D,KAAKwC,aAAY,EAAGxC,KAAKyC,gBAAgB,QAAQzC,KAAK4B,mBAAkB,EAAG5B,KAAKG,KAAKhE,EAAEgE,KAAKH,KAAKiC,YAAY,GAAGjC,KAAKH,KAAK,GAAGG,KAAKuC,SAAS,KAAKvC,KAAKE,kBAAkBF,KAAKiB,wBAAwB,SAASjG,EAAEmB,GAAG,YAAO,IAASA,EAAEmD,OAAOoD,QAAQC,MAAM,0EAA0Ed,KAAKE,UAAU5F,KAAI,GAAIf,EAAEwH,KAAK3G,EAAEb,EAAEyH,aAAa,SAAS1G,GAAG,IAAIA,EAAE,OAAOuG,QAAQC,MAAM,qCAAoC,EAAG,IAAI,IAAIvH,EAAE,EAAElB,EAAE,EAAE+B,EAAEE,EAAEjC,EAAE+B,EAAE0B,OAAOzD,IAAI,CAAC,IAAIyB,EAAEM,EAAE/B,GAAG,GAAGyB,EAAEI,eAAe,UAAU,GAAGJ,EAAEI,eAAe,WAAW,CAAC,IAAImB,EAAEvB,EAAE8E,QAAQ,GAAGvD,EAAE,IAAI,IAAIvC,EAAE,EAAER,EAAE+C,EAAEvC,EAAER,EAAEwD,OAAOhD,IAAKK,EAAEb,EAAEQ,KAAKS,UAAWJ,EAAEW,IAAIP,IAAI,OAAO,IAAIA,GAAGA,EAAE0H,eAAe9H,GAAG,SAASmB,EAAEf,EAAElB,GAAG,aAAakB,EAAEE,YAAW,EAAG,IAAIW,EAAE/B,EAAE,GAAGyB,EAAEzB,EAAE,GAAGgD,EAAEhD,EAAE,GAAGc,EAAEd,EAAE,GAAGS,EAAET,EAAE,GAAGC,GAAGI,EAAEuB,UAAUiH,SAAS,SAAS5G,GAAG,IAAIf,EAAE,iBAAiBe,EAAEiE,OAAO7D,SAASyG,cAAc7G,EAAEiE,QAAQjE,EAAEiE,OAAO,IAAIhF,EAAE,MAAM,IAAI6H,MAAM,iCAAiC,GAAG,WAAW7H,EAAE8H,QAAQ,MAAM,IAAID,MAAM,+BAA+B,OAAO7H,GAAGb,EAAEuB,UAAU0D,SAAS,WAAW,GAAGQ,KAAKW,OAAOO,WAAW,CAAC,IAAI,IAAI/E,EAAE,GAAGf,EAAE,EAAElB,EAAEyB,EAAEqE,KAAKH,KAAK0B,cAAcnG,EAAElB,EAAEyD,OAAOvC,IAAI,CAAC,IAAIa,EAAE/B,EAAEkB,GAAGe,EAAE8D,KAAKhE,EAAEd,OAAO,OAAOgB,EAAE,IAAIR,EAAE,OAAOA,EAAEqE,KAAKH,KAAK0B,eAAe5F,EAAER,MAAM,IAAIZ,EAAEuB,UAAUqH,IAAI,SAAShH,EAAEf,EAAElB,EAAE+B,QAAG,IAASb,IAAIA,EAAE,cAAS,IAASlB,IAAIA,GAAE,QAAI,IAAS+B,IAAIA,GAAE,GAAI+D,KAAKW,OAAOO,aAAajD,MAAMC,QAAQ/B,GAAG6D,KAAKH,KAAK2B,cAAcrF,EAAEf,GAAG4E,KAAKH,KAAKuB,YAAYjF,EAAEf,GAAG4E,KAAKI,OAAOgD,WAAWpD,KAAKH,KAAK6B,eAAe1B,KAAKqD,SAASnJ,GAAG8F,KAAKsD,SAAS/I,EAAEuB,UAAUsF,YAAY,SAASjF,EAAEf,EAAElB,EAAE+B,QAAG,IAASb,IAAIA,EAAE,cAAS,IAASlB,IAAIA,GAAE,QAAI,IAAS+B,IAAIA,GAAE,GAAI+D,KAAKmD,IAAIhH,EAAEf,EAAElB,EAAE+B,IAAI1B,EAAEuB,UAAUyH,QAAQ,SAASpH,GAAG,GAAGnB,EAAE6H,aAAa1G,GAAG,CAAC,IAAI,IAAIf,EAAEyG,KAAKC,MAAMD,KAAKE,UAAU5F,IAAIjC,EAAE8F,KAAKH,KAAK0B,cAActF,EAAE,EAAEA,EAAEb,EAAEuC,OAAO1B,IAAIb,EAAEa,GAAGd,OAAOC,EAAEa,GAAG0D,cAAcvE,EAAEa,GAAGd,MAAMC,EAAEa,GAAGqD,MAAM,GAAGU,KAAKW,OAAO6C,QAAQtJ,EAAE,GAAG8F,KAAKW,OAAOO,WAAW,IAAI,IAAIvF,EAAE,EAAEuB,EAAEhD,EAAEuJ,UAAU9H,EAAEuB,EAAES,OAAOhC,IAAI,CAAC,IAAIhB,EAAEuC,EAAEvB,GAAGP,EAAEsI,QAAQ/I,OAAO,CAAC,IAAIS,EAAEsI,QAAQxJ,GAAG+B,EAAE,EAAEA,EAAEb,EAAEuC,OAAO1B,IAAIb,EAAEa,GAAG0D,aAAavE,EAAEa,GAAGd,QAAQjB,EAAEiB,OAAOC,EAAEa,GAAGqD,OAAOpF,EAAEoF,aAAalE,EAAEa,GAAG,IAAI9B,GAAE,EAAG,IAAI8B,EAAE,EAAEA,EAAEb,EAAEuC,OAAO1B,IAAIb,EAAEa,GAAG0D,cAAcxF,GAAE,GAAIA,GAAGiB,EAAEsI,QAAQ,CAACpE,KAAK,GAAGK,aAAY,IAAKK,KAAKI,OAAO5E,OAAOJ,GAAG4E,KAAKH,KAAKK,kBAAkBF,KAAKH,KAAKoB,6BAA6ByB,QAAQC,MAAM,2BAA2B3C,KAAKI,OAAOC,QAAQpB,KAAK1E,EAAEuB,UAAU6H,QAAQ,SAASxH,GAAGnB,EAAE6H,aAAa,CAAC1G,KAAK6D,KAAKH,KAAKE,IAAIC,KAAKH,KAAKb,UAAU7C,IAAI6D,KAAKI,OAAO5E,OAAOwE,KAAKH,KAAKA,MAAMG,KAAKH,KAAKK,kBAAkBF,KAAKH,KAAKoB,wBAAwBjB,KAAKqD,UAAUX,QAAQC,MAAM,2BAA2B3C,KAAKI,OAAOC,QAAQpB,KAAK1E,EAAEuB,UAAU8H,KAAK,WAAW,IAAIzH,EAAE6D,KAAK,GAAGA,KAAKW,OAAOkD,YAAY7D,KAAKH,KAAK2C,YAAY,CAAC,GAAGxC,KAAK8D,YAAY9D,KAAK8D,aAAa9D,KAAKW,OAAOO,YAAYlB,KAAK+D,KAAKC,cAAchE,KAAK+D,KAAKC,cAAcC,KAAKtH,UAAUoD,IAAI,YAAYC,KAAK+D,KAAKG,iBAAiBlE,KAAK+D,KAAKG,eAAeC,UAAUC,MAAMzH,UAAU0H,OAAO,cAAcrE,KAAK+D,KAAKG,eAAeC,UAAUC,MAAMzH,UAAUoD,IAAI,aAAaC,KAAK+D,KAAK/D,KAAKW,OAAOO,WAAW,gBAAgB,kBAAkBoD,UAAU3H,UAAUoD,IAAI,UAAUC,KAAKH,KAAK4C,gBAAgBzC,KAAKW,OAAO4D,UAAUvE,KAAKW,OAAO6D,WAAWxE,KAAKW,OAAO8D,UAAU,CAAC,IAAIrJ,EAAE4E,KAAK+D,KAAKO,UAAUjH,wBAAwB2C,KAAK+D,KAAKW,QAAQ3D,MAAMzD,IAAIlC,EAAEkC,IAAIlC,EAAEuJ,OAAOzI,OAAO0I,QAAQ,KAAK5E,KAAK+D,KAAKW,QAAQ3D,MAAM8D,KAAKzJ,EAAEyJ,KAAK3I,OAAO4I,QAAQ,KAAK9E,KAAK+D,KAAKW,QAAQ3D,MAAMgE,MAAM3J,EAAE2J,MAAM,KAAK,GAAG/E,KAAK+D,KAAKW,QAAQ/H,UAAUoD,IAAIC,KAAKW,OAAOiD,MAAM,OAAO5D,KAAKW,OAAOqE,YAAYpG,eAAe,SAASoB,KAAKW,OAAOqE,YAAYpG,eAAe,UAAUjE,EAAEwC,WAAW6C,KAAK+D,KAAKW,QAAQ1E,KAAKH,KAAK4C,gBAAgBzC,KAAKH,KAAK2C,aAAaxC,KAAKiF,mBAAmBjF,KAAKkF,oBAAoBlF,KAAKW,OAAOO,WAAW,CAAC,IAAIhH,EAAE8F,KAAKH,KAAK0B,cAAc,GAAGrH,EAAE,CAAC,IAAI+B,EAAE/B,EAAE+E,GAAGtD,EAAEqE,KAAK+D,KAAKoB,KAAKnC,cAAc,aAAa/G,EAAE,MAAMN,GAAGhB,EAAEmC,oBAAoBkD,KAAK+D,KAAKoB,KAAKxJ,IAAImC,YAAW,WAAW3B,EAAE0D,KAAK2C,aAAY,EAAGrG,EAAEwE,OAAOyE,aAAajJ,EAAE4H,KAAK/B,OAAOqD,MAAMC,QAAQnJ,EAAEoJ,WAAWpJ,EAAEoJ,cAAavF,KAAKW,OAAO6E,gBAAgBjL,EAAEuB,UAAUwH,MAAM,WAAW,IAAInH,EAAE6D,KAAKA,KAAKH,KAAK2C,cAAcxC,KAAKyF,aAAazF,KAAKyF,cAAczF,KAAKW,OAAOO,YAAYlB,KAAK+D,KAAKC,eAAehE,KAAK+D,KAAKC,cAAcM,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAO4D,WAAWvE,KAAK+D,KAAKC,cAAcM,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAO6D,WAAWxE,KAAK+D,KAAKC,cAAcC,KAAKtH,UAAU0H,OAAO,aAAarE,KAAK+D,KAAKG,iBAAiBlE,KAAK+D,KAAKG,eAAeI,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAO4D,WAAWvE,KAAK+D,KAAKG,eAAeI,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAO6D,WAAWxE,KAAK+D,KAAKG,eAAeC,UAAUC,MAAMzH,UAAUoD,IAAI,cAAcC,KAAK+D,KAAKG,eAAeC,UAAUC,MAAMzH,UAAU0H,OAAO,aAAarE,KAAK+D,KAAKW,QAAQ/H,UAAU0H,OAAOrE,KAAKW,OAAOiD,MAAM5D,KAAKH,KAAK2C,aAAY,EAAGxC,KAAKgC,OAAO,IAAIlE,YAAW,WAAW3B,EAAE4H,KAAKW,QAAQgB,gBAAgB,SAASvJ,EAAE0D,KAAK4C,gBAAgB,QAAQtG,EAAEwE,OAAOO,YAAY/E,EAAE4H,KAAKC,eAAe7H,EAAE4H,KAAKC,cAAcM,UAAU3H,UAAU0H,OAAOlI,EAAEwE,OAAO4D,WAAWpI,EAAE4H,KAAKC,cAAcM,UAAU3H,UAAU0H,OAAOlI,EAAEwE,OAAO6D,YAAYrI,EAAE4H,KAAKG,iBAAiB/H,EAAE4H,KAAKG,eAAeI,UAAU3H,UAAU0H,OAAOlI,EAAEwE,OAAO4D,WAAWpI,EAAE4H,KAAKG,eAAeI,UAAU3H,UAAU0H,OAAOlI,EAAEwE,OAAO6D,YAAYrI,EAAE4H,KAAK/B,OAAOqD,MAAMM,OAAOxJ,EAAEyJ,YAAYzJ,EAAEyJ,eAAc5F,KAAKW,OAAO6E,gBAAgBjL,EAAEuB,UAAUmJ,iBAAiB,WAAW,IAAI9I,EAAE,EAAE6D,KAAKW,OAAOO,YAAYlB,KAAK+D,KAAKC,cAAc7H,EAAE6D,KAAK+D,KAAKC,cAAcM,UAAUlH,aAAa4C,KAAK+D,KAAKG,iBAAiB/H,EAAE6D,KAAK+D,KAAKG,eAAeI,UAAUlH,cAAc,IAAIhC,EAAEe,EAAE6D,KAAK+D,KAAKW,QAAQtH,aAAa,EAAE4C,KAAK+D,KAAKW,QAAQ3D,MAAM8E,OAAO,IAAIzK,EAAE,WAAW4E,KAAK+D,KAAKW,QAAQ3D,MAAM4D,OAAOvJ,EAAEe,EAAE,EAAE,KAAK6D,KAAK+D,KAAKW,QAAQ3D,MAAM+E,gBAAgB,gBAAgB9F,KAAKH,KAAK4C,gBAAgB,QAAQzC,KAAKW,OAAOO,YAAYlB,KAAK+D,KAAKC,eAAehE,KAAK+D,KAAKC,cAAcM,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAO6D,WAAWxE,KAAK+D,KAAKC,cAAcM,UAAU3H,UAAUoD,IAAIC,KAAKW,OAAO4D,YAAYvE,KAAK+D,KAAKG,iBAAiBlE,KAAK+D,KAAKG,eAAeI,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAO6D,WAAWxE,KAAK+D,KAAKG,eAAeI,UAAU3H,UAAUoD,IAAIC,KAAKW,OAAO4D,aAAahK,EAAEuB,UAAUoJ,iBAAiB,WAAWlF,KAAKH,KAAK4C,gBAAgB,QAAQzC,KAAKW,OAAOO,YAAYlB,KAAK+D,KAAKC,eAAehE,KAAK+D,KAAKC,cAAcM,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAO4D,WAAWvE,KAAK+D,KAAKC,cAAcM,UAAU3H,UAAUoD,IAAIC,KAAKW,OAAO6D,YAAYxE,KAAK+D,KAAKG,iBAAiBlE,KAAK+D,KAAKG,eAAeI,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAO4D,WAAWvE,KAAK+D,KAAKG,eAAeI,UAAU3H,UAAUoD,IAAIC,KAAKW,OAAO6D,aAAajK,EAAEuB,UAAUiK,OAAO,WAAW/F,KAAKW,OAAOkD,WAAU,EAAG7D,KAAKW,OAAOO,YAAYlB,KAAK+D,KAAKC,cAAchE,KAAK+D,KAAKC,cAAcM,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAOjB,UAAUM,KAAK+D,KAAKG,gBAAgBlE,KAAK+D,KAAKG,eAAeI,UAAU3H,UAAU0H,OAAOrE,KAAKW,OAAOjB,UAAUM,KAAKI,OAAO4F,yBAAwB,EAAGhG,KAAKI,OAAOC,QAAQX,UAAS,EAAGM,KAAK+D,KAAK/B,OAAOqD,MAAM3F,UAAS,EAAGM,KAAKI,OAAO4F,yBAAwB,GAAIzL,EAAEuB,UAAUmK,QAAQ,WAAWjG,KAAKW,OAAOkD,WAAU,EAAG7D,KAAKW,OAAOO,YAAYlB,KAAK+D,KAAKC,cAAchE,KAAK+D,KAAKC,cAAcM,UAAU3H,UAAUoD,IAAIC,KAAKW,OAAOjB,UAAUM,KAAK+D,KAAKG,gBAAgBlE,KAAK+D,KAAKG,eAAeI,UAAU3H,UAAUoD,IAAIC,KAAKW,OAAOjB,UAAUM,KAAKI,OAAO4F,yBAAwB,EAAGhG,KAAKI,OAAOC,QAAQX,UAAS,EAAGM,KAAK+D,KAAK/B,OAAOqD,MAAM3F,UAAS,EAAGM,KAAKI,OAAO4F,yBAAwB,GAAIzL,EAAEuB,UAAUkG,OAAO,SAAS5G,GAAG,GAAG4E,KAAKH,KAAKoC,cAAc7G,EAAE,GAAG4E,KAAK+D,KAAK/B,OAAOqD,MAAMlK,MAAMC,EAAE4E,KAAKW,OAAO6C,OAAO,CAAC,IAAItJ,EAAE8F,KAAKA,KAAKW,OAAOuF,aAAY,EAAGlG,KAAKqD,SAASrD,KAAKmG,MAAMnG,KAAKmG,KAAK/K,GAAE,SAASe,GAAGjC,EAAEyG,OAAOuF,aAAY,EAAGjI,MAAMC,QAAQ/B,IAAIA,EAAEuH,QAAQ,CAACpE,KAAK,GAAGK,aAAY,IAAKzF,EAAEqJ,QAAQpH,GAAGjC,EAAE2F,KAAKmC,OAAO5G,GAAGlB,EAAEmJ,UAAU,iBAAiBlH,EAAEjC,EAAE6J,KAAKtD,QAAQtE,GAAGjC,EAAEmJ,iBAAgBrD,KAAKH,KAAKmC,OAAO5G,GAAG4E,KAAKqD,UAAU9I,EAAEuB,UAAUsK,cAAc,SAASjK,GAAG6D,KAAKW,OAAO0F,WAAWlK,GAAG5B,EAAEuB,UAAUuH,OAAO,WAAWrD,KAAKW,OAAOO,WAAWlB,KAAK+D,KAAKuC,UAAUtG,KAAK+D,KAAKpE,cAAcK,KAAK+D,KAAKwC,YAAYvG,KAAK+D,KAAKtD,WAAWlG,EAAEuB,UAAU0K,QAAQ,SAASrK,QAAG,IAASA,IAAIA,EAAE,MAAM,IAAIf,EAAEe,EAAEI,SAASyG,cAAc,IAAI7G,EAAE,YAAY6D,KAAK+D,KAAKO,UAAUpK,EAAEiC,EAAEI,SAASyG,cAAc,cAAc7G,EAAE,KAAK6D,KAAKI,OAAOC,QAAQ,GAAGjF,GAAGlB,IAAIqC,SAASkK,oBAAoB,QAAQzG,KAAK0G,eAAe,SAAS1G,KAAKW,OAAOqE,aAAa9I,OAAOuK,oBAAoB,SAASzG,KAAK2G,cAAa,GAAIzM,EAAE6G,MAAMtB,QAAQ,UAAUvF,EAAE2G,QAAQ+F,KAAK1M,EAAE6J,KAAK,KAAK3I,EAAEyL,eAAezL,EAAEyL,cAAcC,YAAY1L,GAAG4E,KAAKW,OAAO8D,WAAW,CAAC,IAAIxI,EAAEE,EAAEI,SAASyG,cAAc,IAAI7G,EAAE,eAAe6D,KAAK+D,KAAKW,QAAQ,IAAIzI,EAAE,OAAOM,SAASwK,KAAKD,YAAY7K,KAAK1B,GAAG,SAASA,EAAE4B,GAAG,IAAIf,EAAE4E,KAAKA,KAAKmG,KAAK,KAAKnG,KAAKgH,QAAQ,KAAKhH,KAAKiH,eAAe,KAAKjH,KAAK2B,SAAS,KAAK3B,KAAK8D,WAAW,KAAK9D,KAAKuF,UAAU,KAAKvF,KAAKyF,YAAY,KAAKzF,KAAK4F,WAAW,KAAK5F,KAAK2G,aAAahM,EAAE8C,UAAS,SAAStB,GAAGf,EAAEyE,KAAK2C,cAAc,UAAU7H,EAAEwC,WAAW/B,EAAE2I,KAAKW,QAAQtJ,EAAEyE,KAAK4C,gBAAgBrH,EAAEyE,KAAK2C,aAAapH,EAAE6J,mBAAmB7J,EAAE8J,uBAAsBlF,KAAK0G,cAAc,SAASvK,GAAGA,EAAE+K,SAASvM,EAAE+B,eAAeP,EAAE+K,OAAO9L,EAAEuF,OAAO1B,KAAK7D,EAAEkI,SAAS,IAAIpJ,EAAE8F,KAAK+C,SAAS5G,GAAGjC,EAAE2G,QAAQ+F,MAAM5G,KAAKwG,QAAQtM,EAAE2G,QAAQ+F,MAAMzK,EAAEgK,OAAOnG,KAAKmG,KAAKhK,EAAEgK,MAAMhK,EAAE6K,UAAUhH,KAAKgH,QAAQ7K,EAAE6K,SAAShH,KAAKW,OAAO,IAAI1E,EAAEkL,OAAO,CAAC/G,OAAOlG,EAAEsJ,SAASrH,EAAEgK,KAAKiB,WAAWjL,EAAEiL,WAAWC,kBAAkBlL,EAAEkL,kBAAkBhB,WAAWlK,EAAEkK,WAAWiB,cAAcnL,EAAEmL,cAAclC,YAAYjJ,EAAEiJ,YAAYmC,gBAAgBpL,EAAEoL,gBAAgBrF,aAAa/F,EAAE+F,aAAasF,cAAcrL,EAAEqL,cAAcxC,YAAY7I,EAAE6I,YAAYpE,gBAAgBzE,EAAEwD,YAAY8H,cAActL,EAAEsL,cAAcC,oBAAoBvL,EAAEuL,oBAAoBC,mBAAmBxL,EAAEwL,mBAAmBC,cAAczL,EAAEyL,cAAc/D,UAAU1H,EAAE0H,UAAUgE,cAAc1L,EAAE0L,cAAcC,mBAAmB3L,EAAE2L,mBAAmBC,cAAc5L,EAAE4L,cAAcC,MAAM7L,EAAE6L,MAAMxC,aAAarJ,EAAEqJ,aAAaf,UAAUtI,EAAEsI,YAAYzE,KAAKI,OAAO,IAAIzE,EAAEsM,OAAO,CAAC7H,OAAOlG,EAAEiG,KAAKH,OAAOA,KAAKH,KAAK,IAAI7E,EAAE4H,KAAK,CAACzC,KAAKH,OAAOA,KAAK+D,KAAK,IAAI7G,EAAEgL,KAAK,CAAC/H,KAAKH,OAAOA,KAAKI,OAAOC,QAAQxD,YAAYmD,KAAKI,OAAOC,QAAQxD,WAAWsL,aAAanI,KAAK+D,KAAKO,UAAUtE,KAAKI,OAAOC,QAAQ+H,aAAajM,EAAE0D,KAAKG,KAAKuD,QAAQpH,EAAE0D,MAAMG,KAAKqD,SAAS9G,SAAS8L,iBAAiB,QAAQrI,KAAK0G,eAAe,SAAS1G,KAAKW,OAAOqE,aAAa9I,OAAOmM,iBAAiB,SAASrI,KAAK2G,cAAa,GAAIxK,EAAE8K,iBAAiBjH,KAAKiH,eAAe9K,EAAE8K,gBAAgB9K,EAAEwF,WAAW3B,KAAK2B,SAASxF,EAAEwF,UAAUxF,EAAE2H,aAAa9D,KAAK8D,WAAW3H,EAAE2H,YAAY3H,EAAEoJ,YAAYvF,KAAKuF,UAAUpJ,EAAEoJ,WAAWpJ,EAAEsJ,cAAczF,KAAKyF,YAAYtJ,EAAEsJ,aAAatJ,EAAEyJ,aAAa5F,KAAK4F,WAAWzJ,EAAEyJ,YAAY5F,KAAKW,OAAOkD,WAAW7D,KAAKiG,UAAU7K,EAAEkN,QAAQnO,GAAG,SAASgC,EAAEf,EAAElB,GAAG,aAAakB,EAAEE,YAAW,EAAG,IAAIW,GAAGN,EAAEG,UAAUoG,aAAa,SAAS/F,EAAEf,GAAG,OAAO,IAAIe,EAAEmD,KAAKV,cAAc2J,QAAQnN,EAAEwD,gBAAgBjD,GAAG,SAASA,EAAEQ,GAAG6D,KAAKf,GAAG,GAAGe,KAAKkB,YAAW,EAAGlB,KAAKwD,QAAO,EAAGxD,KAAKkG,aAAY,EAAGlG,KAAKoH,YAAW,EAAGpH,KAAKoF,aAAY,EAAGpF,KAAKuH,iBAAgB,EAAGvH,KAAKwH,eAAc,EAAGxH,KAAKgF,YAAY,OAAOhF,KAAKqH,kBAAkB,SAASrH,KAAKqG,WAAW,aAAarG,KAAKsH,cAAc,eAAetH,KAAKY,gBAAgB,eAAeZ,KAAKyH,eAAc,EAAGzH,KAAK0H,qBAAoB,EAAG1H,KAAK2H,oBAAmB,EAAG3H,KAAK4H,cAAc,IAAI5H,KAAK6D,WAAU,EAAG7D,KAAK6H,eAAc,EAAG7H,KAAK8H,oBAAmB,EAAG9H,KAAK+H,eAAc,EAAG/H,KAAKgI,MAAM,EAAEhI,KAAKwF,aAAa,IAAIxF,KAAKyE,WAAU,EAAGzE,KAAKG,KAAK,UAAUH,KAAKkE,eAAe,qBAAqBlE,KAAKoE,MAAM,WAAWpE,KAAKgE,cAAc,oBAAoBhE,KAAKD,IAAI,SAASC,KAAKiE,KAAK,UAAUjE,KAAKsG,OAAO,YAAYtG,KAAK7E,MAAM,WAAW6E,KAAKwI,UAAU,gBAAgBxI,KAAKyI,YAAY,kBAAkBzI,KAAK0E,QAAQ,aAAa1E,KAAK4D,KAAK,UAAU5D,KAAKuE,UAAU,gBAAgBvE,KAAKwE,UAAU,gBAAgBxE,KAAKgC,OAAO,YAAYhC,KAAK0I,kBAAkB,sBAAsB1I,KAAKgH,QAAQ,aAAahH,KAAKmF,KAAK,UAAUnF,KAAK2I,SAAS,cAAc3I,KAAK4I,cAAc,oBAAoB5I,KAAK6I,wBAAwB,+BAA+B7I,KAAK8I,OAAO,YAAY9I,KAAK+I,eAAe,qBAAqB/I,KAAKgJ,YAAY,iBAAiBhJ,KAAKN,SAAS,cAAcM,KAAKiJ,KAAK,UAAUjJ,KAAKf,GAAG,MAAME,KAAKC,MAAM,IAAID,KAAKE,UAAUW,KAAKe,MAAM5E,EAAEiE,OAAOW,MAAMC,QAAQhB,KAAKJ,MAAMzD,EAAEiE,OAAOU,UAAUoI,MAAM,KAAKlJ,KAAKkB,WAAW/E,EAAEiE,OAAO+I,SAASnJ,KAAKwD,OAAOrH,EAAEqH,OAAOxD,KAAKoH,YAAW,IAAKjL,EAAEiL,WAAWpH,KAAKoF,aAAY,IAAKjJ,EAAEiJ,YAAYpF,KAAKuH,iBAAgB,IAAKpL,EAAEoL,gBAAgBvH,KAAKwH,eAAc,IAAKrL,EAAEqL,cAAcrL,EAAE6I,cAAchF,KAAKgF,YAAY7I,EAAE6I,aAAahF,KAAK6D,WAAU,IAAK1H,EAAE0H,UAAU1H,EAAEkL,oBAAoBrH,KAAKqH,kBAAkBlL,EAAEkL,mBAAmBlL,EAAEkK,aAAarG,KAAKqG,WAAWlK,EAAEkK,YAAYlK,EAAEmL,gBAAgBtH,KAAKsH,cAAcnL,EAAEmL,eAAenL,EAAEyE,kBAAkBZ,KAAKY,gBAAgBzE,EAAEyE,iBAAiBZ,KAAKyH,eAAc,IAAKtL,EAAEsL,cAAczH,KAAK0H,qBAAoB,IAAKvL,EAAEuL,oBAAoB1H,KAAK2H,oBAAmB,IAAKxL,EAAEwL,mBAAmBxL,EAAEyL,gBAAgB5H,KAAK4H,cAAczL,EAAEyL,eAAezL,EAAE0L,gBAAgB7H,KAAK6H,cAAc1L,EAAE0L,eAAe1L,EAAE2L,qBAAqB9H,KAAK8H,mBAAmB3L,EAAE2L,oBAAoB3L,EAAE4L,gBAAgB/H,KAAK+H,cAAc5L,EAAE4L,eAAe5L,EAAE6L,QAAQhI,KAAKgI,MAAM7L,EAAE6L,OAAO7L,EAAE+F,eAAelC,KAAKkC,aAAa/F,EAAE+F,cAAc,MAAM/F,EAAEqJ,eAAexF,KAAKwF,aAAarJ,EAAEqJ,cAAcxF,KAAKyE,WAAU,IAAKtI,EAAEsI,UAAUrJ,EAAE+L,OAAOlL,GAAG,SAASE,EAAEf,EAAElB,GAAG,aAAakB,EAAEE,YAAW,EAAG,IAAIW,EAAE/B,EAAE,GAAGyB,GAAGuB,EAAEpB,UAAUsH,SAAS,WAAW,GAAGpD,KAAKG,KAAKN,KAAK0B,cAAc,CAAC,GAAGvB,KAAKG,KAAKQ,OAAOO,WAAW,IAAI,IAAI/E,EAAE6D,KAAKG,KAAKN,KAAK0B,cAAcnG,EAAE,EAAElB,EAAE8F,KAAKK,QAAQI,QAAQrF,EAAElB,EAAEyD,OAAOvC,IAAI,CAAC,IAAIa,EAAE/B,EAAEkB,GAAGa,EAAEuD,UAAS,EAAG,IAAI,IAAI7D,EAAE,EAAEuB,EAAEf,EAAER,EAAEuB,EAAES,OAAOhC,IAAIuB,EAAEvB,GAAGR,QAAQc,EAAEd,QAAQc,EAAEuD,UAAS,QAASrD,EAAE6D,KAAKG,KAAKN,KAAK0B,cAAcvB,KAAKK,QAAQlF,MAAMgB,EAAEA,EAAEhB,MAAM,GAAG6E,KAAKG,KAAKN,KAAK+B,mBAAkB,EAAG5B,KAAKK,QAAQ+I,cAAc,IAAItK,YAAY,SAAS,CAAC1C,SAAQ,KAAM4D,KAAKG,KAAKN,KAAK+B,mBAAkB,IAAK1E,EAAEpB,UAAUuN,cAAc,WAAWrJ,KAAKK,QAAQiJ,UAAU,EAAEtJ,KAAKK,QAAQU,MAAMtB,QAAQ,OAAOO,KAAKK,QAAQQ,QAAQ+F,KAAK5G,KAAKG,KAAKQ,OAAO1B,IAAI/B,EAAEpB,UAAUyN,kBAAkB,WAAW,IAAInO,EAAE4E,KAAKA,KAAKK,QAAQgI,iBAAiB,UAAS,SAASlM,GAAGf,EAAE+E,KAAKN,KAAKoB,wBAAwB7F,EAAE+E,KAAKkD,aAAYnG,EAAEpB,UAAU0N,oBAAoB,WAAW,IAAIpO,EAAE4E,KAAKA,KAAKG,KAAKQ,OAAO6C,SAASxD,KAAKyJ,iBAAiB,IAAIC,kBAAiB,SAASvN,GAAGf,EAAE4K,0BAA0B5K,EAAE+E,KAAKN,KAAKK,kBAAkB9E,EAAE+E,KAAKN,KAAKoB,wBAAwB7F,EAAE+E,KAAKkD,SAASlH,EAAEwN,SAAQ,SAASxN,GAAG,UAAUA,EAAEyN,eAAexO,EAAE+E,KAAK4D,KAAK8F,wBAAwBzO,EAAE+E,KAAK4D,KAAKO,kBAAgBtE,KAAK8J,4BAA4B5M,EAAEpB,UAAUgO,wBAAwB,WAAW9J,KAAKyJ,kBAAkBzJ,KAAKyJ,iBAAiBM,QAAQ/J,KAAKK,QAAQ,CAAC2J,YAAW,EAAGC,WAAU,EAAGC,eAAc,KAAMhN,EAAEpB,UAAUqO,2BAA2B,WAAWnK,KAAKyJ,kBAAkBzJ,KAAKyJ,iBAAiBW,cAAclN,EAAEpB,UAAUN,OAAO,SAASW,GAAG6D,KAAKK,QAAQd,UAAU,GAAG,IAAI,IAAInE,EAAE,EAAElB,EAAEiC,EAAEf,EAAElB,EAAEyD,OAAOvC,IAAI,CAAC,IAAIa,EAAE/B,EAAEkB,GAAG,GAAGa,EAAEF,eAAe,WAAW,CAAC,IAAIJ,EAAEM,EAAEiB,EAAEX,SAAS8N,cAAc,YAAY,GAAGnN,EAAEsD,MAAM7E,EAAE6E,MAAM7E,EAAE8E,QAAQ,IAAI,IAAI9F,EAAE,EAAER,EAAEwB,EAAE8E,QAAQ9F,EAAER,EAAEwD,OAAOhD,IAAI,CAAC,IAAIK,EAAEb,EAAEQ,GAAGuC,EAAEoN,YAAYtK,KAAKuK,aAAavP,IAAIgF,KAAKK,QAAQiK,YAAYpN,QAAQ8C,KAAKK,QAAQiK,YAAYtK,KAAKuK,aAAatO,MAAMiB,EAAEpB,UAAUyO,aAAa,SAASnP,GAAG,IAAIlB,EAAEqC,SAAS8N,cAAc,UAAU,OAAOnQ,EAAEiB,MAAM,KAAKC,EAAED,MAAMC,EAAED,MAAMC,EAAEkE,KAAKpF,EAAEqF,UAAUnE,EAAEmE,WAAWnE,EAAEkE,KAAKlE,EAAEoE,WAAWtF,EAAEsF,SAASpE,EAAEoE,WAAU,IAAKpE,EAAEqE,UAAUvF,EAAE6G,MAAMtB,QAAQ,QAAQrE,EAAEsE,WAAWxF,EAAEwF,UAAS,GAAItE,EAAEuE,aAAazF,EAAEsQ,aAAa,mBAAmB,QAAQpP,EAAE0E,WAAW5F,EAAEsQ,aAAa,iBAAiB,QAAQpP,EAAEwE,OAAOxE,EAAEwE,MAAMsJ,MAAM,KAAKS,SAAQ,SAASxN,GAAGjC,EAAEyC,UAAUoD,IAAI5D,MAAKf,EAAEyE,MAAM,iBAAiBzE,EAAEyE,MAAMjF,OAAO6P,KAAKrP,EAAEyE,MAAM8J,SAAQ,SAASxN,GAAGjC,EAAEsQ,aAAa,QAAQvO,EAAE0C,UAAUxC,GAAGf,EAAEyE,KAAK1D,OAAMjC,GAAGgD,GAAG,SAASA,EAAEf,GAAG6D,KAAKgG,yBAAwB,EAAGhG,KAAKK,QAAQlE,EAAEiE,OAAOJ,KAAKG,KAAKhE,EAAEgE,KAAKH,KAAKK,QAAQX,WAAWM,KAAKG,KAAKQ,OAAOkD,WAAU,GAAI7D,KAAKqJ,gBAAgBrJ,KAAKuJ,oBAAoBvJ,KAAKyJ,iBAAiB,KAAKzJ,KAAKwJ,sBAAsBxJ,KAAKK,QAAQ0D,KAAK5H,EAAEgE,KAAK/E,EAAE6M,OAAOtM,GAAG,SAASQ,EAAEf,EAAElB,GAAG,aAAakB,EAAEE,YAAW,EAAG,IAAI4B,EAAEhD,EAAE,GAAGS,EAAET,EAAE,GAAG+B,GAAGN,EAAEG,UAAU4O,aAAa,WAAW,IAAIvO,EAAEI,SAAS8N,cAAc,OAAO,OAAOlO,EAAE4E,MAAMC,QAAQhB,KAAKG,KAAKQ,OAAOI,MAAMf,KAAK6J,wBAAwB1N,GAAGA,GAAGR,EAAEG,UAAU+N,wBAAwB,SAAS1N,GAAG6D,KAAKG,KAAKQ,OAAOf,MAAMI,KAAKG,KAAKC,OAAOC,QAAQS,UAAUoI,MAAM,KAAK/M,EAAE2E,UAAU,GAAG3E,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAO1B,IAAI9C,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOR,MAAM,IAAI,IAAI/E,EAAE,EAAElB,EAAE8F,KAAKG,KAAKQ,OAAOf,MAAMxE,EAAElB,EAAEyD,OAAOvC,IAAI,CAAC,IAAIa,EAAE/B,EAAEkB,GAAG,KAAKa,EAAEoC,QAAQlC,EAAEQ,UAAUoD,IAAI9D,KAAKN,EAAEG,UAAU6O,kBAAkB,WAAW,IAAIvP,EAAE4E,KAAK7D,EAAEI,SAAS8N,cAAc,OAAOlO,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOuD,gBAAgB,IAAIhK,EAAEqC,SAAS8N,cAAc,QAAQnQ,EAAEyC,UAAUoD,IAAI,eAAe5D,EAAEmO,YAAYpQ,GAAG,IAAI+B,EAAEM,SAAS8N,cAAc,QAAQpO,EAAEsD,UAAUS,KAAKG,KAAKQ,OAAOiH,cAAc3L,EAAEU,UAAUoD,IAAI,eAAe9D,EAAE2O,QAAQ,SAASzO,GAAGA,EAAE0O,kBAAkBzP,EAAE+E,KAAKQ,OAAOkD,WAAWzI,EAAE+E,KAAKgD,IAAI,KAAKhH,EAAEmO,YAAYrO,GAAG,IAAIN,EAAEY,SAAS8N,cAAc,QAAQ1O,EAAEgB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOyD,OAAO,IAAIlH,EAAEX,SAAS8N,cAAc,QAAQ,OAAOnN,EAAEP,UAAUoD,IAAI,cAAcpE,EAAE2O,YAAYpN,GAAGf,EAAEmO,YAAY3O,GAAGQ,EAAEyO,QAAQ,WAAWxP,EAAE+E,KAAKQ,OAAOkD,YAAYzI,EAAE+E,KAAKN,KAAK2C,YAAYpH,EAAE+E,KAAKmD,QAAQlI,EAAE+E,KAAKyD,SAAS,CAACU,UAAUnI,EAAEwD,YAAYzF,EAAEqM,SAAStK,EAAEkI,UAAU,CAACG,UAAU3I,EAAEyI,MAAMlH,KAAKvB,EAAEG,UAAU6D,YAAY,WAAW,IAAIxD,EAAE6D,KAAKG,KAAKN,KAAK0B,cAAc,GAAG,OAAOpF,GAAGA,GAAGA,EAAEwD,YAAY,CAAC,IAAIvE,EAAEmB,SAAS8N,cAAc,QAAQjP,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOjB,UAAUtE,EAAEmE,UAAUS,KAAKG,KAAKQ,OAAOC,gBAAgBZ,KAAKkE,iBAAiBlE,KAAKkE,eAAevE,YAAYJ,UAAUnE,EAAE0P,eAAe,CAAC,IAAI5Q,EAAE,GAAGiC,IAAIjC,EAAEiC,EAAEoD,YAAW,IAAKS,KAAKG,KAAKQ,OAAOkH,cAAc1L,EAAEoD,UAAUpD,EAAEmD,MAAMU,KAAKkE,iBAAiBlE,KAAKkE,eAAevE,YAAYJ,UAAUpD,EAAEjC,EAAE,MAAMyB,EAAEG,UAAUyK,SAAS,WAAW,GAAGvG,KAAKkE,eAAe,CAAC,IAAIlE,KAAKG,KAAKQ,OAAO8G,cAAc,YAAYzH,KAAKkE,eAAeqC,SAAS5J,UAAUoD,IAAI,WAAW,KAAKC,KAAKG,KAAKX,WAAWQ,KAAKkE,eAAeqC,SAAS5J,UAAUoD,IAAI,WAAWC,KAAKkE,eAAeqC,SAAS5J,UAAU0H,OAAO,aAAa1I,EAAEG,UAAUiP,iBAAiB,WAAW,IAAI3P,EAAE4E,KAAK7D,EAAEI,SAAS8N,cAAc,OAAOlO,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOqD,eAAe,IAAI9J,EAAEqC,SAAS8N,cAAc,OAAOnQ,EAAEyC,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAO2F,QAAQnK,EAAEmO,YAAYpQ,GAAG,IAAI+B,EAAEM,SAAS8N,cAAc,OAAOpO,EAAEU,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOZ,KAAK,IAAIpE,EAAEY,SAAS8N,cAAc,QAAQ,OAAO1O,EAAEgB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOsD,MAAMtI,EAAEiP,QAAQ,SAASzO,GAAGf,EAAE+E,KAAKN,KAAK2C,cAAcpH,EAAE+E,KAAKmD,QAAQnH,EAAE0O,oBAAoB5O,EAAEqO,YAAY3O,GAAGQ,EAAEmO,YAAYrO,GAAGE,EAAEyO,QAAQ,SAASzO,GAAGf,EAAE+E,KAAKQ,OAAOkD,YAAY1H,EAAE+K,OAAOvK,UAAUC,SAASxB,EAAE+E,KAAKQ,OAAO8H,eAAerN,EAAE+E,KAAKN,KAAK2C,YAAYpH,EAAE+E,KAAKmD,QAAQlI,EAAE+E,KAAKyD,UAAU,CAACU,UAAUnI,EAAEmK,OAAOpM,EAAE6F,IAAI9D,EAAEgI,KAAKtI,IAAIA,EAAEG,UAAUwK,OAAO,WAAW,GAAGtG,KAAKgE,cAAc,CAAC,IAAI,IAAI7H,EAAEf,EAAE4E,KAAKgE,cAAcsC,OAAOhG,WAAWpG,EAAE8F,KAAKG,KAAKN,KAAK0B,cAActF,EAAE,GAAGN,EAAE,EAAEuB,EAAE9B,EAAEO,EAAEuB,EAAES,OAAOhC,IAAI,CAAC,IAAIhB,EAAEuC,EAAEvB,GAAGQ,GAAE,EAAG,IAAI,IAAIhC,EAAE,EAAEa,EAAEd,EAAEC,EAAEa,EAAE2C,OAAOxD,IAAI,CAAC,IAAII,EAAES,EAAEb,GAAG+E,OAAO3E,EAAE0E,MAAMC,OAAOvE,EAAEkG,QAAQ5B,MAAM9C,GAAE,GAAIA,GAAGF,EAAEgE,KAAKtF,GAAG,IAAI,IAAIH,EAAE,EAAEwQ,EAAE/O,EAAEzB,EAAEwQ,EAAErN,OAAOnD,IAAI,CAAC,IAAIyQ,EAAED,EAAExQ,GAAGyQ,EAAEtO,UAAUoD,IAAI,UAAUC,KAAKgE,cAAcsC,OAAOQ,YAAYmE,GAAG,IAAI7P,EAAE4E,KAAKgE,cAAcsC,OAAOhG,WAAW/F,EAAE,EAAEA,EAAEL,EAAEyD,OAAOpD,IAAI,CAAC4B,GAAE,EAAG,IAAI,IAAIH,EAAE,EAAE1B,EAAEc,EAAEY,EAAE1B,EAAEqD,OAAO3B,IAAIrB,EAAEL,EAAE0B,GAAGkD,OAAOhF,EAAEK,GAAG0E,MAAMC,OAAOvE,EAAEkG,QAAQ5B,MAAM9C,GAAE,GAAIA,IAAI,IAAIf,EAAEuC,QAAQuN,YAAYpP,UAAUqP,sBAAsB,IAAI5Q,EAAEyF,KAAKgE,cAAcsC,OAAO6B,aAAanI,KAAKoL,SAASlR,EAAEK,IAAIa,EAAEb,IAAIa,EAAEb,EAAE,GAAG4Q,sBAAsB,WAAWnL,KAAKoL,SAASlR,EAAEK,KAAKyF,KAAKgE,cAAcsC,OAAOgE,YAAYtK,KAAKoL,SAASlR,EAAEK,MAAM,GAAG,IAAIL,EAAEyD,OAAO,CAAC,IAAI0N,EAAE9O,SAAS8N,cAAc,QAAQgB,EAAE1O,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOjB,UAAU2L,EAAE9L,UAAUS,KAAKG,KAAKQ,OAAOC,gBAAgBZ,KAAKgE,cAAcsC,OAAO/G,UAAU8L,EAAEP,aAAanP,EAAEG,UAAUsP,SAAS,SAASlO,GAAG,IAAIvC,EAAEqF,KAAK7D,EAAEI,SAAS8N,cAAc,OAAOlO,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOxF,OAAOgB,EAAE0E,QAAQ5B,GAAG/B,EAAE+B,GAAG,IAAI7D,EAAEmB,SAAS8N,cAAc,QAAQ,GAAGjP,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAO6H,WAAWpN,EAAEmE,UAAUrC,EAAEqC,YAAW,IAAKS,KAAKG,KAAKQ,OAAOkH,cAAc3K,EAAEqC,UAAUrC,EAAEoC,KAAKnD,EAAEmO,YAAYlP,IAAI8B,EAAE4C,UAAU,CAAC,IAAI5F,EAAEqC,SAAS8N,cAAc,QAAQnQ,EAAEyC,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAO8H,aAAavO,EAAEqF,UAAUS,KAAKG,KAAKQ,OAAOiH,cAAc1N,EAAE0Q,QAAQ,SAASzO,GAAGA,EAAEmP,iBAAiBnP,EAAE0O,kBAAkB,IAAIzP,GAAE,EAAG,GAAGT,EAAEwF,KAAK8G,iBAAiB7L,GAAE,GAAIT,EAAEwF,KAAK8G,eAAe,CAAC,IAAI,IAAI/M,EAAES,EAAEwF,KAAKN,KAAK0B,cAActF,EAAE4F,KAAKC,MAAMD,KAAKE,UAAU7H,IAAIyB,EAAE,EAAEA,EAAEM,EAAE0B,OAAOhC,IAAIM,EAAEN,GAAGsD,KAAK/B,EAAE+B,IAAIhD,EAAEsP,OAAO5P,EAAE,IAAG,IAAKhB,EAAEwF,KAAK8G,eAAehL,KAAKb,GAAE,GAAIA,IAAIT,EAAEwF,KAAKN,KAAK4B,mBAAmBvE,EAAE+B,GAAG,MAAMtE,EAAEwF,KAAKkD,SAAS1I,EAAEwF,KAAKC,OAAOgD,WAAWzI,EAAEwF,KAAKN,KAAK6B,iBAAiBvF,EAAEmO,YAAYpQ,GAAG,OAAOiC,GAAGR,EAAEG,UAAU0P,WAAW,WAAW,IAAIrP,EAAEI,SAAS8N,cAAc,OAAO,OAAOlO,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAO+D,SAASvI,GAAGR,EAAEG,UAAU2P,UAAU,WAAW,IAAI9P,EAAEqE,KAAK7D,EAAEI,SAAS8N,cAAc,OAAOpO,EAAEM,SAAS8N,cAAc,SAASnN,EAAEX,SAAS8N,cAAc,OAAOlO,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOqB,QAAQ,IAAI5G,EAAE,CAACkJ,UAAUnI,EAAEkJ,MAAMpJ,GAAG,OAAO+D,KAAKG,KAAKQ,OAAOyG,aAAajL,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOsI,MAAMhN,EAAEyP,UAAS,GAAIzP,EAAE0P,KAAK,SAAS1P,EAAE0D,YAAYK,KAAKG,KAAKQ,OAAO0G,kBAAkBpL,EAAEqN,SAAS,EAAErN,EAAEuO,aAAa,aAAaxK,KAAKG,KAAKQ,OAAO0G,mBAAmBpL,EAAEuO,aAAa,iBAAiB,OAAOvO,EAAEuO,aAAa,eAAe,OAAOvO,EAAEuO,aAAa,cAAc,OAAOvO,EAAE2O,QAAQ,SAASzO,GAAG2B,YAAW,WAAW,KAAK3B,EAAE+K,OAAO/L,OAAOQ,EAAEwE,KAAK6B,OAAO,MAAK,KAAK/F,EAAE2P,UAAU,SAASzP,GAAG,YAAYA,EAAEV,KAAKE,EAAEwE,KAAKyD,OAAOjI,EAAEkQ,cAAc1P,EAAEmP,kBAAkB,cAAcnP,EAAEV,KAAKE,EAAEwE,KAAKyD,OAAOjI,EAAEmQ,gBAAgB3P,EAAEmP,kBAAkB,QAAQnP,EAAEV,IAAIE,EAAEwE,KAAKN,KAAK2C,YAAY7G,EAAEwE,KAAKmD,QAAQxF,YAAW,WAAWnC,EAAEwE,KAAKmD,UAAS3H,EAAEwE,KAAKQ,OAAO6E,cAAc,UAAUrJ,EAAEV,KAAKU,EAAEmP,kBAAkBrP,EAAE8P,QAAQ,SAAS5P,GAAG,IAAIf,EAAEe,EAAE+K,OAAO,GAAG,UAAU/K,EAAEV,IAAI,CAAC,GAAGE,EAAEwE,KAAK6G,SAAS7K,EAAE6P,QAAQ,OAAO9O,EAAE+O,QAAQ9P,EAAEmP,sBAAsBnP,EAAE0O,kBAAkB,IAAI3Q,EAAEyB,EAAEwJ,KAAKnC,cAAc,IAAIrH,EAAEwE,KAAKQ,OAAOqI,aAAa9O,GAAGA,EAAE+R,YAAY,YAAY9P,EAAEV,KAAK,cAAcU,EAAEV,MAAM,WAAWU,EAAEV,IAAIE,EAAEwE,KAAKmD,QAAQ3H,EAAEwE,KAAKQ,OAAOyG,YAAYzL,EAAEwE,KAAKN,KAAK2C,YAAY7G,EAAEwE,KAAK6B,OAAO5G,EAAED,OAAOc,EAAEd,MAAM,IAAIgB,EAAEmP,iBAAiBnP,EAAE0O,mBAAmB5O,EAAEiQ,QAAQ,WAAWvQ,EAAEwE,KAAKyD,QAAQzH,EAAEmO,YAAYrO,GAAG+D,KAAKG,KAAK6G,UAAU9J,EAAEP,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOqG,SAAS9J,EAAEqC,UAAU,IAAIrC,EAAE0N,QAAQ,SAASzO,GAAG,GAAGR,EAAEwE,KAAK6G,QAAQ,CAAC7K,EAAEmP,iBAAiBnP,EAAE0O,kBAAkB,IAAIzP,EAAEO,EAAEqG,OAAOqD,MAAMlK,MAAM,GAAG,KAAKC,EAAEiD,OAAO,YAAY1C,EAAEqG,OAAOqD,MAAMC,QAAQ,IAAIpL,EAAEyB,EAAEwE,KAAK6G,QAAQ5L,GAAGa,EAAE,GAAG,IAAI/B,EAAE,OAAO,iBAAiBA,EAAES,EAAEmI,eAAe5I,KAAKyB,EAAEwE,KAAKwD,QAAQzJ,GAAG+B,EAAE/B,EAAEiB,MAAMjB,EAAEiB,MAAMjB,EAAEoF,OAAO3D,EAAEwE,KAAKwD,QAAQhI,EAAEwE,KAAKN,KAAKb,UAAU,CAACM,KAAKpF,EAAEiB,MAAMjB,KAAK+B,EAAE/B,GAAGyB,EAAEwE,KAAK6B,OAAO,IAAIlE,YAAW,WAAWnC,EAAEwE,KAAKgD,IAAIlH,EAAE,SAAQ,GAAG,KAAK,KAAKN,EAAEwE,KAAKQ,OAAO6G,eAAe1J,YAAW,WAAWnC,EAAEwE,KAAKmD,UAAS,OAAOnH,EAAEmO,YAAYpN,GAAG9B,EAAE4L,QAAQ9J,GAAG9B,GAAGO,EAAEG,UAAU+P,YAAY,WAAW,IAAI1P,EAAE6D,KAAKmF,KAAKnC,cAAc,IAAIhD,KAAKG,KAAKQ,OAAOqI,aAAa5N,EAAE,KAAK,GAAGe,EAAE,IAAIf,EAAEe,EAAEgQ,gBAAgB,OAAO/Q,GAAGA,EAAEuB,UAAUC,SAASoD,KAAKG,KAAKQ,OAAOjB,WAAWtE,EAAEA,EAAE+Q,oBAAoB,CAAC,IAAIjS,EAAE8F,KAAKmF,KAAKiH,iBAAiB,IAAIpM,KAAKG,KAAKQ,OAAOmI,OAAO,SAAS9I,KAAKG,KAAKQ,OAAOjB,SAAS,KAAKtE,EAAElB,EAAEA,EAAEyD,OAAO,GAAG,GAAGvC,GAAGA,EAAEuB,UAAUC,SAASoD,KAAKG,KAAKQ,OAAOiI,iBAAiBxN,EAAE,MAAM,OAAOA,EAAE,CAAC,IAAIa,EAAEE,EAAEU,WAAW,GAAGZ,EAAEU,UAAUC,SAASoD,KAAKG,KAAKQ,OAAOgI,WAAW1M,EAAEkQ,gBAAgB,CAAC,IAAIxQ,EAAEM,EAAEkQ,gBAAgBC,iBAAiB,IAAIpM,KAAKG,KAAKQ,OAAOmI,OAAO,SAAS9I,KAAKG,KAAKQ,OAAOjB,SAAS,KAAK/D,EAAEgC,SAASvC,EAAEO,EAAEA,EAAEgC,OAAO,KAAKvC,IAAIe,GAAGA,EAAEQ,UAAU0H,OAAOrE,KAAKG,KAAKQ,OAAOqI,aAAa5N,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOqI,aAAa9L,EAAEJ,oBAAoBkD,KAAKmF,KAAK/J,KAAKO,EAAEG,UAAUgQ,cAAc,WAAW,IAAI3P,EAAE6D,KAAKmF,KAAKnC,cAAc,IAAIhD,KAAKG,KAAKQ,OAAOqI,aAAa5N,EAAE,KAAK,GAAGe,EAAE,IAAIf,EAAEe,EAAEiM,YAAY,OAAOhN,GAAGA,EAAEuB,UAAUC,SAASoD,KAAKG,KAAKQ,OAAOjB,WAAWtE,EAAEA,EAAEgN,iBAAiBhN,EAAE4E,KAAKmF,KAAKnC,cAAc,IAAIhD,KAAKG,KAAKQ,OAAOmI,OAAO,SAAS9I,KAAKG,KAAKQ,OAAOjB,SAAS,KAAK,GAAG,OAAOtE,GAAG,OAAOe,EAAE,CAAC,IAAIjC,EAAEiC,EAAEU,WAAW3C,EAAEyC,UAAUC,SAASoD,KAAKG,KAAKQ,OAAOgI,WAAWzO,EAAEkO,cAAchN,EAAElB,EAAEkO,YAAYpF,cAAc,IAAIhD,KAAKG,KAAKQ,OAAOmI,OAAO,SAAS9I,KAAKG,KAAKQ,OAAOjB,SAAS,MAAMtE,IAAIe,GAAGA,EAAEQ,UAAU0H,OAAOrE,KAAKG,KAAKQ,OAAOqI,aAAa5N,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOqI,aAAa9L,EAAEJ,oBAAoBkD,KAAKmF,KAAK/J,KAAKO,EAAEG,UAAUuQ,QAAQ,WAAW,IAAIlQ,EAAEI,SAAS8N,cAAc,OAAO,OAAOlO,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOwE,MAAMhJ,GAAGR,EAAEG,UAAU2E,QAAQ,SAAStE,QAAG,IAASA,IAAIA,EAAE,IAAI,IAAIf,EAAElB,EAAE8F,KAAKG,KAAKN,KAAK0C,UAAUvC,KAAKG,KAAKN,KAAKA,KAAK,IAAIG,KAAKmF,KAAK5F,UAAU,MAAMpD,EAAE,OAAOf,EAAEmB,SAAS8N,cAAc,QAAQ1N,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOmI,QAAQ1N,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOjB,UAAUtE,EAAEmE,UAAUpD,OAAO6D,KAAKmF,KAAKmF,YAAYlP,GAAG,GAAG4E,KAAKG,KAAKQ,OAAO6C,QAAQxD,KAAKG,KAAKQ,OAAOuF,YAAY,OAAO9K,EAAEmB,SAAS8N,cAAc,QAAQ1N,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOmI,QAAQ1N,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOjB,UAAUtE,EAAEmE,UAAUS,KAAKG,KAAKQ,OAAO2G,mBAAmBtH,KAAKmF,KAAKmF,YAAYlP,GAAG,GAAG,IAAIlB,EAAEyD,OAAO,CAAC,IAAI1B,EAAEM,SAAS8N,cAAc,OAAO,OAAOpO,EAAEU,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOmI,QAAQ7M,EAAEU,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOjB,UAAUzD,EAAEsD,UAAUS,KAAKG,KAAKQ,OAAO0F,gBAAgBrG,KAAKmF,KAAKmF,YAAYrO,GAAG,IAAI,IAAIN,EAAE,SAASQ,GAAG,GAAGA,EAAEJ,eAAe,SAAS,CAAC,IAAIX,EAAEe,EAAER,EAAEY,SAAS8N,cAAc,OAAO1O,EAAEgB,UAAUoD,IAAIxF,EAAE4F,KAAKQ,OAAOgI,UAAU,IAAIzO,EAAEqC,SAAS8N,cAAc,OAAOnQ,EAAEyC,UAAUoD,IAAIxF,EAAE4F,KAAKQ,OAAOiI,eAAerO,EAAE4F,KAAKQ,OAAOoH,eAAexN,EAAE4F,KAAKQ,OAAOO,YAAYhH,EAAEyC,UAAUoD,IAAIxF,EAAE4F,KAAKQ,OAAOkI,yBAAyB3O,EAAEqF,UAAUnE,EAAEoF,MAAM7E,EAAE2O,YAAYpQ,GAAG,IAAI+B,EAAEb,EAAEqF,QAAQ,GAAGxE,EAAE,CAAC,IAAI,IAAIiB,EAAE,EAAEvC,EAAEsB,EAAEiB,EAAEvC,EAAEgD,OAAOT,IAAI,CAAC,IAAI/C,EAAEQ,EAAEuC,GAAGvB,EAAE2O,YAAY/P,EAAEuO,OAAO3O,IAAI,GAAGI,EAAE4F,KAAKQ,OAAOoH,eAAexN,EAAE4F,KAAKQ,OAAOO,WAAW,CAAC,IAAIlG,EAAET,EAAEL,EAAEmO,iBAAiB,SAAQ,SAASlM,GAAGA,EAAEmP,iBAAiBnP,EAAE0O,kBAAkB,IAAI,IAAIzP,EAAE,EAAElB,EAAEyB,EAAE2Q,SAASlR,EAAElB,EAAEyD,OAAOvC,IAAI,CAAC,IAAIa,EAAE/B,EAAEkB,IAAI,IAAIa,EAAE6E,UAAUyH,QAAQvN,EAAEmF,KAAKQ,OAAOmI,SAAS7M,EAAEgQ,aAAY1R,EAAE4K,KAAKmF,YAAY3O,QAAQpB,EAAE4K,KAAKmF,YAAY/P,EAAEuO,OAAO3M,KAAK5B,EAAEyF,KAAK9C,EAAE,EAAEvC,EAAET,EAAEgD,EAAEvC,EAAEgD,OAAOT,IAAIvB,EAAEhB,EAAEuC,KAAKvB,EAAEG,UAAUgN,OAAO,SAAS9N,GAAG,GAAGA,EAAE2E,YAAY,CAAC,IAAIxD,EAAEI,SAAS8N,cAAc,OAAO,OAAOlO,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOmI,QAAQ3M,EAAEQ,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOsI,MAAM9M,EAAE,IAAIf,EAAEmB,SAAS8N,cAAc,OAAOjP,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOmI,QAAQ9N,EAAE4E,OAAO5E,EAAE4E,MAAMsJ,MAAM,KAAKS,SAAQ,SAASxN,GAAGf,EAAEuB,UAAUoD,IAAI5D,MAAKnB,EAAE+F,QAAQ3F,EAAE2F,MAAMC,QAAQhG,EAAE+F,OAAO,IAAIxG,EAAEyF,KAAKG,KAAKN,KAAK0B,cAAcnG,EAAEyF,QAAQ5B,GAAGjE,EAAEiE,GAAGe,KAAKG,KAAKQ,OAAO4G,iBAAiBvH,KAAKG,KAAK4D,MAAM/I,EAAEuE,WAAW,KAAKS,KAAKG,KAAK4D,KAAK/B,OAAOqD,MAAMlK,MAAMkD,OAAOjD,EAAEmE,UAAUrC,EAAEiB,UAAUnD,EAAEuE,UAAUS,KAAKG,KAAK4D,KAAK/B,OAAOqD,MAAMlK,MAAM6E,KAAKG,KAAKQ,OAAO+H,mBAAmB1N,EAAEuE,YAAYnE,EAAEmE,UAAUvE,EAAEuE,WAAWS,KAAKG,KAAKQ,OAAOmH,oBAAoB1M,EAAEmR,aAAanR,EAAEoP,aAAa,QAAQpP,EAAEmR,aAAa,IAAI/R,EAAEwF,KAAK5E,EAAEiN,iBAAiB,SAAQ,SAASlM,GAAGA,EAAEmP,iBAAiBnP,EAAE0O,kBAAkB,IAAIzP,EAAE4E,KAAKa,QAAQ5B,GAAG,IAAG,IAAKjE,EAAEwE,UAAUhF,EAAE2F,KAAKQ,OAAO+G,oBAAoB,CAAC,IAAIxN,GAAE,EAAG,GAAGM,EAAE2F,KAAK8G,gBAAgBzM,EAAE2F,KAAKQ,OAAOO,aAAahH,GAAE,GAAIM,EAAE2F,KAAK8G,gBAAgBzM,EAAE2F,KAAKQ,OAAOO,WAAW,CAAC,IAAI,IAAIjF,EAAEzB,EAAE2F,KAAKN,KAAK0B,cAAc5F,EAAEkG,KAAKC,MAAMD,KAAKE,UAAU9F,IAAIiB,EAAE,EAAEA,EAAEvB,EAAEgC,OAAOT,IAAIvB,EAAEuB,GAAG+B,KAAK7D,GAAGO,EAAE4P,OAAOrO,EAAE,IAAG,IAAK1C,EAAE2F,KAAK8G,eAAetL,KAAKzB,GAAE,GAAIA,IAAIM,EAAE2F,KAAKQ,OAAOO,YAAY1G,EAAE2F,KAAKN,KAAK4B,mBAAmBrG,EAAE,MAAMZ,EAAE2F,KAAKkD,SAAS7I,EAAE2F,KAAKC,OAAOgD,WAAW5I,EAAE2F,KAAKN,KAAK6B,gBAAgBlH,EAAE2F,KAAKgD,IAAI,SAAS,CAAC,GAAGnI,EAAE0E,UAAU1E,EAAEwE,SAAS,OAAO,GAAGhF,EAAE2F,KAAKQ,OAAOqH,OAAO/J,MAAMC,QAAQ3D,IAAIC,EAAE2F,KAAKQ,OAAOqH,OAAOzN,EAAEoD,OAAO,OAAO,GAAGnD,EAAE2F,KAAK8G,eAAe,CAAC,IAAItM,OAAE,EAAOR,EAAE0H,KAAKC,MAAMD,KAAKE,UAAUvH,EAAE2F,KAAKN,KAAKsB,kBAAkB/F,KAAKjB,EAAEqF,UAAS,EAAGhF,EAAE2F,KAAKQ,OAAOO,YAAYvG,EAAEkH,KAAKC,MAAMD,KAAKE,UAAUxH,KAAK0F,KAAK9F,GAAGQ,EAAEkH,KAAKC,MAAMD,KAAKE,UAAU5H,KAAI,IAAKK,EAAE2F,KAAK8G,eAAetM,IAAIH,EAAE2F,KAAKgD,IAAI/H,EAAE,KAAKZ,EAAE2F,KAAKQ,OAAO6G,oBAAoBhN,EAAE2F,KAAKgD,IAAI/H,EAAE,KAAKZ,EAAE2F,KAAKQ,OAAO6G,mBAAkB,IAAItN,EAAEK,GAAG2C,EAAEc,wBAAwBzD,EAAE,KAAKS,EAAEiE,IAAI,OAAOjE,EAAE0E,UAAUxF,KAAKkB,EAAEwP,QAAQ,KAAKpQ,EAAE2F,KAAKQ,OAAO+G,qBAAqBtM,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOjB,UAAUlF,EAAE2F,KAAKQ,OAAOgH,oBAAoBvM,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOsI,OAAO/O,EAAEkB,EAAEuB,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAOoI,gBAAgB3N,EAAEuB,UAAU0H,OAAOrE,KAAKG,KAAKQ,OAAOoI,gBAAgB3N,GAAGO,GAAG,SAASA,EAAEQ,GAAG6D,KAAKG,KAAKhE,EAAEgE,KAAKH,KAAKsE,UAAUtE,KAAK0K,eAAe1K,KAAK0E,QAAQ1E,KAAKwL,aAAaxL,KAAKgC,OAAOhC,KAAKyL,YAAYzL,KAAKmF,KAAKnF,KAAKqM,UAAUrM,KAAKS,UAAUT,KAAKkE,eAAe,KAAKlE,KAAKgE,cAAc,KAAKhE,KAAKG,KAAKQ,OAAOO,YAAYlB,KAAKgE,cAAchE,KAAK+K,mBAAmB/K,KAAKgE,eAAehE,KAAKsE,UAAUgG,YAAYtK,KAAKgE,cAAcM,aAAatE,KAAKkE,eAAelE,KAAK2K,oBAAoB3K,KAAKsE,UAAUgG,YAAYtK,KAAKkE,eAAeI,YAAYtE,KAAKG,KAAKQ,OAAO8D,WAAWzE,KAAK0E,QAAQ/H,UAAUoD,IAAIC,KAAKG,KAAKQ,OAAO1B,IAAI1C,SAASwK,KAAKuD,YAAYtK,KAAK0E,UAAU1E,KAAKsE,UAAUgG,YAAYtK,KAAK0E,SAAS1E,KAAK0E,QAAQ4F,YAAYtK,KAAKgC,OAAOsC,WAAWtE,KAAK0E,QAAQ4F,YAAYtK,KAAKmF,MAAM/J,EAAE8M,KAAKjM,IAAIN,EAAEpB,EAAE0B,EAAEN,EAAEnB,EAAE,SAAS2B,EAAEf,EAAElB,GAAGyB,EAAEhB,EAAEwB,EAAEf,IAAIR,OAAOC,eAAesB,EAAEf,EAAE,CAACN,YAAW,EAAGC,IAAIb,KAAKyB,EAAEX,EAAE,SAASmB,GAAG,oBAAoBlB,QAAQA,OAAOC,aAAaN,OAAOC,eAAesB,EAAElB,OAAOC,YAAY,CAACC,MAAM,WAAWP,OAAOC,eAAesB,EAAE,aAAa,CAAChB,OAAM,KAAMQ,EAAEP,EAAE,SAASA,EAAEe,GAAG,GAAG,EAAEA,IAAIf,EAAEO,EAAEP,IAAI,EAAEe,EAAE,OAAOf,EAAE,GAAG,EAAEe,GAAG,iBAAiBf,GAAGA,GAAGA,EAAEE,WAAW,OAAOF,EAAE,IAAIlB,EAAEU,OAAOY,OAAO,MAAM,GAAGG,EAAEX,EAAEd,GAAGU,OAAOC,eAAeX,EAAE,UAAU,CAACY,YAAW,EAAGK,MAAMC,IAAI,EAAEe,GAAG,iBAAiBf,EAAE,IAAI,IAAIa,KAAKb,EAAEO,EAAEnB,EAAEN,EAAE+B,EAAE,SAASE,GAAG,OAAOf,EAAEe,IAAIT,KAAK,KAAKO,IAAI,OAAO/B,GAAGyB,EAAEA,EAAE,SAASQ,GAAG,IAAIf,EAAEe,GAAGA,EAAEb,WAAW,WAAW,OAAOa,EAAEmM,SAAS,WAAW,OAAOnM,GAAG,OAAOR,EAAEnB,EAAEY,EAAE,IAAIA,GAAGA,GAAGO,EAAEhB,EAAE,SAASwB,EAAEf,GAAG,OAAOR,OAAOkB,UAAUC,eAAe1B,KAAK8B,EAAEf,IAAIO,EAAEK,EAAE,GAAGL,EAAEA,EAAEM,EAAE,GAAGqM,QAAQ,SAAS3M,EAAEQ,GAAG,GAAGF,EAAEE,GAAG,OAAOF,EAAEE,GAAGnC,QAAQ,IAAIoB,EAAEa,EAAEE,GAAG,CAACjC,EAAEiC,EAAEhC,GAAE,EAAGH,QAAQ,IAAI,OAAOE,EAAEiC,GAAG9B,KAAKe,EAAEpB,QAAQoB,EAAEA,EAAEpB,QAAQ2B,GAAGP,EAAEjB,GAAE,EAAGiB,EAAEpB,QAAQ,IAAIE,EAAE+B,EAA7jmCb,I,+DCAhF,IAAI,EAAMc,OAECsQ,EAAM,EAAIC,uBAChB,EAAIC,6BACJ,EAAIC,0BACJ,EAAIC,yBACJ,SAASC,GAAM,OAAO/O,WAAW+O,EAAI,KCNtC,EAAM3Q,OAEC4Q,EAAM,EAAIC,sBAChB,EAAIC,yBACJ,SAAS/N,GAAKpB,aAAaoB,ICJzB,SAASgO,IAMd,IALA,IAAIC,EAAKzS,EAAM0S,EACXjG,EAASxJ,UAAU,IAAM,GACzBxD,EAAI,EACJyD,EAASD,UAAUC,OAEhBzD,EAAIyD,EAAQzD,IACjB,GAA6B,QAAxBgT,EAAMxP,UAAUxD,IACnB,IAAKO,KAAQyS,EAGPhG,KAFJiG,EAAOD,EAAIzS,UAIS2S,IAATD,IACTjG,EAAOzM,GAAQ0S,GAKvB,OAAOjG,ECnBF,SAASmG,EAAmBlS,GACjC,MAAO,CAAC,OAAQ,SAASoN,QAAQpN,IAAU,EAAI0G,KAAKC,MAAM3G,GAASA,ECD9D,SAASmS,EAAgBC,EAAS9R,EAAKN,EAAOqS,GACnD,GAAIA,EACF,IAAMD,EAAQE,QAAQhS,EAAKN,GAAU,MAAOgB,IAE9C,OAAOhB,ECJF,SAASuS,IACd,IAAIC,EAAMpR,SACNwK,EAAO4G,EAAI5G,KAOf,OALKA,KACHA,EAAO4G,EAAItD,cAAc,SACpBuD,MAAO,GAGP7G,ECTF,IAAI8G,EAAatR,SAASuR,gBCE1B,SAASC,EAAahH,GAC3B,IAAIiH,EAAc,GAUlB,OATIjH,EAAK6G,OACPI,EAAcH,EAAW9M,MAAMkN,SAE/BlH,EAAKhG,MAAMmN,WAAa,GAExBnH,EAAKhG,MAAMkN,SAAWJ,EAAW9M,MAAMkN,SAAW,SAClDJ,EAAWvD,YAAYvD,IAGlBiH,ECXF,SAASG,EAAepH,EAAMiH,GAC/BjH,EAAK6G,OACP7G,EAAK1C,SACLwJ,EAAW9M,MAAMkN,SAAWD,EAG5BH,EAAWzQ,cCNR,SAASgR,EAAWC,EAAOC,EAAUC,EAAOhQ,GAE/C,eAAgB8P,EACdA,EAAMG,WAAWF,EAAW,IAAMC,EAAQ,IAAKhQ,GAC/C8P,EAAMI,QAAQH,EAAUC,EAAOhQ,GCN9B,SAASmQ,EAAkBL,GAEhC,OADY,eAAgBA,EAASA,EAAMM,SAAWN,EAAME,OAChD5Q,OCDP,SAASgM,EAASiF,EAAKC,EAAUC,GACtC,IAAK,IAAI5U,EAAI,EAAGC,EAAIyU,EAAIjR,OAAQzD,EAAIC,EAAGD,IACrC2U,EAASxU,KAAKyU,EAAOF,EAAI1U,GAAIA,GCH1B,IAAI6U,EAAmB,cAAexS,SAAS8N,cAAc,KCEhE2E,EAAWD,EACX,SAAUE,EAAIC,GAAO,OAAOD,EAAGtS,UAAUC,SAASsS,IAClD,SAAUD,EAAIC,GAAO,OAAOD,EAAGnO,UAAUyH,QAAQ2G,IAAQ,GCHzDC,EAAWJ,EACX,SAAUE,EAAIC,GACPF,EAASC,EAAKC,IAAQD,EAAGtS,UAAUoD,IAAImP,IAE9C,SAAUD,EAAIC,GACPF,EAASC,EAAKC,KAAQD,EAAGnO,WAAa,IAAMoO,ICLnDE,EAAcL,EACd,SAAUE,EAAIC,GACRF,EAASC,EAAKC,IAAQD,EAAGtS,UAAU0H,OAAO6K,IAEhD,SAAUD,EAAIC,GACRF,EAASC,EAAIC,KAAQD,EAAGnO,UAAYmO,EAAGnO,UAAUpC,QAAQwQ,EAAK,MCNjE,SAASG,EAAQJ,EAAIK,GAC1B,OAAOL,EAAGM,aAAaD,GCDlB,SAASE,EAAQP,EAAIK,GAC1B,OAAOL,EAAGQ,aAAaH,GCDlB,SAASI,EAAWT,GAEzB,YAA0B,IAAZA,EAAGU,KCAZ,SAASC,EAASC,EAAKC,GAE5B,GADAD,EAAOH,EAAWG,IAAQA,aAAe5R,MAAS4R,EAAM,CAACA,GACX,oBAA1CjV,OAAOkB,UAAU0C,SAASnE,KAAKyV,GAEnC,IAAK,IAAI5V,EAAI2V,EAAIlS,OAAQzD,KACvB,IAAI,IAAIuB,KAAOqU,EACbD,EAAI3V,GAAGsQ,aAAa/O,EAAKqU,EAAMrU,ICN9B,SAASsU,EAAYF,EAAKC,GAC/BD,EAAOH,EAAWG,IAAQA,aAAe5R,MAAS4R,EAAM,CAACA,GAIzD,IADA,IAAIG,GAFJF,EAASA,aAAiB7R,MAAS6R,EAAQ,CAACA,IAErBnS,OACdzD,EAAI2V,EAAIlS,OAAQzD,KACvB,IAAK,IAAI+V,EAAID,EAAYC,KACvBJ,EAAI3V,GAAGwL,gBAAgBoK,EAAMG,ICT5B,SAASC,EAAmBC,GAEjC,IADA,IAAIvB,EAAM,GACD1U,EAAI,EAAGC,EAAIgW,EAAGxS,OAAQzD,EAAIC,EAAGD,IACpC0U,EAAI3O,KAAKkQ,EAAGjW,IAEd,OAAO0U,ECLF,SAASwB,EAAYnB,EAAIoB,GACL,SAArBpB,EAAGlO,MAAMtB,UAAsBwP,EAAGlO,MAAMtB,QAAU,QCDjD,SAAS6Q,EAAYrB,EAAIoB,GACL,SAArBpB,EAAGlO,MAAMtB,UAAsBwP,EAAGlO,MAAMtB,QAAU,ICDjD,SAAS8Q,EAAUtB,GACxB,MAA+C,SAAxC/S,OAAOsU,iBAAiBvB,GAAIxP,QCD9B,SAASgR,EAAcC,GAC5B,GAAqB,iBAAVA,EAAoB,CAC7B,IAAI9B,EAAM,CAAC8B,GACPC,EAAQD,EAAME,OAAO,GAAG/R,cAAgB6R,EAAMG,OAAO,GAC1C,CAAC,SAAU,MAAO,KAAM,KAE9BlH,SAAQ,SAASmH,GACT,OAAXA,GAA6B,cAAVJ,GACrB9B,EAAI3O,KAAK6Q,EAASH,MAItBD,EAAQ9B,EAKV,IAFA,IAAIK,EAAK1S,SAAS8N,cAAc,eAExBnQ,GADEwW,EAAM/S,OACJ,GAAGzD,EAAIwW,EAAM/S,OAAQzD,IAAI,CACnC,IAAI6W,EAAOL,EAAMxW,GACjB,QAAuBkT,IAAnB6B,EAAGlO,MAAMgQ,GAAuB,OAAOA,EAG7C,OAAO,EClBF,SAASC,EAAeC,EAAQC,GACrC,IAAIC,GAAU,EAQd,MAPI,UAAUC,KAAKH,GACjBE,EAAU,SAAWD,EAAU,MACtB,KAAKE,KAAKH,GACnBE,EAAU,IAAMD,EAAU,MACjBD,IACTE,EAAUD,EAAQtS,cAAgB,OAE7BuS,ECZT,IAAIE,GAAkB,EACtB,IACE,IAAI,EAAOzW,OAAOC,eAAe,GAAI,UAAW,CAC9CE,IAAK,WACHsW,GAAkB,KAGtBnV,OAAOmM,iBAAiB,OAAQ,KAAM,GACtC,MAAOlM,IACF,IAAImV,IAAgBD,GAAkB,CAAEE,SAAS,GCRjD,SAASC,EAAUvC,EAAI/B,EAAKuE,GACjC,IAAK,IAAIV,KAAQ7D,EAAK,CACpB,IAAIpE,EAAS,CAAC,aAAc,aAAaP,QAAQwI,IAAS,IAAMU,GAAmBH,EACnFrC,EAAG5G,iBAAiB0I,EAAM7D,EAAI6D,GAAOjI,ICHlC,SAAS4I,EAAazC,EAAI/B,GAC/B,IAAK,IAAI6D,KAAQ7D,EAAK,CACpB,IAAIpE,EAAS,CAAC,aAAc,aAAaP,QAAQwI,IAAS,GAAIO,EAC9DrC,EAAGxI,oBAAoBsK,EAAM7D,EAAI6D,GAAOjI,ICLrC,SAAS6I,IACd,MAAO,CACLC,OAAQ,GACRC,GAAI,SAAUC,EAAWC,GACvB/R,KAAK4R,OAAOE,GAAa9R,KAAK4R,OAAOE,IAAc,GACnD9R,KAAK4R,OAAOE,GAAW7R,KAAK8R,IAE9BC,IAAK,SAASF,EAAWC,GACvB,GAAI/R,KAAK4R,OAAOE,GACd,IAAK,IAAI5X,EAAI,EAAGA,EAAI8F,KAAK4R,OAAOE,GAAWnU,OAAQzD,IACjD,GAAI8F,KAAK4R,OAAOE,GAAW5X,KAAO6X,EAAI,CACpC/R,KAAK4R,OAAOE,GAAWvG,OAAOrR,EAAG,GACjC,QAKR+X,KAAM,SAAUH,EAAWjS,GACzBA,EAAK8L,KAAOmG,EACR9R,KAAK4R,OAAOE,IACd9R,KAAK4R,OAAOE,GAAWnI,SAAQ,SAASoI,GACtCA,EAAGlS,EAAMiS,QCpBdlX,OAAO6P,OACV7P,OAAO6P,KAAO,SAAS7O,GACrB,IAAI6O,EAAO,GACX,IAAK,IAAIhQ,KAAQmB,EACXhB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQnB,IAC/CgQ,EAAKxK,KAAKxF,GAGd,OAAOgQ,IAKN,WAAYyH,QAAQpW,YACvBoW,QAAQpW,UAAUuI,OAAS,WACtBrE,KAAKnD,YACNmD,KAAKnD,WAAWiK,YAAY9G,QAwC3B,IAAImS,EAAM,SAAS1R,GACxBA,EAAUwM,EAAO,CACf3I,UAAW,UACXjJ,KAAM,WACN+W,KAAM,aACNC,MAAO,EACPC,OAAQ,EACRC,YAAa,EACbC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbC,QAAS,EACTC,QAAQ,EACRC,UAAU,EACVC,iBAAkB,MAClBC,aAAc,CAAC,OAAQ,QACvBC,mBAAmB,EACnBC,YAAY,EACZC,YAAY,EACZC,KAAK,EACLC,YAAa,MACbC,cAAc,EACdC,iBAAiB,EACjBC,WAAW,EACXC,MAAO,IACPC,UAAU,EACVC,iBAAkB,MAClBC,gBAAiB,IACjBC,kBAAmB,UACnBC,aAAc,CAAC,QAAS,QACxBC,oBAAoB,EACpBC,gBAAgB,EAChBC,sBAAsB,EACtBC,2BAA2B,EAC3BC,UAAW,aACXC,WAAY,cACZC,cAAe,aACfC,cAAc,EACdC,MAAM,EACNC,QAAQ,EACRC,YAAY,EACZC,YAAY,EACZC,UAAU,EACVC,iBAAkB,gBAClBC,OAAO,EACPC,WAAW,EACXC,WAAY,GACZC,QAAQ,EACRC,0BAA0B,EAC1BC,sBAAsB,EACtBC,WAAW,EACXC,QAAQ,EACRC,iBAAiB,EACjBC,OAAO,GACN5U,GAAW,IAEd,IAAIkN,EAAMpR,SACN+Y,EAAMpZ,OACNqZ,EAAO,CACLC,MAAO,GACPC,MAAO,GACPC,KAAM,GACNC,MAAO,IAETC,EAAa,GACbC,EAAqBpV,EAAQ2U,gBAEjC,GAAIS,EAAoB,CAEtB,IAAIC,EAAcC,UAAUC,UACxBC,EAAM,IAAIC,KAEd,KACEN,EAAaN,EAAIa,eAEfP,EAAWnI,QAAQwI,EAAKA,GACxBJ,EAAqBD,EAAWQ,QAAQH,IAAQA,EAChDL,EAAWS,WAAWJ,IAEtBJ,GAAqB,EAElBA,IAAsBD,EAAa,IACxC,MAAMzZ,GACN0Z,GAAqB,EAGnBA,IAEED,EAAmB,QAAKA,EAAmB,SAAME,GACnD,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAOnM,SAAQ,SAASgG,GAAQiG,EAAWS,WAAW1G,MAGlIwG,aAAqB,OAAIL,GAI7B,IAAIQ,EAAOV,EAAe,GAAIvI,EAAkBuI,EAAe,IAAKtI,EAAgBsI,EAAY,KClJ3F,WACL,IAAIjI,EAAMpR,SACNwK,EAAO2G,IACPM,EAAcD,EAAYhH,GAC1BwP,EAAM5I,EAAItD,cAAc,OACxBmM,GAAS,EAEbzP,EAAKuD,YAAYiM,GACjB,IAIE,IAHA,IAEIE,EAFAvH,EAAM,cACNwH,EAAO,CAAC,OAASxH,EAAK,YAAcA,EAAK,eAAiBA,GAErDhV,EAAI,EAAGA,EAAI,EAAGA,IAGrB,GAFAuc,EAAMC,EAAKxc,GACXqc,EAAIxV,MAAMgE,MAAQ0R,EACM,MAApBF,EAAII,YAAqB,CAC3BH,EAASC,EAAI/X,QAAQwQ,EAAK,IAC1B,OAGJ,MAAO/S,IAIT,OAFA4K,EAAK6G,KAAOO,EAAcpH,EAAMiH,GAAeuI,EAAIlS,SAE5CmS,ED0H+FI,GAAQf,GAC1GgB,EAAmBjB,EAAgB,IAAIvI,EAAkBuI,EAAgB,KAAKtI,EAAgBsI,EAAY,MEpJzG,WAEL,IAQIkB,EARAnJ,EAAMpR,SACNwK,EAAO2G,IACPM,EAAcD,EAAYhH,GAC1BgQ,EAAUpJ,EAAItD,cAAc,OAC5B2M,EAAQrJ,EAAItD,cAAc,OAC1B6E,EAAM,GAKV6H,EAAQjW,UAAY,cACpBkW,EAAMlW,UAAY,WAElB,IAAK,IAAI5G,EAAI,EAAGA,EAPJ,GAOeA,IACzBgV,GAAO,cAWT,OARA8H,EAAMzX,UAAY2P,EAClB6H,EAAQzM,YAAY0M,GACpBjQ,EAAKuD,YAAYyM,GAEjBD,EAAY3X,KAAK8X,IAAIF,EAAQ1Z,wBAAwBwH,KAAOmS,EAAM1K,SAAS4K,IAAiB7Z,wBAAwBwH,MAAQ,EAE5HkC,EAAK6G,KAAOO,EAAcpH,EAAMiH,GAAe+I,EAAQ1S,SAEhDyS,EFyH8GK,GAAoBtB,GACrIuB,EAAQxB,EAAgB,IAAIvI,EAAkBuI,EAAgB,KAAKtI,EAAgBsI,EAAY,MGvJ9F,WACL,GAAI1Z,OAAOmb,YAAcnb,OAAOob,aAC9B,OAAO,EAGT,IAMIC,EANA5J,EAAMpR,SACNwK,EAAO2G,IACPM,EAAcD,EAAYhH,GAC1BwP,EAAM5I,EAAItD,cAAc,OACxBtJ,EAAQ4M,EAAItD,cAAc,SAC1BmN,EAAO,kEAmBX,OAhBAzW,EAAM4K,KAAO,WACb4K,EAAIzV,UAAY,cAEhBiG,EAAKuD,YAAYvJ,GACjBgG,EAAKuD,YAAYiM,GAEbxV,EAAM0W,WACR1W,EAAM0W,WAAWzW,QAAUwW,EAE3BzW,EAAMuJ,YAAYqD,EAAI+J,eAAeF,IAGvCD,EAAWrb,OAAOsU,iBAAmBtU,OAAOsU,iBAAiB+F,GAAKgB,SAAWhB,EAAIoB,aAAuB,SAExG5Q,EAAK6G,KAAOO,EAAcpH,EAAMiH,GAAeuI,EAAIlS,SAE/B,aAAbkT,EH0HmGK,GAAqB/B,GAC3HgC,EAAYjC,EAAgB,IAAIvI,EAAkBuI,EAAgB,KAAKtI,EAAgBsI,EAAY,MAAOnF,EAAc,aAAcoF,GACtIiC,EAAkBlC,EAAgB,IAAIvI,EAAkBuI,EAAgB,KAAKtI,EAAgBsI,EAAY,MIzJxG,SAAyBmC,GAC9B,IAAKA,EAAM,OAAO,EAClB,IAAK7b,OAAOsU,iBAAoB,OAAO,EAEvC,IAIIwH,EAJArK,EAAMpR,SACNwK,EAAO2G,IACPM,EAAcD,EAAYhH,GAC1BkI,EAAKtB,EAAItD,cAAc,KAEvB4N,EAAQF,EAAGpa,OAAS,EAAI,IAAMoa,EAAG5V,MAAM,GAAI,GAAGvD,cAAgB,IAAM,GAYxE,OAVAqZ,GAAS,YAGTlR,EAAKoB,aAAa8G,EAAI,MAEtBA,EAAGlO,MAAMgX,GAAM,2BACfC,EAAQ9b,OAAOsU,iBAAiBvB,GAAIiJ,iBAAiBD,GAErDlR,EAAK6G,KAAOO,EAAcpH,EAAMiH,GAAeiB,EAAG5K,cAEhC+I,IAAV4K,GAAuBA,EAAMra,OAAS,GAAe,SAAVqa,EJoIiEG,CAAgBN,GAAYhC,GAC5IuC,EAAqBxC,EAAiB,KAAIvI,EAAkBuI,EAAiB,MAAKtI,EAAgBsI,EAAY,OAAQnF,EAAc,sBAAuBoF,GAC3JwC,EAAkBzC,EAAiB,KAAIvI,EAAkBuI,EAAiB,MAAKtI,EAAgBsI,EAAY,OAAQnF,EAAc,mBAAoBoF,GACrJyC,EAAoB1C,EAAiB,KAAIvI,EAAkBuI,EAAiB,MAAKtI,EAAgBsI,EAAY,OAAQnF,EAAc,qBAAsBoF,GACzJ0C,EAAiB3C,EAAiB,KAAIvI,EAAkBuI,EAAiB,MAAKtI,EAAgBsI,EAAY,OAAQnF,EAAc,kBAAmBoF,GACnJ2C,EAAgB5C,EAAgB,IAAIvI,EAAkBuI,EAAgB,KAAKtI,EAAgBsI,EAAY,MAAO5E,EAAeoH,EAAoB,cAAevC,GAChK4C,EAAe7C,EAAgB,IAAIvI,EAAkBuI,EAAgB,KAAKtI,EAAgBsI,EAAY,MAAO5E,EAAesH,EAAmB,aAAczC,GAG7J6C,EAAqBpD,EAAI5S,SAAuC,mBAArB4S,EAAI5S,QAAQiW,KACvDC,EAAU,CAAC,YAAa,oBAAqB,aAAc,aAAc,eAAgB,kBACzFC,EAAkB,GAkBtB,GAhBAD,EAAQjP,SAAQ,SAASgG,GACvB,GAA6B,iBAAlBlP,EAAQkP,GAAoB,CACrC,IAAIT,EAAMzO,EAAQkP,GACdV,EAAKtB,EAAI3K,cAAckM,GAG3B,GAFA2J,EAAgBlJ,GAAQT,GAEpBD,IAAMA,EAAG1O,SAIX,YADImY,GAAsBhW,QAAQiW,KAAK,aAAelY,EAAQkP,KAF9DlP,EAAQkP,GAAQV,QASlBxO,EAAQ6D,UAAUgI,SAAS3O,OAAS,GAAxC,CAMA,IAAI8W,EAAahU,EAAQgU,WACrBM,EAAStU,EAAQsU,OACjB+D,EAA4B,aAAjBrY,EAAQpF,KAEvB,GAAIoZ,EAAY,CAEV,KAAKA,IACPhU,EAAUwM,EAAOxM,EAASgU,EAAW,WAC9BA,EAAW,IAGpB,IAAIsE,EAAgB,GACpB,IAAK,IAAItd,MAAOgZ,EAAY,CAC1B,IAAIgC,GAAMhC,EAAWhZ,IAOrBgb,GAAqB,iBAARA,GAAmB,CAACpE,MAAOoE,IAAOA,GAC/CsC,EAActd,IAAOgb,GAEvBhC,EAAasE,EACbA,EAAgB,KAoBlB,GAJKD,GAZL,SAASE,EAAe9L,GACtB,IAAK,IAAIzR,KAAOyR,EACT4L,IACS,YAARrd,IAAqByR,EAAIzR,GAAO,QACxB,gBAARA,IAAyByR,EAAIzR,IAAO,GAC5B,eAARA,IAAwByR,EAAIzR,IAAO,IAI7B,eAARA,GAAwBud,EAAc9L,EAAIzR,IAGjCud,CAAcvY,IAI1BqY,EAAU,CACbrY,EAAQ2R,KAAO,aACf3R,EAAQkS,QAAU,OAClBlS,EAAQ8R,aAAc,EAEtB,IAAI2B,GAAYzT,EAAQyT,UACpBC,GAAa1T,EAAQ0T,WACrBE,GAAe5T,EAAQ4T,aACvBD,GAAgB3T,EAAQ2T,cAG9B,IAGI6E,GAMAC,GATAC,GAA8B,eAAjB1Y,EAAQ2R,KACrBgH,GAAezL,EAAItD,cAAc,OACjCgP,GAAe1L,EAAItD,cAAc,OAEjC/F,GAAY7D,EAAQ6D,UACpBgV,GAAkBhV,GAAUzH,WAC5B0c,GAAgBjV,GAAUwG,UAC1B0O,GAAalV,GAAUgI,SACvBmN,GAAaD,GAAW7b,OAExB+b,GAAcC,KACdC,IAAO,EACPnF,GAAcoF,KACdf,IAAYxU,GAAUxD,WAAa,cAGvC,IA2BIgZ,GA0FAC,GACAC,GK5XA/a,GL4gBEgb,GACAzD,GM7gB0B0D,GAAO7E,GAEnCtU,GNoQA0R,GAAYhS,EAAQgS,UACpBD,GAAa2H,GAAU,cACvB5H,GAAc4H,GAAU,eACxB7H,GAAS6H,GAAU,UACnBC,GAAWC,KACXzH,GAASuH,GAAU,UACnB9H,GAASI,GAA6C,EAAjCtT,KAAKC,MAAM+a,GAAU,UAC1CxH,GAAUwH,GAAU,WACpBzH,GAAcjS,EAAQiS,aAAejS,EAAQ6Z,wBAC7C/G,GAAY4G,GAAU,aACtB3G,GAAQ2G,GAAU,SAClB5F,GAAS9T,EAAQ8T,OACjBD,IAAOC,IAAiB9T,EAAQ6T,KAChCE,GAAa2F,GAAU,cACvBtH,GAAWsH,GAAU,YACrBpH,GAAeoH,GAAU,gBACzBhH,GAAMgH,GAAU,OAChBvF,GAAQuF,GAAU,SAClBtF,GAAYsF,GAAU,aACtB1G,GAAW0G,GAAU,YACrBxG,GAAkBwG,GAAU,mBAC5BtG,GAAesG,GAAU,gBACzBrG,GAAqBqG,GAAU,sBAC/BlG,GAA4BkG,GAAU,6BACtC9L,IM9R4B6L,GN8RH,KM9RU7E,GN8RJ8E,GAAU,SM5RzCpZ,GAAQxE,SAAS8N,cAAc,SAM/B6P,IAASnZ,GAAMyJ,aAAa,QAAS0P,IAGrC7E,IAAStU,GAAMyJ,aAAa,QAAS6K,IAMzC9Y,SAASyG,cAAc,QAAQsH,YAAYvJ,IAEpCA,GAAMsN,MAAQtN,GAAMsN,MAAQtN,GAAM0W,YN4QrC/C,GAAWjU,EAAQiU,SACnBC,GAAmBlU,EAAQkU,iBAE3B4F,GAAgB,GAChBC,GAAalG,IAyOX2F,GAzBN,WAEE,GAAIxH,IAAcD,KAAeE,GAC/B,OAAO+G,GAAa,EAGpB,IAAIvK,EAAMsD,GAAa,aAAe,QAClC5D,EAAM,GAIV,IAFI4D,IAAc/R,EAAQyO,GAAOuK,KAAc7K,EAAI3O,KAAKQ,EAAQyO,IAE5DuF,EACF,IAAK,IAAIgG,KAAMhG,EAAY,CACzB,IAAIiG,EAAMjG,EAAWgG,GAAIvL,GACrBwL,IAAQlI,IAAckI,EAAMjB,KAAe7K,EAAI3O,KAAKya,GAM5D,OAFK9L,EAAIjR,QAAUiR,EAAI3O,KAAK,GAErBd,KAAKwb,KAAKnI,GAAaE,GAAcvT,KAAKyb,IAAI7c,MAAM,KAAM6Q,GAAOzP,KAAK0b,IAAI9c,MAAM,KAAM6Q,IAKhFkM,GACXtE,GAASsC,EAAW3Z,KAAKwb,MAAiB,EAAXV,GAAeR,IAAY,GAAiB,EAAXQ,GAAeR,GACnFjD,GAASrX,KAAK0b,IAAIZ,GAAUzD,IAErBuE,GAAU,eAAiBvE,GAAS,EAAIA,IA7OA,EAC7CwE,GAAiBlC,EAAqCW,GAA0B,EAAbe,GAAvCf,GAAae,GACzCS,MAAoBzI,KAAcC,IAAe6B,IACjD4G,GAAgB1I,GAAa2I,KAAqB,KAClDC,IAA+BtC,IAAaxE,GAE5C+G,GAAgBlC,GAAa,OAAS,MACtCmC,GAAkB,GAClBC,GAAmB,GAEnBC,GACMhJ,GACK,WAAa,OAAOI,KAAW0B,GAAOmF,GAAa,EAAIta,KAAKwb,MAAOO,IAAiB1I,GAAaF,MAC/FG,GACF,WACL,IAAK,IAAIvY,EAAI,EAAGA,EAAI8gB,GAAe9gB,IACjC,GAAI4f,GAAe5f,KAAQghB,GAAiB,OAAOhhB,GAIhD,WACL,OAAI0Y,IAAUkG,IAAaxE,GAClBmF,GAAa,EAEbnF,IAAQwE,EAAW3Z,KAAK0b,IAAI,EAAGG,GAAgB7b,KAAKwb,KAAKtI,KAAU2I,GAAgB,GAKlGzc,GAAQkd,GAActB,GAAU,eAChCuB,GAAcnd,GAEdod,IADeC,KACJ,GACXC,GAAYpJ,GAA4B,KAAhB+I,KAGxBxG,GAA2BvU,EAAQuU,yBACnCF,GAAarU,EAAQqU,WACrBgH,IAAwBhH,IAAa,IACrCiH,IAAU,EACV5G,GAAS1U,EAAQ0U,OACjB6G,GAAS,IAAIrK,EAEbsK,GAAsB,mBAAqBxb,EAAQpF,KACnD6gB,GAAU5X,GAAUrF,KK/UpBA,GAAK/C,OAAOigB,MAChBjgB,OAAOigB,MAASld,GAASA,GAAK,EAAT,EAEd,MAAQ/C,OAAOigB,OL6UlBlW,GAAUkU,GAAU,WACpBza,IAAW,EACXwV,GAAYzU,EAAQyU,UACpBkH,MAASlH,IAAczC,KAAY4J,KACnCC,IAAS,EACTC,GAAiB,CACf,MAASC,GACT,QAulEN,SAA4BrgB,GAC1BA,EAAIsgB,GAAStgB,GACb,IAAIugB,EAAW,CAACnH,EAAKG,KAAMH,EAAKI,OAAOpN,QAAQpM,EAAEwgB,SAE7CD,GAAY,IACG,IAAbA,EACGzJ,GAAWvT,UAAY8c,GAAgBrgB,GAAI,GACtC+W,GAAWxT,UACrB8c,GAAgBrgB,EAAG,MA7lErBygB,GAAY,CACV,MAm+DN,SAAqBzgB,GACnB,GAAI4f,GAAS,CACX,GAAI/G,GAA4B,OAAiB6H,KAInD,IAAI3V,EAAS4V,GADb3gB,EAAIsgB,GAAStgB,IAIb,KAAO+K,IAAWmM,KAAiBhE,EAAQnI,EAAQ,aAAeA,EAASA,EAAOrK,WAClF,GAAIwS,EAAQnI,EAAQ,YAAa,CAC/B,IAAI6V,EAAWC,GAAaC,OAAOzN,EAAQtI,EAAQ,aAC/CgW,EAAkB1K,IAAcC,GAAYsK,EAAWtD,GAAa0D,GAAQJ,EAAW1K,GAE3F+K,GADkB9J,GAAkByJ,EAAW5d,KAAKyb,IAAIzb,KAAKwb,KAAKuC,GAAkBzD,GAAa,GAC/Etd,GAEdkhB,KAAoBN,IAClBO,IAAaC,KACjBP,IAAc,KAp/Dd,QAsmEN,SAAuB7gB,GACrBA,EAAIsgB,GAAStgB,GACb,IAAIqhB,EAAa7P,EAAI8P,cACrB,IAAKpO,EAAQmO,EAAY,YAAe,OAGxC,IAAId,EAAW,CAACnH,EAAKG,KAAMH,EAAKI,MAAOJ,EAAKC,MAAOD,EAAKE,OAAOlN,QAAQpM,EAAEwgB,SACrEI,EAAWE,OAAOzN,EAAQgO,EAAY,aAEtCd,GAAY,IACG,IAAbA,EACEK,EAAW,GAAKW,GAASC,GAASZ,EAAW,IAC3B,IAAbL,EACLK,EAAWI,GAAQ,GAAKO,GAASC,GAASZ,EAAW,KAEzDC,GAAaD,EACbK,GAAKL,EAAU5gB,OApnEjByhB,GAAc,CACZ,UAujEN,WACMN,KACFO,KACAC,IAAsB,IAzjEpB,SA6jEN,WACMA,KACFC,KACAD,IAAsB,KA9jEtBE,GAAkB,CAAC,iBAwiEvB,WACMrQ,EAAIsQ,OACFX,KACFO,KACAK,IAA2B,GAEpBA,KACTH,KACAG,IAA2B,KA/iE3BC,GAAsB,CAAC,QAkkE3B,SAA4BhiB,GAC1BA,EAAIsgB,GAAStgB,GACb,IAAIugB,EAAW,CAACnH,EAAKG,KAAMH,EAAKI,OAAOpN,QAAQpM,EAAEwgB,SAE7CD,GAAY,GACdF,GAAgBrgB,EAAgB,IAAbugB,GAAkB,EAAI,KAtkEzC0B,GAAc,CACZ,WAAcC,GACd,UAAaC,GACb,SAAYC,GACZ,YAAeA,IACdC,GAAa,CACd,UAAaH,GACb,UAAaC,GACb,QAAWC,GACX,WAAcA,IAEhBE,GAAc1D,GAAU,YACxB2D,GAAS3D,GAAU,OACnBzH,KAAkBb,IAAmBhS,EAAQ6S,gBAC7CqL,GAAc5D,GAAU,YACxB6D,GAAW7D,GAAU,SACrB8D,GAAe9D,GAAU,aACzB+D,GAAmB,mBAEnBC,GAAmB,eACnBC,GAAY,CACV,KA85CN,SAAsB7iB,GACpB8iB,GAAUnC,GAAU3gB,KA95ChB,MAi6CN,SAAsBA,GASF+iB,EARRpC,GAAU3gB,GASpBgT,EAAS+P,EAAK,UACdC,GAAaD,GAFf,IAAoBA,IAt6ChBE,GAAiD,UAAjC3e,EAAQwU,qBAG5B,GAAIwJ,GACF,IAMIY,GACAC,GAPAtM,GAAoBvS,EAAQuS,kBAC5BuM,GAAwB9e,EAAQuS,kBAAoBvS,EAAQuS,kBAAkBlI,UAAY,GAC1FmI,GAAaxS,EAAQwS,WACrBC,GAAazS,EAAQyS,WACrBsM,GAAiB/e,EAAQwS,WAAaxS,EAAQwS,WAAWnI,UAAY,GACrE2U,GAAiBhf,EAAQyS,WAAazS,EAAQyS,WAAWpI,UAAY,GAM3E,GAAI4T,GACF,IAEIf,GAFAtK,GAAe5S,EAAQ4S,aACvBqM,GAAmBjf,EAAQ4S,aAAe5S,EAAQ4S,aAAavI,UAAY,GAE3EqS,GAAQ1K,GAAYgH,GAAakG,KACjCC,GAAc,EACd5C,IAAc,EACdK,GAAkBwC,KAClBC,GAAwBzC,GACxB0C,GAAiB,iBACjBC,GAAS,iBACTC,GAAgB,mBAItB,GAAItB,GACF,IAIIuB,GACA5C,GACAQ,GACAqC,GACAjC,GARAtK,GAAkD,YAA9BnT,EAAQmT,kBAAkC,GAAK,EACnEG,GAAiBtT,EAAQsT,eACzBqM,GAAqB3f,EAAQsT,eAAiBtT,EAAQsT,eAAejJ,UAAY,GACjFuV,GAAsB,CAAC,qCAAwC,qBAQrE,GAAIzB,IAAYC,GACd,IAEIyB,GAIAC,GANAC,GAAe,GACfC,GAAe,GAIfC,IAAW,EAEXC,GAAUxH,GACR,SAASjc,EAAG0jB,GAAK,OAAO1jB,EAAE2jB,EAAID,EAAEC,GAChC,SAAS3jB,EAAG0jB,GAAK,OAAO1jB,EAAE4jB,EAAIF,EAAEE,GAInCrO,IAAasO,GAAyB9a,IAAWmW,IAElDvE,IACFwD,GAAgBxD,EAChByD,GAAkB,YAEdxD,GACFwD,IAAmBnC,GAAa,MAAQ,WACxCoC,GAAmBpC,GAAa,cAAgB,WAEhDmC,IAAmBnC,GAAa,KAAO,KACvCoC,GAAmB,MAKnBzC,IAAYxU,GAAUxD,UAAYwD,GAAUxD,UAAUpC,QAAQ,YAAa,KAkO/E,WAGkBqc,GAAU,UAE1B3B,GAAatY,UAJI,YAKjBuY,GAAavY,UAJI,YAKjBsY,GAAana,GAAKid,GAAU,MAC5B7C,GAAapa,GAAKid,GAAU,MAGP,KAAjB5X,GAAUrF,KAAaqF,GAAUrF,GAAKid,IAC1CD,IAAuBpF,GAAoBpE,GAAY,gBAAkB,mBACzEwJ,IAAuB3F,EAAO,YAAc,eACxC7D,KAAawJ,IAAuB,kBACxCA,IAAuB,QAAUxb,EAAQ2R,KACzC9N,GAAUxD,WAAamb,GAGnBnD,IACFG,GAAgBtL,EAAItD,cAAc,QACpBpL,GAAKid,GAAU,MAC7BjD,GAAcnY,UAAY,UAE1BsY,GAAa9O,YAAY2O,IACzBA,GAAc3O,YAAY+O,KAE1BD,GAAa9O,YAAY+O,IAG3B,GAAI7E,GAAY,EACLyE,IAAgCI,IACtCvY,WAAa,UAqBlB,GAlBAwY,GAAgBnR,aAAaiR,GAAc9U,IAC3C+U,GAAa/O,YAAYhG,IAIzBqF,EAAQ6P,IAAY,SAAS7J,EAAMzV,GACjCiV,EAASQ,EAAM,YACVA,EAAK1Q,KAAM0Q,EAAK1Q,GAAKid,GAAU,QAAUhiB,IACzC4e,GAAY1E,IAAiBjF,EAASQ,EAAMyE,IACjDxE,EAASD,EAAM,CACb,cAAe,OACf,SAAY,UAOZ6K,GAAY,CAId,IAHA,IAAIwG,EAAiBrT,EAAIsT,yBACrBC,EAAgBvT,EAAIsT,yBAEfhR,EAAIuK,GAAYvK,KAAM,CAC7B,IAAIkR,EAAMlR,EAAEwJ,GACR2H,EAAa5H,GAAW2H,GAAKE,WAAU,GAK3C,GAJAlS,EAASiS,EA9WQ,oBA+WjBrR,EAAYqR,EAAY,MACxBF,EAAc/Y,aAAaiZ,EAAYF,EAAcI,YAEjDxI,EAAU,CACZ,IAAIyI,EAAY/H,GAAWC,GAAa,EAAI0H,GAAKE,WAAU,GAC3DlS,EAASoS,EApXM,oBAqXfxR,EAAYwR,EAAW,MACvBP,EAAe1W,YAAYiX,IAI/Bjd,GAAU6D,aAAa6Y,EAAgB1c,GAAUgd,YACjDhd,GAAUgG,YAAY4W,GACtB1H,GAAalV,GAAUgI,UA3S3BkV,GAqYA,WAGE,IAAK1I,EACH,IAAK,IAAI5e,EAAIqE,GAAOpE,EAAIoE,GAAQY,KAAKyb,IAAInB,GAAYpH,IAAQnY,EAAIC,EAAGD,IAAK,CACvE,IAAIyV,EAAO6J,GAAWtf,GACtByV,EAAK5O,MAAM8D,KAAqB,KAAb3K,EAAIqE,IAAe8T,GAAQ,IAC9ClD,EAASQ,EAAMuE,IACf9E,EAAYO,EAAMyE,IAkBlB+E,KACEtC,GAAoBpE,IACtBrE,EAAWC,GAAO,IAAM6N,GAAU,eAAgB,aAAe5G,EAAI9E,iBAAiBgJ,GAAW,IAAIiI,SAAW,IAAK/S,EAAkBL,KACvID,EAAWC,GAAO,IAAM6N,GAAS,eAAgBxN,EAAkBL,MAC1DyK,GACTnP,EAAQ6P,IAAY,SAAUkI,EAAOxnB,GACnCwnB,EAAM3gB,MAAM4gB,WAvRpB,SAA6BznB,GAC3B,OAAOoc,EACLA,EAAO,IAAU,IAAJpc,EAAU,OAAS8gB,GAAgB,IAC5C,IAAJ9gB,EAAU8gB,GAAgB,IAoRG4G,CAAmB1nB,OAOlD,GAAIkd,EAAO,CAET,GAAIgB,EAAoB,CACtB,IAAIlJ,EAAM+J,IAAiBxY,EAAQ+T,WAAaqN,GAA2BphB,EAAQ+S,OAAS,GAC5FpF,EAAWC,GAAO,IAAM6N,GAAU,MAAOhN,EAAKR,EAAkBL,KAIlEa,EAAM4S,GAAsBrhB,EAAQ8R,YAAa9R,EAAQ6R,OAAQ7R,EAAQ+R,WAAY/R,EAAQ+S,MAAO/S,EAAQ+T,YAC5GpG,EAAWC,GAAO,IAAM6N,GAAU,MAAOhN,EAAKR,EAAkBL,KAG5DyK,IACF5J,EAAMiK,KAAe1G,GAAY,SAAWsP,GAAkBthB,EAAQ+R,WAAY/R,EAAQ6R,OAAQ7R,EAAQ4R,OAAS,IAAM,GACrH+F,IAAsBlJ,GAAO2S,GAA2BrO,KAC5DpF,EAAWC,GAAO,IAAM6N,GAAShN,EAAKR,EAAkBL,MAI1Da,EAAMiK,KAAe1G,GAAYuP,GAAmBvhB,EAAQ+R,WAAY/R,EAAQ6R,OAAQ7R,EAAQ4R,OAAS,GACrG5R,EAAQ6R,SAAUpD,GAAO+S,GAAoBxhB,EAAQ6R,SAEpDwG,IACCV,IAAsBlJ,GAAO2S,GAA2BrO,KACxD8E,IAAqBpJ,GAAOgT,GAA0B1O,MAExDtE,GAAOd,EAAWC,GAAO,IAAM6N,GAAU,eAAgBhN,EAAKR,EAAkBL,SAM/E,CA08BHyK,GAAYtE,KACdyE,GAAclY,MAAMqX,GAAsB5E,GAAQ,IAAO,KAt8BzD6F,GAAatY,MAAMC,QAAU8gB,GAAsBvP,GAAaD,GAAQE,GAAYgC,IAGhFsE,GAAYK,KAAe1G,KAC7BnO,GAAUvD,MAAMgE,MAAQgd,GAAkBvP,GAAYF,GAAQD,KAI5DnD,EAAMiK,KAAe1G,GAAYuP,GAAmBxP,GAAYF,GAAQD,IAAS,GACjFC,KAAUpD,GAAO+S,GAAoB3P,KAGrCpD,GAAOd,EAAWC,GAAO,IAAM6N,GAAU,eAAgBhN,EAAKR,EAAkBL,KAItF,GAAIoG,GAAc2C,EAChB,IAAK,IAAIqD,KAAMhG,EAAY,CAEzBgG,EAAK0H,SAAS1H,GAEd,IAAI2H,EAAO3N,EAAWgG,GAElB4H,GADAnT,EAAM,GACa,IACnBoT,EAAkB,GAClBC,EAAe,GACfC,EAAW,GACXC,EAAWhQ,GAAqC,KAAzB0H,GAAU,QAASM,GAC1CiI,EAAevI,GAAU,aAAcM,GACvCkI,EAAUxI,GAAU,QAASM,GAC7BmI,EAAgBzI,GAAU,cAAeM,GACzCoI,EAAe1I,GAAU,aAAcM,GACvCqI,EAAW3I,GAAU,SAAUM,GAG/BrC,GAAsBa,IAAiBkB,GAAU,aAAcM,IAAO,UAAW2H,IACnFC,EAAmB,IAAMnG,GAAU,OAAS2F,GAA2Bc,GAAW,MAIhF,gBAAiBP,GAAQ,WAAYA,KACvCE,EAAkB,IAAMpG,GAAU,OAAS4F,GAAsBc,EAAeE,EAAUJ,EAAcC,EAASE,GAAgB,KAI/H/J,GAAYK,KAAe1G,KAAc,eAAgB2P,GAAQ,UAAWA,GAAS5P,IAAc,WAAY4P,KACjHG,EAAe,SAAWR,GAAkBW,EAAcI,EAAUL,GAAW,KAE7ErK,GAAsB,UAAWgK,IACnCG,GAAgBV,GAA2Bc,IAEzCJ,IACFA,EAAe,IAAMrG,GAAU,IAAMqG,EAAe,MAIlD,eAAgBH,GAAS5P,IAAc,WAAY4P,IAAUtJ,GAAY,UAAWsJ,KACtFI,GAAYR,GAAmBU,EAAcI,EAAUL,IAErD,WAAYL,IACdI,GAAYP,GAAoBa,KAG7BhK,GAAY,UAAWsJ,IACtBhK,IAAsBoK,GAAYX,GAA2Bc,IAC7DrK,IAAqBkK,GAAYN,GAA0BS,KAE7DH,IAAYA,EAAW,IAAMtG,GAAU,gBAAkBsG,EAAW,MAGxEtT,EAAMmT,EAAmBC,EAAkBC,EAAeC,IAGxDnU,GAAMG,WAAW,sBAAwBiM,EAAK,GAAK,QAAUvL,EAAM,IAAKb,GAAMM,SAAShR,SAzhB/FolB,GACAC,KAqjCA,IAAIC,GACK3O,GACLwE,EAEE,WACE,IAAIoK,EAAWvH,GACXwH,EAAYtH,GAEhBqH,GAAYvQ,GACZwQ,GAAaxQ,GAITJ,IACF2Q,GAAY,EACZC,GAAa,GACJ3Q,KACJ4H,GAAW9H,KAASE,GAAaF,MAAW6Q,GAAa,GAG5D3I,KACEjc,GAAQ4kB,EACV5kB,IAASkb,GACAlb,GAAQ2kB,IACjB3kB,IAASkb,MAKf,WACE,GAAIlb,GAAQsd,GACV,KAAOtd,IAASod,GAAWlC,IAAclb,IAASkb,QAC7C,GAAIlb,GAAQod,GACjB,KAAOpd,IAASsd,GAAWpC,IAAclb,IAASkb,IAIxD,WACElb,GAAQY,KAAK0b,IAAIc,GAAUxc,KAAKyb,IAAIiB,GAAUtd,MA4jBhD6kB,GACKtK,EACL,WOlmEC,IAAqBzY,EAASiP,EAAMwB,EAAQuS,EAASC,EAAIC,EAAU1U,EACpE2U,EACAC,EAEAC,EACAC,EP8lEEC,GAActf,GAAW,IACrB8T,IAAuB5E,IAGzBqQ,KAGKrQ,IAAUjD,EAAUjM,KAAcuY,OO1mErBxc,EP8mENiE,GO9mEegL,EP8mEJ+L,GO9mEUvK,EP8mEKwK,GO9mEG+H,EP8mEc9H,GO9mEL+H,EP8mEuBQ,KO9mEnBP,EP8mEiD/P,GO9mEvC3E,EP8mE8CgO,GO7mElH2G,EAAOrkB,KAAKyb,IAAI2I,EAAU,IAC1BE,EAAQH,EAAG/a,QAAQ,MAAQ,EAAK,IAAM,KACtC+a,EAAKA,EAAG5kB,QAAQ+kB,EAAM,IACtBC,EAAOzG,OAAO5c,EAAQU,MAAMuO,GAAM5Q,QAAQoS,EAAQ,IAAIpS,QAAQ2kB,EAAS,IAAI3kB,QAAQ+kB,EAAM,KACzFE,GAAgBL,EAAKI,GAAQH,EAAWC,EAG5C1lB,YACA,SAASimB,IACPR,GAAYC,EACZE,GAAQC,EACRtjB,EAAQU,MAAMuO,GAAQwB,EAAS4S,EAAOD,EAAOJ,EACzCE,EAAW,EACbzlB,WAAWimB,EAAaP,GAExB3U,MARoB2U,IPymEbrK,IAAc6K,MAErB,WACEzJ,GAAgB,GAEhB,IAAI0J,EAAM,GACVA,EAAIzL,GAAiByL,EAAIxL,GAAgBoE,GACzCnL,EAAa8H,GAAWkC,IAAcuI,GACtCzS,EAAUgI,GAAWjb,IAAQ0lB,GAE7BC,GAAaxI,GAAaxH,GAAWC,IAAY,GACjD+P,GAAa3lB,GAAO6V,GAAeF,IAI9BsE,GAAkBC,GAAiBjF,IAAUjD,EAAUjM,KAAcuY,MA8jBhF,MAAO,CACLsH,QAAS,QACTC,QAASC,GACTrI,OAAQA,GACRoB,KAAMA,GACNkH,KAhVF,WACM7Q,KAAa6J,KACfiH,KACApE,IAAqB,IA8UvBqE,MA3UF,WACMlH,KACFC,KACA4C,IAAqB,IAyUvBvG,KAAMA,GACN6K,mBAAoBC,GACpBC,QAAS3B,GACTxc,QArjDF,WAoBE,GAlBA6H,GAAM3O,UAAW,EACb2O,GAAMuW,WAAavW,GAAMuW,UAAUvgB,SAGvCqN,EAAa4D,EAAK,CAAC,OAAUuP,KAGzBtR,IAAa7B,EAAa/D,EAAKwQ,IAC/BnL,IAAqBtB,EAAasB,GAAmBuJ,IACrDlJ,IAAgB3B,EAAa2B,GAAcuJ,IAG/ClL,EAAapN,GAAWsZ,IACxBlM,EAAapN,GAAW0Z,IACpBjK,IAAkBrC,EAAaqC,GAAgB,CAAC,MAAS+Q,KACzDrR,IAAYsR,cAAc7E,IAG1BpH,GAAYN,EAAe,CAC7B,IAAIyL,EAAM,GACVA,EAAIzL,GAAiBqE,GACrBnL,EAAapN,GAAW2f,GAEtBrP,IAASlD,EAAapN,GAAW8Z,IACjCvJ,IAAanD,EAAapN,GAAWka,IAGzC,IAAIwG,EAAW,CAACzL,GAAegG,GAAuBC,GAAgBC,GAAgBC,GAAkBU,IAmBxG,IAAK,IAAIljB,KAjBT0b,EAAQjP,SAAQ,SAASgG,EAAMzV,GAC7B,IAAI+U,EAAc,cAATU,EAAuByJ,GAAe3Y,EAAQkP,GAEvD,GAAkB,iBAAPV,GAAmBA,EAAI,CAChC,IAAIgW,IAAShW,EAAGiW,wBAAyBjW,EAAGiW,uBACxCC,EAAWlW,EAAGpS,WAClBoS,EAAGnE,UAAYka,EAAS9qB,GACxBuG,EAAQkP,GAAQsV,EAASA,EAAOG,mBAAqBD,EAASE,sBAMlEzM,EAAU1E,GAAYC,GAAaE,GAAeD,GAAgB+E,GAAaC,GAAeC,GAAe/U,GAAYgV,GAAkBC,GAAgBC,GAAaC,GAAaP,GAAiBQ,GAAcjH,GAAYD,GAAaD,GAAcD,GAAS8H,GAAW/H,GAAQM,GAAUD,GAAca,GAAYC,GAAQe,GAASD,GAAOE,GAAanG,GAAQqG,GAAWoF,GAAiBS,GAAgBC,GAAaQ,GAAgBC,GAAmBC,GAAgBE,GAA6BC,GAAgBC,GAAkBC,GAAmBC,GAAcjd,GAAQmd,GAAcC,GAAWE,GAAyB/G,GAAagH,GAAwBC,GAAU5G,GAAS6G,GAASC,GAAsBC,GAAUjW,GAAUvG,GAAWwV,GAAYkH,GAASE,GAASC,GAAiBK,GAAYgB,GAAcI,GAAkBG,GAAsBC,GAAcI,GAAaC,GAAcC,GAASpL,GAAkBqL,GAAcC,GAAWC,GAAeC,GAAmBC,GAAmBC,GAAYjF,GAAelH,GAAWE,GAAeC,GAAoBuM,GAAwBtM,GAAaC,GAAamM,GAAeC,GAAenM,GAAME,GAAeqM,GAAmB/B,GAAWR,GAAQyC,GAAc5C,GAAaK,GAAkByC,GAAwBC,GAAiBC,GAASC,GAAgBxM,GAAWE,GAAkBC,GAAoBC,GAAeC,GAAqBC,GAAiBqM,GAAqBnM,GAA4BoM,GAAsBH,GAAgB5C,GAAYQ,GAAsBqC,GAAqBjC,GAA2BsC,GAAeC,GAAeH,GAA8BI,GAAWH,GAAWI,GAAU/L,GAAQC,GAAY,KAI3pD7U,KACF,YAAN9C,IAAmB8C,KAAK9C,GAAK,MAEnC0c,IAAO,GAmgDP0L,QAAS,WACP,OAAOnT,EAAIlF,EAAOxM,EAASoY,MA9vE/B,SAASkI,GAA0BwE,GAC7BA,IACF1S,GAAWM,GAAMyB,GAAQC,GAAYtB,GAAYE,GAAWK,GAAqBG,IAA4B,GAIjH,SAAS2H,KAEP,IADA,IAAIlB,EAAM5B,EAAWva,GAAQic,GAAajc,GACnCmc,EAAM,GAAKA,GAAOjB,GACzB,OAAOiB,EAAIjB,GAAa,EAG1B,SAASgC,GAAe+J,GAEtB,OADAA,EAAMA,EAAMrmB,KAAK0b,IAAI,EAAG1b,KAAKyb,IAAItG,GAAOmF,GAAa,EAAIA,GAAapH,GAAOmT,IAAQ,EAC9E1M,EAAW0M,EAAMhL,GAAagL,EAGvC,SAASC,GAAavrB,GAIpB,IAHS,MAALA,IAAaA,EAAIqE,IAEjBua,IAAY5e,GAAKsgB,IACdtgB,EAAI,GAAKA,GAAKuf,GAErB,OAAOta,KAAKC,MAAMlF,EAAEuf,IAGtB,SAASoG,KACP,IACIrJ,EADAkP,EAAWD,KAUf,OAPAjP,EAASlD,GAAkBoS,EACzBlT,IAAcC,GAAYtT,KAAKwb,MAAM+K,EAAW,GAAKvI,GAAQ1D,GAAa,GACtEta,KAAKC,MAAMsmB,EAAWrT,KAGvBiC,IAAQwE,GAAYva,KAAUsd,KAAYrF,EAAS2G,GAAQ,GAEzD3G,EAmCT,SAASmD,KACP,OAAOrE,EAAIqQ,YAAchY,EAAIG,gBAAgB8X,aAAejY,EAAI5G,KAAK6e,YAGvE,SAASC,GAAmBC,GAC1B,MAAe,QAARA,EAAgB,aAAe,YAaxC,SAASzL,KACP,IAAI0L,EAAMxT,GAA4B,EAAdA,GAAkBD,GAAS,EACnD,OAZF,SAAS0T,EAAgB/W,GACvB,GAAU,MAANA,EAAJ,CACA,IAAoCgX,EAAMlhB,EAAtCwR,EAAM5I,EAAItD,cAAc,OAK5B,OAJA4E,EAAG3E,YAAYiM,GAEfxR,GADAkhB,EAAO1P,EAAIlZ,yBACE6oB,MAAQD,EAAKphB,KAC1B0R,EAAIlS,SACGU,GAASihB,EAAe/W,EAAGpS,aAK3BmpB,CAAe1M,IAAmByM,EAG3C,SAAShL,GAAWpL,GAClB,GAAIlP,EAAQkP,GACV,OAAO,EAEP,GAAI8E,EACF,IAAK,IAAIgG,KAAMhG,EACb,GAAIA,EAAWgG,GAAI9K,GAAS,OAAO,EAGvC,OAAO,EAQX,SAASwK,GAAWxK,EAAMwW,GAGxB,GAFU,MAANA,IAAcA,EAAKzM,IAEV,UAAT/J,GAAoB6C,GACtB,OAAOrT,KAAKC,OAAOgb,GAAW9H,KAAWE,GAAaF,MAAY,EAGlE,IAAIkE,EAAS/V,EAAQkP,GAErB,GAAI8E,EACF,IAAK,IAAIgG,KAAMhG,EAET0R,GAAMhE,SAAS1H,IACb9K,KAAQ8E,EAAWgG,KAAOjE,EAAS/B,EAAWgG,GAAI9K,IAQ5D,MAHa,YAATA,GAAiC,SAAX6G,IAAqBA,EAAS2D,GAAU,UAC7DrB,GAAsB,YAATnJ,GAA+B,UAATA,IAAqB6G,EAASrX,KAAKC,MAAMoX,IAE1EA,EAUX,SAASsL,GAAuBsE,EAAgBC,EAAWC,EAAeC,EAAU1D,GAClF,IAAI3T,EAAM,GAEV,QAAuB9B,IAAnBgZ,EAA8B,CAChC,IAAIL,EAAMK,EACNC,IAAaN,GAAOM,GACxBnX,EAAMiK,GACJ,aAAe4M,EAAM,QAAUK,EAAiB,MAChD,WAAaA,EAAiB,QAAUL,EAAM,aAC3C,GAAIM,IAAcC,EAAe,CACtC,IAAIE,EAAgB,IAAMH,EAAY,KAEtCnX,EAAM,cADIiK,GAAaqN,EAAgB,OAAS,KAAOA,EAAgB,MAC5C,IAI7B,OADK1N,GAAY+J,GAAgBzK,GAAsBmO,IAAYrX,GAAO2S,GAA2B0E,IAC9FrX,EAGT,SAAS6S,GAAmBuE,EAAeD,EAAWI,GACpD,OAAIH,GACMA,EAAgBD,GAAarL,GAAgB,KAE9C1E,EACLA,EAAO,IAAsB,IAAhB0E,GAAsB,OAASyL,EAAW,IACvC,IAAhBzL,GAAsByL,EAAW,IAIvC,SAASzE,GAAoBsE,EAAeD,EAAWI,GACrD,IAAI1hB,EAEJ,GAAIuhB,EACFvhB,EAASuhB,EAAgBD,EAAa,SACjC,CACAvN,IAAY2N,EAAWtnB,KAAKC,MAAMqnB,IACvC,IAAIC,EAAW5N,EAAWkC,GAAgByL,EAC1C1hB,EAAQuR,EACNA,EAAO,WAAaoQ,EAAW,IAC/B,IAAMA,EAAW,IAMrB,OAHA3hB,EAAQ,SAAWA,EAGD,UAAXgQ,EAAqBhQ,EAAQ,IAAMA,EAAQ,eAGpD,SAASkd,GAAqBoE,GAC5B,IAAInX,EAAM,IAIQ,IAAdmX,IAGFnX,GAFWiK,GAAa,WAAa,YAC3BA,GAAa,QAAU,UACb,KAAOkN,EAAY,OAGzC,OAAOnX,EAGT,SAASyX,GAAclsB,EAAM0mB,GAC3B,IAAIrQ,EAASrW,EAAKgE,UAAU,EAAGhE,EAAKkD,OAASwjB,GAAKviB,cAGlD,OAFIkS,IAAUA,EAAS,IAAMA,EAAS,KAE/BA,EAGT,SAAS+Q,GAA4BrO,GACnC,OAAOmT,GAAavO,EAAoB,IAAM,uBAAyB5E,EAAQ,IAAO,KAGxF,SAAS0O,GAA2B1O,GAClC,OAAOmT,GAAarO,EAAmB,IAAM,sBAAwB9E,EAAQ,IAAO,KAkFtF,SAASwP,KAEP,GAAIjI,GAAU,eAAiBtI,KAAc0G,GAAY,CACvD,IAAIyN,EAAOtiB,GAAU8H,iBAAiB,OAGtCzC,EAAQid,GAAM,SAAS1H,GACrB,IAAI2H,EAAM3H,EAAI2H,IAETnS,KAECmS,GAAOA,EAAIte,QAAQ,cAAgB,GACrC2W,EAAI2H,IAAM,GACVrV,EAAU0N,EAAKF,IACf7P,EAAS+P,EAAK,WAEdA,EAAI2H,IAAMA,GAGV5H,GAAUC,OAMhB1S,GAAI,WAAYsa,GAAgB5W,EAAkB0W,IAAO,WAAa7M,IAAe,QAGjFgB,GAAU,gBAAiB6L,EAAOG,GAAcxoB,GAAOY,KAAKyb,IAAIrc,GAAQ8T,GAAQ,EAAG2I,GAAgB,KAEvGtG,GAAWsS,KAAkCxa,GAAI,WAAYsa,GAAgB5W,EAAkB0W,GAAOI,YAIlGlO,GAAYmO,KAGhBC,KACAC,KAIJ,SAASH,KACP,GAAIvU,IAAagH,GAAa,EAAG,CAE/B,IAAI0H,EAAM7M,GAAO/V,GAAQkb,GAAa,GAEtC,SAAU2N,IACR,IAAIviB,EAAO2U,GAAW2H,GAAK9jB,wBAAwBwH,KAC/CqhB,EAAQ1M,GAAW2H,EAAM,GAAG9jB,wBAAwB6oB,MAEvD/mB,KAAK8X,IAAIpS,EAAOqhB,IAAU,EACzBmB,KACAvpB,YAAW,WAAYspB,MAA4B,IANvD,QAUAC,KAKJ,SAASA,KAEFlO,KAAc1G,KACjB6U,KAEI7U,IACFyI,GAAgBC,KACZjG,KAAakH,GAASC,MAC1BR,GAAWL,KACXuF,GAAyB9a,IAAWmW,KAEpC4H,MAKAlL,GAAYmO,KAGhBC,KACAC,KA8JF,SAASD,KASP,GAPAK,KAGAnO,GAAaoO,mBAAmB,aAAc,qHAAuHC,KAAqB,eAAiBhO,GAAa,UACxNO,GAAoBZ,GAAapW,cAAc,4BAG3C2b,GAAa,CACf,IAAI+I,EAAMjU,GAAW,OAAS,QAC1BM,GACFnE,EAASmE,GAAgB,CAAC,cAAe2T,IAChCjnB,EAAQuT,uBACjBoF,GAAaoO,mBAAmB3B,GAAkBplB,EAAQiT,kBAAmB,sCAAwCgU,EAAM,KAAOrH,GAAoB,GAAKqH,EAAMrH,GAAoB,GAAKxM,GAAa,GAAK,aAC5ME,GAAiBqF,GAAapW,cAAc,kBAI1C+Q,IACFvC,EAAUuC,GAAgB,CAAC,MAAS+Q,KAGlCrR,KACF8Q,KACIzQ,IAAsBtC,EAAUlN,GAAWsZ,IAC3C3J,IAA6BzC,EAAUlN,GAAW0Z,KAK1D,GAAIU,GAAQ,CAIV,GAAIrL,GACFzD,EAASyD,GAAc,CAAC,aAAc,wBAEtC1J,EADAgU,GAAWtK,GAAa/G,UACN,SAASqD,EAAMzV,GAC/B0V,EAASD,EAAM,CACb,WAAYzV,EACZ,SAAY,KACZ,aAAc8lB,IAAU9lB,EAAI,GAC5B,gBAAiBgiB,YAKhB,CAGL,IAFA,IAAIyL,EAAU,GACVC,EAAYtU,GAAkB,GAAK,uBAC9BpZ,EAAI,EAAGA,EAAIuf,GAAYvf,IAE9BytB,GAAW,mCAAqCztB,EAAG,kCAAoCgiB,GAAU,KAAO0L,EAAY,gBAAkB5H,IAAU9lB,EAAI,GAAI,cAE1JytB,EAAU,yDAA2DA,EAAU,SAC/EvO,GAAaoO,mBAAmB3B,GAAkBplB,EAAQ2S,aAAcuU,GAExEtU,GAAe+F,GAAapW,cAAc,YAC1C2a,GAAWtK,GAAa/G,SAM1B,GAHAub,KAGIzP,EAAoB,CACtB,IAAItH,EAASsH,EAAmB3Z,UAAU,EAAG2Z,EAAmBza,OAAS,IAAIiB,cACzEsQ,EAAM,mBAAqBsE,GAAQ,IAAO,IAE1C1C,IACF5B,EAAM,IAAM4B,EAAS,IAAM5B,GAG7Bd,EAAWC,GAAO,mBAAqB6N,GAAU,SAAUhN,EAAKR,EAAkBL,KAGpFuB,EAAS+N,GAASN,IAAkB,CAAC,aAAc2C,IAAU3C,GAAkB,GAAK4C,KACpFlQ,EAAY4N,GAASN,IAAkB,YACvClO,EAASwO,GAASN,IAAkB0C,IAGpCvO,EAAU6B,GAAcuJ,IAMtB6B,KACGzL,IAAuBC,IAAeC,KACzCkG,GAAaoO,mBAAmB3B,GAAkBplB,EAAQqS,kBAAmB,mJAAqJoJ,GAAS,KAAOnJ,GAAa,GAAK,oFAAsFmJ,GAAS,KAAOnJ,GAAa,GAAK,mBAE5XC,GAAoBoG,GAAapW,cAAc,kBAG5CiQ,IAAeC,KAClBD,GAAaD,GAAkB1G,SAAS,GACxC4G,GAAaF,GAAkB1G,SAAS,IAGtC7L,EAAQuS,mBACVpD,EAASoD,GAAmB,CAC1B,aAAc,sBACd,SAAY,OAIZvS,EAAQuS,mBAAsBvS,EAAQwS,YAAcxS,EAAQyS,aAC9DtD,EAAS,CAACqD,GAAYC,IAAa,CACjC,gBAAiBgJ,GACjB,SAAY,QAIZzb,EAAQuS,mBAAsBvS,EAAQwS,YAAcxS,EAAQyS,cAC9DtD,EAASqD,GAAY,CAAC,gBAAkB,SACxCrD,EAASsD,GAAY,CAAC,gBAAkB,UAG1CmM,GAAeyI,GAAS7U,IACxBqM,GAAewI,GAAS5U,IAExB6U,KAGI/U,GACFxB,EAAUwB,GAAmBuJ,KAE7B/K,EAAUyB,GAAYsJ,IACtB/K,EAAU0B,GAAYqJ,MAK1ByL,KAGF,SAASb,KAEP,GAAIrO,GAAYN,EAAe,CAC7B,IAAIyL,EAAM,GACVA,EAAIzL,GAAiBqE,GACrBrL,EAAUlN,GAAW2f,GAGnBrP,IAASpD,EAAUlN,GAAW8Z,GAAa3d,EAAQwU,sBACnDJ,IAAarD,EAAUlN,GAAWka,IAClCjL,IAAa/B,EAAU7D,EAAKwQ,IAEjB,UAAXpJ,EACFiH,GAAOnK,GAAG,gBAAgB,WACxBoW,KACAjM,GAAO/J,KAAK,cAAeoS,UAEpB5P,GAAcjC,IAAcC,IAAa+B,KAAe2E,KACjE3H,EAAU8D,EAAK,CAAC,OAAUuP,KAGxBrQ,KACa,UAAXO,EACFiH,GAAOnK,GAAG,cAAeqW,IACfjiB,IAAWiiB,MAGzBC,KACIliB,GAAWmiB,KAA4BhM,IAAUiM,KAErDrM,GAAOnK,GAAG,eAAgByW,IACX,UAAXvT,GAAsBiH,GAAO/J,KAAK,cAAeoS,MAC/B,mBAAXlP,IAAyBA,GAAOkP,MAC3CzK,IAAO,EA2DT,SAASiL,GAAU1oB,GACjBqQ,GAAI,WAAYyb,GAAYxL,GAAStgB,OAGvC,SAAS8rB,GAAa9rB,GACpB,GAAKyd,GAAL,CACe,UAAX7E,GAAsBiH,GAAO/J,KAAK,eAAgBoS,GAAKloB,IAC3Dud,GAAcC,KACd,IAAI4O,EACAC,EAAoBtP,GACpBuP,GAAyB,EAEzBhU,IACFoF,MACA0O,EAAYC,IAAsBtP,KAEjB8C,GAAO/J,KAAK,qBAAsBoS,GAAKloB,KAG1D,IAAIusB,EACAC,EACAlC,EAAWpU,GACXuW,EAAa3iB,GACb4iB,EAAYzM,GACZ0M,EAAevV,GACfwV,EAAclW,GACdmW,EAAS7V,GACT8V,EAAWrU,GACXsU,EAAerU,GACfsU,EAAc1V,GACd2V,EAAwBtV,GACxBuV,EAA+BpV,GAC/BqV,EAAW/qB,GAEf,GAAIgqB,EAAW,CACb,IAAIjC,EAAgB9T,GAChB+W,EAAgB/U,GAChBgV,EAAkBzW,GAClB0W,EAAY7W,GACZ8W,EAAkB7V,GAEtB,IAAKuD,EACH,IAAIiP,EAAY/T,GACZ8T,EAAiB7T,GAwJzB,GAhJAgB,GAAY4G,GAAU,aACtBtH,GAAWsH,GAAU,YACrBhH,GAAMgH,GAAU,OAChBvF,GAAQuF,GAAU,SAClBvH,GAASuH,GAAU,UACnBtF,GAAYsF,GAAU,aACtB1G,GAAW0G,GAAU,YACrBrG,GAAqBqG,GAAU,sBAC/BlG,GAA4BkG,GAAU,6BAElCoO,IACFtiB,GAAUkU,GAAU,WACpB3H,GAAa2H,GAAU,cACvB3G,GAAQ2G,GAAU,SAClB3F,GAAa2F,GAAU,cACvBpH,GAAeoH,GAAU,gBACzBtG,GAAesG,GAAU,gBACzBxG,GAAkBwG,GAAU,mBAEvB/C,IACH7E,GAAc4H,GAAU,eACxB7H,GAAS6H,GAAU,YAIvB4G,GAAyB9a,IAEzBmU,GAAWC,KACLlB,KAAc1G,IAAexM,KACjCqhB,KACKnO,KACH6K,KACAyE,GAAyB,KAGzBjW,IAAcC,MAChByI,GAAgBC,KAEhBU,GAAWL,OAIT+M,GAAa/V,MACfH,GAAQ8H,GAAU,SAClBxH,GAAUwH,GAAU,YACpBwO,EAAetW,KAAUoU,KAGlBjU,IAAeC,KAAaoJ,GAAWL,MAG5CyH,OAIAsF,GACEtiB,KAAY2iB,IACV3iB,GACFmiB,KAqVR,WACE,IAAK1oB,GAAY,OAMjB,GAJA2O,GAAM3O,UAAW,EACjB4E,GAAUxD,WAAamb,GACvBgL,KAEI3S,GACF,IAAK,IAAIrE,EAAIuK,GAAYvK,KACnB6I,GAAYxI,EAAYkJ,GAAWvJ,IACvCK,EAAYkJ,GAAWwB,GAAgB/K,EAAI,IAK/C,IAAK6I,EACH,IAAK,IAAI5e,EAAIqE,GAAOpE,EAAIoE,GAAQkb,GAAYvf,EAAIC,EAAGD,IAAK,CACtD,IAAIyV,EAAO6J,GAAWtf,GAClByvB,EAASzvB,EAAIqE,GAAQ8T,GAAQ6B,GAAYE,GAC7CzE,EAAK5O,MAAM8D,KAAqB,KAAb3K,EAAIqE,IAAe8T,GAAQ,IAC9ClD,EAASQ,EAAMga,GAKnBC,KAEAlqB,IAAW,EA9WLmqB,IAKF3U,KAAcqT,GAAa/V,IAAcC,MAC3C2J,GAASC,QAIMwM,IACTzM,IACFyH,GAAqBC,GAA2BrI,GAAc,KAC9D4M,QAgRR,WACE,IAAK/L,GAAU,OAIX/J,IAAe6E,IAASiC,GAAatY,MAAM8E,OAAS,IAGxD,GAAI2U,GAEF,IADA,IAAItL,EAAM,kBACDhV,EAAIsgB,GAAYtgB,KACnB4e,GAAY1J,EAAYoK,GAAWtf,GAAIgV,GAC3CE,EAAYoK,GAAWwB,GAAgB9gB,EAAI,GAAIgV,GAKnD0a,KAEAtN,IAAS,EAjSHwN,GACArB,GAAyB,IAK/B1H,GAAyB9a,IAAWmW,IAC/B3I,KAAYK,GAAqBG,IAA4B,GAE9DV,KAAcuV,IAChBvV,GACE/B,EAAU7D,EAAKwQ,IACfzM,EAAa/D,EAAKwQ,KAElBtL,KAAakW,IACXlW,GACEG,GACF1C,EAAY0C,KAERC,IAAc3C,EAAY2C,IAC1BC,IAAc5C,EAAY4C,KAG5BF,GACF5C,EAAY4C,KAERC,IAAc7C,EAAY6C,IAC1BC,IAAc9C,EAAY8C,MAIhCC,KAAQ6V,IACN7V,IACF7C,EAAY+C,IACZwU,MAEAzX,EAAYiD,KAGZuB,KAAUqU,IACZrU,GACEpD,EAAUlN,GAAW8Z,GAAa3d,EAAQwU,sBAC1CvD,EAAapN,GAAW8Z,KAExBvJ,KAAcqU,IAChBrU,GACErD,EAAUlN,GAAWka,IACrB9M,EAAapN,GAAWka,KAExB/K,KAAa0V,IACX1V,IACEM,IAAkBzD,EAAYyD,IAC7BuJ,IAAc6C,IAAsBoE,OAErCxQ,IAAkB3D,EAAY2D,IAC9BuJ,IAAaC,OAGjBzJ,KAAuBsV,IACzBtV,GACEtC,EAAUlN,GAAWsZ,IACrBlM,EAAapN,GAAWsZ,KAExB3J,KAA8BoV,IAChCpV,GACEzC,EAAU7D,EAAKqQ,IACftM,EAAa/D,EAAKqQ,KAGlBuK,GAYF,GAXI/V,KAAe8T,GAAiB1T,KAAW6W,IAAahB,GAAyB,GAEjFjU,KAAe+U,IACZ/U,KAAc6E,GAAatY,MAAM4D,OAAS,KAG7CkO,IAAYE,KAAiByW,IAC/BvW,GAAW1T,UAAYwT,GAAa,GACpCG,GAAW3T,UAAYwT,GAAa,IAGlCgB,IAAkBF,KAAiB6V,EAAiB,CACtD,IAAIxvB,EAAIuZ,GAAW,EAAI,EACnBsW,EAAOhW,GAAexU,UACtByqB,EAAMD,EAAKpsB,OAAS+rB,EAAgBxvB,GAAGyD,OACvCosB,EAAKtrB,UAAUurB,KAASN,EAAgBxvB,KAC1C6Z,GAAexU,UAAYwqB,EAAKtrB,UAAU,EAAGurB,GAAOnW,GAAa3Z,UAIjE0Y,KAAWJ,IAAcC,MAAcgW,GAAyB,GAsBtE,IAnBIE,GAAgBnW,KAAeC,MACjC0K,GAAQwC,KACRkI,OAGFa,EAAanqB,KAAU+qB,IAErBtN,GAAO/J,KAAK,eAAgBoS,MAC5BoE,GAAyB,GAChBE,EACJD,GAAcJ,MACV9V,IAAcC,MACvB0V,KACAZ,KACA0C,MAGEtB,IAAiB7P,GA2evB,WAEE,IADA,IAAI3e,EAAIoE,GAAQY,KAAKyb,IAAInB,GAAYpH,IAC5BnY,EAAI8gB,GAAe9gB,KAAM,CAChC,IAAIyV,EAAO6J,GAAWtf,GAElBA,GAAKqE,IAASrE,EAAIC,GAEpBgV,EAASQ,EAAM,cAEfA,EAAK5O,MAAM8D,KAAqB,KAAb3K,EAAIqE,IAAe8T,GAAQ,IAC9ClD,EAASQ,EAAMuE,IACf9E,EAAYO,EAAMyE,KACTzE,EAAK5O,MAAM8D,OACpB8K,EAAK5O,MAAM8D,KAAO,GAClBsK,EAASQ,EAAMyE,IACfhF,EAAYO,EAAMuE,KAIpB9E,EAAYO,EAAMwE,IAIpBrW,YAAW,WACT6L,EAAQ6P,IAAY,SAASvK,GAC3BG,EAAYH,EAAI,mBAEjB,KAtgB8Bib,IAE5BjkB,KAAYmW,GAAQ,CAEvB,GAAImM,IAAcnR,IAIZ7E,KAAgB6T,GAAkB9T,KAAW+T,IAC/ChN,GAAatY,MAAMC,QAAU8gB,GAAsBvP,GAAaD,GAAQE,GAAYgB,GAAOgB,KAGzF2E,IAAY,CAEVL,IACFxU,GAAUvD,MAAMgE,MAAQgd,GAAkBvP,GAAYF,GAAQD,KAIhE,IAAInD,EAAM8S,GAAmBxP,GAAYF,GAAQD,IACvC4P,GAAoB3P,KQz8CjC,SAAuBjE,EAAO9P,GAEjC,eAAgB8P,EACdA,EAAM8b,WAAW5rB,GACjB8P,EAAM+b,WAAW7rB,GRy8Cb8rB,CAAchc,GAAOK,EAAkBL,IAAS,GAChDD,EAAWC,GAAO,IAAM6N,GAAU,eAAgBhN,EAAKR,EAAkBL,KAKzEmG,IAAc0T,KAEdO,IACFxB,KACAvL,GAAcnd,IAIdgqB,GAAavM,GAAO/J,KAAK,mBAAoBoS,GAAKloB,KAQxD,SAASkgB,KACP,IAAK7J,KAAeC,GAElB,OAAQgH,KADA7G,GAASP,IAASA,GAAQ,GAAK,EAAIA,IAI7C,IAAItN,EAAQyN,IAAcA,GAAaF,IAAUmH,GAAaK,GAAeL,IACzE6Q,EAAK/X,GAAc6H,GAAyB,EAAd7H,GAAkB6H,GAAW9H,GAM/D,OAJIM,KACF0X,GAAM9X,IAAc4H,GAAW5H,IAAc,GAAK4H,IAAYN,GAAevb,GAAQ,GAAKub,GAAevb,IAAS+T,KAAW,GAGxHvN,GAASulB,EAGlB,SAASzQ,KAEP,IAAK,IAAIY,KADTvB,GAAiB,EACFzE,EACbgG,EAAK0H,SAAS1H,GACVf,IAAee,IAAMvB,GAAiBuB,GA+C9C,SAASuN,MACFvU,IAAYM,IAAkB3D,EAAY2D,KAC1CZ,IAAOE,IAAgBjD,EAAYiD,IACnCR,KACCG,GACF5C,EAAY4C,KAERC,IAAc7C,EAAY6C,IAC1BC,IAAc9C,EAAY8C,MAKpC,SAAS0W,KACHnW,IAAYM,IAAkBzD,EAAYyD,IAC1CZ,IAAOE,IAAgB/C,EAAY+C,IACnCR,KACEG,GACF1C,EAAY0C,KAERC,IAAc3C,EAAY2C,IAC1BC,IAAc5C,EAAY4C,MAKpC,SAASmV,KACP,IAAI/L,GAAJ,CAMA,GAHI/J,KAAe8G,GAAatY,MAAM8E,OAAS,OAG3C2U,GAEF,IADA,IAAItL,EAAM,kBACDhV,EAAIsgB,GAAYtgB,KACnB4e,GAAY3J,EAASqK,GAAWtf,GAAIgV,GACxCC,EAASqK,GAAWwB,GAAgB9gB,EAAI,GAAIgV,GAKhD8Y,KAEA1L,IAAS,GAyBX,SAAS8L,KACP,IAAI1oB,GAAJ,CAKA,GAHA2O,GAAM3O,UAAW,EACjB4E,GAAUxD,UAAYwD,GAAUxD,UAAUpC,QAAQud,GAAoBxd,UAAU,GAAI,IACpFsR,EAAYzL,GAAW,CAAC,UACpBgQ,GACF,IAAK,IAAIrE,EAAIuK,GAAYvK,KACnB6I,GAAY1I,EAAYoJ,GAAWvJ,IACvCG,EAAYoJ,GAAWwB,GAAgB/K,EAAI,IAQ/C,GAHKkJ,IAAeL,GAAY/I,EAAYsJ,GAAc,CAAC,WAGtDP,EACH,IAAK,IAAI5e,EAAIqE,GAAOpE,EAAIoE,GAAQkb,GAAYvf,EAAIC,EAAGD,IAAK,CACtD,IAAIyV,EAAO6J,GAAWtf,GACtB6V,EAAYJ,EAAM,CAAC,UACnBP,EAAYO,EAAMuE,IAClB9E,EAAYO,EAAMyE,IAKtB4T,KAEAtoB,IAAW,GAiCb,SAASuqB,KACP,IAAI/a,EAAMuY,KACNzN,GAAkBza,YAAc2P,IAAO8K,GAAkBza,UAAY2P,GAG3E,SAASuY,KACP,IAAI7Y,EAAM2b,KACNC,EAAQ5b,EAAI,GAAK,EACjB6b,EAAM7b,EAAI,GAAK,EACnB,OAAO4b,IAAUC,EAAMD,EAAQ,GAAKA,EAAQ,OAASC,EAGvD,SAASF,GAAsB9T,GAClB,MAAPA,IAAeA,EAAMqN,MACzB,IAAmB2G,EAAKC,EAAYC,EAAhCH,EAAQjsB,GAiBZ,GAdIqU,IAAUL,IACRE,IAAaD,MACfkY,IAAgBE,WAAWnU,GAAOlE,IAClCoY,EAAWD,EAAatQ,GAAyB,EAAd7H,IAGjCE,KACFiY,EAAa5Q,GAAevb,IAC5BosB,EAAWD,EAAatQ,IAMxB3H,GACFqH,GAAenQ,SAAQ,SAASkhB,EAAO3wB,GACjCA,EAAI8gB,MACDpI,IAAUL,KAAgBsY,GAASH,EAAa,KAAOF,EAAQtwB,GAChEywB,EAAWE,GAAS,KAAOJ,EAAMvwB,WAKpC,CAEL,GAAIsY,GAAY,CACd,IAAIsY,EAAOtY,GAAaF,GACpBM,IAAUL,IACZiY,EAAQrrB,KAAKC,MAAMsrB,EAAWI,GAC9BL,EAAMtrB,KAAKwb,KAAKgQ,EAASG,EAAO,IAEhCL,EAAMD,EAAQrrB,KAAKwb,KAAKP,GAAS0Q,GAAQ,OAI3C,GAAIlY,IAAUL,GAAa,CACzB,IAAIrV,EAAImV,GAAQ,EAQhB,GAPIO,IACF4X,GAASttB,EAAI,EACbutB,EAAMlsB,GAAQrB,EAAI,GAElButB,EAAMlsB,GAAQrB,EAGZqV,GAAa,CACf,IAAIqO,EAAIrO,GAAcF,GAAQ+H,GAC9BoQ,GAAS5J,EACT6J,GAAO7J,EAGT4J,EAAQrrB,KAAKC,MAAMorB,GACnBC,EAAMtrB,KAAKwb,KAAK8P,QAEhBA,EAAMD,EAAQnY,GAAQ,EAI1BmY,EAAQrrB,KAAK0b,IAAI2P,EAAO,GACxBC,EAAMtrB,KAAKyb,IAAI6P,EAAKzP,GAAgB,GAGtC,MAAO,CAACwP,EAAOC,GAGjB,SAAStC,KACP,GAAIzT,KAAazO,GAAS,CACxB,IAAI8kB,EAAMR,KACVQ,EAAI9qB,KAAK0U,IAEToS,GAAchpB,MAAM,KAAMgtB,GAAKphB,SAAQ,SAAUuV,GAC/C,IAAKlQ,EAASkQ,EAAKH,IAAmB,CAEpC,IAAIkF,EAAM,GACVA,EAAIzL,GAAiB,SAAUrc,GAAKA,EAAE0O,mBACtC2G,EAAU0N,EAAK+E,GAEfzS,EAAU0N,EAAKF,IAGfE,EAAI2H,IAAMrX,EAAQ0P,EAAK,YAGvB,IAAI8L,EAASxb,EAAQ0P,EAAK,eACtB8L,IAAU9L,EAAI8L,OAASA,GAE3B7b,EAAS+P,EAAK,gBActB,SAASD,GAAWC,GAClB/P,EAAS+P,EAAK,UACdC,GAAaD,GAQf,SAASC,GAAcD,GACrB/P,EAAS+P,EAAKH,IACd3P,EAAY8P,EAAK,WACjBxN,EAAawN,EAAKF,IAGpB,SAAS+H,GAAeyD,EAAOC,EAAKQ,GAClC,IAAIrE,EAAO,GAGX,IAFKqE,IAAeA,EAAc,OAE3BT,GAASC,GACd9gB,EAAQ6P,GAAWgR,GAAOpe,iBAAiB6e,IAAc,SAAU/L,GAAO0H,EAAK3mB,KAAKif,MACpFsL,IAGF,OAAO5D,EAKT,SAASsB,KACP,IAAItB,EAAOG,GAAchpB,MAAM,KAAMwsB,MACrC/d,GAAI,WAAYsa,GAAgBF,EAAMlC,OAGxC,SAASoC,GAAiBF,EAAM/Z,GAE9B,OAAIkN,GAAuBlN,KAG3B+Z,EAAKjd,SAAQ,SAAUuV,EAAK3gB,IACrBmW,IAAYwK,EAAIgM,UAAY/L,GAAaD,GAC1ClQ,EAASkQ,EAAKH,KAAqB6H,EAAKrb,OAAOhN,EAAO,MAIvDqoB,EAAKjpB,YAGV6O,GAAI,WAAYsa,GAAgBF,EAAM/Z,MAHXA,KAM7B,SAASyb,KACPH,KACAZ,KACA0C,KACAlC,KA0GF,WAEE,GAAI5U,KACFkK,GAAkBL,IAAc,EAAIA,GAAa6C,KACjD7C,IAAc,EAEVK,KAAoByC,IAAuB,CAC7C,IAAIqL,EAAUxN,GAASmC,IACnBsL,EAAazN,GAASN,IAE1BzN,EAASub,EAAS,CAChB,SAAY,KACZ,aAAcnL,IAAUF,GAAwB,KAElD1Q,EAAY+b,EAASpL,IAErBnQ,EAASwb,EAAY,CAAC,aAAcpL,IAAU3C,GAAkB,GAAK4C,KACrElQ,EAAYqb,EAAY,YACxBjc,EAASic,EAAYrL,IAErBD,GAAwBzC,IA7H5BgO,GAUF,SAASC,GAAmBC,EAAYC,GAEtC,IADA,IAAIC,EAAU,GACLvxB,EAAIqxB,EAAYpxB,EAAIgF,KAAKyb,IAAI2Q,EAAaC,EAAYxQ,IAAgB9gB,EAAIC,EAAGD,IACpFuxB,EAAQxrB,KAAKuZ,GAAWtf,GAAGkD,cAG7B,OAAO+B,KAAK0b,IAAI9c,MAAM,KAAM0tB,GAQ9B,SAAS/G,KACP,IAAIgH,EAAYlX,GAAa8W,GAAkB/sB,GAAO8T,IAASiZ,GAAkB9Q,GAAYf,IACzFkS,EAAK1S,IAAgCI,GAErCsS,EAAG5qB,MAAM4D,SAAW+mB,IAAaC,EAAG5qB,MAAM4D,OAAS+mB,EAAY,MAKrE,SAASpE,KACPxN,GAAiB,CAAC,GAClB,IAAIxK,EAAO6J,GAAa,OAAS,MAC7ByS,EAAQzS,GAAa,QAAU,SAC/B0S,EAAOrS,GAAW,GAAGnc,wBAAwBiS,GAEjD3F,EAAQ6P,IAAY,SAAS7J,EAAMzV,GAE7BA,GAAK4f,GAAe7Z,KAAK0P,EAAKtS,wBAAwBiS,GAAQuc,GAE9D3xB,IAAM8gB,GAAgB,GAAKlB,GAAe7Z,KAAK0P,EAAKtS,wBAAwBuuB,GAASC,MAK7F,SAAStE,KACP,IAAIuE,EAAQvB,KACRC,EAAQsB,EAAM,GACdrB,EAAMqB,EAAM,GAEhBniB,EAAQ6P,IAAY,SAAS7J,EAAMzV,GAE7BA,GAAKswB,GAAStwB,GAAKuwB,EACjBpb,EAAQM,EAAM,iBAChBI,EAAYJ,EAAM,CAAC,cAAe,aAClCR,EAASQ,EAAMmP,KAIZzP,EAAQM,EAAM,iBACjBC,EAASD,EAAM,CACb,cAAe,OACf,SAAY,OAEdP,EAAYO,EAAMmP,QA+D1B,SAASiN,GAAsB9c,GAC7B,OAAOA,EAAG1O,SAAS3B,cAGrB,SAASkpB,GAAU7Y,GACjB,MAAoC,WAA7B8c,GAAqB9c,GAG9B,SAAS+c,GAAgB/c,GACvB,MAA4C,SAArCA,EAAGQ,aAAa,iBAGzB,SAASwc,GAAkBnE,EAAU7Y,EAAIwH,GACnCqR,EACF7Y,EAAGvP,SAAW+W,EAEdxH,EAAGzE,aAAa,gBAAiBiM,EAAIjY,YAKzC,SAASupB,KACP,GAAKlV,KAAY0B,KAAUD,GAA3B,CAEA,IAAI4X,EAAe,GAAiBjZ,GAAWvT,SAAWssB,GAAe/Y,IACrEkZ,EAAe,GAAiBjZ,GAAWxT,SAAWssB,GAAe9Y,IACrEkZ,EAAe7tB,IAASod,GACxB0Q,GAAgB9X,IAAUhW,IAASsd,GAEnCuQ,IAAgBF,GAClBD,GAAiB5M,GAAcpM,IAAY,IAExCmZ,GAAeF,GAClBD,GAAiB5M,GAAcpM,IAAY,GAEzCoZ,IAAgBF,GAClBF,GAAiB3M,GAAcpM,IAAY,IAExCmZ,GAAeF,GAClBF,GAAiB3M,GAAcpM,IAAY,IAK/C,SAAS0Q,GAAe3U,EAAIC,GACtBkJ,IAAsBnJ,EAAGlO,MAAMqX,GAAsBlJ,GAO3D,SAASod,GAAcnL,GAIrB,OAHW,MAAPA,IAAeA,EAAM5iB,IAGlBkU,IAAc2H,IADX7H,GAAcD,GAAS,IACOwH,GAAeqH,EAAM,GAAKrH,GAAeqH,GAAO7O,KAAS,EAC/FE,IAAc4H,GAAW5H,IAAc,GACpCH,GAAQ,GAAK,EAGpB,SAAS8I,KACP,IACI3E,EAAU4D,IADJ7H,GAAcD,GAAS,IAb1BE,IAAcA,GAAaF,IAAU0I,GAAgBlB,GAAekB,KAsB3E,OANIpI,KAAW0B,KACbkC,EAAShE,KAAgBA,GAAaF,KAAW0I,GAAgB,GAAKsR,KACpEA,GAAatR,GAAgB,GAAKlB,GAAekB,GAAgB,IAEjExE,EAAS,IAAKA,EAAS,GAEpBA,EAGT,SAASsN,GAA4B3C,GAGnC,IAAI1K,EACJ,GAHW,MAAP0K,IAAeA,EAAM5iB,IAGrB4a,KAAe1G,GACjB,GAAID,GACFiE,IAASjE,GAAaF,IAAU6O,EAC5BvO,KAAU6D,GAAO6V,UAChB,CACL,IAAIC,EAAc1U,EAAYmD,GAAgB3I,GAC1CO,KAAUuO,GAAOmL,MACrB7V,EAAc,KAAN0K,EAAYoL,OAGtB9V,GAAQqD,GAAeqH,GACnBvO,IAAUH,KACZgE,GAAO6V,MAQX,OAJIrR,KAAoBxE,EAAMtX,KAAK0b,IAAIpE,EAAKyE,KAE5CzE,IAAQ0C,IAAe1G,IAAcD,GAAoB,KAAN,IAKrD,SAASyU,GAA4BxQ,GACnCmN,GAActf,GAAW,MACzBuf,GAAqBpN,GAGvB,SAASoN,GAAsBpN,GAClB,MAAPA,IAAeA,EAAMqN,MACzBxf,GAAUvD,MAAMsa,IAAiBC,GAAkB7E,EAAM8E,GAG3D,SAAS2I,GAAcsI,EAAQC,EAAUC,EAASC,GAChD,IAAIxyB,EAAIqyB,EAASna,GACZiC,KAAQna,EAAIgF,KAAKyb,IAAIzgB,EAAG6gB,KAE7B,IAAK,IAAI9gB,EAAIsyB,EAAQtyB,EAAIC,EAAGD,IAAK,CAC7B,IAAIyV,EAAO6J,GAAWtf,GAGnByyB,IAAShd,EAAK5O,MAAM8D,KAAqB,KAAb3K,EAAIqE,IAAe8T,GAAQ,KAExDgC,IAAgBgE,IAClB1I,EAAK5O,MAAMsX,GAAmB1I,EAAK5O,MAAMwX,GAAkBlE,IAAgBna,EAAIsyB,GAAU,IAAO,KAElGpd,EAAYO,EAAM8c,GAClBtd,EAASQ,EAAM+c,GAEXC,GAASpS,GAActa,KAAK0P,IA2CpC,SAAStM,GAAQlH,EAAGywB,GACdxR,IAA8B6H,MAG9B1kB,KAAUmd,IAAekR,KAE3B5Q,GAAO/J,KAAK,eAAgBoS,MAC5BrI,GAAO/J,KAAK,kBAAmBoS,MAC3B7P,IAAc0T,KAGd5K,IAAanhB,GAAK,CAAC,QAAS,WAAWoM,QAAQpM,EAAEwP,OAAS,GAAK4R,KAEnExB,IAAU,EACVqH,MAWJ,SAASyJ,GAAU3d,GACjB,OAAOA,EAAItQ,cAAcF,QAAQ,KAAM,IAWzC,SAASme,GAAiBiQ,GAGxB,GAAIhU,GAAYiD,GAAS,CAGvB,GAFAC,GAAO/J,KAAK,gBAAiBoS,GAAKyI,KAE7BhU,GAAYyB,GAAc5c,OAAS,EACtC,IAAK,IAAIzD,EAAI,EAAGA,EAAIqgB,GAAc5c,OAAQzD,IAAK,CAC7C,IAAIyV,EAAO4K,GAAcrgB,GAEzByV,EAAK5O,MAAM8D,KAAO,GAEd0T,GAAkBF,IACpB1I,EAAK5O,MAAMwX,GAAkB,GAC7B5I,EAAK5O,MAAMsX,GAAmB,IAEhCjJ,EAAYO,EAAMwE,IAClBhF,EAASQ,EAAMyE,IAanB,IAAK0Y,IACAhU,GAAYgU,EAAM5lB,OAAOrK,aAAeyH,IACzCwoB,EAAM5lB,SAAW5C,IAAauoB,GAASC,EAAMC,gBAAkBF,GAASxR,IAAgB,CAE1F,IAAKD,GAA4B,CAC/B,IAAIkO,EAAW/qB,GACf0kB,KACI1kB,KAAU+qB,IACZtN,GAAO/J,KAAK,eAAgBoS,MAE5B4C,MAIW,UAAXlS,GAAsBiH,GAAO/J,KAAK,cAAeoS,MACrDtI,IAAU,EACVL,GAAcnd,KAOpB,SAAS6e,GAAM4P,EAAa7wB,GAC1B,IAAIigB,GAGJ,GAAoB,SAAhB4Q,EACFxQ,GAAgBrgB,GAAI,QAGf,GAAoB,SAAhB6wB,EACTxQ,GAAgBrgB,EAAG,OAGd,CACL,GAAI4f,GAAS,CACX,GAAI/G,GAA4B,OAAiB6H,KAGnD,IAAI6I,EAAWD,KACXwH,EAAW,EAkBf,GAhBoB,UAAhBD,EACFC,GAAavH,EACY,SAAhBsH,EACTC,EAAWnU,EAAWW,GAAapH,GAAQqT,EAAWjM,GAAa,EAAIiM,GAE5C,iBAAhBsH,IAA4BA,EAAc7K,SAAS6K,IAEzDE,MAAMF,KAEJ7wB,IAAK6wB,EAAc7tB,KAAK0b,IAAI,EAAG1b,KAAKyb,IAAInB,GAAa,EAAGuT,KAE7DC,EAAWD,EAActH,KAKxB5M,GAAYmU,GAAY9tB,KAAK8X,IAAIgW,GAAY5a,GAAO,CACvD,IAAI8a,EAASF,EAAW,EAAI,GAAK,EACjCA,GAAa1uB,GAAQ0uB,EAAWxT,IAAekC,GAAWlC,GAAa0T,EAAsB,EAAb1T,GAAiB0T,GAAU,EAG7G5uB,IAAS0uB,EAGLnU,GAAYxE,KACV/V,GAAQod,KAAYpd,IAASkb,IAC7Blb,GAAQsd,KAAYtd,IAASkb,KAI/BgM,GAAYlnB,MAAWknB,GAAY/J,KACrCrY,GAAOlH,IAOb,SAASqgB,GAAiBrgB,EAAGixB,GAC3B,GAAIrR,GAAS,CACX,GAAI/G,GAA4B,OAAiB6H,KAEnD,IAAIwQ,EAEJ,IAAKD,EAAK,CAIR,IAFA,IAAIlmB,EAAS4V,GADb3gB,EAAIsgB,GAAStgB,IAGN+K,IAAW8L,IAAqB,CAACC,GAAYC,IAAY3K,QAAQrB,GAAU,GAAKA,EAASA,EAAOrK,WAEvG,IAAIywB,EAAW,CAACra,GAAYC,IAAY3K,QAAQrB,GAC5ComB,GAAY,IACdD,GAAkB,EAClBD,EAAmB,IAAbE,GAAkB,EAAI,GAIhC,GAAI/Y,GAAQ,CACV,GAAIhW,KAAUod,KAAqB,IAATyR,EAExB,YADAhQ,GAAK,OAAQjhB,GAER,GAAIoC,KAAUsd,IAAoB,IAARuR,EAE/B,YADAhQ,GAAK,QAASjhB,GAKdixB,IACF7uB,IAASoU,GAAUya,EACf3a,KAAalU,GAAQY,KAAKC,MAAMb,KAEpC8E,GAAQgqB,GAAoBlxB,GAAgB,YAAXA,EAAEwP,KAAuBxP,EAAI,OA6BlE,SAAS4hB,KACPmC,GAAgBqN,aAAY,WAC1B/Q,GAAgB,KAAM5I,MACrBD,IAEH2J,IAAY,EAGd,SAASO,KACPkH,cAAc7E,IACd5C,IAAY,EAGd,SAASkQ,GAAsBC,EAAQ/F,GACrC9X,EAASmE,GAAgB,CAAC,cAAe0Z,IACzC1Z,GAAexU,UAAY8gB,GAAoB,GAAKoN,EAASpN,GAAoB,GAAKqH,EAGxF,SAASnD,KACPxG,KACIhK,IAAkByZ,GAAqB,OAAQ3Z,GAAa,IAGlE,SAAS0J,KACPM,KACI9J,IAAkByZ,GAAqB,QAAS3Z,GAAa,IAiBnE,SAASiR,KACHxH,IACFC,KACA4C,IAAqB,IAErBoE,KACApE,IAAqB,GAuDzB,SAASzC,GAAUzO,GACjBA,EAAG3J,QAyBL,SAASmX,GAAUtgB,GAEjB,OAAOuxB,GADPvxB,EAAIA,GAAKmZ,EAAIwX,OACY3wB,EAAEwxB,eAAe,GAAKxxB,EAEjD,SAAS2gB,GAAW3gB,GAClB,OAAOA,EAAE+K,QAAUoO,EAAIwX,MAAMc,WAG/B,SAASF,GAAcvxB,GACrB,OAAOA,EAAEwP,KAAKpD,QAAQ,UAAY,EAGpC,SAASslB,GAAwB1xB,GAC/BA,EAAEmP,eAAiBnP,EAAEmP,iBAAmBnP,EAAE2xB,aAAc,EAG1D,SAASC,KACP,OSx+EsBjN,ETw+EYL,GAAaK,EAAIN,GAAaM,ESx+EvCD,ETw+E0CJ,GAAaI,EAAIL,GAAaK,EUx+EnEmN,EDCzB7uB,KAAK8uB,MAAMnN,EAAGD,IAAM,IAAM1hB,KAAK+uB,ICDCpC,EVw+EgEhX,GUv+EnGqZ,GAAY,GACZpI,EAAM5mB,KAAK8X,IAAI,GAAK9X,KAAK8X,IAAI+W,MAEtB,GAAKlC,EACdqC,EAAY,aACHpI,GAAO+F,IAChBqC,EAAY,YAGPA,IV89EgH1tB,EAAQ2R,KUx+E1H,IAA2B4b,EAAOlC,EACnCqC,EACApI,EDFoBjF,EAAGD,ET2+E3B,SAASxC,GAAYliB,GACnB,GAAI4f,GAAS,CACX,GAAI/G,GAA4B,OAAiB6H,KAG/CpJ,IAAY6J,IAAaO,KAE7B6C,IAAW,EACPH,KACFzT,EAAIyT,IACJA,GAAW,MAGb,IAAI6N,EAAI3R,GAAStgB,GACjB6f,GAAO/J,KAAKyb,GAAavxB,GAAK,aAAe,YAAakoB,GAAKloB,KAE1DuxB,GAAavxB,IAAM,CAAC,MAAO,KAAKoM,QAAQwjB,GAAqBjP,GAAU3gB,MAAQ,GAClF0xB,GAAuB1xB,GAGzBskB,GAAaI,EAAIL,GAAaK,EAAIuN,EAAEC,QACpC5N,GAAaK,EAAIN,GAAaM,EAAIsN,EAAEE,QAChCxV,IACFwH,GAAgBsK,WAAWtmB,GAAUvD,MAAMsa,IAAe3c,QAAQ4c,GAAiB,KACnFsI,GAActf,GAAW,OAI7B,SAASga,GAAWniB,GAClB,GAAIukB,GAAU,CACZ,IAAI0N,EAAI3R,GAAStgB,GACjBskB,GAAaI,EAAIuN,EAAEC,QACnB5N,GAAaK,EAAIsN,EAAEE,QAEfxV,EACGyH,KAAYA,GAAW/T,GAAI,YAYtC,SAAS+hB,EAAWpyB,GAClB,IAAK2f,GAEH,YADA4E,IAAW,GAGb5T,EAAIyT,IACAG,KAAYH,GAAW/T,GAAI,WAAY+hB,EAAUpyB,OAEvB,MAA1B2f,KAAiCA,GAAwBiS,MAC7D,GAAIjS,GAAuB,EACpBsD,IAAiBsO,GAAavxB,KAAMijB,IAAgB,GAEzD,IACMjjB,EAAEwP,MAAQqQ,GAAO/J,KAAKyb,GAAavxB,GAAK,YAAc,WAAYkoB,GAAKloB,IAC3E,MAAMqyB,IAER,IAAI3N,EAAIP,GACJmO,EAAO9N,GAAQF,GAAcD,IACjC,IAAKrH,IAAc3G,IAAcC,GAC/BoO,GAAK4N,EACL5N,GAAK,UAGLA,GADkBhJ,EAAY4W,EAAOpc,GAAQ,MAAQ+H,GAAW9H,IAAU0I,IAAuB,IAAPyT,GAAcrU,GAAW9H,IAEnHuO,GAAK,IAGPvc,GAAUvD,MAAMsa,IAAiBC,GAAkBuF,EAAItF,IAvCTgT,CAAUpyB,QAExB,MAA1B2f,KAAiCA,GAAwBiS,MACzDjS,KAAyBsD,IAAgB,KAGlB,kBAAjBjjB,EAAEE,YAA4BF,EAAEE,aAAe+iB,IACzDjjB,EAAEmP,kBAoCR,SAASiT,GAAUpiB,GACjB,GAAIukB,GAAU,CACRH,KACFzT,EAAIyT,IACJA,GAAW,MAETzH,GAAY8K,GAActf,GAAW,IACzCoc,IAAW,EAEX,IAAI0N,EAAI3R,GAAStgB,GACjBskB,GAAaI,EAAIuN,EAAEC,QACnB5N,GAAaK,EAAIsN,EAAEE,QACnB,IAAIG,EAAO9N,GAAQF,GAAcD,IAEjC,GAAIrhB,KAAK8X,IAAIwX,GAAO,CAElB,IAAKf,GAAavxB,GAAI,CAEpB,IAAI+K,EAAS4V,GAAU3gB,GACvBqV,EAAUtK,EAAQ,CAAC,MAAS,SAASwnB,EAAcvyB,GACjD0xB,GAAuB1xB,GACvBuV,EAAaxK,EAAQ,CAAC,MAASwnB,OAI/B5V,EACFyH,GAAW/T,GAAI,WACb,GAAI2M,KAAe1G,GAAW,CAC5B,IAAIkc,GAAeF,EAAOpc,IAAS+H,GAAW9H,IAC9Cqc,EAAaF,EAAO,EAAItvB,KAAKC,MAAMuvB,GAAcxvB,KAAKwb,KAAKgU,GAC3DpwB,IAASowB,MACJ,CACL,IAAIC,IAAWtO,GAAgBmO,GAC/B,GAAIG,GAAS,EACXrwB,GAAQod,QACH,GAAIiT,GAAS9U,GAAekB,GAAgB,GACjDzc,GAAQsd,QAGR,IADA,IAAI3hB,EAAI,EACDA,EAAI8gB,IAAiB4T,GAAS9U,GAAe5f,IAClDqE,GAAQrE,EACJ00B,EAAQ9U,GAAe5f,IAAMu0B,EAAO,IAAKlwB,IAAS,GACtDrE,IAKNmJ,GAAOlH,EAAGsyB,GACVzS,GAAO/J,KAAKyb,GAAavxB,GAAK,WAAa,UAAWkoB,GAAKloB,OAGzD2f,IACFU,GAAgBrgB,EAAGsyB,EAAO,GAAK,EAAI,IAON,SAAjChuB,EAAQwU,uBAAmCmK,IAAgB,GAC3DtK,KAAcgH,GAAwB,KACtCrI,KAAa6J,IAAaS,KAKhC,SAASiG,MACE/K,IAAgCI,IACtCtY,MAAM4D,OAASmV,GAAevb,GAAQ8T,IAASyH,GAAevb,IAAS,KAG5E,SAASohB,KACP,IAAIkP,EAAQrc,IAAcA,GAAaF,IAAUmH,GAAaW,GAAWX,GAAapH,GACtF,OAAOlT,KAAKyb,IAAIzb,KAAKwb,KAAKkU,GAAQpV,IAQpC,SAASoO,KACP,GAAK1U,KAAOG,IAER6J,KAAUyC,GAAa,CACzB,IAAIhF,EAAMgF,GACN/E,EAAMsC,GACNpL,EAAKzB,EAQT,IANIsP,GAAczC,KAChBvC,EAAMuC,GACNtC,EAAM+E,GACN7N,EAAK3B,GAGAwK,EAAMC,GACX9I,EAAG4L,GAAS/C,IACZA,IAIFgF,GAAczC,IAIlB,SAASkH,GAAMloB,GACb,MAAO,CACLmI,UAAWA,GACXkV,WAAYA,GACZnG,aAAcA,GACdsK,SAAUA,GACV3K,kBAAmBA,GACnByL,YAAaA,GACbxL,WAAYA,GACZC,WAAYA,GACZb,MAAOA,GACPM,QAASA,GACT6H,WAAYA,GACZf,WAAYA,GACZuB,cAAeA,GACfzc,MAAOA,GACPmd,YAAaA,GACboT,aAAclT,KACdyB,gBAAiBA,GACjByC,sBAAuBA,GACvB3C,MAAOA,GACPyC,YAAaA,GACbvR,MAAOA,GACPuL,KAAMA,GACNkT,MAAO3wB,GAAK,IA//EVuc,GAAsBhW,QAAQiW,KAAK,qBAAsBlY,EAAQ6D,YWzL1D,SAASyqB,IAQpBxyB,SAAS6P,iBAAiB,qBAAqBzC,QAAQmP,IACnD,IAAIkW,EAAmBlW,EAAS9V,cAAc,mBAC1CisB,EAAiBnW,EAAS9V,cAAc,iBAE5C,GAAyB,OAArBgsB,GAAgD,OAAnBC,EAAyB,CAEtD,IAAIC,EAAgB/c,EAAI,CACpB7N,UAAW0qB,EACXvb,UAAU,EACViB,UAAU,EACVG,WAAW,EACXP,MAAM,EACNnB,KAAK,EACLN,UAAU,EACVW,MAAO,MAGP2b,EAAchd,EAAI,CAClB7N,UAAW2qB,EACXxb,UAAU,EACViB,UAAU,EACVG,WAAW,EACXP,MAAM,EACNnB,KAAK,EACLN,UAAU,EACVW,MAAO,MAGP4b,GAAiB,EAErBF,EAAclT,OAAOnK,GAAG,gBAAgB,SAAUwS,EAAMvS,GAC/Csd,IACDA,GAAiB,EACjBD,EAAY/R,KAAKiH,EAAK9lB,WAI9B2wB,EAAclT,OAAOnK,GAAG,iBAAiB,SAAUwS,EAAMvS,GACrDsd,GAAiB,KAGrBD,EAAYnT,OAAOnK,GAAG,gBAAgB,SAAUwS,EAAMvS,GAC7Csd,IACDA,GAAiB,EACjBF,EAAc9R,KAAKiH,EAAK9lB,WAIhC4wB,EAAYnT,OAAOnK,GAAG,iBAAiB,SAAUwS,EAAMvS,GACnDsd,GAAiB,QAO7B7yB,SAAS6P,iBAAiB,uBAAuBzC,QAAQ0lB,IACrD,IAAIpc,EAAa,IAAMoc,EAAUC,QAAQ,gCAAgCtsB,cAAc,oBAAoB/D,GACvGiU,EAAa,IAAMmc,EAAUC,QAAQ,gCAAgCtsB,cAAc,gBAAgB/D,GAEvGkT,EAAI,CACAE,MAAO,EACP/N,UAAW+qB,EACX5b,UAAU,EACVoB,WAAW,EACXd,gBAAgB,EAChBZ,KAAK,EACLD,WAAYA,EACZD,WAAYA,MAKxB,WACI,IAAIyO,EAAQnlB,SAASyG,cAAc,gBAC/BusB,EAAiBhzB,SAASyG,cAAc,qBAE5C,GAAI0e,EACavP,EAAI,CACb7N,UAAWod,EACXrP,MAAO,EACPM,QAAS,OACTc,UAAU,EACViB,UAAU,EACVG,WAAW,EACXP,MAAM,EACNd,MAAO,MAIX+b,GACAA,EAAe5yB,UAAUoD,IAAI,WAhGjCyvB,GAoGJ,WACI,IAAI9N,EAAQnlB,SAASyG,cAAc,mBAEnC,GAAI0e,EACavP,EAAI,CACb7N,UAAWod,EACXrP,MAAO,EACPM,QAAS,OACTc,UAAU,IA3GlBgc,K,iCCNJ,mCAGA,WAsDQ,SAASC,EAAaC,GAClB,IAAIC,EAAarzB,SAASyG,cAAc,gBACxC,GAAI4sB,EAAY,CACZ,IAAIC,EAAc,IAAIC,eAClBC,EAAW,IAAIC,SAASJ,GAE5B,IAAKC,EAGD,OAFAI,SAAS,yDACTvtB,QAAQwtB,IAAI,sCACL,EAGXL,EAAYM,mBAAqB,WACzBN,EAAYO,aAAeN,eAAeO,OACf,MAAvBR,EAAYS,QACZ/zB,SAASyG,cAAc,oBAAoB8H,UAAY+kB,EAAYU,SAEnEh0B,SAAS6P,iBAAiB,qBAAqBzC,QAASgG,IACpDjN,QAAQwtB,IAAIvgB,GACZA,EAAK7O,UAAY6O,EAAK7O,UAAUpC,QAAQ,SAAU,MAGtD8xB,eAKA9tB,QAAQwtB,IAAI,yDAA2DL,EAAYS,SAM3F,IADA,IAAIG,EAAcl0B,SAAS6P,iBAAiB,oBACnClS,EAAI,EAAGA,EAAKu2B,EAAY9yB,OAAQzD,IACrC,IAAIw2B,IAAW,CACXtwB,OAAQqwB,EAAYv2B,GACpBkN,YAAY,KAKxByoB,EAAYjsB,KAAK,OAAQ+rB,GAA4B,IAAI,GACzDE,EAAYc,iBAAiB,mBAAoB,kBACjDd,EAAYe,KAAKb,KA3FzB,WAsBI,SAASc,IACL30B,OAAO40B,OAAO,CAAExzB,IAAKf,SAASyG,cAAc,oBAAoBhG,UAAY,IAAK6H,KAAM,EAAGksB,SAAU,WAtBxGx0B,SAAS8L,iBAAiB,UAAU,SAAUlM,GACtCA,EAAE+K,QAAU/K,EAAE+K,OAAOpG,UAAUkwB,SAAS,oBACxCtB,OAIRnzB,SAAS8L,iBAAiB,SAAS,SAAUlM,GACrCA,EAAE+K,SACsB,KAApB/K,EAAE+K,OAAOhE,UAAmB/G,EAAE+K,OAAOpG,UAAUkwB,SAAS,eAAiB70B,EAAE+K,OAAOpG,UAAUkwB,SAAS,gBACrG70B,EAAEmP,iBACFokB,EAAavzB,EAAE+K,OAAOuI,aAAa,SACnCohB,KAEoC,KAA/B10B,EAAE+K,OAAOrK,WAAWqG,UAAmB/G,EAAE+K,OAAOrK,WAAWiE,UAAUkwB,SAAS,eAAiB70B,EAAE+K,OAAOrK,WAAWiE,UAAUkwB,SAAS,iBAC3I70B,EAAEmP,iBACFokB,EAAavzB,EAAE+K,OAAOrK,WAAW4S,aAAa,SAC9CohB,SASZt0B,SAAS8L,iBAAiB,SAAS,SAAUlM,GACzC,GAAIA,EAAE+K,QAA8B,UAApB/K,EAAE+K,OAAOhE,SAAwD,SAAjC/G,EAAE+K,OAAOuI,aAAa,QAAoB,CACtFtT,EAAEmP,iBAEF,IAAI2lB,EAAU/0B,OAAOg1B,SAASC,KAE1BF,EAAQ1oB,QAAQ,MAAQ,IACxB0oB,EAAUA,EAAQxyB,UAAU,EAAGvC,OAAOg1B,SAASC,KAAK5oB,QAAQ,OAGhErM,OAAOg1B,SAASC,KAAOF,MAI/B10B,SAAS8L,iBAAiB,UAAU,SAAUlM,GACtCA,EAAE+K,QAA8B,QAApB/K,EAAE+K,OAAOhE,UACrB/G,EAAEmP,iBACFokB,QA9CR0B,GAHZ","file":"gallery-carousel-listing.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}(window,function(){return s={},n.m=i=[function(e,t,i){\"use strict\";function s(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent(\"CustomEvent\");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}var n;t.__esModule=!0,t.hasClassInTree=function(e,t){function s(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}return s(e,t)||function e(t,i){return t&&t!==document?s(t,i)?t:e(t.parentNode,i):null}(e,t)},t.ensureElementInView=function(e,t){var i=e.scrollTop+e.offsetTop,s=i+e.clientHeight,n=t.offsetTop,a=n+t.clientHeight;n=window.innerHeight?\"above\":i?t:\"below\"},t.debounce=function(n,a,o){var l;return void 0===a&&(a=100),void 0===o&&(o=!1),function(){for(var e=[],t=0;t[^<>]*'+l+\"\")},t.kebabCase=function(e){var t=e.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g,function(e){return\"-\"+e.toLowerCase()});return e[0]===e[0].toUpperCase()?t.substring(1):t},\"function\"!=typeof(n=window).CustomEvent&&(s.prototype=n.Event.prototype,n.CustomEvent=s)},function(e,t,i){\"use strict\";t.__esModule=!0;var s=(n.prototype.newOption=function(e){return{id:e.id?e.id:String(Math.floor(1e8*Math.random())),value:e.value?e.value:\"\",text:e.text?e.text:\"\",innerHTML:e.innerHTML?e.innerHTML:\"\",selected:!!e.selected&&e.selected,display:void 0===e.display||e.display,disabled:!!e.disabled&&e.disabled,placeholder:!!e.placeholder&&e.placeholder,class:e.class?e.class:void 0,data:e.data?e.data:{},mandatory:!!e.mandatory&&e.mandatory}},n.prototype.add=function(e){this.data.push({id:String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:\"\",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:e.mandatory,data:{}})},n.prototype.parseSelectData=function(){this.data=[];for(var e=0,t=this.main.select.element.childNodes;e= 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};","// 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}\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}\n\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 nonce: false\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(null, getOption('nonce')),\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 = 0; 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 slideClonedClass = 'tns-slide-cloned',\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 if (el == null) { return; }\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 addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\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 img load event listener\n forEach(imgs, function(img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) { 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 && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n\n (Math.abs(left - right) <= 1) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\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', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n\n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer)\n }\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) +\n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ?\n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) { imgSelector = 'img'; }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) { imgCompleted(img); } // Check image.complete\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n }\n\n function additionalUpdates () {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n\n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually\n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually\n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n if (!event ||\n !carousel && event.target.parentNode === container ||\n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document\n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n\n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }});\n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; }\n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.3',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}\n","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// create and append style sheet\nexport function createStyleSheet (media, nonce) {\n // Create the