{"version":3,"sources":["webpack:///scripts/site__csl001--579090095dd711ad2f62.js","webpack:///./client/src/core/vendor/photoswipe/photoswipe-ui-default.js","webpack:///./client/src/core/vendor/photoswipe/photoswipe.js","webpack:///./client/src/site__csl001/components/site/sprites nonrecursive \\.svg$","webpack:///./client/src/core/plugins/lib/fn.js","webpack:///./client/src/core/plugins/lib/index.js","webpack:///./client/src/core/plugins/lib/objects.js","webpack:///./client/src/core/plugins/lib/selectors.js","webpack:///./client/src/core/plugins/lib/strings.js","webpack:///./client/src/site__csl001/components/blocks/comparison-table/index.js","webpack:///./client/src/site__csl001/components/blocks/gallery/index.js","webpack:///./client/src/site__csl001/components/blocks/image-gallery/index.js","webpack:///./client/src/site__csl001/components/blocks/index.js","webpack:///./client/src/site__csl001/components/blocks/sales-block/index.js","webpack:///./client/src/site__csl001/components/index.js","webpack:///./client/src/site__csl001/components/search/global-search/index.js","webpack:///./client/src/site__csl001/components/search/global-search/search-form-collapsible.js","webpack:///./client/src/site__csl001/components/search/index.js","webpack:///./client/src/site__csl001/components/site-footer/index.js","webpack:///./client/src/site__csl001/components/site/index.js","webpack:///./client/src/site__csl001/components/site/sprites/index.js","webpack:///./client/src/site__csl001/components/wysiwyg/index.js","webpack:///./client/src/site__csl001/components/wysiwyg/tables.js","webpack:///./client/src/site__csl001/components/wysiwyg/video-block.js","webpack:///./client/src/site__csl001/index.js","webpack:///./client/src/site__csl001/utilities/a11y__focus.js","webpack:///./client/src/site__csl001/utilities/index.js","webpack:///./node_modules/ally.js/src/event/shadow-focus.js","webpack:///./node_modules/ally.js/src/get/active-elements.js","webpack:///./node_modules/ally.js/src/get/shadow-host-parents.js","webpack:///./node_modules/ally.js/src/get/shadow-host.js","webpack:///./node_modules/ally.js/src/is/shadowed.js","webpack:///./node_modules/ally.js/src/observe/interaction-type.js","webpack:///./node_modules/ally.js/src/style/focus-source.js","webpack:///./node_modules/ally.js/src/util/context-to-element.js","webpack:///./node_modules/ally.js/src/util/decorate-service.js","webpack:///./node_modules/ally.js/src/util/node-array.js","webpack:///./node_modules/ally.js/src/util/toggle-class.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/debug/node_modules/ms/index.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/debug/src/common.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/process/browser.js","webpack:///(webpack)/buildin/global.js","webpack:///./client/src/site__csl001/favicons/html_code.html","webpack:///external \"jQuery\""],"names":["webpackJsonp","/home/vsts/work/1/s/src/SCF/client/src/core/vendor/photoswipe/photoswipe-ui-default.js","module","exports","__webpack_require__","root","factory","this","pswp","framework","_fullscrenAPI","_controls","_captionContainer","_fakeCaptionContainer","_indexIndicator","_shareButton","_shareModal","_initalCloseOnScrollValue","_isIdle","_listen","_loadingIndicator","_loadingIndicatorHidden","_loadingIndicatorTimeout","_galleryHasOneSlide","_options","_blockControlsTap","_blockControlsTapTimeout","_idleInterval","_idleTimer","ui","_overlayUIUpdated","_controlsVisible","_shareModalHidden","_defaultUIOptions","barsSize","top","bottom","closeElClasses","timeToIdle","timeToIdleOutside","loadingIndicatorDelay","addCaptionHTMLFn","item","captionEl","title","children","innerHTML","closeEl","fullscreenEl","zoomEl","shareEl","counterEl","arrowEl","preloaderEl","tapToClose","tapToToggleControls","clickToCloseNonZoomable","shareButtons","id","label","url","download","getImageURLForShare","currItem","src","getPageURLForShare","window","location","href","getTextForShare","indexIndicatorSep","fitControlsWidth","_onControlsTap","e","event","mouseUsed","_onIdleMouseMove","uiElement","found","target","srcElement","clickedClass","getAttribute","i","_uiElements","length","onTap","indexOf","name","stopPropagation","tapDelay","features","isOldAndroid","setTimeout","_fitControlsInViewport","likelyTouchDevice","screen","width","_togglePswpClass","el","cName","add","_countNumItems","hasOneSlide","getNumItemsFn","_toggleShareModalClass","_toggleShareModal","removeClass","addClass","_updateShareURLs","_openWindowPopup","shout","hasAttribute","open","Math","round","shareButtonData","shareURL","image_url","page_url","share_text","shareButtonOut","replace","encodeURIComponent","parseShareButtonOut","onclick","_hasCloseClass","hasClass","_idleIncrement","clearTimeout","setIdle","_onMouseLeaveWindow","from","relatedTarget","toElement","nodeName","_setupFullscreenAPI","getFullscreenAPI","bind","document","eventK","updateFullscreen","template","_setupLoadingIndicator","_toggleLoadingIndicator","loading","allowProgressiveImg","img","naturalWidth","index","hide","_applyNavBarGaps","gap","vGap","bars","createEl","appendChild","insertBefore","captionSize","clientHeight","parseInt","_setupIdle","setInterval","_setupHidingControlsDuringGestures","now","hideControls","showControls","pinchControlsHidden","option","onInit","toggleDesktopZoom","close","prev","next","isFullscreen","exit","enter","_setupUIElements","classAttr","loopThroughChildElements","sChildren","l","className","a","topBar","getChildByClass","init","extend","options","scrollWrap","listen","update","point","initialZoomLevel","getZoomLevel","zoomTo","getDoubleTapZoom","isDown","preventObj","t","type","test","tagName","prevent","onGlobalTap","onMouseOver","clearInterval","unbind","hideAnimationDuration","removeChild","showAnimationDuration","isIdle","updateIndexIndicator","setScrollOffset","getScrollY","getCurrentIndex","detail","pointerType","fitRatio","releasePoint","supportsFullscreen","d","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","api","dE","documentElement","tF","requestFullscreen","enterK","exitK","elementK","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","closeOnScroll","Element","ALLOW_KEYBOARD_INPUT","/home/vsts/work/1/s/src/SCF/client/src/core/vendor/photoswipe/photoswipe.js","UiClass","items","listener","methodName","split","isArray","obj","Array","classes","tag","createElement","yOffset","pageYOffset","undefined","scrollTop","reg","RegExp","parentEl","childClassName","node","firstChild","nextSibling","arraySearch","array","value","key","o1","o2","preventOverwrite","prop","hasOwnProperty","easing","sine","out","k","sin","PI","inOut","cos","cubic","detectFeatures","helperEl","helperStyle","style","vendor","oldIE","all","addEventListener","touch","requestAnimationFrame","raf","caf","cancelAnimationFrame","pointerEvent","navigator","msPointerEnabled","ua","userAgent","platform","v","match","isOldIOSPhone","androidversion","parseFloat","androidVersion","isMobileOpera","styleCheckItem","styleName","styleChecks","vendors","charAt","toUpperCase","slice","toLowerCase","lastTime","fn","currTime","Date","getTime","timeToCall","max","svg","createElementNS","createSVGRect","evName","_handleEv","handleEvent","call","self","allowPanToNext","spacing","bgOpacity","loop","pinchToClose","closeOnVerticalDrag","verticalDragRange","showHideOpacity","focus","escKey","arrowKeys","mainScrollEndFriction","panEndFriction","isClickableElement","isMouseClick","maxSpreadZoom","modal","scaleMode","_isOpen","_isDestroying","_closedByScroll","_currentItemIndex","_containerStyle","_containerShiftIndex","_upMoveEvents","_downEvents","_globalEventHandlers","_currZoomLevel","_startZoomLevel","_translatePrefix","_translateSufix","_updateSizeInterval","_itemsNeedUpdate","_itemHolders","_prevItemIndex","_dragStartEvent","_dragMoveEvent","_dragEndEvent","_dragCancelEvent","_transformKey","_pointerEventEnabled","_likelyTouchDevice","_requestAF","_cancelAF","_initalClassName","_initalWindowScrollY","_oldIE","_currentWindowScrollY","_features","_orientationChangeTimeout","_gestureStartTime","_gestureCheckSpeedTime","_releaseAnimData","_isZoomingIn","_verticalDragInitiated","_oldAndroidTouchEndTimeout","_isDragging","_isMultitouch","_zoomStarted","_moved","_dragAnimFrame","_mainScrollShifted","_currentPoints","_isZooming","_currPointsDistance","_startPointsDistance","_currPanBounds","_currZoomElementStyle","_mainScrollAnimating","_direction","_isFirstMove","_opacityChanged","_bgOpacity","_wasOverInitialZoom","_tempCounter","_getEmptyPoint","x","y","_currPanDist","_startPanOffset","_panOffset","_viewportSize","_currPositionIndex","_offset","_slideSize","_indexDiff","_isFixedPosition","_modules","_windowVisibleSize","_renderMaxResolution","_registerModule","publicMethods","push","_getLoopedId","numSlides","_getNumItems","_listeners","_shout","listeners","args","prototype","arguments","shift","apply","_getCurrentTime","_applyBgOpacity","opacity","bg","_applyZoomTransform","styleObj","zoom","_applyCurrentZoomPan","allowRenderResolution","_setImageSize","_applyZoomPanToItem","container","initialPosition","_setTranslateX","elStyle","_moveMainScroll","dragging","newSlideIndexOffset","delta","_mainScrollPos","_calculatePanOffset","axis","zoomLevel","m","_midZoomPoint","_equalizePoints","p1","p2","_roundPoint","p","_mouseMoveTimeout","_onFirstMouseMove","_bindEvents","transform","_unbindEvents","scroll","_calculatePanBounds","bounds","_calculateItemSize","_getMinZoomLevel","_getMaxZoomLevel","w","_modifyDestPanOffset","destPanBounds","destPanOffset","destZoomLevel","min","_setupTransforms","allow3dTransform","perspective","left","zoomRatio","s","h","height","_onKeyDown","keydownAction","keyCode","ctrlKey","altKey","shiftKey","metaKey","preventDefault","returnValue","_onGlobalClick","_updatePageScrollOffset","_animations","_numAnimations","_stopAnimation","_registerStartAnimation","_stopAllAnimations","_animateProp","b","endProp","easingFn","onUpdate","onComplete","startAnimTime","animloop","viewportSize","isMainScrollAnimating","isDragging","isZooming","applyZoomPan","panX","panY","itemHolders","wrap","display","resize","updateSize","orientationchange","clientWidth","keydown","click","oldPhone","animationName","isNaN","_getItemAt","setAttribute","position","rootClasses","mainClass","setContent","updateCurrItem","_showOrHide","destroy","_showOrHideTimeout","_stopDragUpdateLoop","panTo","force","goTo","diff","updateCurrZoomItem","emulateSetContent","zoomElement","center","invalidateCurrItems","needsUpdate","beforeAnimation","tempHolder","diffAbs","abs","NUM_HOLDERS","pop","unshift","prevItem","windowScrollY","innerWidth","innerHeight","holder","hIndex","cleanSlide","centerPoint","speed","updateFn","initialPanOffset","_currPoint","_startPoint","_currPointers","_startMainScrollPos","_posPoints","_tempPoint","_currZoomedItemIndex","_centerPoint","_lastReleaseTime","_currCenterPoint","_isEqualPoints","_isNearbyPoints","touch0","touch1","_calculatePointsDistance","sqrt","_dragUpdateLoop","_renderMovement","_canPan","_closestElement","parentNode","_preventObj","_preventDefaultEventBehaviour","_convertTouchToPoint","pageX","pageY","identifier","_findCenterOfPoints","pCenter","_pushPosPoint","time","o","_calculateVerticalDragOpacityRatio","_ePoint1","_ePoint2","_tempPointsArr","_getTouchPoints","forEach","touches","_panOrMoveMainScroll","panFriction","startOverDiff","newPanPos","newMainScrollPos","newOffset","dir","newMainScrollPosition","mainScrollDiff","_onDragStart","button","_initialZoomRunning","pointerIndex","pointerId","startPointsList","numPoints","_onDragMove","touchesList","pointsDistance","_calculateZoomLevel","zoomFriction","minZoomLevel","maxZoomLevel","minusDiff","percent","opacityRatio","mainScrollChanged","_onDragRelease","splice","MSPOINTER_TYPES","4","2","3","gestureType","touchList","changedTouches","releaseTimeDiff","_initDragReleaseAnimationData","calculateSwipeSpeed","initalPanY","initialBgOpacity","itemChanged","_finishSwipeMainScrollGesture","_completeZoomGesture","_completePanGesture","lastFlickDuration","tempReleasePos","lastFlickOffset","lastFlickDist","lastFlickSpeed","slowDownRatio","slowDownRatioReverse","speedDecelerationRatio","speedDecelerationRatioAbs","distanceOffset","backAnimDestination","backAnimStarted","calculateOverBoundsAnimOffset","pos","calculateAnimOffset","timeDiff","panAnimLoop","zoomPan","lastNow","animData","itemsDiff","totalShiftDist","isFastLastFlick","nextCircle","finishAnimDuration","animateToX","animateToDist","touchesDistance","initialOpacity","initGestures","addEventNames","pref","down","move","up","cancel","maxTouchPoints","msMaxTouchPoints","mousedown","mousemove","mouseup","_items","_initialContentSet","_initialIsLoop","completeFn","thumbBounds","initialLayout","getThumbBoundsFn","duration","removeAttribute","closeWithRaf","fadeEverything","loadError","miniImg","webkitBackfaceVisibility","initalBgOpacity","_tempPanAreaSize","_imagesToAppendPool","_controllerDefaultOptions","errorMsg","forceProgressiveLoading","preload","_getZeroBounds","_calculateSingleItemPanBounds","realPanElementW","realPanElementH","isInitial","hRatio","vRatio","_appendImage","baseDiv","preventAnimation","keepPlaceholder","imageAppended","loaded","placeholder","_preloadImage","loadComplete","onload","onerror","_checkForError","cleanUp","maxRes","lastChild","_appendImagesPool","poolItem","clearPlaceholder","lazyLoadItem","initController","getItemAt","isNext","preloadBefore","preloadAfter","preloader","html","placeholderClassName","msrc","tapTimer","tapReleasePoint","_dispatchTapEvent","origEvent","createEvent","eDetail","initCustomEvent","dispatchEvent","initTap","onTapStart","onTapRelease","p0","_wheelDelta","initDesktopZoom","setupDesktopZoom","events","handleMouseWheel","mouseZoomedIn","hasDraggingClass","updateZoomable","removeDraggingClass","deltaY","deltaMode","deltaX","wheelDeltaX","wheelDeltaY","wheelDelta","newPanX","newPanY","doubleTapZoomLevel","zoomOut","_historyUpdateTimeout","_hashChangeTimeout","_hashAnimCheckTimeout","_hashChangedByScript","_hashChangedByHistory","_hashReseted","_initialHash","_historyChanged","_closedFromURL","_urlChangedOnce","_windowLoc","_supportsPushState","_historyDefaultOptions","history","galleryUID","_getHash","hash","substring","_cleanHistoryTimeouts","_parseItemIndexFromURL","params","vars","pair","galleryPIDs","searchfor","pid","_updateHash","newHash","newURL","initHistory","updateURL","onHashChange","returnToOriginal","back","pushState","pathname","search","/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/sprites nonrecursive /\\.svg$/","webpackEmptyContext","req","Error","keys","resolve","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/fn.js","debounce","func","wait","immediate","timeout","context","later","callNow","Object","defineProperty","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/index.js","_interopRequireWildcard","__esModule","newObj","default","_interopRequireDefault","plugin","pluginName","klass","shortHand","formattedPluginName","toCamelCase","dataName","$","$bus","subscribe","publish","data","trigger","$util","objects","strings","selectors","inViewport","elm","rect","getBoundingClientRect","viewHeight","each","$this","overrides","elementOptions","filter","reduce","result","path","log","instance","DEFAULTS","$utils","jquery","defaults","_typeof","Symbol","iterator","constructor","_jquery2","_jquery","_debug2","_debug","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/objects.js","elementAttrtibutesToObject","element","filterFn","transformFn","output","attrs","get","ZERO","attributes","attribute","Boolean","objectPath","val","delimiter","props","final","part","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/selectors.js","selectorPattern","directives","join","selectTarget","selector","$element","$target","isClosestAncestoral","SELECTOR_PATTERNS","parent","isAllAncestoral","parents","isRetargeted","isAllDescendants","isGenerational","here","isSiblings","siblings","isSelfish","$newElement","newSelector","closest","find","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/strings.js","preserveCamelCase","str","isLastCharLower","isLastCharUpper","isLastLastCharUpper","c","substr","map","trim","tmpl","$tmpl","templateString","attr","text","mustache","invert","ctx","render","inverted","childCode","depth","assign","code","z","raw","comment","isRaw","partial","Option","booleanify","lower","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/comparison-table/index.js","ready","NO_ICON_TABLE_CELL_LOCATOR","getElementsByClassName","on","toggleClass","noIconCells","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/gallery/index.js","initGalleryBlock","galleryContainerSelector","containerElement","flickityElement","Flickity","eq","fadeIn","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/image-gallery/index.js","PhotoSwipe","require","PhotoSwipeUIDefault","gallerySelector","div","getElementsByTagName","parseThumbnailElements","figureEl","linkEl","size","thumbElements","childNodes","numNodes","nodeType","onThumbnailsClick","galleryElements","querySelectorAll","hashData","gid","galleryElement","disableAnimation","fromURL","gallery","pswpElement","thumbnail","pageYScroll","j","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/sales-block/index.js","displayValue","select","after","one","isFirst","showToggle","includes","not","show","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/page/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/global-search/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/global-search/search-form-collapsible.js","_classCallCheck","Constructor","TypeError","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","_lib2","_lib","SearchFormCollapsible","enabled","formElements","elementsSelector","watch","toggle","disable","removeAttr","handler","enable","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site-footer/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/sprites/index.js","files","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/tables.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/video-block.js","videoContainers","playButton","querySelector","video","paused","play","classList","pause","remove","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/utilities/a11y__focus.js","_focusSource","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/utilities/index.js","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/event/shadow-focus.js","_activeElements2","_activeElements","_decorateService2","_decorateService","engage","disengage","createShadowRoot","blurTimer","blurElement","handleElementBlurEvent","stopHandleElementBlurEvent","clearImmediate","setImmediate","handleFocusChange","observeElementBlurEvent","removeEventListener","_active","shadowFocusEvent","CustomEvent","bubbles","cancelable","elements","active","hosts","handleDocumentFocusEvent","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/active-elements.js","walkToShadowedElement","list","activeElement","shadowRoot","walkFromShadowedElement","concat","body","_shadowed2","_shadowed","_shadowHostParents2","_shadowHostParents","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/shadow-host-parents.js","_shadowHost2","_shadowHost","_contextToElement2","_contextToElement","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/shadow-host.js","DOCUMENT_FRAGMENT_NODE","host","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/is/shadowed.js","resolveDocument","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/observe/interaction-type.js","handleWindowBlurEvent","_activePointers","_activeKeys","handlePointerStartEvent","isPrimary","handlePointerEndEvent","handleKeyStartEvent","which","handleKeyEndEvent","getInteractionType","pointer","pointerStartEvents","pointerEndEvents","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/style/focus-source.js","handleFocusEvent","source","focusEventName","interactionType","interactionTypeHandler","lock","blurEventName","used","current","getCurrentFocusSource","getUsedFocusSource","lockFocusSource","unlockFocusSource","shadowHandle","unlock","_shadowFocus2","_shadowFocus","_interactionType2","_interactionType","supportsFocusIn","script","initial","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/context-to-element.js","defaultToDocument","Node","DOCUMENT_NODE","ELEMENT_NODE","_nodeArray2","_nodeArray","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/decorate-service.js","destruct","instances","_result","initialize","noop","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/node-array.js","input","String","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/toggle-class.js","getClassNames","classNames","idx","shouldHaveClass","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/bootstrap/dist/js/bootstrap.js","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","global","define","Popper","_interopDefaultLegacy","_defineProperties","_extends","_inheritsLoose","subClass","superClass","create","_setPrototypeOf","setPrototypeOf","__proto__","toType","toString","getSpecialTransitionEndEvent","bindType","TRANSITION_END","delegateType","handle","$__default","is","handleObj","transitionEndEmulator","_this","called","Util","triggerTransitionEnd","allowedAttribute","allowedAttributeList","attrName","uriAttrs","SAFE_URL_PATTERN","nodeValue","DATA_URL_PATTERN","regExp","attrRegex","len","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","whitelistKeys","elName","attributeList","whitelistedAttributes","Popper__default","getUID","prefix","random","getElementById","getSelectorFromElement","hrefAttr","_","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","offsetHeight","supportsTransitionEnd","isElement","typeCheckConfig","componentName","config","configTypes","property","expectedTypes","valueType","findShadowRoot","attachShadow","getRootNode","ShadowRoot","jQueryDetection","version","emulateTransitionEnd","special","JQUERY_NO_CONFLICT$a","Alert","_element","_proto","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closeEvent","Event","_destroyElement","detach","_jQueryInterface","_handleDismiss","alertInstance","noConflict","JQUERY_NO_CONFLICT$9","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","checked","contains","avoidTriggerChange","initialButton","inputBtn","buttons","_i","_len","_button","NAME$8","EVENT_KEY$8","JQUERY_NO_CONFLICT$8","SELECTOR_INDICATORS","Default$7","interval","keyboard","slide","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","_updateInterval","visibilityState","to","activeIndex","_getItemIndex","direction","off","_handleSwipe","absDeltax","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","clientX","end","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","CLASS_NAME_ACTIVE$2","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","JQUERY_NO_CONFLICT$7","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","dimension","_getDimension","setTransitioning","complete","CLASS_NAME_COLLAPSE","capitalizedDimension","scrollSize","triggerArrayLength","$elem","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","NAME$6","JQUERY_NO_CONFLICT$6","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","Default$5","offset","flip","boundary","reference","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","scheduleUpdate","Default","DefaultType","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","EVENT_CLICK_DATA_API$2","JQUERY_NO_CONFLICT$5","SELECTOR_DIALOG","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","overflowY","modalTransitionDuration","modalBody","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this9","animate","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","right","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","_this11","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","area","br","col","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","small","span","sub","sup","strong","u","ul","NAME$4","JQUERY_NO_CONFLICT$4","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","delay","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","isInTheDom","ownerDocument","tipId","NAME","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX$1","setElementContent","CLASS_NAME_FADE$3","content","empty","append","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","popper","initConfigAnimation","NAME$3","JQUERY_NO_CONFLICT$3","BSCLS_PREFIX_REGEX","Default$2","DefaultType$2","Popover","_Tooltip","_getContent","CLASS_PREFIX","CLASS_NAME_FADE$2","NAME$2","JQUERY_NO_CONFLICT$2","EVENT_SCROLL","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN_ITEMS","Default$1","method","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","sort","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","scrollSpysLength","$spy","JQUERY_NO_CONFLICT$1","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","activeElements","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","JQUERY_NO_CONFLICT","autohide","Toast","_clearTimeout","_close","Scrollspy","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/node_modules/ms/index.js","parse","exec","n","fmtShort","ms","msAbs","fmtLong","plural","isPlural","isFinite","long","JSON","stringify","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/browser.js","useColors","process","__nwjs","WebkitAppearance","console","firebug","exception","table","$1","formatArgs","namespace","humanize","color","lastC","_console","save","namespaces","storage","setItem","removeItem","error","load","r","getItem","env","DEBUG","_typeof2","localStorage","colors","formatters","message","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/common.js","setup","selectColor","charCodeAt","createDebug","debug","_key","curr","Number","prevTime","coerce","format","formatter","names","skips","stack","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/popper.js/dist/esm/popper.js","microtaskDebounce","Promise","then","taskDebounce","scheduled","timeoutDuration","isFunction","functionToCheck","getType","getStyleComputedProperty","defaultView","getComputedStyle","getParentNode","getScrollParent","_getStyleComputedProp","overflow","overflowX","getReferenceNode","referenceNode","isIE","isIE11","isIE10","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","isOffsetContainer","firstElementChild","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","subtract","scrollLeft","modifier","getBordersSize","styles","sideA","sideB","getSize","computedStyle","getWindowSizes","getClientRect","sizes","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","refRect","rects","sortedAreas","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","getOuterSizes","marginBottom","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","findIndex","cur","runModifiers","ends","warn","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","removeEventListeners","isNumeric","setStyles","unit","setAttributes","arrowElement","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","floor","noRound","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","devicePixelRatio","isFirefox","prefixedProperty","invertTop","invertLeft","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","_data$offsets$arrow","sideCapitalized","altSide","opSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","getOppositeVariation","clockwise","counter","validPlacements","reverse","placementOpposite","flipOrder","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","toValue","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","index2","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","shiftvariation","shiftOffsets","bound","inner","subtractLength","isBrowser","longerTimeoutBrowsers","supportsMicroTasks","MSInputMethodContext","documentMode","classCallCheck","createClass","placements","onLoad","Defaults","Utils","PopperUtils","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/process/browser.js","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","run","Item","nextTick","browser","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/webpack/buildin/global.js","g","Function","eval","/home/vsts/work/1/s/src/SCF/node_modules/extract-text-webpack-plugin/dist/loader.js??ref--14-0!/home/vsts/work/1/s/src/SCF/node_modules/css-loader/index.js??ref--14-1!/home/vsts/work/1/s/src/SCF/node_modules/postcss-loader/lib/index.js??ref--14-2!/home/vsts/work/1/s/src/SCF/node_modules/sass-loader/lib/loader.js??ref--14-3!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/index.scss","/home/vsts/work/1/s/src/SCF/node_modules/file-loader/dist/cjs.js??ref--6-0!/home/vsts/work/1/s/src/SCF/node_modules/extract-loader/lib/extractLoader.js!/home/vsts/work/1/s/src/SCF/node_modules/html-loader/index.js??ref--6-2!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/favicons/html_code.html","external \"jQuery\"","jQuery","multi /home/vsts/work/1/s/src/SCF//client/src/site__csl001/index.js /home/vsts/work/1/s/src/SCF//client/src/site__csl001/index.scss"],"mappings":"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","file":"scripts/site__csl001--579090095dd711ad2f62.js","sourcesContent":["webpackJsonp([\"site__csl001\"],{\n\n/***/ \"/home/vsts/work/1/s/src/SCF/client/src/core/vendor/photoswipe/photoswipe-ui-default.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! PhotoSwipe Default UI - 4.1.3 - 2019-01-08\n* http://photoswipe.com\n* Copyright (c) 2019 Dmitry Semenov; */\n/**\n*\n* UI on top of main sliding area (caption, arrows, close button, etc.).\n* Built just using public methods/properties of PhotoSwipe.\n* \n*/\n(function (root, factory) { \n\tif (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\troot.PhotoSwipeUI_Default = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\n\n\nvar PhotoSwipeUI_Default =\n function(pswp, framework) {\n\n\tvar ui = this;\n\tvar _overlayUIUpdated = false,\n\t\t_controlsVisible = true,\n\t\t_fullscrenAPI,\n\t\t_controls,\n\t\t_captionContainer,\n\t\t_fakeCaptionContainer,\n\t\t_indexIndicator,\n\t\t_shareButton,\n\t\t_shareModal,\n\t\t_shareModalHidden = true,\n\t\t_initalCloseOnScrollValue,\n\t\t_isIdle,\n\t\t_listen,\n\n\t\t_loadingIndicator,\n\t\t_loadingIndicatorHidden,\n\t\t_loadingIndicatorTimeout,\n\n\t\t_galleryHasOneSlide,\n\n\t\t_options,\n\t\t_defaultUIOptions = {\n\t\t\tbarsSize: {top:44, bottom:'auto'},\n\t\t\tcloseElClasses: ['item', 'caption', 'zoom-wrap', 'ui', 'top-bar'], \n\t\t\ttimeToIdle: 4000, \n\t\t\ttimeToIdleOutside: 1000,\n\t\t\tloadingIndicatorDelay: 1000, // 2s\n\t\t\t\n\t\t\taddCaptionHTMLFn: function(item, captionEl /*, isFake */) {\n\t\t\t\tif(!item.title) {\n\t\t\t\t\tcaptionEl.children[0].innerHTML = '';\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcaptionEl.children[0].innerHTML = item.title;\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tcloseEl:true,\n\t\t\tcaptionEl: true,\n\t\t\tfullscreenEl: true,\n\t\t\tzoomEl: true,\n\t\t\tshareEl: true,\n\t\t\tcounterEl: true,\n\t\t\tarrowEl: true,\n\t\t\tpreloaderEl: true,\n\n\t\t\ttapToClose: false,\n\t\t\ttapToToggleControls: true,\n\n\t\t\tclickToCloseNonZoomable: true,\n\n\t\t\tshareButtons: [\n\t\t\t\t{id:'facebook', label:'Share on Facebook', url:'https://www.facebook.com/sharer/sharer.php?u={{url}}'},\n\t\t\t\t{id:'twitter', label:'Tweet', url:'https://twitter.com/intent/tweet?text={{text}}&url={{url}}'},\n\t\t\t\t{id:'pinterest', label:'Pin it', url:'http://www.pinterest.com/pin/create/button/'+\n\t\t\t\t\t\t\t\t\t\t\t\t\t'?url={{url}}&media={{image_url}}&description={{text}}'},\n\t\t\t\t{id:'download', label:'Download image', url:'{{raw_image_url}}', download:true}\n\t\t\t],\n\t\t\tgetImageURLForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn pswp.currItem.src || '';\n\t\t\t},\n\t\t\tgetPageURLForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn window.location.href;\n\t\t\t},\n\t\t\tgetTextForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn pswp.currItem.title || '';\n\t\t\t},\n\t\t\t\t\n\t\t\tindexIndicatorSep: ' / ',\n\t\t\tfitControlsWidth: 1200\n\n\t\t},\n\t\t_blockControlsTap,\n\t\t_blockControlsTapTimeout;\n\n\n\n\tvar _onControlsTap = function(e) {\n\t\t\tif(_blockControlsTap) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\n\t\t\te = e || window.event;\n\n\t\t\tif(_options.timeToIdle && _options.mouseUsed && !_isIdle) {\n\t\t\t\t// reset idle timer\n\t\t\t\t_onIdleMouseMove();\n\t\t\t}\n\n\n\t\t\tvar target = e.target || e.srcElement,\n\t\t\t\tuiElement,\n\t\t\t\tclickedClass = target.getAttribute('class') || '',\n\t\t\t\tfound;\n\n\t\t\tfor(var i = 0; i < _uiElements.length; i++) {\n\t\t\t\tuiElement = _uiElements[i];\n\t\t\t\tif(uiElement.onTap && clickedClass.indexOf('pswp__' + uiElement.name ) > -1 ) {\n\t\t\t\t\tuiElement.onTap();\n\t\t\t\t\tfound = true;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(found) {\n\t\t\t\tif(e.stopPropagation) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\t_blockControlsTap = true;\n\n\t\t\t\t// Some versions of Android don't prevent ghost click event \n\t\t\t\t// when preventDefault() was called on touchstart and/or touchend.\n\t\t\t\t// \n\t\t\t\t// This happens on v4.3, 4.2, 4.1, \n\t\t\t\t// older versions strangely work correctly, \n\t\t\t\t// but just in case we add delay on all of them)\t\n\t\t\t\tvar tapDelay = framework.features.isOldAndroid ? 600 : 30;\n\t\t\t\t_blockControlsTapTimeout = setTimeout(function() {\n\t\t\t\t\t_blockControlsTap = false;\n\t\t\t\t}, tapDelay);\n\t\t\t}\n\n\t\t},\n\t\t_fitControlsInViewport = function() {\n\t\t\treturn !pswp.likelyTouchDevice || _options.mouseUsed || screen.width > _options.fitControlsWidth;\n\t\t},\n\t\t_togglePswpClass = function(el, cName, add) {\n\t\t\tframework[ (add ? 'add' : 'remove') + 'Class' ](el, 'pswp__' + cName);\n\t\t},\n\n\t\t// add class when there is just one item in the gallery\n\t\t// (by default it hides left/right arrows and 1ofX counter)\n\t\t_countNumItems = function() {\n\t\t\tvar hasOneSlide = (_options.getNumItemsFn() === 1);\n\n\t\t\tif(hasOneSlide !== _galleryHasOneSlide) {\n\t\t\t\t_togglePswpClass(_controls, 'ui--one-slide', hasOneSlide);\n\t\t\t\t_galleryHasOneSlide = hasOneSlide;\n\t\t\t}\n\t\t},\n\t\t_toggleShareModalClass = function() {\n\t\t\t_togglePswpClass(_shareModal, 'share-modal--hidden', _shareModalHidden);\n\t\t},\n\t\t_toggleShareModal = function() {\n\n\t\t\t_shareModalHidden = !_shareModalHidden;\n\t\t\t\n\t\t\t\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModalClass();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(!_shareModalHidden) {\n\t\t\t\t\t\tframework.addClass(_shareModal, 'pswp__share-modal--fade-in');\n\t\t\t\t\t}\n\t\t\t\t}, 30);\n\t\t\t} else {\n\t\t\t\tframework.removeClass(_shareModal, 'pswp__share-modal--fade-in');\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(_shareModalHidden) {\n\t\t\t\t\t\t_toggleShareModalClass();\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t\t\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_updateShareURLs();\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t_openWindowPopup = function(e) {\n\t\t\te = e || window.event;\n\t\t\tvar target = e.target || e.srcElement;\n\n\t\t\tpswp.shout('shareLinkClick', e, target);\n\n\t\t\tif(!target.href) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif( target.hasAttribute('download') ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\twindow.open(target.href, 'pswp_share', 'scrollbars=yes,resizable=yes,toolbar=no,'+\n\t\t\t\t\t\t\t\t\t\t'location=yes,width=550,height=420,top=100,left=' + \n\t\t\t\t\t\t\t\t\t\t(window.screen ? Math.round(screen.width / 2 - 275) : 100) );\n\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModal();\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t},\n\t\t_updateShareURLs = function() {\n\t\t\tvar shareButtonOut = '',\n\t\t\t\tshareButtonData,\n\t\t\t\tshareURL,\n\t\t\t\timage_url,\n\t\t\t\tpage_url,\n\t\t\t\tshare_text;\n\n\t\t\tfor(var i = 0; i < _options.shareButtons.length; i++) {\n\t\t\t\tshareButtonData = _options.shareButtons[i];\n\n\t\t\t\timage_url = _options.getImageURLForShare(shareButtonData);\n\t\t\t\tpage_url = _options.getPageURLForShare(shareButtonData);\n\t\t\t\tshare_text = _options.getTextForShare(shareButtonData);\n\n\t\t\t\tshareURL = shareButtonData.url.replace('{{url}}', encodeURIComponent(page_url) )\n\t\t\t\t\t\t\t\t\t.replace('{{image_url}}', encodeURIComponent(image_url) )\n\t\t\t\t\t\t\t\t\t.replace('{{raw_image_url}}', image_url )\n\t\t\t\t\t\t\t\t\t.replace('{{text}}', encodeURIComponent(share_text) );\n\n\t\t\t\tshareButtonOut += '' + \n\t\t\t\t\t\t\t\t\tshareButtonData.label + '';\n\n\t\t\t\tif(_options.parseShareButtonOut) {\n\t\t\t\t\tshareButtonOut = _options.parseShareButtonOut(shareButtonData, shareButtonOut);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_shareModal.children[0].innerHTML = shareButtonOut;\n\t\t\t_shareModal.children[0].onclick = _openWindowPopup;\n\n\t\t},\n\t\t_hasCloseClass = function(target) {\n\t\t\tfor(var i = 0; i < _options.closeElClasses.length; i++) {\n\t\t\t\tif( framework.hasClass(target, 'pswp__' + _options.closeElClasses[i]) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_idleInterval,\n\t\t_idleTimer,\n\t\t_idleIncrement = 0,\n\t\t_onIdleMouseMove = function() {\n\t\t\tclearTimeout(_idleTimer);\n\t\t\t_idleIncrement = 0;\n\t\t\tif(_isIdle) {\n\t\t\t\tui.setIdle(false);\n\t\t\t}\n\t\t},\n\t\t_onMouseLeaveWindow = function(e) {\n\t\t\te = e ? e : window.event;\n\t\t\tvar from = e.relatedTarget || e.toElement;\n\t\t\tif (!from || from.nodeName === 'HTML') {\n\t\t\t\tclearTimeout(_idleTimer);\n\t\t\t\t_idleTimer = setTimeout(function() {\n\t\t\t\t\tui.setIdle(true);\n\t\t\t\t}, _options.timeToIdleOutside);\n\t\t\t}\n\t\t},\n\t\t_setupFullscreenAPI = function() {\n\t\t\tif(_options.fullscreenEl && !framework.features.isOldAndroid) {\n\t\t\t\tif(!_fullscrenAPI) {\n\t\t\t\t\t_fullscrenAPI = ui.getFullscreenAPI();\n\t\t\t\t}\n\t\t\t\tif(_fullscrenAPI) {\n\t\t\t\t\tframework.bind(document, _fullscrenAPI.eventK, ui.updateFullscreen);\n\t\t\t\t\tui.updateFullscreen();\n\t\t\t\t\tframework.addClass(pswp.template, 'pswp--supports-fs');\n\t\t\t\t} else {\n\t\t\t\t\tframework.removeClass(pswp.template, 'pswp--supports-fs');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_setupLoadingIndicator = function() {\n\t\t\t// Setup loading indicator\n\t\t\tif(_options.preloaderEl) {\n\t\t\t\n\t\t\t\t_toggleLoadingIndicator(true);\n\n\t\t\t\t_listen('beforeChange', function() {\n\n\t\t\t\t\tclearTimeout(_loadingIndicatorTimeout);\n\n\t\t\t\t\t// display loading indicator with delay\n\t\t\t\t\t_loadingIndicatorTimeout = setTimeout(function() {\n\n\t\t\t\t\t\tif(pswp.currItem && pswp.currItem.loading) {\n\n\t\t\t\t\t\t\tif( !pswp.allowProgressiveImg() || (pswp.currItem.img && !pswp.currItem.img.naturalWidth) ) {\n\t\t\t\t\t\t\t\t// show preloader if progressive loading is not enabled, \n\t\t\t\t\t\t\t\t// or image width is not defined yet (because of slow connection)\n\t\t\t\t\t\t\t\t_toggleLoadingIndicator(false); \n\t\t\t\t\t\t\t\t// items-controller.js function allowProgressiveImg\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_toggleLoadingIndicator(true); // hide preloader\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}, _options.loadingIndicatorDelay);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t_listen('imageLoadComplete', function(index, item) {\n\t\t\t\t\tif(pswp.currItem === item) {\n\t\t\t\t\t\t_toggleLoadingIndicator(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\t\t},\n\t\t_toggleLoadingIndicator = function(hide) {\n\t\t\tif( _loadingIndicatorHidden !== hide ) {\n\t\t\t\t_togglePswpClass(_loadingIndicator, 'preloader--active', !hide);\n\t\t\t\t_loadingIndicatorHidden = hide;\n\t\t\t}\n\t\t},\n\t\t_applyNavBarGaps = function(item) {\n\t\t\tvar gap = item.vGap;\n\n\t\t\tif( _fitControlsInViewport() ) {\n\t\t\t\t\n\t\t\t\tvar bars = _options.barsSize; \n\t\t\t\tif(_options.captionEl && bars.bottom === 'auto') {\n\t\t\t\t\tif(!_fakeCaptionContainer) {\n\t\t\t\t\t\t_fakeCaptionContainer = framework.createEl('pswp__caption pswp__caption--fake');\n\t\t\t\t\t\t_fakeCaptionContainer.appendChild( framework.createEl('pswp__caption__center') );\n\t\t\t\t\t\t_controls.insertBefore(_fakeCaptionContainer, _captionContainer);\n\t\t\t\t\t\tframework.addClass(_controls, 'pswp__ui--fit');\n\t\t\t\t\t}\n\t\t\t\t\tif( _options.addCaptionHTMLFn(item, _fakeCaptionContainer, true) ) {\n\n\t\t\t\t\t\tvar captionSize = _fakeCaptionContainer.clientHeight;\n\t\t\t\t\t\tgap.bottom = parseInt(captionSize,10) || 44;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgap.bottom = bars.top; // if no caption, set size of bottom gap to size of top\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgap.bottom = bars.bottom === 'auto' ? 0 : bars.bottom;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// height of top bar is static, no need to calculate it\n\t\t\t\tgap.top = bars.top;\n\t\t\t} else {\n\t\t\t\tgap.top = gap.bottom = 0;\n\t\t\t}\n\t\t},\n\t\t_setupIdle = function() {\n\t\t\t// Hide controls when mouse is used\n\t\t\tif(_options.timeToIdle) {\n\t\t\t\t_listen('mouseUsed', function() {\n\t\t\t\t\t\n\t\t\t\t\tframework.bind(document, 'mousemove', _onIdleMouseMove);\n\t\t\t\t\tframework.bind(document, 'mouseout', _onMouseLeaveWindow);\n\n\t\t\t\t\t_idleInterval = setInterval(function() {\n\t\t\t\t\t\t_idleIncrement++;\n\t\t\t\t\t\tif(_idleIncrement === 2) {\n\t\t\t\t\t\t\tui.setIdle(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, _options.timeToIdle / 2);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t_setupHidingControlsDuringGestures = function() {\n\n\t\t\t// Hide controls on vertical drag\n\t\t\t_listen('onVerticalDrag', function(now) {\n\t\t\t\tif(_controlsVisible && now < 0.95) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t} else if(!_controlsVisible && now >= 0.95) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Hide controls when pinching to close\n\t\t\tvar pinchControlsHidden;\n\t\t\t_listen('onPinchClose' , function(now) {\n\t\t\t\tif(_controlsVisible && now < 0.9) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t\tpinchControlsHidden = true;\n\t\t\t\t} else if(pinchControlsHidden && !_controlsVisible && now > 0.9) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_listen('zoomGestureEnded', function() {\n\t\t\t\tpinchControlsHidden = false;\n\t\t\t\tif(pinchControlsHidden && !_controlsVisible) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t};\n\n\n\n\tvar _uiElements = [\n\t\t{ \n\t\t\tname: 'caption', \n\t\t\toption: 'captionEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_captionContainer = el; \n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'share-modal', \n\t\t\toption: 'shareEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_shareModal = el;\n\t\t\t},\n\t\t\tonTap: function() {\n\t\t\t\t_toggleShareModal();\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--share', \n\t\t\toption: 'shareEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_shareButton = el;\n\t\t\t},\n\t\t\tonTap: function() {\n\t\t\t\t_toggleShareModal();\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--zoom', \n\t\t\toption: 'zoomEl',\n\t\t\tonTap: pswp.toggleDesktopZoom\n\t\t},\n\t\t{ \n\t\t\tname: 'counter', \n\t\t\toption: 'counterEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_indexIndicator = el;\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--close', \n\t\t\toption: 'closeEl',\n\t\t\tonTap: pswp.close\n\t\t},\n\t\t{ \n\t\t\tname: 'button--arrow--left', \n\t\t\toption: 'arrowEl',\n\t\t\tonTap: pswp.prev\n\t\t},\n\t\t{ \n\t\t\tname: 'button--arrow--right', \n\t\t\toption: 'arrowEl',\n\t\t\tonTap: pswp.next\n\t\t},\n\t\t{ \n\t\t\tname: 'button--fs', \n\t\t\toption: 'fullscreenEl',\n\t\t\tonTap: function() { \n\t\t\t\tif(_fullscrenAPI.isFullscreen()) {\n\t\t\t\t\t_fullscrenAPI.exit();\n\t\t\t\t} else {\n\t\t\t\t\t_fullscrenAPI.enter();\n\t\t\t\t}\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'preloader', \n\t\t\toption: 'preloaderEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_loadingIndicator = el;\n\t\t\t} \n\t\t}\n\n\t];\n\n\tvar _setupUIElements = function() {\n\t\tvar item,\n\t\t\tclassAttr,\n\t\t\tuiElement;\n\n\t\tvar loopThroughChildElements = function(sChildren) {\n\t\t\tif(!sChildren) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar l = sChildren.length;\n\t\t\tfor(var i = 0; i < l; i++) {\n\t\t\t\titem = sChildren[i];\n\t\t\t\tclassAttr = item.className;\n\n\t\t\t\tfor(var a = 0; a < _uiElements.length; a++) {\n\t\t\t\t\tuiElement = _uiElements[a];\n\n\t\t\t\t\tif(classAttr.indexOf('pswp__' + uiElement.name) > -1 ) {\n\n\t\t\t\t\t\tif( _options[uiElement.option] ) { // if element is not disabled from options\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tframework.removeClass(item, 'pswp__element--disabled');\n\t\t\t\t\t\t\tif(uiElement.onInit) {\n\t\t\t\t\t\t\t\tuiElement.onInit(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t//item.style.display = 'block';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tframework.addClass(item, 'pswp__element--disabled');\n\t\t\t\t\t\t\t//item.style.display = 'none';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tloopThroughChildElements(_controls.children);\n\n\t\tvar topBar = framework.getChildByClass(_controls, 'pswp__top-bar');\n\t\tif(topBar) {\n\t\t\tloopThroughChildElements( topBar.children );\n\t\t}\n\t};\n\n\n\t\n\n\tui.init = function() {\n\n\t\t// extend options\n\t\tframework.extend(pswp.options, _defaultUIOptions, true);\n\n\t\t// create local link for fast access\n\t\t_options = pswp.options;\n\n\t\t// find pswp__ui element\n\t\t_controls = framework.getChildByClass(pswp.scrollWrap, 'pswp__ui');\n\n\t\t// create local link\n\t\t_listen = pswp.listen;\n\n\n\t\t_setupHidingControlsDuringGestures();\n\n\t\t// update controls when slides change\n\t\t_listen('beforeChange', ui.update);\n\n\t\t// toggle zoom on double-tap\n\t\t_listen('doubleTap', function(point) {\n\t\t\tvar initialZoomLevel = pswp.currItem.initialZoomLevel;\n\t\t\tif(pswp.getZoomLevel() !== initialZoomLevel) {\n\t\t\t\tpswp.zoomTo(initialZoomLevel, point, 333);\n\t\t\t} else {\n\t\t\t\tpswp.zoomTo(_options.getDoubleTapZoom(false, pswp.currItem), point, 333);\n\t\t\t}\n\t\t});\n\n\t\t// Allow text selection in caption\n\t\t_listen('preventDragEvent', function(e, isDown, preventObj) {\n\t\t\tvar t = e.target || e.srcElement;\n\t\t\tif(\n\t\t\t\tt && \n\t\t\t\tt.getAttribute('class') && e.type.indexOf('mouse') > -1 && \n\t\t\t\t( t.getAttribute('class').indexOf('__caption') > 0 || (/(SMALL|STRONG|EM)/i).test(t.tagName) ) \n\t\t\t) {\n\t\t\t\tpreventObj.prevent = false;\n\t\t\t}\n\t\t});\n\n\t\t// bind events for UI\n\t\t_listen('bindEvents', function() {\n\t\t\tframework.bind(_controls, 'pswpTap click', _onControlsTap);\n\t\t\tframework.bind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);\n\n\t\t\tif(!pswp.likelyTouchDevice) {\n\t\t\t\tframework.bind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);\n\t\t\t}\n\t\t});\n\n\t\t// unbind events for UI\n\t\t_listen('unbindEvents', function() {\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModal();\n\t\t\t}\n\n\t\t\tif(_idleInterval) {\n\t\t\t\tclearInterval(_idleInterval);\n\t\t\t}\n\t\t\tframework.unbind(document, 'mouseout', _onMouseLeaveWindow);\n\t\t\tframework.unbind(document, 'mousemove', _onIdleMouseMove);\n\t\t\tframework.unbind(_controls, 'pswpTap click', _onControlsTap);\n\t\t\tframework.unbind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);\n\t\t\tframework.unbind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);\n\n\t\t\tif(_fullscrenAPI) {\n\t\t\t\tframework.unbind(document, _fullscrenAPI.eventK, ui.updateFullscreen);\n\t\t\t\tif(_fullscrenAPI.isFullscreen()) {\n\t\t\t\t\t_options.hideAnimationDuration = 0;\n\t\t\t\t\t_fullscrenAPI.exit();\n\t\t\t\t}\n\t\t\t\t_fullscrenAPI = null;\n\t\t\t}\n\t\t});\n\n\n\t\t// clean up things when gallery is destroyed\n\t\t_listen('destroy', function() {\n\t\t\tif(_options.captionEl) {\n\t\t\t\tif(_fakeCaptionContainer) {\n\t\t\t\t\t_controls.removeChild(_fakeCaptionContainer);\n\t\t\t\t}\n\t\t\t\tframework.removeClass(_captionContainer, 'pswp__caption--empty');\n\t\t\t}\n\n\t\t\tif(_shareModal) {\n\t\t\t\t_shareModal.children[0].onclick = null;\n\t\t\t}\n\t\t\tframework.removeClass(_controls, 'pswp__ui--over-close');\n\t\t\tframework.addClass( _controls, 'pswp__ui--hidden');\n\t\t\tui.setIdle(false);\n\t\t});\n\t\t\n\n\t\tif(!_options.showAnimationDuration) {\n\t\t\tframework.removeClass( _controls, 'pswp__ui--hidden');\n\t\t}\n\t\t_listen('initialZoomIn', function() {\n\t\t\tif(_options.showAnimationDuration) {\n\t\t\t\tframework.removeClass( _controls, 'pswp__ui--hidden');\n\t\t\t}\n\t\t});\n\t\t_listen('initialZoomOut', function() {\n\t\t\tframework.addClass( _controls, 'pswp__ui--hidden');\n\t\t});\n\n\t\t_listen('parseVerticalMargin', _applyNavBarGaps);\n\t\t\n\t\t_setupUIElements();\n\n\t\tif(_options.shareEl && _shareButton && _shareModal) {\n\t\t\t_shareModalHidden = true;\n\t\t}\n\n\t\t_countNumItems();\n\n\t\t_setupIdle();\n\n\t\t_setupFullscreenAPI();\n\n\t\t_setupLoadingIndicator();\n\t};\n\n\tui.setIdle = function(isIdle) {\n\t\t_isIdle = isIdle;\n\t\t_togglePswpClass(_controls, 'ui--idle', isIdle);\n\t};\n\n\tui.update = function() {\n\t\t// Don't update UI if it's hidden\n\t\tif(_controlsVisible && pswp.currItem) {\n\t\t\t\n\t\t\tui.updateIndexIndicator();\n\n\t\t\tif(_options.captionEl) {\n\t\t\t\t_options.addCaptionHTMLFn(pswp.currItem, _captionContainer);\n\n\t\t\t\t_togglePswpClass(_captionContainer, 'caption--empty', !pswp.currItem.title);\n\t\t\t}\n\n\t\t\t_overlayUIUpdated = true;\n\n\t\t} else {\n\t\t\t_overlayUIUpdated = false;\n\t\t}\n\n\t\tif(!_shareModalHidden) {\n\t\t\t_toggleShareModal();\n\t\t}\n\n\t\t_countNumItems();\n\t};\n\n\tui.updateFullscreen = function(e) {\n\n\t\tif(e) {\n\t\t\t// some browsers change window scroll position during the fullscreen\n\t\t\t// so PhotoSwipe updates it just in case\n\t\t\tsetTimeout(function() {\n\t\t\t\tpswp.setScrollOffset( 0, framework.getScrollY() );\n\t\t\t}, 50);\n\t\t}\n\t\t\n\t\t// toogle pswp--fs class on root element\n\t\tframework[ (_fullscrenAPI.isFullscreen() ? 'add' : 'remove') + 'Class' ](pswp.template, 'pswp--fs');\n\t};\n\n\tui.updateIndexIndicator = function() {\n\t\tif(_options.counterEl) {\n\t\t\t_indexIndicator.innerHTML = (pswp.getCurrentIndex()+1) + \n\t\t\t\t\t\t\t\t\t\t_options.indexIndicatorSep + \n\t\t\t\t\t\t\t\t\t\t_options.getNumItemsFn();\n\t\t}\n\t};\n\t\n\tui.onGlobalTap = function(e) {\n\t\te = e || window.event;\n\t\tvar target = e.target || e.srcElement;\n\n\t\tif(_blockControlsTap) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(e.detail && e.detail.pointerType === 'mouse') {\n\n\t\t\t// close gallery if clicked outside of the image\n\t\t\tif(_hasCloseClass(target)) {\n\t\t\t\tpswp.close();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(framework.hasClass(target, 'pswp__img')) {\n\t\t\t\tif(pswp.getZoomLevel() === 1 && pswp.getZoomLevel() <= pswp.currItem.fitRatio) {\n\t\t\t\t\tif(_options.clickToCloseNonZoomable) {\n\t\t\t\t\t\tpswp.close();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpswp.toggleDesktopZoom(e.detail.releasePoint);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t} else {\n\n\t\t\t// tap anywhere (except buttons) to toggle visibility of controls\n\t\t\tif(_options.tapToToggleControls) {\n\t\t\t\tif(_controlsVisible) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t} else {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tap to close gallery\n\t\t\tif(_options.tapToClose && (framework.hasClass(target, 'pswp__img') || _hasCloseClass(target)) ) {\n\t\t\t\tpswp.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t}\n\t};\n\tui.onMouseOver = function(e) {\n\t\te = e || window.event;\n\t\tvar target = e.target || e.srcElement;\n\n\t\t// add class when mouse is over an element that should close the gallery\n\t\t_togglePswpClass(_controls, 'ui--over-close', _hasCloseClass(target));\n\t};\n\n\tui.hideControls = function() {\n\t\tframework.addClass(_controls,'pswp__ui--hidden');\n\t\t_controlsVisible = false;\n\t};\n\n\tui.showControls = function() {\n\t\t_controlsVisible = true;\n\t\tif(!_overlayUIUpdated) {\n\t\t\tui.update();\n\t\t}\n\t\tframework.removeClass(_controls,'pswp__ui--hidden');\n\t};\n\n\tui.supportsFullscreen = function() {\n\t\tvar d = document;\n\t\treturn !!(d.exitFullscreen || d.mozCancelFullScreen || d.webkitExitFullscreen || d.msExitFullscreen);\n\t};\n\n\tui.getFullscreenAPI = function() {\n\t\tvar dE = document.documentElement,\n\t\t\tapi,\n\t\t\ttF = 'fullscreenchange';\n\n\t\tif (dE.requestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'requestFullscreen',\n\t\t\t\texitK: 'exitFullscreen',\n\t\t\t\telementK: 'fullscreenElement',\n\t\t\t\teventK: tF\n\t\t\t};\n\n\t\t} else if(dE.mozRequestFullScreen ) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'mozRequestFullScreen',\n\t\t\t\texitK: 'mozCancelFullScreen',\n\t\t\t\telementK: 'mozFullScreenElement',\n\t\t\t\teventK: 'moz' + tF\n\t\t\t};\n\n\t\t\t\n\n\t\t} else if(dE.webkitRequestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'webkitRequestFullscreen',\n\t\t\t\texitK: 'webkitExitFullscreen',\n\t\t\t\telementK: 'webkitFullscreenElement',\n\t\t\t\teventK: 'webkit' + tF\n\t\t\t};\n\n\t\t} else if(dE.msRequestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'msRequestFullscreen',\n\t\t\t\texitK: 'msExitFullscreen',\n\t\t\t\telementK: 'msFullscreenElement',\n\t\t\t\teventK: 'MSFullscreenChange'\n\t\t\t};\n\t\t}\n\n\t\tif(api) {\n\t\t\tapi.enter = function() { \n\t\t\t\t// disable close-on-scroll in fullscreen\n\t\t\t\t_initalCloseOnScrollValue = _options.closeOnScroll; \n\t\t\t\t_options.closeOnScroll = false; \n\n\t\t\t\tif(this.enterK === 'webkitRequestFullscreen') {\n\t\t\t\t\tpswp.template[this.enterK]( Element.ALLOW_KEYBOARD_INPUT );\n\t\t\t\t} else {\n\t\t\t\t\treturn pswp.template[this.enterK](); \n\t\t\t\t}\n\t\t\t};\n\t\t\tapi.exit = function() { \n\t\t\t\t_options.closeOnScroll = _initalCloseOnScrollValue;\n\n\t\t\t\treturn document[this.exitK](); \n\n\t\t\t};\n\t\t\tapi.isFullscreen = function() { return document[this.elementK]; };\n\t\t}\n\n\t\treturn api;\n\t};\n\n\n\n};\nreturn PhotoSwipeUI_Default;\n\n\n});\n\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/client/src/core/vendor/photoswipe/photoswipe.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! PhotoSwipe - v4.1.3 - 2019-01-08\n* http://photoswipe.com\n* Copyright (c) 2019 Dmitry Semenov; */\n(function (root, factory) { \n\tif (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\troot.PhotoSwipe = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\tvar PhotoSwipe = function(template, UiClass, items, options){\n\n/*>>framework-bridge*/\n/**\n *\n * Set of generic functions used by gallery.\n * \n * You're free to modify anything here as long as functionality is kept.\n * \n */\nvar framework = {\n\tfeatures: null,\n\tbind: function(target, type, listener, unbind) {\n\t\tvar methodName = (unbind ? 'remove' : 'add') + 'EventListener';\n\t\ttype = type.split(' ');\n\t\tfor(var i = 0; i < type.length; i++) {\n\t\t\tif(type[i]) {\n\t\t\t\ttarget[methodName]( type[i], listener, false);\n\t\t\t}\n\t\t}\n\t},\n\tisArray: function(obj) {\n\t\treturn (obj instanceof Array);\n\t},\n\tcreateEl: function(classes, tag) {\n\t\tvar el = document.createElement(tag || 'div');\n\t\tif(classes) {\n\t\t\tel.className = classes;\n\t\t}\n\t\treturn el;\n\t},\n\tgetScrollY: function() {\n\t\tvar yOffset = window.pageYOffset;\n\t\treturn yOffset !== undefined ? yOffset : document.documentElement.scrollTop;\n\t},\n\tunbind: function(target, type, listener) {\n\t\tframework.bind(target,type,listener,true);\n\t},\n\tremoveClass: function(el, className) {\n\t\tvar reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\n\t\tel.className = el.className.replace(reg, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, ''); \n\t},\n\taddClass: function(el, className) {\n\t\tif( !framework.hasClass(el,className) ) {\n\t\t\tel.className += (el.className ? ' ' : '') + className;\n\t\t}\n\t},\n\thasClass: function(el, className) {\n\t\treturn el.className && new RegExp('(^|\\\\s)' + className + '(\\\\s|$)').test(el.className);\n\t},\n\tgetChildByClass: function(parentEl, childClassName) {\n\t\tvar node = parentEl.firstChild;\n\t\twhile(node) {\n\t\t\tif( framework.hasClass(node, childClassName) ) {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t\tnode = node.nextSibling;\n\t\t}\n\t},\n\tarraySearch: function(array, value, key) {\n\t\tvar i = array.length;\n\t\twhile(i--) {\n\t\t\tif(array[i][key] === value) {\n\t\t\t\treturn i;\n\t\t\t} \n\t\t}\n\t\treturn -1;\n\t},\n\textend: function(o1, o2, preventOverwrite) {\n\t\tfor (var prop in o2) {\n\t\t\tif (o2.hasOwnProperty(prop)) {\n\t\t\t\tif(preventOverwrite && o1.hasOwnProperty(prop)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\to1[prop] = o2[prop];\n\t\t\t}\n\t\t}\n\t},\n\teasing: {\n\t\tsine: {\n\t\t\tout: function(k) {\n\t\t\t\treturn Math.sin(k * (Math.PI / 2));\n\t\t\t},\n\t\t\tinOut: function(k) {\n\t\t\t\treturn - (Math.cos(Math.PI * k) - 1) / 2;\n\t\t\t}\n\t\t},\n\t\tcubic: {\n\t\t\tout: function(k) {\n\t\t\t\treturn --k * k * k + 1;\n\t\t\t}\n\t\t}\n\t\t/*\n\t\t\telastic: {\n\t\t\t\tout: function ( k ) {\n\n\t\t\t\t\tvar s, a = 0.1, p = 0.4;\n\t\t\t\t\tif ( k === 0 ) return 0;\n\t\t\t\t\tif ( k === 1 ) return 1;\n\t\t\t\t\tif ( !a || a < 1 ) { a = 1; s = p / 4; }\n\t\t\t\t\telse s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );\n\t\t\t\t\treturn ( a * Math.pow( 2, - 10 * k) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) + 1 );\n\n\t\t\t\t},\n\t\t\t},\n\t\t\tback: {\n\t\t\t\tout: function ( k ) {\n\t\t\t\t\tvar s = 1.70158;\n\t\t\t\t\treturn --k * k * ( ( s + 1 ) * k + s ) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t*/\n\t},\n\n\t/**\n\t * \n\t * @return {object}\n\t * \n\t * {\n\t * raf : request animation frame function\n\t * caf : cancel animation frame function\n\t * transfrom : transform property key (with vendor), or null if not supported\n\t * oldIE : IE8 or below\n\t * }\n\t * \n\t */\n\tdetectFeatures: function() {\n\t\tif(framework.features) {\n\t\t\treturn framework.features;\n\t\t}\n\t\tvar helperEl = framework.createEl(),\n\t\t\thelperStyle = helperEl.style,\n\t\t\tvendor = '',\n\t\t\tfeatures = {};\n\n\t\t// IE8 and below\n\t\tfeatures.oldIE = document.all && !document.addEventListener;\n\n\t\tfeatures.touch = 'ontouchstart' in window;\n\n\t\tif(window.requestAnimationFrame) {\n\t\t\tfeatures.raf = window.requestAnimationFrame;\n\t\t\tfeatures.caf = window.cancelAnimationFrame;\n\t\t}\n\n\t\tfeatures.pointerEvent = !!(window.PointerEvent) || navigator.msPointerEnabled;\n\n\t\t// fix false-positive detection of old Android in new IE\n\t\t// (IE11 ua string contains \"Android 4.0\")\n\t\t\n\t\tif(!features.pointerEvent) { \n\n\t\t\tvar ua = navigator.userAgent;\n\n\t\t\t// Detect if device is iPhone or iPod and if it's older than iOS 8\n\t\t\t// http://stackoverflow.com/a/14223920\n\t\t\t// \n\t\t\t// This detection is made because of buggy top/bottom toolbars\n\t\t\t// that don't trigger window.resize event.\n\t\t\t// For more info refer to _isFixedPosition variable in core.js\n\n\t\t\tif (/iP(hone|od)/.test(navigator.platform)) {\n\t\t\t\tvar v = (navigator.appVersion).match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n\t\t\t\tif(v && v.length > 0) {\n\t\t\t\t\tv = parseInt(v[1], 10);\n\t\t\t\t\tif(v >= 1 && v < 8 ) {\n\t\t\t\t\t\tfeatures.isOldIOSPhone = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Detect old Android (before KitKat)\n\t\t\t// due to bugs related to position:fixed\n\t\t\t// http://stackoverflow.com/questions/7184573/pick-up-the-android-version-in-the-browser-by-javascript\n\t\t\t\n\t\t\tvar match = ua.match(/Android\\s([0-9\\.]*)/);\n\t\t\tvar androidversion = match ? match[1] : 0;\n\t\t\tandroidversion = parseFloat(androidversion);\n\t\t\tif(androidversion >= 1 ) {\n\t\t\t\tif(androidversion < 4.4) {\n\t\t\t\t\tfeatures.isOldAndroid = true; // for fixed position bug & performance\n\t\t\t\t}\n\t\t\t\tfeatures.androidVersion = androidversion; // for touchend bug\n\t\t\t}\t\n\t\t\tfeatures.isMobileOpera = /opera mini|opera mobi/i.test(ua);\n\n\t\t\t// p.s. yes, yes, UA sniffing is bad, propose your solution for above bugs.\n\t\t}\n\t\t\n\t\tvar styleChecks = ['transform', 'perspective', 'animationName'],\n\t\t\tvendors = ['', 'webkit','Moz','ms','O'],\n\t\t\tstyleCheckItem,\n\t\t\tstyleName;\n\n\t\tfor(var i = 0; i < 4; i++) {\n\t\t\tvendor = vendors[i];\n\n\t\t\tfor(var a = 0; a < 3; a++) {\n\t\t\t\tstyleCheckItem = styleChecks[a];\n\n\t\t\t\t// uppercase first letter of property name, if vendor is present\n\t\t\t\tstyleName = vendor + (vendor ? \n\t\t\t\t\t\t\t\t\t\tstyleCheckItem.charAt(0).toUpperCase() + styleCheckItem.slice(1) : \n\t\t\t\t\t\t\t\t\t\tstyleCheckItem);\n\t\t\t\n\t\t\t\tif(!features[styleCheckItem] && styleName in helperStyle ) {\n\t\t\t\t\tfeatures[styleCheckItem] = styleName;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(vendor && !features.raf) {\n\t\t\t\tvendor = vendor.toLowerCase();\n\t\t\t\tfeatures.raf = window[vendor+'RequestAnimationFrame'];\n\t\t\t\tif(features.raf) {\n\t\t\t\t\tfeatures.caf = window[vendor+'CancelAnimationFrame'] || \n\t\t\t\t\t\t\t\t\twindow[vendor+'CancelRequestAnimationFrame'];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\t\n\t\tif(!features.raf) {\n\t\t\tvar lastTime = 0;\n\t\t\tfeatures.raf = function(fn) {\n\t\t\t\tvar currTime = new Date().getTime();\n\t\t\t\tvar timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\t\t\t\tvar id = window.setTimeout(function() { fn(currTime + timeToCall); }, timeToCall);\n\t\t\t\tlastTime = currTime + timeToCall;\n\t\t\t\treturn id;\n\t\t\t};\n\t\t\tfeatures.caf = function(id) { clearTimeout(id); };\n\t\t}\n\n\t\t// Detect SVG support\n\t\tfeatures.svg = !!document.createElementNS && \n\t\t\t\t\t\t!!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;\n\n\t\tframework.features = features;\n\n\t\treturn features;\n\t}\n};\n\nframework.detectFeatures();\n\n// Override addEventListener for old versions of IE\nif(framework.features.oldIE) {\n\n\tframework.bind = function(target, type, listener, unbind) {\n\t\t\n\t\ttype = type.split(' ');\n\n\t\tvar methodName = (unbind ? 'detach' : 'attach') + 'Event',\n\t\t\tevName,\n\t\t\t_handleEv = function() {\n\t\t\t\tlistener.handleEvent.call(listener);\n\t\t\t};\n\n\t\tfor(var i = 0; i < type.length; i++) {\n\t\t\tevName = type[i];\n\t\t\tif(evName) {\n\n\t\t\t\tif(typeof listener === 'object' && listener.handleEvent) {\n\t\t\t\t\tif(!unbind) {\n\t\t\t\t\t\tlistener['oldIE' + evName] = _handleEv;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(!listener['oldIE' + evName]) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget[methodName]( 'on' + evName, listener['oldIE' + evName]);\n\t\t\t\t} else {\n\t\t\t\t\ttarget[methodName]( 'on' + evName, listener);\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t};\n\t\n}\n\n/*>>framework-bridge*/\n\n/*>>core*/\n//function(template, UiClass, items, options)\n\nvar self = this;\n\n/**\n * Static vars, don't change unless you know what you're doing.\n */\nvar DOUBLE_TAP_RADIUS = 25, \n\tNUM_HOLDERS = 3;\n\n/**\n * Options\n */\nvar _options = {\n\tallowPanToNext:true,\n\tspacing: 0.12,\n\tbgOpacity: 1,\n\tmouseUsed: false,\n\tloop: true,\n\tpinchToClose: true,\n\tcloseOnScroll: true,\n\tcloseOnVerticalDrag: true,\n\tverticalDragRange: 0.75,\n\thideAnimationDuration: 333,\n\tshowAnimationDuration: 333,\n\tshowHideOpacity: false,\n\tfocus: true,\n\tescKey: true,\n\tarrowKeys: true,\n\tmainScrollEndFriction: 0.35,\n\tpanEndFriction: 0.35,\n\tisClickableElement: function(el) {\n return el.tagName === 'A';\n },\n getDoubleTapZoom: function(isMouseClick, item) {\n \tif(isMouseClick) {\n \t\treturn 1;\n \t} else {\n \t\treturn item.initialZoomLevel < 0.7 ? 1 : 1.33;\n \t}\n },\n maxSpreadZoom: 1.33,\n\tmodal: true,\n\n\t// not fully implemented yet\n\tscaleMode: 'fit' // TODO\n};\nframework.extend(_options, options);\n\n\n/**\n * Private helper variables & functions\n */\n\nvar _getEmptyPoint = function() { \n\t\treturn {x:0,y:0}; \n\t};\n\nvar _isOpen,\n\t_isDestroying,\n\t_closedByScroll,\n\t_currentItemIndex,\n\t_containerStyle,\n\t_containerShiftIndex,\n\t_currPanDist = _getEmptyPoint(),\n\t_startPanOffset = _getEmptyPoint(),\n\t_panOffset = _getEmptyPoint(),\n\t_upMoveEvents, // drag move, drag end & drag cancel events array\n\t_downEvents, // drag start events array\n\t_globalEventHandlers,\n\t_viewportSize = {},\n\t_currZoomLevel,\n\t_startZoomLevel,\n\t_translatePrefix,\n\t_translateSufix,\n\t_updateSizeInterval,\n\t_itemsNeedUpdate,\n\t_currPositionIndex = 0,\n\t_offset = {},\n\t_slideSize = _getEmptyPoint(), // size of slide area, including spacing\n\t_itemHolders,\n\t_prevItemIndex,\n\t_indexDiff = 0, // difference of indexes since last content update\n\t_dragStartEvent,\n\t_dragMoveEvent,\n\t_dragEndEvent,\n\t_dragCancelEvent,\n\t_transformKey,\n\t_pointerEventEnabled,\n\t_isFixedPosition = true,\n\t_likelyTouchDevice,\n\t_modules = [],\n\t_requestAF,\n\t_cancelAF,\n\t_initalClassName,\n\t_initalWindowScrollY,\n\t_oldIE,\n\t_currentWindowScrollY,\n\t_features,\n\t_windowVisibleSize = {},\n\t_renderMaxResolution = false,\n\t_orientationChangeTimeout,\n\n\n\t// Registers PhotoSWipe module (History, Controller ...)\n\t_registerModule = function(name, module) {\n\t\tframework.extend(self, module.publicMethods);\n\t\t_modules.push(name);\n\t},\n\n\t_getLoopedId = function(index) {\n\t\tvar numSlides = _getNumItems();\n\t\tif(index > numSlides - 1) {\n\t\t\treturn index - numSlides;\n\t\t} else if(index < 0) {\n\t\t\treturn numSlides + index;\n\t\t}\n\t\treturn index;\n\t},\n\t\n\t// Micro bind/trigger\n\t_listeners = {},\n\t_listen = function(name, fn) {\n\t\tif(!_listeners[name]) {\n\t\t\t_listeners[name] = [];\n\t\t}\n\t\treturn _listeners[name].push(fn);\n\t},\n\t_shout = function(name) {\n\t\tvar listeners = _listeners[name];\n\n\t\tif(listeners) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\targs.shift();\n\n\t\t\tfor(var i = 0; i < listeners.length; i++) {\n\t\t\t\tlisteners[i].apply(self, args);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getCurrentTime = function() {\n\t\treturn new Date().getTime();\n\t},\n\t_applyBgOpacity = function(opacity) {\n\t\t_bgOpacity = opacity;\n\t\tself.bg.style.opacity = opacity * _options.bgOpacity;\n\t},\n\n\t_applyZoomTransform = function(styleObj,x,y,zoom,item) {\n\t\tif(!_renderMaxResolution || (item && item !== self.currItem) ) {\n\t\t\tzoom = zoom / (item ? item.fitRatio : self.currItem.fitRatio);\t\n\t\t}\n\t\t\t\n\t\tstyleObj[_transformKey] = _translatePrefix + x + 'px, ' + y + 'px' + _translateSufix + ' scale(' + zoom + ')';\n\t},\n\t_applyCurrentZoomPan = function( allowRenderResolution ) {\n\t\tif(_currZoomElementStyle) {\n\n\t\t\tif(allowRenderResolution) {\n\t\t\t\tif(_currZoomLevel > self.currItem.fitRatio) {\n\t\t\t\t\tif(!_renderMaxResolution) {\n\t\t\t\t\t\t_setImageSize(self.currItem, false, true);\n\t\t\t\t\t\t_renderMaxResolution = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif(_renderMaxResolution) {\n\t\t\t\t\t\t_setImageSize(self.currItem);\n\t\t\t\t\t\t_renderMaxResolution = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\t_applyZoomTransform(_currZoomElementStyle, _panOffset.x, _panOffset.y, _currZoomLevel);\n\t\t}\n\t},\n\t_applyZoomPanToItem = function(item) {\n\t\tif(item.container) {\n\n\t\t\t_applyZoomTransform(item.container.style, \n\t\t\t\t\t\t\t\titem.initialPosition.x, \n\t\t\t\t\t\t\t\titem.initialPosition.y, \n\t\t\t\t\t\t\t\titem.initialZoomLevel,\n\t\t\t\t\t\t\t\titem);\n\t\t}\n\t},\n\t_setTranslateX = function(x, elStyle) {\n\t\telStyle[_transformKey] = _translatePrefix + x + 'px, 0px' + _translateSufix;\n\t},\n\t_moveMainScroll = function(x, dragging) {\n\n\t\tif(!_options.loop && dragging) {\n\t\t\tvar newSlideIndexOffset = _currentItemIndex + (_slideSize.x * _currPositionIndex - x) / _slideSize.x,\n\t\t\t\tdelta = Math.round(x - _mainScrollPos.x);\n\n\t\t\tif( (newSlideIndexOffset < 0 && delta > 0) || \n\t\t\t\t(newSlideIndexOffset >= _getNumItems() - 1 && delta < 0) ) {\n\t\t\t\tx = _mainScrollPos.x + delta * _options.mainScrollEndFriction;\n\t\t\t} \n\t\t}\n\t\t\n\t\t_mainScrollPos.x = x;\n\t\t_setTranslateX(x, _containerStyle);\n\t},\n\t_calculatePanOffset = function(axis, zoomLevel) {\n\t\tvar m = _midZoomPoint[axis] - _offset[axis];\n\t\treturn _startPanOffset[axis] + _currPanDist[axis] + m - m * ( zoomLevel / _startZoomLevel );\n\t},\n\t\n\t_equalizePoints = function(p1, p2) {\n\t\tp1.x = p2.x;\n\t\tp1.y = p2.y;\n\t\tif(p2.id) {\n\t\t\tp1.id = p2.id;\n\t\t}\n\t},\n\t_roundPoint = function(p) {\n\t\tp.x = Math.round(p.x);\n\t\tp.y = Math.round(p.y);\n\t},\n\n\t_mouseMoveTimeout = null,\n\t_onFirstMouseMove = function() {\n\t\t// Wait until mouse move event is fired at least twice during 100ms\n\t\t// We do this, because some mobile browsers trigger it on touchstart\n\t\tif(_mouseMoveTimeout ) { \n\t\t\tframework.unbind(document, 'mousemove', _onFirstMouseMove);\n\t\t\tframework.addClass(template, 'pswp--has_mouse');\n\t\t\t_options.mouseUsed = true;\n\t\t\t_shout('mouseUsed');\n\t\t}\n\t\t_mouseMoveTimeout = setTimeout(function() {\n\t\t\t_mouseMoveTimeout = null;\n\t\t}, 100);\n\t},\n\n\t_bindEvents = function() {\n\t\tframework.bind(document, 'keydown', self);\n\n\t\tif(_features.transform) {\n\t\t\t// don't bind click event in browsers that don't support transform (mostly IE8)\n\t\t\tframework.bind(self.scrollWrap, 'click', self);\n\t\t}\n\t\t\n\n\t\tif(!_options.mouseUsed) {\n\t\t\tframework.bind(document, 'mousemove', _onFirstMouseMove);\n\t\t}\n\n\t\tframework.bind(window, 'resize scroll orientationchange', self);\n\n\t\t_shout('bindEvents');\n\t},\n\n\t_unbindEvents = function() {\n\t\tframework.unbind(window, 'resize scroll orientationchange', self);\n\t\tframework.unbind(window, 'scroll', _globalEventHandlers.scroll);\n\t\tframework.unbind(document, 'keydown', self);\n\t\tframework.unbind(document, 'mousemove', _onFirstMouseMove);\n\n\t\tif(_features.transform) {\n\t\t\tframework.unbind(self.scrollWrap, 'click', self);\n\t\t}\n\n\t\tif(_isDragging) {\n\t\t\tframework.unbind(window, _upMoveEvents, self);\n\t\t}\n\n\t\tclearTimeout(_orientationChangeTimeout);\n\n\t\t_shout('unbindEvents');\n\t},\n\t\n\t_calculatePanBounds = function(zoomLevel, update) {\n\t\tvar bounds = _calculateItemSize( self.currItem, _viewportSize, zoomLevel );\n\t\tif(update) {\n\t\t\t_currPanBounds = bounds;\n\t\t}\n\t\treturn bounds;\n\t},\n\t\n\t_getMinZoomLevel = function(item) {\n\t\tif(!item) {\n\t\t\titem = self.currItem;\n\t\t}\n\t\treturn item.initialZoomLevel;\n\t},\n\t_getMaxZoomLevel = function(item) {\n\t\tif(!item) {\n\t\t\titem = self.currItem;\n\t\t}\n\t\treturn item.w > 0 ? _options.maxSpreadZoom : 1;\n\t},\n\n\t// Return true if offset is out of the bounds\n\t_modifyDestPanOffset = function(axis, destPanBounds, destPanOffset, destZoomLevel) {\n\t\tif(destZoomLevel === self.currItem.initialZoomLevel) {\n\t\t\tdestPanOffset[axis] = self.currItem.initialPosition[axis];\n\t\t\treturn true;\n\t\t} else {\n\t\t\tdestPanOffset[axis] = _calculatePanOffset(axis, destZoomLevel); \n\n\t\t\tif(destPanOffset[axis] > destPanBounds.min[axis]) {\n\t\t\t\tdestPanOffset[axis] = destPanBounds.min[axis];\n\t\t\t\treturn true;\n\t\t\t} else if(destPanOffset[axis] < destPanBounds.max[axis] ) {\n\t\t\t\tdestPanOffset[axis] = destPanBounds.max[axis];\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t_setupTransforms = function() {\n\n\t\tif(_transformKey) {\n\t\t\t// setup 3d transforms\n\t\t\tvar allow3dTransform = _features.perspective && !_likelyTouchDevice;\n\t\t\t_translatePrefix = 'translate' + (allow3dTransform ? '3d(' : '(');\n\t\t\t_translateSufix = _features.perspective ? ', 0px)' : ')';\t\n\t\t\treturn;\n\t\t}\n\n\t\t// Override zoom/pan/move functions in case old browser is used (most likely IE)\n\t\t// (so they use left/top/width/height, instead of CSS transform)\n\t\n\t\t_transformKey = 'left';\n\t\tframework.addClass(template, 'pswp--ie');\n\n\t\t_setTranslateX = function(x, elStyle) {\n\t\t\telStyle.left = x + 'px';\n\t\t};\n\t\t_applyZoomPanToItem = function(item) {\n\n\t\t\tvar zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,\n\t\t\t\ts = item.container.style,\n\t\t\t\tw = zoomRatio * item.w,\n\t\t\t\th = zoomRatio * item.h;\n\n\t\t\ts.width = w + 'px';\n\t\t\ts.height = h + 'px';\n\t\t\ts.left = item.initialPosition.x + 'px';\n\t\t\ts.top = item.initialPosition.y + 'px';\n\n\t\t};\n\t\t_applyCurrentZoomPan = function() {\n\t\t\tif(_currZoomElementStyle) {\n\n\t\t\t\tvar s = _currZoomElementStyle,\n\t\t\t\t\titem = self.currItem,\n\t\t\t\t\tzoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,\n\t\t\t\t\tw = zoomRatio * item.w,\n\t\t\t\t\th = zoomRatio * item.h;\n\n\t\t\t\ts.width = w + 'px';\n\t\t\t\ts.height = h + 'px';\n\n\n\t\t\t\ts.left = _panOffset.x + 'px';\n\t\t\t\ts.top = _panOffset.y + 'px';\n\t\t\t}\n\t\t\t\n\t\t};\n\t},\n\n\t_onKeyDown = function(e) {\n\t\tvar keydownAction = '';\n\t\tif(_options.escKey && e.keyCode === 27) { \n\t\t\tkeydownAction = 'close';\n\t\t} else if(_options.arrowKeys) {\n\t\t\tif(e.keyCode === 37) {\n\t\t\t\tkeydownAction = 'prev';\n\t\t\t} else if(e.keyCode === 39) { \n\t\t\t\tkeydownAction = 'next';\n\t\t\t}\n\t\t}\n\n\t\tif(keydownAction) {\n\t\t\t// don't do anything if special key pressed to prevent from overriding default browser actions\n\t\t\t// e.g. in Chrome on Mac cmd+arrow-left returns to previous page\n\t\t\tif( !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey ) {\n\t\t\t\tif(e.preventDefault) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t} else {\n\t\t\t\t\te.returnValue = false;\n\t\t\t\t} \n\t\t\t\tself[keydownAction]();\n\t\t\t}\n\t\t}\n\t},\n\n\t_onGlobalClick = function(e) {\n\t\tif(!e) {\n\t\t\treturn;\n\t\t}\n\n\t\t// don't allow click event to pass through when triggering after drag or some other gesture\n\t\tif(_moved || _zoomStarted || _mainScrollAnimating || _verticalDragInitiated) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\n\t_updatePageScrollOffset = function() {\n\t\tself.setScrollOffset(0, framework.getScrollY());\t\t\n\t};\n\t\n\n\n\t\n\n\n\n// Micro animation engine\nvar _animations = {},\n\t_numAnimations = 0,\n\t_stopAnimation = function(name) {\n\t\tif(_animations[name]) {\n\t\t\tif(_animations[name].raf) {\n\t\t\t\t_cancelAF( _animations[name].raf );\n\t\t\t}\n\t\t\t_numAnimations--;\n\t\t\tdelete _animations[name];\n\t\t}\n\t},\n\t_registerStartAnimation = function(name) {\n\t\tif(_animations[name]) {\n\t\t\t_stopAnimation(name);\n\t\t}\n\t\tif(!_animations[name]) {\n\t\t\t_numAnimations++;\n\t\t\t_animations[name] = {};\n\t\t}\n\t},\n\t_stopAllAnimations = function() {\n\t\tfor (var prop in _animations) {\n\n\t\t\tif( _animations.hasOwnProperty( prop ) ) {\n\t\t\t\t_stopAnimation(prop);\n\t\t\t} \n\t\t\t\n\t\t}\n\t},\n\t_animateProp = function(name, b, endProp, d, easingFn, onUpdate, onComplete) {\n\t\tvar startAnimTime = _getCurrentTime(), t;\n\t\t_registerStartAnimation(name);\n\n\t\tvar animloop = function(){\n\t\t\tif ( _animations[name] ) {\n\t\t\t\t\n\t\t\t\tt = _getCurrentTime() - startAnimTime; // time diff\n\t\t\t\t//b - beginning (start prop)\n\t\t\t\t//d - anim duration\n\n\t\t\t\tif ( t >= d ) {\n\t\t\t\t\t_stopAnimation(name);\n\t\t\t\t\tonUpdate(endProp);\n\t\t\t\t\tif(onComplete) {\n\t\t\t\t\t\tonComplete();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonUpdate( (endProp - b) * easingFn(t/d) + b );\n\n\t\t\t\t_animations[name].raf = _requestAF(animloop);\n\t\t\t}\n\t\t};\n\t\tanimloop();\n\t};\n\t\n\n\nvar publicMethods = {\n\n\t// make a few local variables and functions public\n\tshout: _shout,\n\tlisten: _listen,\n\tviewportSize: _viewportSize,\n\toptions: _options,\n\n\tisMainScrollAnimating: function() {\n\t\treturn _mainScrollAnimating;\n\t},\n\tgetZoomLevel: function() {\n\t\treturn _currZoomLevel;\n\t},\n\tgetCurrentIndex: function() {\n\t\treturn _currentItemIndex;\n\t},\n\tisDragging: function() {\n\t\treturn _isDragging;\n\t},\t\n\tisZooming: function() {\n\t\treturn _isZooming;\n\t},\n\tsetScrollOffset: function(x,y) {\n\t\t_offset.x = x;\n\t\t_currentWindowScrollY = _offset.y = y;\n\t\t_shout('updateScrollOffset', _offset);\n\t},\n\tapplyZoomPan: function(zoomLevel,panX,panY,allowRenderResolution) {\n\t\t_panOffset.x = panX;\n\t\t_panOffset.y = panY;\n\t\t_currZoomLevel = zoomLevel;\n\t\t_applyCurrentZoomPan( allowRenderResolution );\n\t},\n\n\tinit: function() {\n\n\t\tif(_isOpen || _isDestroying) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar i;\n\n\t\tself.framework = framework; // basic functionality\n\t\tself.template = template; // root DOM element of PhotoSwipe\n\t\tself.bg = framework.getChildByClass(template, 'pswp__bg');\n\n\t\t_initalClassName = template.className;\n\t\t_isOpen = true;\n\t\t\t\t\n\t\t_features = framework.detectFeatures();\n\t\t_requestAF = _features.raf;\n\t\t_cancelAF = _features.caf;\n\t\t_transformKey = _features.transform;\n\t\t_oldIE = _features.oldIE;\n\t\t\n\t\tself.scrollWrap = framework.getChildByClass(template, 'pswp__scroll-wrap');\n\t\tself.container = framework.getChildByClass(self.scrollWrap, 'pswp__container');\n\n\t\t_containerStyle = self.container.style; // for fast access\n\n\t\t// Objects that hold slides (there are only 3 in DOM)\n\t\tself.itemHolders = _itemHolders = [\n\t\t\t{el:self.container.children[0] , wrap:0, index: -1},\n\t\t\t{el:self.container.children[1] , wrap:0, index: -1},\n\t\t\t{el:self.container.children[2] , wrap:0, index: -1}\n\t\t];\n\n\t\t// hide nearby item holders until initial zoom animation finishes (to avoid extra Paints)\n\t\t_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'none';\n\n\t\t_setupTransforms();\n\n\t\t// Setup global events\n\t\t_globalEventHandlers = {\n\t\t\tresize: self.updateSize,\n\n\t\t\t// Fixes: iOS 10.3 resize event\n\t\t\t// does not update scrollWrap.clientWidth instantly after resize\n\t\t\t// https://github.com/dimsemenov/PhotoSwipe/issues/1315\n\t\t\torientationchange: function() {\n\t\t\t\tclearTimeout(_orientationChangeTimeout);\n\t\t\t\t_orientationChangeTimeout = setTimeout(function() {\n\t\t\t\t\tif(_viewportSize.x !== self.scrollWrap.clientWidth) {\n\t\t\t\t\t\tself.updateSize();\n\t\t\t\t\t}\n\t\t\t\t}, 500);\n\t\t\t},\n\t\t\tscroll: _updatePageScrollOffset,\n\t\t\tkeydown: _onKeyDown,\n\t\t\tclick: _onGlobalClick\n\t\t};\n\n\t\t// disable show/hide effects on old browsers that don't support CSS animations or transforms, \n\t\t// old IOS, Android and Opera mobile. Blackberry seems to work fine, even older models.\n\t\tvar oldPhone = _features.isOldIOSPhone || _features.isOldAndroid || _features.isMobileOpera;\n\t\tif(!_features.animationName || !_features.transform || oldPhone) {\n\t\t\t_options.showAnimationDuration = _options.hideAnimationDuration = 0;\n\t\t}\n\n\t\t// init modules\n\t\tfor(i = 0; i < _modules.length; i++) {\n\t\t\tself['init' + _modules[i]]();\n\t\t}\n\t\t\n\t\t// init\n\t\tif(UiClass) {\n\t\t\tvar ui = self.ui = new UiClass(self, framework);\n\t\t\tui.init();\n\t\t}\n\n\t\t_shout('firstUpdate');\n\t\t_currentItemIndex = _currentItemIndex || _options.index || 0;\n\t\t// validate index\n\t\tif( isNaN(_currentItemIndex) || _currentItemIndex < 0 || _currentItemIndex >= _getNumItems() ) {\n\t\t\t_currentItemIndex = 0;\n\t\t}\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\n\t\t\n\t\tif(_features.isOldIOSPhone || _features.isOldAndroid) {\n\t\t\t_isFixedPosition = false;\n\t\t}\n\t\t\n\t\ttemplate.setAttribute('aria-hidden', 'false');\n\t\tif(_options.modal) {\n\t\t\tif(!_isFixedPosition) {\n\t\t\t\ttemplate.style.position = 'absolute';\n\t\t\t\ttemplate.style.top = framework.getScrollY() + 'px';\n\t\t\t} else {\n\t\t\t\ttemplate.style.position = 'fixed';\n\t\t\t}\n\t\t}\n\n\t\tif(_currentWindowScrollY === undefined) {\n\t\t\t_shout('initialLayout');\n\t\t\t_currentWindowScrollY = _initalWindowScrollY = framework.getScrollY();\n\t\t}\n\t\t\n\t\t// add classes to root element of PhotoSwipe\n\t\tvar rootClasses = 'pswp--open ';\n\t\tif(_options.mainClass) {\n\t\t\trootClasses += _options.mainClass + ' ';\n\t\t}\n\t\tif(_options.showHideOpacity) {\n\t\t\trootClasses += 'pswp--animate_opacity ';\n\t\t}\n\t\trootClasses += _likelyTouchDevice ? 'pswp--touch' : 'pswp--notouch';\n\t\trootClasses += _features.animationName ? ' pswp--css_animation' : '';\n\t\trootClasses += _features.svg ? ' pswp--svg' : '';\n\t\tframework.addClass(template, rootClasses);\n\n\t\tself.updateSize();\n\n\t\t// initial update\n\t\t_containerShiftIndex = -1;\n\t\t_indexDiff = null;\n\t\tfor(i = 0; i < NUM_HOLDERS; i++) {\n\t\t\t_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, _itemHolders[i].el.style);\n\t\t}\n\n\t\tif(!_oldIE) {\n\t\t\tframework.bind(self.scrollWrap, _downEvents, self); // no dragging for old IE\n\t\t}\t\n\n\t\t_listen('initialZoomInEnd', function() {\n\t\t\tself.setContent(_itemHolders[0], _currentItemIndex-1);\n\t\t\tself.setContent(_itemHolders[2], _currentItemIndex+1);\n\n\t\t\t_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'block';\n\n\t\t\tif(_options.focus) {\n\t\t\t\t// focus causes layout, \n\t\t\t\t// which causes lag during the animation, \n\t\t\t\t// that's why we delay it untill the initial zoom transition ends\n\t\t\t\ttemplate.focus();\n\t\t\t}\n\t\t\t \n\n\t\t\t_bindEvents();\n\t\t});\n\n\t\t// set content for center slide (first time)\n\t\tself.setContent(_itemHolders[1], _currentItemIndex);\n\t\t\n\t\tself.updateCurrItem();\n\n\t\t_shout('afterInit');\n\n\t\tif(!_isFixedPosition) {\n\n\t\t\t// On all versions of iOS lower than 8.0, we check size of viewport every second.\n\t\t\t// \n\t\t\t// This is done to detect when Safari top & bottom bars appear, \n\t\t\t// as this action doesn't trigger any events (like resize). \n\t\t\t// \n\t\t\t// On iOS8 they fixed this.\n\t\t\t// \n\t\t\t// 10 Nov 2014: iOS 7 usage ~40%. iOS 8 usage 56%.\n\t\t\t\n\t\t\t_updateSizeInterval = setInterval(function() {\n\t\t\t\tif(!_numAnimations && !_isDragging && !_isZooming && (_currZoomLevel === self.currItem.initialZoomLevel) ) {\n\t\t\t\t\tself.updateSize();\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\n\t\tframework.addClass(template, 'pswp--visible');\n\t},\n\n\t// Close the gallery, then destroy it\n\tclose: function() {\n\t\tif(!_isOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\t_isOpen = false;\n\t\t_isDestroying = true;\n\t\t_shout('close');\n\t\t_unbindEvents();\n\n\t\t_showOrHide(self.currItem, null, true, self.destroy);\n\t},\n\n\t// destroys the gallery (unbinds events, cleans up intervals and timeouts to avoid memory leaks)\n\tdestroy: function() {\n\t\t_shout('destroy');\n\n\t\tif(_showOrHideTimeout) {\n\t\t\tclearTimeout(_showOrHideTimeout);\n\t\t}\n\t\t\n\t\ttemplate.setAttribute('aria-hidden', 'true');\n\t\ttemplate.className = _initalClassName;\n\n\t\tif(_updateSizeInterval) {\n\t\t\tclearInterval(_updateSizeInterval);\n\t\t}\n\n\t\tframework.unbind(self.scrollWrap, _downEvents, self);\n\n\t\t// we unbind scroll event at the end, as closing animation may depend on it\n\t\tframework.unbind(window, 'scroll', self);\n\n\t\t_stopDragUpdateLoop();\n\n\t\t_stopAllAnimations();\n\n\t\t_listeners = null;\n\t},\n\n\t/**\n\t * Pan image to position\n\t * @param {Number} x \n\t * @param {Number} y \n\t * @param {Boolean} force Will ignore bounds if set to true.\n\t */\n\tpanTo: function(x,y,force) {\n\t\tif(!force) {\n\t\t\tif(x > _currPanBounds.min.x) {\n\t\t\t\tx = _currPanBounds.min.x;\n\t\t\t} else if(x < _currPanBounds.max.x) {\n\t\t\t\tx = _currPanBounds.max.x;\n\t\t\t}\n\n\t\t\tif(y > _currPanBounds.min.y) {\n\t\t\t\ty = _currPanBounds.min.y;\n\t\t\t} else if(y < _currPanBounds.max.y) {\n\t\t\t\ty = _currPanBounds.max.y;\n\t\t\t}\n\t\t}\n\t\t\n\t\t_panOffset.x = x;\n\t\t_panOffset.y = y;\n\t\t_applyCurrentZoomPan();\n\t},\n\t\n\thandleEvent: function (e) {\n\t\te = e || window.event;\n\t\tif(_globalEventHandlers[e.type]) {\n\t\t\t_globalEventHandlers[e.type](e);\n\t\t}\n\t},\n\n\n\tgoTo: function(index) {\n\n\t\tindex = _getLoopedId(index);\n\n\t\tvar diff = index - _currentItemIndex;\n\t\t_indexDiff = diff;\n\n\t\t_currentItemIndex = index;\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\t\t_currPositionIndex -= diff;\n\t\t\n\t\t_moveMainScroll(_slideSize.x * _currPositionIndex);\n\t\t\n\n\t\t_stopAllAnimations();\n\t\t_mainScrollAnimating = false;\n\n\t\tself.updateCurrItem();\n\t},\n\tnext: function() {\n\t\tself.goTo( _currentItemIndex + 1);\n\t},\n\tprev: function() {\n\t\tself.goTo( _currentItemIndex - 1);\n\t},\n\n\t// update current zoom/pan objects\n\tupdateCurrZoomItem: function(emulateSetContent) {\n\t\tif(emulateSetContent) {\n\t\t\t_shout('beforeChange', 0);\n\t\t}\n\n\t\t// itemHolder[1] is middle (current) item\n\t\tif(_itemHolders[1].el.children.length) {\n\t\t\tvar zoomElement = _itemHolders[1].el.children[0];\n\t\t\tif( framework.hasClass(zoomElement, 'pswp__zoom-wrap') ) {\n\t\t\t\t_currZoomElementStyle = zoomElement.style;\n\t\t\t} else {\n\t\t\t\t_currZoomElementStyle = null;\n\t\t\t}\n\t\t} else {\n\t\t\t_currZoomElementStyle = null;\n\t\t}\n\t\t\n\t\t_currPanBounds = self.currItem.bounds;\t\n\t\t_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;\n\n\t\t_panOffset.x = _currPanBounds.center.x;\n\t\t_panOffset.y = _currPanBounds.center.y;\n\n\t\tif(emulateSetContent) {\n\t\t\t_shout('afterChange');\n\t\t}\n\t},\n\n\n\tinvalidateCurrItems: function() {\n\t\t_itemsNeedUpdate = true;\n\t\tfor(var i = 0; i < NUM_HOLDERS; i++) {\n\t\t\tif( _itemHolders[i].item ) {\n\t\t\t\t_itemHolders[i].item.needsUpdate = true;\n\t\t\t}\n\t\t}\n\t},\n\n\tupdateCurrItem: function(beforeAnimation) {\n\n\t\tif(_indexDiff === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar diffAbs = Math.abs(_indexDiff),\n\t\t\ttempHolder;\n\n\t\tif(beforeAnimation && diffAbs < 2) {\n\t\t\treturn;\n\t\t}\n\n\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\t\t_renderMaxResolution = false;\n\t\t\n\t\t_shout('beforeChange', _indexDiff);\n\n\t\tif(diffAbs >= NUM_HOLDERS) {\n\t\t\t_containerShiftIndex += _indexDiff + (_indexDiff > 0 ? -NUM_HOLDERS : NUM_HOLDERS);\n\t\t\tdiffAbs = NUM_HOLDERS;\n\t\t}\n\t\tfor(var i = 0; i < diffAbs; i++) {\n\t\t\tif(_indexDiff > 0) {\n\t\t\t\ttempHolder = _itemHolders.shift();\n\t\t\t\t_itemHolders[NUM_HOLDERS-1] = tempHolder; // move first to last\n\n\t\t\t\t_containerShiftIndex++;\n\t\t\t\t_setTranslateX( (_containerShiftIndex+2) * _slideSize.x, tempHolder.el.style);\n\t\t\t\tself.setContent(tempHolder, _currentItemIndex - diffAbs + i + 1 + 1);\n\t\t\t} else {\n\t\t\t\ttempHolder = _itemHolders.pop();\n\t\t\t\t_itemHolders.unshift( tempHolder ); // move last to first\n\n\t\t\t\t_containerShiftIndex--;\n\t\t\t\t_setTranslateX( _containerShiftIndex * _slideSize.x, tempHolder.el.style);\n\t\t\t\tself.setContent(tempHolder, _currentItemIndex + diffAbs - i - 1 - 1);\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t// reset zoom/pan on previous item\n\t\tif(_currZoomElementStyle && Math.abs(_indexDiff) === 1) {\n\n\t\t\tvar prevItem = _getItemAt(_prevItemIndex);\n\t\t\tif(prevItem.initialZoomLevel !== _currZoomLevel) {\n\t\t\t\t_calculateItemSize(prevItem , _viewportSize );\n\t\t\t\t_setImageSize(prevItem);\n\t\t\t\t_applyZoomPanToItem( prevItem ); \t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\t// reset diff after update\n\t\t_indexDiff = 0;\n\n\t\tself.updateCurrZoomItem();\n\n\t\t_prevItemIndex = _currentItemIndex;\n\n\t\t_shout('afterChange');\n\t\t\n\t},\n\n\n\n\tupdateSize: function(force) {\n\t\t\n\t\tif(!_isFixedPosition && _options.modal) {\n\t\t\tvar windowScrollY = framework.getScrollY();\n\t\t\tif(_currentWindowScrollY !== windowScrollY) {\n\t\t\t\ttemplate.style.top = windowScrollY + 'px';\n\t\t\t\t_currentWindowScrollY = windowScrollY;\n\t\t\t}\n\t\t\tif(!force && _windowVisibleSize.x === window.innerWidth && _windowVisibleSize.y === window.innerHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_windowVisibleSize.x = window.innerWidth;\n\t\t\t_windowVisibleSize.y = window.innerHeight;\n\n\t\t\t//template.style.width = _windowVisibleSize.x + 'px';\n\t\t\ttemplate.style.height = _windowVisibleSize.y + 'px';\n\t\t}\n\n\n\n\t\t_viewportSize.x = self.scrollWrap.clientWidth;\n\t\t_viewportSize.y = self.scrollWrap.clientHeight;\n\n\t\t_updatePageScrollOffset();\n\n\t\t_slideSize.x = _viewportSize.x + Math.round(_viewportSize.x * _options.spacing);\n\t\t_slideSize.y = _viewportSize.y;\n\n\t\t_moveMainScroll(_slideSize.x * _currPositionIndex);\n\n\t\t_shout('beforeResize'); // even may be used for example to switch image sources\n\n\n\t\t// don't re-calculate size on inital size update\n\t\tif(_containerShiftIndex !== undefined) {\n\n\t\t\tvar holder,\n\t\t\t\titem,\n\t\t\t\thIndex;\n\n\t\t\tfor(var i = 0; i < NUM_HOLDERS; i++) {\n\t\t\t\tholder = _itemHolders[i];\n\t\t\t\t_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, holder.el.style);\n\n\t\t\t\thIndex = _currentItemIndex+i-1;\n\n\t\t\t\tif(_options.loop && _getNumItems() > 2) {\n\t\t\t\t\thIndex = _getLoopedId(hIndex);\n\t\t\t\t}\n\n\t\t\t\t// update zoom level on items and refresh source (if needsUpdate)\n\t\t\t\titem = _getItemAt( hIndex );\n\n\t\t\t\t// re-render gallery item if `needsUpdate`,\n\t\t\t\t// or doesn't have `bounds` (entirely new slide object)\n\t\t\t\tif( item && (_itemsNeedUpdate || item.needsUpdate || !item.bounds) ) {\n\n\t\t\t\t\tself.cleanSlide( item );\n\t\t\t\t\t\n\t\t\t\t\tself.setContent( holder, hIndex );\n\n\t\t\t\t\t// if \"center\" slide\n\t\t\t\t\tif(i === 1) {\n\t\t\t\t\t\tself.currItem = item;\n\t\t\t\t\t\tself.updateCurrZoomItem(true);\n\t\t\t\t\t}\n\n\t\t\t\t\titem.needsUpdate = false;\n\n\t\t\t\t} else if(holder.index === -1 && hIndex >= 0) {\n\t\t\t\t\t// add content first time\n\t\t\t\t\tself.setContent( holder, hIndex );\n\t\t\t\t}\n\t\t\t\tif(item && item.container) {\n\t\t\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\t\t_setImageSize(item);\n\t\t\t\t\t_applyZoomPanToItem( item );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t_itemsNeedUpdate = false;\n\t\t}\t\n\n\t\t_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;\n\t\t_currPanBounds = self.currItem.bounds;\n\n\t\tif(_currPanBounds) {\n\t\t\t_panOffset.x = _currPanBounds.center.x;\n\t\t\t_panOffset.y = _currPanBounds.center.y;\n\t\t\t_applyCurrentZoomPan( true );\n\t\t}\n\t\t\n\t\t_shout('resize');\n\t},\n\t\n\t// Zoom current item to\n\tzoomTo: function(destZoomLevel, centerPoint, speed, easingFn, updateFn) {\n\t\t/*\n\t\t\tif(destZoomLevel === 'fit') {\n\t\t\t\tdestZoomLevel = self.currItem.fitRatio;\n\t\t\t} else if(destZoomLevel === 'fill') {\n\t\t\t\tdestZoomLevel = self.currItem.fillRatio;\n\t\t\t}\n\t\t*/\n\n\t\tif(centerPoint) {\n\t\t\t_startZoomLevel = _currZoomLevel;\n\t\t\t_midZoomPoint.x = Math.abs(centerPoint.x) - _panOffset.x ;\n\t\t\t_midZoomPoint.y = Math.abs(centerPoint.y) - _panOffset.y ;\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\t\t}\n\n\t\tvar destPanBounds = _calculatePanBounds(destZoomLevel, false),\n\t\t\tdestPanOffset = {};\n\n\t\t_modifyDestPanOffset('x', destPanBounds, destPanOffset, destZoomLevel);\n\t\t_modifyDestPanOffset('y', destPanBounds, destPanOffset, destZoomLevel);\n\n\t\tvar initialZoomLevel = _currZoomLevel;\n\t\tvar initialPanOffset = {\n\t\t\tx: _panOffset.x,\n\t\t\ty: _panOffset.y\n\t\t};\n\n\t\t_roundPoint(destPanOffset);\n\n\t\tvar onUpdate = function(now) {\n\t\t\tif(now === 1) {\n\t\t\t\t_currZoomLevel = destZoomLevel;\n\t\t\t\t_panOffset.x = destPanOffset.x;\n\t\t\t\t_panOffset.y = destPanOffset.y;\n\t\t\t} else {\n\t\t\t\t_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;\n\t\t\t\t_panOffset.x = (destPanOffset.x - initialPanOffset.x) * now + initialPanOffset.x;\n\t\t\t\t_panOffset.y = (destPanOffset.y - initialPanOffset.y) * now + initialPanOffset.y;\n\t\t\t}\n\n\t\t\tif(updateFn) {\n\t\t\t\tupdateFn(now);\n\t\t\t}\n\n\t\t\t_applyCurrentZoomPan( now === 1 );\n\t\t};\n\n\t\tif(speed) {\n\t\t\t_animateProp('customZoomTo', 0, 1, speed, easingFn || framework.easing.sine.inOut, onUpdate);\n\t\t} else {\n\t\t\tonUpdate(1);\n\t\t}\n\t}\n\n\n};\n\n\n/*>>core*/\n\n/*>>gestures*/\n/**\n * Mouse/touch/pointer event handlers.\n * \n * separated from @core.js for readability\n */\n\nvar MIN_SWIPE_DISTANCE = 30,\n\tDIRECTION_CHECK_OFFSET = 10; // amount of pixels to drag to determine direction of swipe\n\nvar _gestureStartTime,\n\t_gestureCheckSpeedTime,\n\n\t// pool of objects that are used during dragging of zooming\n\tp = {}, // first point\n\tp2 = {}, // second point (for zoom gesture)\n\tdelta = {},\n\t_currPoint = {},\n\t_startPoint = {},\n\t_currPointers = [],\n\t_startMainScrollPos = {},\n\t_releaseAnimData,\n\t_posPoints = [], // array of points during dragging, used to determine type of gesture\n\t_tempPoint = {},\n\n\t_isZoomingIn,\n\t_verticalDragInitiated,\n\t_oldAndroidTouchEndTimeout,\n\t_currZoomedItemIndex = 0,\n\t_centerPoint = _getEmptyPoint(),\n\t_lastReleaseTime = 0,\n\t_isDragging, // at least one pointer is down\n\t_isMultitouch, // at least two _pointers are down\n\t_zoomStarted, // zoom level changed during zoom gesture\n\t_moved,\n\t_dragAnimFrame,\n\t_mainScrollShifted,\n\t_currentPoints, // array of current touch points\n\t_isZooming,\n\t_currPointsDistance,\n\t_startPointsDistance,\n\t_currPanBounds,\n\t_mainScrollPos = _getEmptyPoint(),\n\t_currZoomElementStyle,\n\t_mainScrollAnimating, // true, if animation after swipe gesture is running\n\t_midZoomPoint = _getEmptyPoint(),\n\t_currCenterPoint = _getEmptyPoint(),\n\t_direction,\n\t_isFirstMove,\n\t_opacityChanged,\n\t_bgOpacity,\n\t_wasOverInitialZoom,\n\n\t_isEqualPoints = function(p1, p2) {\n\t\treturn p1.x === p2.x && p1.y === p2.y;\n\t},\n\t_isNearbyPoints = function(touch0, touch1) {\n\t\treturn Math.abs(touch0.x - touch1.x) < DOUBLE_TAP_RADIUS && Math.abs(touch0.y - touch1.y) < DOUBLE_TAP_RADIUS;\n\t},\n\t_calculatePointsDistance = function(p1, p2) {\n\t\t_tempPoint.x = Math.abs( p1.x - p2.x );\n\t\t_tempPoint.y = Math.abs( p1.y - p2.y );\n\t\treturn Math.sqrt(_tempPoint.x * _tempPoint.x + _tempPoint.y * _tempPoint.y);\n\t},\n\t_stopDragUpdateLoop = function() {\n\t\tif(_dragAnimFrame) {\n\t\t\t_cancelAF(_dragAnimFrame);\n\t\t\t_dragAnimFrame = null;\n\t\t}\n\t},\n\t_dragUpdateLoop = function() {\n\t\tif(_isDragging) {\n\t\t\t_dragAnimFrame = _requestAF(_dragUpdateLoop);\n\t\t\t_renderMovement();\n\t\t}\n\t},\n\t_canPan = function() {\n\t\treturn !(_options.scaleMode === 'fit' && _currZoomLevel === self.currItem.initialZoomLevel);\n\t},\n\t\n\t// find the closest parent DOM element\n\t_closestElement = function(el, fn) {\n\t \tif(!el || el === document) {\n\t \t\treturn false;\n\t \t}\n\n\t \t// don't search elements above pswp__scroll-wrap\n\t \tif(el.getAttribute('class') && el.getAttribute('class').indexOf('pswp__scroll-wrap') > -1 ) {\n\t \t\treturn false;\n\t \t}\n\n\t \tif( fn(el) ) {\n\t \t\treturn el;\n\t \t}\n\n\t \treturn _closestElement(el.parentNode, fn);\n\t},\n\n\t_preventObj = {},\n\t_preventDefaultEventBehaviour = function(e, isDown) {\n\t _preventObj.prevent = !_closestElement(e.target, _options.isClickableElement);\n\n\t\t_shout('preventDragEvent', e, isDown, _preventObj);\n\t\treturn _preventObj.prevent;\n\n\t},\n\t_convertTouchToPoint = function(touch, p) {\n\t\tp.x = touch.pageX;\n\t\tp.y = touch.pageY;\n\t\tp.id = touch.identifier;\n\t\treturn p;\n\t},\n\t_findCenterOfPoints = function(p1, p2, pCenter) {\n\t\tpCenter.x = (p1.x + p2.x) * 0.5;\n\t\tpCenter.y = (p1.y + p2.y) * 0.5;\n\t},\n\t_pushPosPoint = function(time, x, y) {\n\t\tif(time - _gestureCheckSpeedTime > 50) {\n\t\t\tvar o = _posPoints.length > 2 ? _posPoints.shift() : {};\n\t\t\to.x = x;\n\t\t\to.y = y; \n\t\t\t_posPoints.push(o);\n\t\t\t_gestureCheckSpeedTime = time;\n\t\t}\n\t},\n\n\t_calculateVerticalDragOpacityRatio = function() {\n\t\tvar yOffset = _panOffset.y - self.currItem.initialPosition.y; // difference between initial and current position\n\t\treturn 1 - Math.abs( yOffset / (_viewportSize.y / 2) );\n\t},\n\n\t\n\t// points pool, reused during touch events\n\t_ePoint1 = {},\n\t_ePoint2 = {},\n\t_tempPointsArr = [],\n\t_tempCounter,\n\t_getTouchPoints = function(e) {\n\t\t// clean up previous points, without recreating array\n\t\twhile(_tempPointsArr.length > 0) {\n\t\t\t_tempPointsArr.pop();\n\t\t}\n\n\t\tif(!_pointerEventEnabled) {\n\t\t\tif(e.type.indexOf('touch') > -1) {\n\n\t\t\t\tif(e.touches && e.touches.length > 0) {\n\t\t\t\t\t_tempPointsArr[0] = _convertTouchToPoint(e.touches[0], _ePoint1);\n\t\t\t\t\tif(e.touches.length > 1) {\n\t\t\t\t\t\t_tempPointsArr[1] = _convertTouchToPoint(e.touches[1], _ePoint2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t_ePoint1.x = e.pageX;\n\t\t\t\t_ePoint1.y = e.pageY;\n\t\t\t\t_ePoint1.id = '';\n\t\t\t\t_tempPointsArr[0] = _ePoint1;//_ePoint1;\n\t\t\t}\n\t\t} else {\n\t\t\t_tempCounter = 0;\n\t\t\t// we can use forEach, as pointer events are supported only in modern browsers\n\t\t\t_currPointers.forEach(function(p) {\n\t\t\t\tif(_tempCounter === 0) {\n\t\t\t\t\t_tempPointsArr[0] = p;\n\t\t\t\t} else if(_tempCounter === 1) {\n\t\t\t\t\t_tempPointsArr[1] = p;\n\t\t\t\t}\n\t\t\t\t_tempCounter++;\n\n\t\t\t});\n\t\t}\n\t\treturn _tempPointsArr;\n\t},\n\n\t_panOrMoveMainScroll = function(axis, delta) {\n\n\t\tvar panFriction,\n\t\t\toverDiff = 0,\n\t\t\tnewOffset = _panOffset[axis] + delta[axis],\n\t\t\tstartOverDiff,\n\t\t\tdir = delta[axis] > 0,\n\t\t\tnewMainScrollPosition = _mainScrollPos.x + delta.x,\n\t\t\tmainScrollDiff = _mainScrollPos.x - _startMainScrollPos.x,\n\t\t\tnewPanPos,\n\t\t\tnewMainScrollPos;\n\n\t\t// calculate fdistance over the bounds and friction\n\t\tif(newOffset > _currPanBounds.min[axis] || newOffset < _currPanBounds.max[axis]) {\n\t\t\tpanFriction = _options.panEndFriction;\n\t\t\t// Linear increasing of friction, so at 1/4 of viewport it's at max value. \n\t\t\t// Looks not as nice as was expected. Left for history.\n\t\t\t// panFriction = (1 - (_panOffset[axis] + delta[axis] + panBounds.min[axis]) / (_viewportSize[axis] / 4) );\n\t\t} else {\n\t\t\tpanFriction = 1;\n\t\t}\n\t\t\n\t\tnewOffset = _panOffset[axis] + delta[axis] * panFriction;\n\n\t\t// move main scroll or start panning\n\t\tif(_options.allowPanToNext || _currZoomLevel === self.currItem.initialZoomLevel) {\n\n\n\t\t\tif(!_currZoomElementStyle) {\n\t\t\t\t\n\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\n\t\t\t} else if(_direction === 'h' && axis === 'x' && !_zoomStarted ) {\n\t\t\t\t\n\t\t\t\tif(dir) {\n\t\t\t\t\tif(newOffset > _currPanBounds.min[axis]) {\n\t\t\t\t\t\tpanFriction = _options.panEndFriction;\n\t\t\t\t\t\toverDiff = _currPanBounds.min[axis] - newOffset;\n\t\t\t\t\t\tstartOverDiff = _currPanBounds.min[axis] - _startPanOffset[axis];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// drag right\n\t\t\t\t\tif( (startOverDiff <= 0 || mainScrollDiff < 0) && _getNumItems() > 1 ) {\n\t\t\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\t\t\t\t\t\tif(mainScrollDiff < 0 && newMainScrollPosition > _startMainScrollPos.x) {\n\t\t\t\t\t\t\tnewMainScrollPos = _startMainScrollPos.x;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\t\t\tnewPanPos = newOffset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif(newOffset < _currPanBounds.max[axis] ) {\n\t\t\t\t\t\tpanFriction =_options.panEndFriction;\n\t\t\t\t\t\toverDiff = newOffset - _currPanBounds.max[axis];\n\t\t\t\t\t\tstartOverDiff = _startPanOffset[axis] - _currPanBounds.max[axis];\n\t\t\t\t\t}\n\n\t\t\t\t\tif( (startOverDiff <= 0 || mainScrollDiff > 0) && _getNumItems() > 1 ) {\n\t\t\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\n\t\t\t\t\t\tif(mainScrollDiff > 0 && newMainScrollPosition < _startMainScrollPos.x) {\n\t\t\t\t\t\t\tnewMainScrollPos = _startMainScrollPos.x;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\t\t\tnewPanPos = newOffset;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t\t//\n\t\t\t}\n\n\t\t\tif(axis === 'x') {\n\n\t\t\t\tif(newMainScrollPos !== undefined) {\n\t\t\t\t\t_moveMainScroll(newMainScrollPos, true);\n\t\t\t\t\tif(newMainScrollPos === _startMainScrollPos.x) {\n\t\t\t\t\t\t_mainScrollShifted = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_mainScrollShifted = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\tif(newPanPos !== undefined) {\n\t\t\t\t\t\t_panOffset.x = newPanPos;\n\t\t\t\t\t} else if(!_mainScrollShifted) {\n\t\t\t\t\t\t_panOffset.x += delta.x * panFriction;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newMainScrollPos !== undefined;\n\t\t\t}\n\n\t\t}\n\n\t\tif(!_mainScrollAnimating) {\n\t\t\t\n\t\t\tif(!_mainScrollShifted) {\n\t\t\t\tif(_currZoomLevel > self.currItem.fitRatio) {\n\t\t\t\t\t_panOffset[axis] += delta[axis] * panFriction;\n\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\n\t\t}\n\t\t\n\t},\n\n\t// Pointerdown/touchstart/mousedown handler\n\t_onDragStart = function(e) {\n\n\t\t// Allow dragging only via left mouse button.\n\t\t// As this handler is not added in IE8 - we ignore e.which\n\t\t// \n\t\t// http://www.quirksmode.org/js/events_properties.html\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/event.button\n\t\tif(e.type === 'mousedown' && e.button > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(_initialZoomRunning) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif(_oldAndroidTouchEndTimeout && e.type === 'mousedown') {\n\t\t\treturn;\n\t\t}\n\n\t\tif(_preventDefaultEventBehaviour(e, true)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\n\n\t\t_shout('pointerDown');\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\tif(pointerIndex < 0) {\n\t\t\t\tpointerIndex = _currPointers.length;\n\t\t\t}\n\t\t\t_currPointers[pointerIndex] = {x:e.pageX, y:e.pageY, id: e.pointerId};\n\t\t}\n\t\t\n\n\n\t\tvar startPointsList = _getTouchPoints(e),\n\t\t\tnumPoints = startPointsList.length;\n\n\t\t_currentPoints = null;\n\n\t\t_stopAllAnimations();\n\n\t\t// init drag\n\t\tif(!_isDragging || numPoints === 1) {\n\n\t\t\t\n\n\t\t\t_isDragging = _isFirstMove = true;\n\t\t\tframework.bind(window, _upMoveEvents, self);\n\n\t\t\t_isZoomingIn = \n\t\t\t\t_wasOverInitialZoom = \n\t\t\t\t_opacityChanged = \n\t\t\t\t_verticalDragInitiated = \n\t\t\t\t_mainScrollShifted = \n\t\t\t\t_moved = \n\t\t\t\t_isMultitouch = \n\t\t\t\t_zoomStarted = false;\n\n\t\t\t_direction = null;\n\n\t\t\t_shout('firstTouchStart', startPointsList);\n\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\n\t\t\t_currPanDist.x = _currPanDist.y = 0;\n\t\t\t_equalizePoints(_currPoint, startPointsList[0]);\n\t\t\t_equalizePoints(_startPoint, _currPoint);\n\n\t\t\t//_equalizePoints(_startMainScrollPos, _mainScrollPos);\n\t\t\t_startMainScrollPos.x = _slideSize.x * _currPositionIndex;\n\n\t\t\t_posPoints = [{\n\t\t\t\tx: _currPoint.x,\n\t\t\t\ty: _currPoint.y\n\t\t\t}];\n\n\t\t\t_gestureCheckSpeedTime = _gestureStartTime = _getCurrentTime();\n\n\t\t\t//_mainScrollAnimationEnd(true);\n\t\t\t_calculatePanBounds( _currZoomLevel, true );\n\t\t\t\n\t\t\t// Start rendering\n\t\t\t_stopDragUpdateLoop();\n\t\t\t_dragUpdateLoop();\n\t\t\t\n\t\t}\n\n\t\t// init zoom\n\t\tif(!_isZooming && numPoints > 1 && !_mainScrollAnimating && !_mainScrollShifted) {\n\t\t\t_startZoomLevel = _currZoomLevel;\n\t\t\t_zoomStarted = false; // true if zoom changed at least once\n\n\t\t\t_isZooming = _isMultitouch = true;\n\t\t\t_currPanDist.y = _currPanDist.x = 0;\n\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\n\t\t\t_equalizePoints(p, startPointsList[0]);\n\t\t\t_equalizePoints(p2, startPointsList[1]);\n\n\t\t\t_findCenterOfPoints(p, p2, _currCenterPoint);\n\n\t\t\t_midZoomPoint.x = Math.abs(_currCenterPoint.x) - _panOffset.x;\n\t\t\t_midZoomPoint.y = Math.abs(_currCenterPoint.y) - _panOffset.y;\n\t\t\t_currPointsDistance = _startPointsDistance = _calculatePointsDistance(p, p2);\n\t\t}\n\n\n\t},\n\n\t// Pointermove/touchmove/mousemove handler\n\t_onDragMove = function(e) {\n\n\t\te.preventDefault();\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\tif(pointerIndex > -1) {\n\t\t\t\tvar p = _currPointers[pointerIndex];\n\t\t\t\tp.x = e.pageX;\n\t\t\t\tp.y = e.pageY; \n\t\t\t}\n\t\t}\n\n\t\tif(_isDragging) {\n\t\t\tvar touchesList = _getTouchPoints(e);\n\t\t\tif(!_direction && !_moved && !_isZooming) {\n\n\t\t\t\tif(_mainScrollPos.x !== _slideSize.x * _currPositionIndex) {\n\t\t\t\t\t// if main scroll position is shifted – direction is always horizontal\n\t\t\t\t\t_direction = 'h';\n\t\t\t\t} else {\n\t\t\t\t\tvar diff = Math.abs(touchesList[0].x - _currPoint.x) - Math.abs(touchesList[0].y - _currPoint.y);\n\t\t\t\t\t// check the direction of movement\n\t\t\t\t\tif(Math.abs(diff) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\t\t_direction = diff > 0 ? 'h' : 'v';\n\t\t\t\t\t\t_currentPoints = touchesList;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t_currentPoints = touchesList;\n\t\t\t}\n\t\t}\t\n\t},\n\t// \n\t_renderMovement = function() {\n\n\t\tif(!_currentPoints) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar numPoints = _currentPoints.length;\n\n\t\tif(numPoints === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t_equalizePoints(p, _currentPoints[0]);\n\n\t\tdelta.x = p.x - _currPoint.x;\n\t\tdelta.y = p.y - _currPoint.y;\n\n\t\tif(_isZooming && numPoints > 1) {\n\t\t\t// Handle behaviour for more than 1 point\n\n\t\t\t_currPoint.x = p.x;\n\t\t\t_currPoint.y = p.y;\n\t\t\n\t\t\t// check if one of two points changed\n\t\t\tif( !delta.x && !delta.y && _isEqualPoints(_currentPoints[1], p2) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_equalizePoints(p2, _currentPoints[1]);\n\n\n\t\t\tif(!_zoomStarted) {\n\t\t\t\t_zoomStarted = true;\n\t\t\t\t_shout('zoomGestureStarted');\n\t\t\t}\n\t\t\t\n\t\t\t// Distance between two points\n\t\t\tvar pointsDistance = _calculatePointsDistance(p,p2);\n\n\t\t\tvar zoomLevel = _calculateZoomLevel(pointsDistance);\n\n\t\t\t// slightly over the of initial zoom level\n\t\t\tif(zoomLevel > self.currItem.initialZoomLevel + self.currItem.initialZoomLevel / 15) {\n\t\t\t\t_wasOverInitialZoom = true;\n\t\t\t}\n\n\t\t\t// Apply the friction if zoom level is out of the bounds\n\t\t\tvar zoomFriction = 1,\n\t\t\t\tminZoomLevel = _getMinZoomLevel(),\n\t\t\t\tmaxZoomLevel = _getMaxZoomLevel();\n\n\t\t\tif ( zoomLevel < minZoomLevel ) {\n\t\t\t\t\n\t\t\t\tif(_options.pinchToClose && !_wasOverInitialZoom && _startZoomLevel <= self.currItem.initialZoomLevel) {\n\t\t\t\t\t// fade out background if zooming out\n\t\t\t\t\tvar minusDiff = minZoomLevel - zoomLevel;\n\t\t\t\t\tvar percent = 1 - minusDiff / (minZoomLevel / 1.2);\n\n\t\t\t\t\t_applyBgOpacity(percent);\n\t\t\t\t\t_shout('onPinchClose', percent);\n\t\t\t\t\t_opacityChanged = true;\n\t\t\t\t} else {\n\t\t\t\t\tzoomFriction = (minZoomLevel - zoomLevel) / minZoomLevel;\n\t\t\t\t\tif(zoomFriction > 1) {\n\t\t\t\t\t\tzoomFriction = 1;\n\t\t\t\t\t}\n\t\t\t\t\tzoomLevel = minZoomLevel - zoomFriction * (minZoomLevel / 3);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else if ( zoomLevel > maxZoomLevel ) {\n\t\t\t\t// 1.5 - extra zoom level above the max. E.g. if max is x6, real max 6 + 1.5 = 7.5\n\t\t\t\tzoomFriction = (zoomLevel - maxZoomLevel) / ( minZoomLevel * 6 );\n\t\t\t\tif(zoomFriction > 1) {\n\t\t\t\t\tzoomFriction = 1;\n\t\t\t\t}\n\t\t\t\tzoomLevel = maxZoomLevel + zoomFriction * minZoomLevel;\n\t\t\t}\n\n\t\t\tif(zoomFriction < 0) {\n\t\t\t\tzoomFriction = 0;\n\t\t\t}\n\n\t\t\t// distance between touch points after friction is applied\n\t\t\t_currPointsDistance = pointsDistance;\n\n\t\t\t// _centerPoint - The point in the middle of two pointers\n\t\t\t_findCenterOfPoints(p, p2, _centerPoint);\n\t\t\n\t\t\t// paning with two pointers pressed\n\t\t\t_currPanDist.x += _centerPoint.x - _currCenterPoint.x;\n\t\t\t_currPanDist.y += _centerPoint.y - _currCenterPoint.y;\n\t\t\t_equalizePoints(_currCenterPoint, _centerPoint);\n\n\t\t\t_panOffset.x = _calculatePanOffset('x', zoomLevel);\n\t\t\t_panOffset.y = _calculatePanOffset('y', zoomLevel);\n\n\t\t\t_isZoomingIn = zoomLevel > _currZoomLevel;\n\t\t\t_currZoomLevel = zoomLevel;\n\t\t\t_applyCurrentZoomPan();\n\n\t\t} else {\n\n\t\t\t// handle behaviour for one point (dragging or panning)\n\n\t\t\tif(!_direction) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_isFirstMove) {\n\t\t\t\t_isFirstMove = false;\n\n\t\t\t\t// subtract drag distance that was used during the detection direction \n\n\t\t\t\tif( Math.abs(delta.x) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\tdelta.x -= _currentPoints[0].x - _startPoint.x;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( Math.abs(delta.y) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\tdelta.y -= _currentPoints[0].y - _startPoint.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_currPoint.x = p.x;\n\t\t\t_currPoint.y = p.y;\n\n\t\t\t// do nothing if pointers position hasn't changed\n\t\t\tif(delta.x === 0 && delta.y === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_direction === 'v' && _options.closeOnVerticalDrag) {\n\t\t\t\tif(!_canPan()) {\n\t\t\t\t\t_currPanDist.y += delta.y;\n\t\t\t\t\t_panOffset.y += delta.y;\n\n\t\t\t\t\tvar opacityRatio = _calculateVerticalDragOpacityRatio();\n\n\t\t\t\t\t_verticalDragInitiated = true;\n\t\t\t\t\t_shout('onVerticalDrag', opacityRatio);\n\n\t\t\t\t\t_applyBgOpacity(opacityRatio);\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\treturn ;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_pushPosPoint(_getCurrentTime(), p.x, p.y);\n\n\t\t\t_moved = true;\n\t\t\t_currPanBounds = self.currItem.bounds;\n\t\t\t\n\t\t\tvar mainScrollChanged = _panOrMoveMainScroll('x', delta);\n\t\t\tif(!mainScrollChanged) {\n\t\t\t\t_panOrMoveMainScroll('y', delta);\n\n\t\t\t\t_roundPoint(_panOffset);\n\t\t\t\t_applyCurrentZoomPan();\n\t\t\t}\n\n\t\t}\n\n\t},\n\t\n\t// Pointerup/pointercancel/touchend/touchcancel/mouseup event handler\n\t_onDragRelease = function(e) {\n\n\t\tif(_features.isOldAndroid ) {\n\n\t\t\tif(_oldAndroidTouchEndTimeout && e.type === 'mouseup') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// on Android (v4.1, 4.2, 4.3 & possibly older) \n\t\t\t// ghost mousedown/up event isn't preventable via e.preventDefault,\n\t\t\t// which causes fake mousedown event\n\t\t\t// so we block mousedown/up for 600ms\n\t\t\tif( e.type.indexOf('touch') > -1 ) {\n\t\t\t\tclearTimeout(_oldAndroidTouchEndTimeout);\n\t\t\t\t_oldAndroidTouchEndTimeout = setTimeout(function() {\n\t\t\t\t\t_oldAndroidTouchEndTimeout = 0;\n\t\t\t\t}, 600);\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t_shout('pointerUp');\n\n\t\tif(_preventDefaultEventBehaviour(e, false)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar releasePoint;\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\t\n\t\t\tif(pointerIndex > -1) {\n\t\t\t\treleasePoint = _currPointers.splice(pointerIndex, 1)[0];\n\n\t\t\t\tif(navigator.msPointerEnabled) {\n\t\t\t\t\tvar MSPOINTER_TYPES = {\n\t\t\t\t\t\t4: 'mouse', // event.MSPOINTER_TYPE_MOUSE\n\t\t\t\t\t\t2: 'touch', // event.MSPOINTER_TYPE_TOUCH \n\t\t\t\t\t\t3: 'pen' // event.MSPOINTER_TYPE_PEN\n\t\t\t\t\t};\n\t\t\t\t\treleasePoint.type = MSPOINTER_TYPES[e.pointerType];\n\n\t\t\t\t\tif(!releasePoint.type) {\n\t\t\t\t\t\treleasePoint.type = e.pointerType || 'mouse';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treleasePoint.type = e.pointerType || 'mouse';\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tvar touchList = _getTouchPoints(e),\n\t\t\tgestureType,\n\t\t\tnumPoints = touchList.length;\n\n\t\tif(e.type === 'mouseup') {\n\t\t\tnumPoints = 0;\n\t\t}\n\n\t\t// Do nothing if there were 3 touch points or more\n\t\tif(numPoints === 2) {\n\t\t\t_currentPoints = null;\n\t\t\treturn true;\n\t\t}\n\n\t\t// if second pointer released\n\t\tif(numPoints === 1) {\n\t\t\t_equalizePoints(_startPoint, touchList[0]);\n\t\t}\t\t\t\t\n\n\n\t\t// pointer hasn't moved, send \"tap release\" point\n\t\tif(numPoints === 0 && !_direction && !_mainScrollAnimating) {\n\t\t\tif(!releasePoint) {\n\t\t\t\tif(e.type === 'mouseup') {\n\t\t\t\t\treleasePoint = {x: e.pageX, y: e.pageY, type:'mouse'};\n\t\t\t\t} else if(e.changedTouches && e.changedTouches[0]) {\n\t\t\t\t\treleasePoint = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY, type:'touch'};\n\t\t\t\t}\t\t\n\t\t\t}\n\n\t\t\t_shout('touchRelease', e, releasePoint);\n\t\t}\n\n\t\t// Difference in time between releasing of two last touch points (zoom gesture)\n\t\tvar releaseTimeDiff = -1;\n\n\t\t// Gesture completed, no pointers left\n\t\tif(numPoints === 0) {\n\t\t\t_isDragging = false;\n\t\t\tframework.unbind(window, _upMoveEvents, self);\n\n\t\t\t_stopDragUpdateLoop();\n\n\t\t\tif(_isZooming) {\n\t\t\t\t// Two points released at the same time\n\t\t\t\treleaseTimeDiff = 0;\n\t\t\t} else if(_lastReleaseTime !== -1) {\n\t\t\t\treleaseTimeDiff = _getCurrentTime() - _lastReleaseTime;\n\t\t\t}\n\t\t}\n\t\t_lastReleaseTime = numPoints === 1 ? _getCurrentTime() : -1;\n\t\t\n\t\tif(releaseTimeDiff !== -1 && releaseTimeDiff < 150) {\n\t\t\tgestureType = 'zoom';\n\t\t} else {\n\t\t\tgestureType = 'swipe';\n\t\t}\n\n\t\tif(_isZooming && numPoints < 2) {\n\t\t\t_isZooming = false;\n\n\t\t\t// Only second point released\n\t\t\tif(numPoints === 1) {\n\t\t\t\tgestureType = 'zoomPointerUp';\n\t\t\t}\n\t\t\t_shout('zoomGestureEnded');\n\t\t}\n\n\t\t_currentPoints = null;\n\t\tif(!_moved && !_zoomStarted && !_mainScrollAnimating && !_verticalDragInitiated) {\n\t\t\t// nothing to animate\n\t\t\treturn;\n\t\t}\n\t\n\t\t_stopAllAnimations();\n\n\t\t\n\t\tif(!_releaseAnimData) {\n\t\t\t_releaseAnimData = _initDragReleaseAnimationData();\n\t\t}\n\t\t\n\t\t_releaseAnimData.calculateSwipeSpeed('x');\n\n\n\t\tif(_verticalDragInitiated) {\n\n\t\t\tvar opacityRatio = _calculateVerticalDragOpacityRatio();\n\n\t\t\tif(opacityRatio < _options.verticalDragRange) {\n\t\t\t\tself.close();\n\t\t\t} else {\n\t\t\t\tvar initalPanY = _panOffset.y,\n\t\t\t\t\tinitialBgOpacity = _bgOpacity;\n\n\t\t\t\t_animateProp('verticalDrag', 0, 1, 300, framework.easing.cubic.out, function(now) {\n\t\t\t\t\t\n\t\t\t\t\t_panOffset.y = (self.currItem.initialPosition.y - initalPanY) * now + initalPanY;\n\n\t\t\t\t\t_applyBgOpacity( (1 - initialBgOpacity) * now + initialBgOpacity );\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t});\n\n\t\t\t\t_shout('onVerticalDrag', 1);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\n\t\t// main scroll \n\t\tif( (_mainScrollShifted || _mainScrollAnimating) && numPoints === 0) {\n\t\t\tvar itemChanged = _finishSwipeMainScrollGesture(gestureType, _releaseAnimData);\n\t\t\tif(itemChanged) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tgestureType = 'zoomPointerUp';\n\t\t}\n\n\t\t// prevent zoom/pan animation when main scroll animation runs\n\t\tif(_mainScrollAnimating) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// Complete simple zoom gesture (reset zoom level if it's out of the bounds) \n\t\tif(gestureType !== 'swipe') {\n\t\t\t_completeZoomGesture();\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Complete pan gesture if main scroll is not shifted, and it's possible to pan current image\n\t\tif(!_mainScrollShifted && _currZoomLevel > self.currItem.fitRatio) {\n\t\t\t_completePanGesture(_releaseAnimData);\n\t\t}\n\t},\n\n\n\t// Returns object with data about gesture\n\t// It's created only once and then reused\n\t_initDragReleaseAnimationData = function() {\n\t\t// temp local vars\n\t\tvar lastFlickDuration,\n\t\t\ttempReleasePos;\n\n\t\t// s = this\n\t\tvar s = {\n\t\t\tlastFlickOffset: {},\n\t\t\tlastFlickDist: {},\n\t\t\tlastFlickSpeed: {},\n\t\t\tslowDownRatio: {},\n\t\t\tslowDownRatioReverse: {},\n\t\t\tspeedDecelerationRatio: {},\n\t\t\tspeedDecelerationRatioAbs: {},\n\t\t\tdistanceOffset: {},\n\t\t\tbackAnimDestination: {},\n\t\t\tbackAnimStarted: {},\n\t\t\tcalculateSwipeSpeed: function(axis) {\n\t\t\t\t\n\n\t\t\t\tif( _posPoints.length > 1) {\n\t\t\t\t\tlastFlickDuration = _getCurrentTime() - _gestureCheckSpeedTime + 50;\n\t\t\t\t\ttempReleasePos = _posPoints[_posPoints.length-2][axis];\n\t\t\t\t} else {\n\t\t\t\t\tlastFlickDuration = _getCurrentTime() - _gestureStartTime; // total gesture duration\n\t\t\t\t\ttempReleasePos = _startPoint[axis];\n\t\t\t\t}\n\t\t\t\ts.lastFlickOffset[axis] = _currPoint[axis] - tempReleasePos;\n\t\t\t\ts.lastFlickDist[axis] = Math.abs(s.lastFlickOffset[axis]);\n\t\t\t\tif(s.lastFlickDist[axis] > 20) {\n\t\t\t\t\ts.lastFlickSpeed[axis] = s.lastFlickOffset[axis] / lastFlickDuration;\n\t\t\t\t} else {\n\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t}\n\t\t\t\tif( Math.abs(s.lastFlickSpeed[axis]) < 0.1 ) {\n\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ts.slowDownRatio[axis] = 0.95;\n\t\t\t\ts.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];\n\t\t\t\ts.speedDecelerationRatio[axis] = 1;\n\t\t\t},\n\n\t\t\tcalculateOverBoundsAnimOffset: function(axis, speed) {\n\t\t\t\tif(!s.backAnimStarted[axis]) {\n\n\t\t\t\t\tif(_panOffset[axis] > _currPanBounds.min[axis]) {\n\t\t\t\t\t\ts.backAnimDestination[axis] = _currPanBounds.min[axis];\n\t\t\t\t\t\t\n\t\t\t\t\t} else if(_panOffset[axis] < _currPanBounds.max[axis]) {\n\t\t\t\t\t\ts.backAnimDestination[axis] = _currPanBounds.max[axis];\n\t\t\t\t\t}\n\n\t\t\t\t\tif(s.backAnimDestination[axis] !== undefined) {\n\t\t\t\t\t\ts.slowDownRatio[axis] = 0.7;\n\t\t\t\t\t\ts.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];\n\t\t\t\t\t\tif(s.speedDecelerationRatioAbs[axis] < 0.05) {\n\n\t\t\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t\t\t\ts.backAnimStarted[axis] = true;\n\n\t\t\t\t\t\t\t_animateProp('bounceZoomPan'+axis,_panOffset[axis], \n\t\t\t\t\t\t\t\ts.backAnimDestination[axis], \n\t\t\t\t\t\t\t\tspeed || 300, \n\t\t\t\t\t\t\t\tframework.easing.sine.out, \n\t\t\t\t\t\t\t\tfunction(pos) {\n\t\t\t\t\t\t\t\t\t_panOffset[axis] = pos;\n\t\t\t\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Reduces the speed by slowDownRatio (per 10ms)\n\t\t\tcalculateAnimOffset: function(axis) {\n\t\t\t\tif(!s.backAnimStarted[axis]) {\n\t\t\t\t\ts.speedDecelerationRatio[axis] = s.speedDecelerationRatio[axis] * (s.slowDownRatio[axis] + \n\t\t\t\t\t\t\t\t\t\t\t\ts.slowDownRatioReverse[axis] - \n\t\t\t\t\t\t\t\t\t\t\t\ts.slowDownRatioReverse[axis] * s.timeDiff / 10);\n\n\t\t\t\t\ts.speedDecelerationRatioAbs[axis] = Math.abs(s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis]);\n\t\t\t\t\ts.distanceOffset[axis] = s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis] * s.timeDiff;\n\t\t\t\t\t_panOffset[axis] += s.distanceOffset[axis];\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tpanAnimLoop: function() {\n\t\t\t\tif ( _animations.zoomPan ) {\n\t\t\t\t\t_animations.zoomPan.raf = _requestAF(s.panAnimLoop);\n\n\t\t\t\t\ts.now = _getCurrentTime();\n\t\t\t\t\ts.timeDiff = s.now - s.lastNow;\n\t\t\t\t\ts.lastNow = s.now;\n\t\t\t\t\t\n\t\t\t\t\ts.calculateAnimOffset('x');\n\t\t\t\t\ts.calculateAnimOffset('y');\n\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\n\t\t\t\t\ts.calculateOverBoundsAnimOffset('x');\n\t\t\t\t\ts.calculateOverBoundsAnimOffset('y');\n\n\n\t\t\t\t\tif (s.speedDecelerationRatioAbs.x < 0.05 && s.speedDecelerationRatioAbs.y < 0.05) {\n\n\t\t\t\t\t\t// round pan position\n\t\t\t\t\t\t_panOffset.x = Math.round(_panOffset.x);\n\t\t\t\t\t\t_panOffset.y = Math.round(_panOffset.y);\n\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\n\t\t\t\t\t\t_stopAnimation('zoomPan');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t};\n\t\treturn s;\n\t},\n\n\t_completePanGesture = function(animData) {\n\t\t// calculate swipe speed for Y axis (paanning)\n\t\tanimData.calculateSwipeSpeed('y');\n\n\t\t_currPanBounds = self.currItem.bounds;\n\t\t\n\t\tanimData.backAnimDestination = {};\n\t\tanimData.backAnimStarted = {};\n\n\t\t// Avoid acceleration animation if speed is too low\n\t\tif(Math.abs(animData.lastFlickSpeed.x) <= 0.05 && Math.abs(animData.lastFlickSpeed.y) <= 0.05 ) {\n\t\t\tanimData.speedDecelerationRatioAbs.x = animData.speedDecelerationRatioAbs.y = 0;\n\n\t\t\t// Run pan drag release animation. E.g. if you drag image and release finger without momentum.\n\t\t\tanimData.calculateOverBoundsAnimOffset('x');\n\t\t\tanimData.calculateOverBoundsAnimOffset('y');\n\t\t\treturn true;\n\t\t}\n\n\t\t// Animation loop that controls the acceleration after pan gesture ends\n\t\t_registerStartAnimation('zoomPan');\n\t\tanimData.lastNow = _getCurrentTime();\n\t\tanimData.panAnimLoop();\n\t},\n\n\n\t_finishSwipeMainScrollGesture = function(gestureType, _releaseAnimData) {\n\t\tvar itemChanged;\n\t\tif(!_mainScrollAnimating) {\n\t\t\t_currZoomedItemIndex = _currentItemIndex;\n\t\t}\n\n\n\t\t\n\t\tvar itemsDiff;\n\n\t\tif(gestureType === 'swipe') {\n\t\t\tvar totalShiftDist = _currPoint.x - _startPoint.x,\n\t\t\t\tisFastLastFlick = _releaseAnimData.lastFlickDist.x < 10;\n\n\t\t\t// if container is shifted for more than MIN_SWIPE_DISTANCE, \n\t\t\t// and last flick gesture was in right direction\n\t\t\tif(totalShiftDist > MIN_SWIPE_DISTANCE && \n\t\t\t\t(isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20) ) {\n\t\t\t\t// go to prev item\n\t\t\t\titemsDiff = -1;\n\t\t\t} else if(totalShiftDist < -MIN_SWIPE_DISTANCE && \n\t\t\t\t(isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20) ) {\n\t\t\t\t// go to next item\n\t\t\t\titemsDiff = 1;\n\t\t\t}\n\t\t}\n\n\t\tvar nextCircle;\n\n\t\tif(itemsDiff) {\n\t\t\t\n\t\t\t_currentItemIndex += itemsDiff;\n\n\t\t\tif(_currentItemIndex < 0) {\n\t\t\t\t_currentItemIndex = _options.loop ? _getNumItems()-1 : 0;\n\t\t\t\tnextCircle = true;\n\t\t\t} else if(_currentItemIndex >= _getNumItems()) {\n\t\t\t\t_currentItemIndex = _options.loop ? 0 : _getNumItems()-1;\n\t\t\t\tnextCircle = true;\n\t\t\t}\n\n\t\t\tif(!nextCircle || _options.loop) {\n\t\t\t\t_indexDiff += itemsDiff;\n\t\t\t\t_currPositionIndex -= itemsDiff;\n\t\t\t\titemChanged = true;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t}\n\n\t\tvar animateToX = _slideSize.x * _currPositionIndex;\n\t\tvar animateToDist = Math.abs( animateToX - _mainScrollPos.x );\n\t\tvar finishAnimDuration;\n\n\n\t\tif(!itemChanged && animateToX > _mainScrollPos.x !== _releaseAnimData.lastFlickSpeed.x > 0) {\n\t\t\t// \"return to current\" duration, e.g. when dragging from slide 0 to -1\n\t\t\tfinishAnimDuration = 333; \n\t\t} else {\n\t\t\tfinishAnimDuration = Math.abs(_releaseAnimData.lastFlickSpeed.x) > 0 ? \n\t\t\t\t\t\t\t\t\tanimateToDist / Math.abs(_releaseAnimData.lastFlickSpeed.x) : \n\t\t\t\t\t\t\t\t\t333;\n\n\t\t\tfinishAnimDuration = Math.min(finishAnimDuration, 400);\n\t\t\tfinishAnimDuration = Math.max(finishAnimDuration, 250);\n\t\t}\n\n\t\tif(_currZoomedItemIndex === _currentItemIndex) {\n\t\t\titemChanged = false;\n\t\t}\n\t\t\n\t\t_mainScrollAnimating = true;\n\t\t\n\t\t_shout('mainScrollAnimStart');\n\n\t\t_animateProp('mainScroll', _mainScrollPos.x, animateToX, finishAnimDuration, framework.easing.cubic.out, \n\t\t\t_moveMainScroll,\n\t\t\tfunction() {\n\t\t\t\t_stopAllAnimations();\n\t\t\t\t_mainScrollAnimating = false;\n\t\t\t\t_currZoomedItemIndex = -1;\n\t\t\t\t\n\t\t\t\tif(itemChanged || _currZoomedItemIndex !== _currentItemIndex) {\n\t\t\t\t\tself.updateCurrItem();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_shout('mainScrollAnimComplete');\n\t\t\t}\n\t\t);\n\n\t\tif(itemChanged) {\n\t\t\tself.updateCurrItem(true);\n\t\t}\n\n\t\treturn itemChanged;\n\t},\n\n\t_calculateZoomLevel = function(touchesDistance) {\n\t\treturn 1 / _startPointsDistance * touchesDistance * _startZoomLevel;\n\t},\n\n\t// Resets zoom if it's out of bounds\n\t_completeZoomGesture = function() {\n\t\tvar destZoomLevel = _currZoomLevel,\n\t\t\tminZoomLevel = _getMinZoomLevel(),\n\t\t\tmaxZoomLevel = _getMaxZoomLevel();\n\n\t\tif ( _currZoomLevel < minZoomLevel ) {\n\t\t\tdestZoomLevel = minZoomLevel;\n\t\t} else if ( _currZoomLevel > maxZoomLevel ) {\n\t\t\tdestZoomLevel = maxZoomLevel;\n\t\t}\n\n\t\tvar destOpacity = 1,\n\t\t\tonUpdate,\n\t\t\tinitialOpacity = _bgOpacity;\n\n\t\tif(_opacityChanged && !_isZoomingIn && !_wasOverInitialZoom && _currZoomLevel < minZoomLevel) {\n\t\t\t//_closedByScroll = true;\n\t\t\tself.close();\n\t\t\treturn true;\n\t\t}\n\n\t\tif(_opacityChanged) {\n\t\t\tonUpdate = function(now) {\n\t\t\t\t_applyBgOpacity( (destOpacity - initialOpacity) * now + initialOpacity );\n\t\t\t};\n\t\t}\n\n\t\tself.zoomTo(destZoomLevel, 0, 200, framework.easing.cubic.out, onUpdate);\n\t\treturn true;\n\t};\n\n\n_registerModule('Gestures', {\n\tpublicMethods: {\n\n\t\tinitGestures: function() {\n\n\t\t\t// helper function that builds touch/pointer/mouse events\n\t\t\tvar addEventNames = function(pref, down, move, up, cancel) {\n\t\t\t\t_dragStartEvent = pref + down;\n\t\t\t\t_dragMoveEvent = pref + move;\n\t\t\t\t_dragEndEvent = pref + up;\n\t\t\t\tif(cancel) {\n\t\t\t\t\t_dragCancelEvent = pref + cancel;\n\t\t\t\t} else {\n\t\t\t\t\t_dragCancelEvent = '';\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t_pointerEventEnabled = _features.pointerEvent;\n\t\t\tif(_pointerEventEnabled && _features.touch) {\n\t\t\t\t// we don't need touch events, if browser supports pointer events\n\t\t\t\t_features.touch = false;\n\t\t\t}\n\n\t\t\tif(_pointerEventEnabled) {\n\t\t\t\tif(navigator.msPointerEnabled) {\n\t\t\t\t\t// IE10 pointer events are case-sensitive\n\t\t\t\t\taddEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');\n\t\t\t\t} else {\n\t\t\t\t\taddEventNames('pointer', 'down', 'move', 'up', 'cancel');\n\t\t\t\t}\n\t\t\t} else if(_features.touch) {\n\t\t\t\taddEventNames('touch', 'start', 'move', 'end', 'cancel');\n\t\t\t\t_likelyTouchDevice = true;\n\t\t\t} else {\n\t\t\t\taddEventNames('mouse', 'down', 'move', 'up');\t\n\t\t\t}\n\n\t\t\t_upMoveEvents = _dragMoveEvent + ' ' + _dragEndEvent + ' ' + _dragCancelEvent;\n\t\t\t_downEvents = _dragStartEvent;\n\n\t\t\tif(_pointerEventEnabled && !_likelyTouchDevice) {\n\t\t\t\t_likelyTouchDevice = (navigator.maxTouchPoints > 1) || (navigator.msMaxTouchPoints > 1);\n\t\t\t}\n\t\t\t// make variable public\n\t\t\tself.likelyTouchDevice = _likelyTouchDevice; \n\t\t\t\n\t\t\t_globalEventHandlers[_dragStartEvent] = _onDragStart;\n\t\t\t_globalEventHandlers[_dragMoveEvent] = _onDragMove;\n\t\t\t_globalEventHandlers[_dragEndEvent] = _onDragRelease; // the Kraken\n\n\t\t\tif(_dragCancelEvent) {\n\t\t\t\t_globalEventHandlers[_dragCancelEvent] = _globalEventHandlers[_dragEndEvent];\n\t\t\t}\n\n\t\t\t// Bind mouse events on device with detected hardware touch support, in case it supports multiple types of input.\n\t\t\tif(_features.touch) {\n\t\t\t\t_downEvents += ' mousedown';\n\t\t\t\t_upMoveEvents += ' mousemove mouseup';\n\t\t\t\t_globalEventHandlers.mousedown = _globalEventHandlers[_dragStartEvent];\n\t\t\t\t_globalEventHandlers.mousemove = _globalEventHandlers[_dragMoveEvent];\n\t\t\t\t_globalEventHandlers.mouseup = _globalEventHandlers[_dragEndEvent];\n\t\t\t}\n\n\t\t\tif(!_likelyTouchDevice) {\n\t\t\t\t// don't allow pan to next slide from zoomed state on Desktop\n\t\t\t\t_options.allowPanToNext = false;\n\t\t\t}\n\t\t}\n\n\t}\n});\n\n\n/*>>gestures*/\n\n/*>>show-hide-transition*/\n/**\n * show-hide-transition.js:\n *\n * Manages initial opening or closing transition.\n *\n * If you're not planning to use transition for gallery at all,\n * you may set options hideAnimationDuration and showAnimationDuration to 0,\n * and just delete startAnimation function.\n * \n */\n\n\nvar _showOrHideTimeout,\n\t_showOrHide = function(item, img, out, completeFn) {\n\n\t\tif(_showOrHideTimeout) {\n\t\t\tclearTimeout(_showOrHideTimeout);\n\t\t}\n\n\t\t_initialZoomRunning = true;\n\t\t_initialContentSet = true;\n\t\t\n\t\t// dimensions of small thumbnail {x:,y:,w:}.\n\t\t// Height is optional, as calculated based on large image.\n\t\tvar thumbBounds; \n\t\tif(item.initialLayout) {\n\t\t\tthumbBounds = item.initialLayout;\n\t\t\titem.initialLayout = null;\n\t\t} else {\n\t\t\tthumbBounds = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);\n\t\t}\n\n\t\tvar duration = out ? _options.hideAnimationDuration : _options.showAnimationDuration;\n\n\t\tvar onComplete = function() {\n\t\t\t_stopAnimation('initialZoom');\n\t\t\tif(!out) {\n\t\t\t\t_applyBgOpacity(1);\n\t\t\t\tif(img) {\n\t\t\t\t\timg.style.display = 'block';\n\t\t\t\t}\n\t\t\t\tframework.addClass(template, 'pswp--animated-in');\n\t\t\t\t_shout('initialZoom' + (out ? 'OutEnd' : 'InEnd'));\n\t\t\t} else {\n\t\t\t\tself.template.removeAttribute('style');\n\t\t\t\tself.bg.removeAttribute('style');\n\t\t\t}\n\n\t\t\tif(completeFn) {\n\t\t\t\tcompleteFn();\n\t\t\t}\n\t\t\t_initialZoomRunning = false;\n\t\t};\n\n\t\t// if bounds aren't provided, just open gallery without animation\n\t\tif(!duration || !thumbBounds || thumbBounds.x === undefined) {\n\n\t\t\t_shout('initialZoom' + (out ? 'Out' : 'In') );\n\n\t\t\t_currZoomLevel = item.initialZoomLevel;\n\t\t\t_equalizePoints(_panOffset, item.initialPosition );\n\t\t\t_applyCurrentZoomPan();\n\n\t\t\ttemplate.style.opacity = out ? 0 : 1;\n\t\t\t_applyBgOpacity(1);\n\n\t\t\tif(duration) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tonComplete();\n\t\t\t\t}, duration);\n\t\t\t} else {\n\t\t\t\tonComplete();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar startAnimation = function() {\n\t\t\tvar closeWithRaf = _closedByScroll,\n\t\t\t\tfadeEverything = !self.currItem.src || self.currItem.loadError || _options.showHideOpacity;\n\t\t\t\n\t\t\t// apply hw-acceleration to image\n\t\t\tif(item.miniImg) {\n\t\t\t\titem.miniImg.style.webkitBackfaceVisibility = 'hidden';\n\t\t\t}\n\n\t\t\tif(!out) {\n\t\t\t\t_currZoomLevel = thumbBounds.w / item.w;\n\t\t\t\t_panOffset.x = thumbBounds.x;\n\t\t\t\t_panOffset.y = thumbBounds.y - _initalWindowScrollY;\n\n\t\t\t\tself[fadeEverything ? 'template' : 'bg'].style.opacity = 0.001;\n\t\t\t\t_applyCurrentZoomPan();\n\t\t\t}\n\n\t\t\t_registerStartAnimation('initialZoom');\n\t\t\t\n\t\t\tif(out && !closeWithRaf) {\n\t\t\t\tframework.removeClass(template, 'pswp--animated-in');\n\t\t\t}\n\n\t\t\tif(fadeEverything) {\n\t\t\t\tif(out) {\n\t\t\t\t\tframework[ (closeWithRaf ? 'remove' : 'add') + 'Class' ](template, 'pswp--animate_opacity');\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tframework.addClass(template, 'pswp--animate_opacity');\n\t\t\t\t\t}, 30);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_showOrHideTimeout = setTimeout(function() {\n\n\t\t\t\t_shout('initialZoom' + (out ? 'Out' : 'In') );\n\t\t\t\t\n\n\t\t\t\tif(!out) {\n\n\t\t\t\t\t// \"in\" animation always uses CSS transitions (instead of rAF).\n\t\t\t\t\t// CSS transition work faster here, \n\t\t\t\t\t// as developer may also want to animate other things, \n\t\t\t\t\t// like ui on top of sliding area, which can be animated just via CSS\n\t\t\t\t\t\n\t\t\t\t\t_currZoomLevel = item.initialZoomLevel;\n\t\t\t\t\t_equalizePoints(_panOffset, item.initialPosition );\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t_applyBgOpacity(1);\n\n\t\t\t\t\tif(fadeEverything) {\n\t\t\t\t\t\ttemplate.style.opacity = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_applyBgOpacity(1);\n\t\t\t\t\t}\n\n\t\t\t\t\t_showOrHideTimeout = setTimeout(onComplete, duration + 20);\n\t\t\t\t} else {\n\n\t\t\t\t\t// \"out\" animation uses rAF only when PhotoSwipe is closed by browser scroll, to recalculate position\n\t\t\t\t\tvar destZoomLevel = thumbBounds.w / item.w,\n\t\t\t\t\t\tinitialPanOffset = {\n\t\t\t\t\t\t\tx: _panOffset.x,\n\t\t\t\t\t\t\ty: _panOffset.y\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinitialZoomLevel = _currZoomLevel,\n\t\t\t\t\t\tinitalBgOpacity = _bgOpacity,\n\t\t\t\t\t\tonUpdate = function(now) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(now === 1) {\n\t\t\t\t\t\t\t\t_currZoomLevel = destZoomLevel;\n\t\t\t\t\t\t\t\t_panOffset.x = thumbBounds.x;\n\t\t\t\t\t\t\t\t_panOffset.y = thumbBounds.y - _currentWindowScrollY;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;\n\t\t\t\t\t\t\t\t_panOffset.x = (thumbBounds.x - initialPanOffset.x) * now + initialPanOffset.x;\n\t\t\t\t\t\t\t\t_panOffset.y = (thumbBounds.y - _currentWindowScrollY - initialPanOffset.y) * now + initialPanOffset.y;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\tif(fadeEverything) {\n\t\t\t\t\t\t\t\ttemplate.style.opacity = 1 - now;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_applyBgOpacity( initalBgOpacity - now * initalBgOpacity );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\tif(closeWithRaf) {\n\t\t\t\t\t\t_animateProp('initialZoom', 0, 1, duration, framework.easing.cubic.out, onUpdate, onComplete);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonUpdate(1);\n\t\t\t\t\t\t_showOrHideTimeout = setTimeout(onComplete, duration + 20);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t}, out ? 25 : 90); // Main purpose of this delay is to give browser time to paint and\n\t\t\t\t\t// create composite layers of PhotoSwipe UI parts (background, controls, caption, arrows).\n\t\t\t\t\t// Which avoids lag at the beginning of scale transition.\n\t\t};\n\t\tstartAnimation();\n\n\t\t\n\t};\n\n/*>>show-hide-transition*/\n\n/*>>items-controller*/\n/**\n*\n* Controller manages gallery items, their dimensions, and their content.\n* \n*/\n\nvar _items,\n\t_tempPanAreaSize = {},\n\t_imagesToAppendPool = [],\n\t_initialContentSet,\n\t_initialZoomRunning,\n\t_controllerDefaultOptions = {\n\t\tindex: 0,\n\t\terrorMsg: '
The image could not be loaded.
',\n\t\tforceProgressiveLoading: false, // TODO\n\t\tpreload: [1,1],\n\t\tgetNumItemsFn: function() {\n\t\t\treturn _items.length;\n\t\t}\n\t};\n\n\nvar _getItemAt,\n\t_getNumItems,\n\t_initialIsLoop,\n\t_getZeroBounds = function() {\n\t\treturn {\n\t\t\tcenter:{x:0,y:0}, \n\t\t\tmax:{x:0,y:0}, \n\t\t\tmin:{x:0,y:0}\n\t\t};\n\t},\n\t_calculateSingleItemPanBounds = function(item, realPanElementW, realPanElementH ) {\n\t\tvar bounds = item.bounds;\n\n\t\t// position of element when it's centered\n\t\tbounds.center.x = Math.round((_tempPanAreaSize.x - realPanElementW) / 2);\n\t\tbounds.center.y = Math.round((_tempPanAreaSize.y - realPanElementH) / 2) + item.vGap.top;\n\n\t\t// maximum pan position\n\t\tbounds.max.x = (realPanElementW > _tempPanAreaSize.x) ? \n\t\t\t\t\t\t\tMath.round(_tempPanAreaSize.x - realPanElementW) : \n\t\t\t\t\t\t\tbounds.center.x;\n\t\t\n\t\tbounds.max.y = (realPanElementH > _tempPanAreaSize.y) ? \n\t\t\t\t\t\t\tMath.round(_tempPanAreaSize.y - realPanElementH) + item.vGap.top : \n\t\t\t\t\t\t\tbounds.center.y;\n\t\t\n\t\t// minimum pan position\n\t\tbounds.min.x = (realPanElementW > _tempPanAreaSize.x) ? 0 : bounds.center.x;\n\t\tbounds.min.y = (realPanElementH > _tempPanAreaSize.y) ? item.vGap.top : bounds.center.y;\n\t},\n\t_calculateItemSize = function(item, viewportSize, zoomLevel) {\n\n\t\tif (item.src && !item.loadError) {\n\t\t\tvar isInitial = !zoomLevel;\n\t\t\t\n\t\t\tif(isInitial) {\n\t\t\t\tif(!item.vGap) {\n\t\t\t\t\titem.vGap = {top:0,bottom:0};\n\t\t\t\t}\n\t\t\t\t// allows overriding vertical margin for individual items\n\t\t\t\t_shout('parseVerticalMargin', item);\n\t\t\t}\n\n\n\t\t\t_tempPanAreaSize.x = viewportSize.x;\n\t\t\t_tempPanAreaSize.y = viewportSize.y - item.vGap.top - item.vGap.bottom;\n\n\t\t\tif (isInitial) {\n\t\t\t\tvar hRatio = _tempPanAreaSize.x / item.w;\n\t\t\t\tvar vRatio = _tempPanAreaSize.y / item.h;\n\n\t\t\t\titem.fitRatio = hRatio < vRatio ? hRatio : vRatio;\n\t\t\t\t//item.fillRatio = hRatio > vRatio ? hRatio : vRatio;\n\n\t\t\t\tvar scaleMode = _options.scaleMode;\n\n\t\t\t\tif (scaleMode === 'orig') {\n\t\t\t\t\tzoomLevel = 1;\n\t\t\t\t} else if (scaleMode === 'fit') {\n\t\t\t\t\tzoomLevel = item.fitRatio;\n\t\t\t\t}\n\n\t\t\t\tif (zoomLevel > 1) {\n\t\t\t\t\tzoomLevel = 1;\n\t\t\t\t}\n\n\t\t\t\titem.initialZoomLevel = zoomLevel;\n\t\t\t\t\n\t\t\t\tif(!item.bounds) {\n\t\t\t\t\t// reuse bounds object\n\t\t\t\t\titem.bounds = _getZeroBounds(); \n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!zoomLevel) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_calculateSingleItemPanBounds(item, item.w * zoomLevel, item.h * zoomLevel);\n\n\t\t\tif (isInitial && zoomLevel === item.initialZoomLevel) {\n\t\t\t\titem.initialPosition = item.bounds.center;\n\t\t\t}\n\n\t\t\treturn item.bounds;\n\t\t} else {\n\t\t\titem.w = item.h = 0;\n\t\t\titem.initialZoomLevel = item.fitRatio = 1;\n\t\t\titem.bounds = _getZeroBounds();\n\t\t\titem.initialPosition = item.bounds.center;\n\n\t\t\t// if it's not image, we return zero bounds (content is not zoomable)\n\t\t\treturn item.bounds;\n\t\t}\n\t\t\n\t},\n\n\t\n\n\n\t_appendImage = function(index, item, baseDiv, img, preventAnimation, keepPlaceholder) {\n\t\t\n\n\t\tif(item.loadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(img) {\n\n\t\t\titem.imageAppended = true;\n\t\t\t_setImageSize(item, img, (item === self.currItem && _renderMaxResolution) );\n\t\t\t\n\t\t\tbaseDiv.appendChild(img);\n\n\t\t\tif(keepPlaceholder) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(item && item.loaded && item.placeholder) {\n\t\t\t\t\t\titem.placeholder.style.display = 'none';\n\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t}\n\t\t\t\t}, 500);\n\t\t\t}\n\t\t}\n\t},\n\t\n\n\n\t_preloadImage = function(item) {\n\t\titem.loading = true;\n\t\titem.loaded = false;\n\t\tvar img = item.img = framework.createEl('pswp__img', 'img');\n\t\tvar onComplete = function() {\n\t\t\titem.loading = false;\n\t\t\titem.loaded = true;\n\n\t\t\tif(item.loadComplete) {\n\t\t\t\titem.loadComplete(item);\n\t\t\t} else {\n\t\t\t\titem.img = null; // no need to store image object\n\t\t\t}\n\t\t\timg.onload = img.onerror = null;\n\t\t\timg = null;\n\t\t};\n\t\timg.onload = onComplete;\n\t\timg.onerror = function() {\n\t\t\titem.loadError = true;\n\t\t\tonComplete();\n\t\t};\t\t\n\n\t\timg.src = item.src;// + '?a=' + Math.random();\n\n\t\treturn img;\n\t},\n\t_checkForError = function(item, cleanUp) {\n\t\tif(item.src && item.loadError && item.container) {\n\n\t\t\tif(cleanUp) {\n\t\t\t\titem.container.innerHTML = '';\n\t\t\t}\n\n\t\t\titem.container.innerHTML = _options.errorMsg.replace('%url%', item.src );\n\t\t\treturn true;\n\t\t\t\n\t\t}\n\t},\n\t_setImageSize = function(item, img, maxRes) {\n\t\tif(!item.src) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(!img) {\n\t\t\timg = item.container.lastChild;\n\t\t}\n\n\t\tvar w = maxRes ? item.w : Math.round(item.w * item.fitRatio),\n\t\t\th = maxRes ? item.h : Math.round(item.h * item.fitRatio);\n\t\t\n\t\tif(item.placeholder && !item.loaded) {\n\t\t\titem.placeholder.style.width = w + 'px';\n\t\t\titem.placeholder.style.height = h + 'px';\n\t\t}\n\n\t\timg.style.width = w + 'px';\n\t\timg.style.height = h + 'px';\n\t},\n\t_appendImagesPool = function() {\n\n\t\tif(_imagesToAppendPool.length) {\n\t\t\tvar poolItem;\n\n\t\t\tfor(var i = 0; i < _imagesToAppendPool.length; i++) {\n\t\t\t\tpoolItem = _imagesToAppendPool[i];\n\t\t\t\tif( poolItem.holder.index === poolItem.index ) {\n\t\t\t\t\t_appendImage(poolItem.index, poolItem.item, poolItem.baseDiv, poolItem.img, false, poolItem.clearPlaceholder);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_imagesToAppendPool = [];\n\t\t}\n\t};\n\t\n\n\n_registerModule('Controller', {\n\n\tpublicMethods: {\n\n\t\tlazyLoadItem: function(index) {\n\t\t\tindex = _getLoopedId(index);\n\t\t\tvar item = _getItemAt(index);\n\n\t\t\tif(!item || ((item.loaded || item.loading) && !_itemsNeedUpdate)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_shout('gettingData', index, item);\n\n\t\t\tif (!item.src) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_preloadImage(item);\n\t\t},\n\t\tinitController: function() {\n\t\t\tframework.extend(_options, _controllerDefaultOptions, true);\n\t\t\tself.items = _items = items;\n\t\t\t_getItemAt = self.getItemAt;\n\t\t\t_getNumItems = _options.getNumItemsFn; //self.getNumItems;\n\n\n\n\t\t\t_initialIsLoop = _options.loop;\n\t\t\tif(_getNumItems() < 3) {\n\t\t\t\t_options.loop = false; // disable loop if less then 3 items\n\t\t\t}\n\n\t\t\t_listen('beforeChange', function(diff) {\n\n\t\t\t\tvar p = _options.preload,\n\t\t\t\t\tisNext = diff === null ? true : (diff >= 0),\n\t\t\t\t\tpreloadBefore = Math.min(p[0], _getNumItems() ),\n\t\t\t\t\tpreloadAfter = Math.min(p[1], _getNumItems() ),\n\t\t\t\t\ti;\n\n\n\t\t\t\tfor(i = 1; i <= (isNext ? preloadAfter : preloadBefore); i++) {\n\t\t\t\t\tself.lazyLoadItem(_currentItemIndex+i);\n\t\t\t\t}\n\t\t\t\tfor(i = 1; i <= (isNext ? preloadBefore : preloadAfter); i++) {\n\t\t\t\t\tself.lazyLoadItem(_currentItemIndex-i);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_listen('initialLayout', function() {\n\t\t\t\tself.currItem.initialLayout = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);\n\t\t\t});\n\n\t\t\t_listen('mainScrollAnimComplete', _appendImagesPool);\n\t\t\t_listen('initialZoomInEnd', _appendImagesPool);\n\n\n\n\t\t\t_listen('destroy', function() {\n\t\t\t\tvar item;\n\t\t\t\tfor(var i = 0; i < _items.length; i++) {\n\t\t\t\t\titem = _items[i];\n\t\t\t\t\t// remove reference to DOM elements, for GC\n\t\t\t\t\tif(item.container) {\n\t\t\t\t\t\titem.container = null; \n\t\t\t\t\t}\n\t\t\t\t\tif(item.placeholder) {\n\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.img) {\n\t\t\t\t\t\titem.img = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.preloader) {\n\t\t\t\t\t\titem.preloader = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.loadError) {\n\t\t\t\t\t\titem.loaded = item.loadError = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_imagesToAppendPool = null;\n\t\t\t});\n\t\t},\n\n\n\t\tgetItemAt: function(index) {\n\t\t\tif (index >= 0) {\n\t\t\t\treturn _items[index] !== undefined ? _items[index] : false;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tallowProgressiveImg: function() {\n\t\t\t// 1. Progressive image loading isn't working on webkit/blink \n\t\t\t// when hw-acceleration (e.g. translateZ) is applied to IMG element.\n\t\t\t// That's why in PhotoSwipe parent element gets zoom transform, not image itself.\n\t\t\t// \n\t\t\t// 2. Progressive image loading sometimes blinks in webkit/blink when applying animation to parent element.\n\t\t\t// That's why it's disabled on touch devices (mainly because of swipe transition)\n\t\t\t// \n\t\t\t// 3. Progressive image loading sometimes doesn't work in IE (up to 11).\n\n\t\t\t// Don't allow progressive loading on non-large touch devices\n\t\t\treturn _options.forceProgressiveLoading || !_likelyTouchDevice || _options.mouseUsed || screen.width > 1200; \n\t\t\t// 1200 - to eliminate touch devices with large screen (like Chromebook Pixel)\n\t\t},\n\n\t\tsetContent: function(holder, index) {\n\n\t\t\tif(_options.loop) {\n\t\t\t\tindex = _getLoopedId(index);\n\t\t\t}\n\n\t\t\tvar prevItem = self.getItemAt(holder.index);\n\t\t\tif(prevItem) {\n\t\t\t\tprevItem.container = null;\n\t\t\t}\n\t\n\t\t\tvar item = self.getItemAt(index),\n\t\t\t\timg;\n\t\t\t\n\t\t\tif(!item) {\n\t\t\t\tholder.el.innerHTML = '';\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// allow to override data\n\t\t\t_shout('gettingData', index, item);\n\n\t\t\tholder.index = index;\n\t\t\tholder.item = item;\n\n\t\t\t// base container DIV is created only once for each of 3 holders\n\t\t\tvar baseDiv = item.container = framework.createEl('pswp__zoom-wrap'); \n\n\t\t\t\n\n\t\t\tif(!item.src && item.html) {\n\t\t\t\tif(item.html.tagName) {\n\t\t\t\t\tbaseDiv.appendChild(item.html);\n\t\t\t\t} else {\n\t\t\t\t\tbaseDiv.innerHTML = item.html;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_checkForError(item);\n\n\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\n\t\t\tif(item.src && !item.loadError && !item.loaded) {\n\n\t\t\t\titem.loadComplete = function(item) {\n\n\t\t\t\t\t// gallery closed before image finished loading\n\t\t\t\t\tif(!_isOpen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// check if holder hasn't changed while image was loading\n\t\t\t\t\tif(holder && holder.index === index ) {\n\t\t\t\t\t\tif( _checkForError(item, true) ) {\n\t\t\t\t\t\t\titem.loadComplete = item.img = null;\n\t\t\t\t\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\t\t\t\t_applyZoomPanToItem(item);\n\n\t\t\t\t\t\t\tif(holder.index === _currentItemIndex) {\n\t\t\t\t\t\t\t\t// recalculate dimensions\n\t\t\t\t\t\t\t\tself.updateCurrZoomItem();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( !item.imageAppended ) {\n\t\t\t\t\t\t\tif(_features.transform && (_mainScrollAnimating || _initialZoomRunning) ) {\n\t\t\t\t\t\t\t\t_imagesToAppendPool.push({\n\t\t\t\t\t\t\t\t\titem:item,\n\t\t\t\t\t\t\t\t\tbaseDiv:baseDiv,\n\t\t\t\t\t\t\t\t\timg:item.img,\n\t\t\t\t\t\t\t\t\tindex:index,\n\t\t\t\t\t\t\t\t\tholder:holder,\n\t\t\t\t\t\t\t\t\tclearPlaceholder:true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_appendImage(index, item, baseDiv, item.img, _mainScrollAnimating || _initialZoomRunning, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// remove preloader & mini-img\n\t\t\t\t\t\t\tif(!_initialZoomRunning && item.placeholder) {\n\t\t\t\t\t\t\t\titem.placeholder.style.display = 'none';\n\t\t\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\titem.loadComplete = null;\n\t\t\t\t\titem.img = null; // no need to store image element after it's added\n\n\t\t\t\t\t_shout('imageLoadComplete', index, item);\n\t\t\t\t};\n\n\t\t\t\tif(framework.features.transform) {\n\t\t\t\t\t\n\t\t\t\t\tvar placeholderClassName = 'pswp__img pswp__img--placeholder'; \n\t\t\t\t\tplaceholderClassName += (item.msrc ? '' : ' pswp__img--placeholder--blank');\n\n\t\t\t\t\tvar placeholder = framework.createEl(placeholderClassName, item.msrc ? 'img' : '');\n\t\t\t\t\tif(item.msrc) {\n\t\t\t\t\t\tplaceholder.src = item.msrc;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t_setImageSize(item, placeholder);\n\n\t\t\t\t\tbaseDiv.appendChild(placeholder);\n\t\t\t\t\titem.placeholder = placeholder;\n\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\tif(!item.loading) {\n\t\t\t\t\t_preloadImage(item);\n\t\t\t\t}\n\n\n\t\t\t\tif( self.allowProgressiveImg() ) {\n\t\t\t\t\t// just append image\n\t\t\t\t\tif(!_initialContentSet && _features.transform) {\n\t\t\t\t\t\t_imagesToAppendPool.push({\n\t\t\t\t\t\t\titem:item, \n\t\t\t\t\t\t\tbaseDiv:baseDiv, \n\t\t\t\t\t\t\timg:item.img, \n\t\t\t\t\t\t\tindex:index, \n\t\t\t\t\t\t\tholder:holder\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_appendImage(index, item, baseDiv, item.img, true, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else if(item.src && !item.loadError) {\n\t\t\t\t// image object is created every time, due to bugs of image loading & delay when switching images\n\t\t\t\timg = framework.createEl('pswp__img', 'img');\n\t\t\t\timg.style.opacity = 1;\n\t\t\t\timg.src = item.src;\n\t\t\t\t_setImageSize(item, img);\n\t\t\t\t_appendImage(index, item, baseDiv, img, true);\n\t\t\t}\n\t\t\t\n\n\t\t\tif(!_initialContentSet && index === _currentItemIndex) {\n\t\t\t\t_currZoomElementStyle = baseDiv.style;\n\t\t\t\t_showOrHide(item, (img ||item.img) );\n\t\t\t} else {\n\t\t\t\t_applyZoomPanToItem(item);\n\t\t\t}\n\n\t\t\tholder.el.innerHTML = '';\n\t\t\tholder.el.appendChild(baseDiv);\n\t\t},\n\n\t\tcleanSlide: function( item ) {\n\t\t\tif(item.img ) {\n\t\t\t\titem.img.onload = item.img.onerror = null;\n\t\t\t}\n\t\t\titem.loaded = item.loading = item.img = item.imageAppended = false;\n\t\t}\n\n\t}\n});\n\n/*>>items-controller*/\n\n/*>>tap*/\n/**\n * tap.js:\n *\n * Displatches tap and double-tap events.\n * \n */\n\nvar tapTimer,\n\ttapReleasePoint = {},\n\t_dispatchTapEvent = function(origEvent, releasePoint, pointerType) {\t\t\n\t\tvar e = document.createEvent( 'CustomEvent' ),\n\t\t\teDetail = {\n\t\t\t\torigEvent:origEvent, \n\t\t\t\ttarget:origEvent.target, \n\t\t\t\treleasePoint: releasePoint, \n\t\t\t\tpointerType:pointerType || 'touch'\n\t\t\t};\n\n\t\te.initCustomEvent( 'pswpTap', true, true, eDetail );\n\t\torigEvent.target.dispatchEvent(e);\n\t};\n\n_registerModule('Tap', {\n\tpublicMethods: {\n\t\tinitTap: function() {\n\t\t\t_listen('firstTouchStart', self.onTapStart);\n\t\t\t_listen('touchRelease', self.onTapRelease);\n\t\t\t_listen('destroy', function() {\n\t\t\t\ttapReleasePoint = {};\n\t\t\t\ttapTimer = null;\n\t\t\t});\n\t\t},\n\t\tonTapStart: function(touchList) {\n\t\t\tif(touchList.length > 1) {\n\t\t\t\tclearTimeout(tapTimer);\n\t\t\t\ttapTimer = null;\n\t\t\t}\n\t\t},\n\t\tonTapRelease: function(e, releasePoint) {\n\t\t\tif(!releasePoint) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!_moved && !_isMultitouch && !_numAnimations) {\n\t\t\t\tvar p0 = releasePoint;\n\t\t\t\tif(tapTimer) {\n\t\t\t\t\tclearTimeout(tapTimer);\n\t\t\t\t\ttapTimer = null;\n\n\t\t\t\t\t// Check if taped on the same place\n\t\t\t\t\tif ( _isNearbyPoints(p0, tapReleasePoint) ) {\n\t\t\t\t\t\t_shout('doubleTap', p0);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(releasePoint.type === 'mouse') {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint, 'mouse');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar clickedTagName = e.target.tagName.toUpperCase();\n\t\t\t\t// avoid double tap delay on buttons and elements that have class pswp__single-tap\n\t\t\t\tif(clickedTagName === 'BUTTON' || framework.hasClass(e.target, 'pswp__single-tap') ) {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_equalizePoints(tapReleasePoint, p0);\n\n\t\t\t\ttapTimer = setTimeout(function() {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint);\n\t\t\t\t\ttapTimer = null;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\t}\n});\n\n/*>>tap*/\n\n/*>>desktop-zoom*/\n/**\n *\n * desktop-zoom.js:\n *\n * - Binds mousewheel event for paning zoomed image.\n * - Manages \"dragging\", \"zoomed-in\", \"zoom-out\" classes.\n * (which are used for cursors and zoom icon)\n * - Adds toggleDesktopZoom function.\n * \n */\n\nvar _wheelDelta;\n\t\n_registerModule('DesktopZoom', {\n\n\tpublicMethods: {\n\n\t\tinitDesktopZoom: function() {\n\n\t\t\tif(_oldIE) {\n\t\t\t\t// no zoom for old IE (<=8)\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_likelyTouchDevice) {\n\t\t\t\t// if detected hardware touch support, we wait until mouse is used,\n\t\t\t\t// and only then apply desktop-zoom features\n\t\t\t\t_listen('mouseUsed', function() {\n\t\t\t\t\tself.setupDesktopZoom();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.setupDesktopZoom(true);\n\t\t\t}\n\n\t\t},\n\n\t\tsetupDesktopZoom: function(onInit) {\n\n\t\t\t_wheelDelta = {};\n\n\t\t\tvar events = 'wheel mousewheel DOMMouseScroll';\n\t\t\t\n\t\t\t_listen('bindEvents', function() {\n\t\t\t\tframework.bind(template, events, self.handleMouseWheel);\n\t\t\t});\n\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tif(_wheelDelta) {\n\t\t\t\t\tframework.unbind(template, events, self.handleMouseWheel);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.mouseZoomedIn = false;\n\n\t\t\tvar hasDraggingClass,\n\t\t\t\tupdateZoomable = function() {\n\t\t\t\t\tif(self.mouseZoomedIn) {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--zoomed-in');\n\t\t\t\t\t\tself.mouseZoomedIn = false;\n\t\t\t\t\t}\n\t\t\t\t\tif(_currZoomLevel < 1) {\n\t\t\t\t\t\tframework.addClass(template, 'pswp--zoom-allowed');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--zoom-allowed');\n\t\t\t\t\t}\n\t\t\t\t\tremoveDraggingClass();\n\t\t\t\t},\n\t\t\t\tremoveDraggingClass = function() {\n\t\t\t\t\tif(hasDraggingClass) {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--dragging');\n\t\t\t\t\t\thasDraggingClass = false;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t_listen('resize' , updateZoomable);\n\t\t\t_listen('afterChange' , updateZoomable);\n\t\t\t_listen('pointerDown', function() {\n\t\t\t\tif(self.mouseZoomedIn) {\n\t\t\t\t\thasDraggingClass = true;\n\t\t\t\t\tframework.addClass(template, 'pswp--dragging');\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('pointerUp', removeDraggingClass);\n\n\t\t\tif(!onInit) {\n\t\t\t\tupdateZoomable();\n\t\t\t}\n\t\t\t\n\t\t},\n\n\t\thandleMouseWheel: function(e) {\n\n\t\t\tif(_currZoomLevel <= self.currItem.fitRatio) {\n\t\t\t\tif( _options.modal ) {\n\n\t\t\t\t\tif (!_options.closeOnScroll || _numAnimations || _isDragging) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t} else if(_transformKey && Math.abs(e.deltaY) > 2) {\n\t\t\t\t\t\t// close PhotoSwipe\n\t\t\t\t\t\t// if browser supports transforms & scroll changed enough\n\t\t\t\t\t\t_closedByScroll = true;\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// allow just one event to fire\n\t\t\te.stopPropagation();\n\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t\t\t_wheelDelta.x = 0;\n\n\t\t\tif('deltaX' in e) {\n\t\t\t\tif(e.deltaMode === 1 /* DOM_DELTA_LINE */) {\n\t\t\t\t\t// 18 - average line height\n\t\t\t\t\t_wheelDelta.x = e.deltaX * 18;\n\t\t\t\t\t_wheelDelta.y = e.deltaY * 18;\n\t\t\t\t} else {\n\t\t\t\t\t_wheelDelta.x = e.deltaX;\n\t\t\t\t\t_wheelDelta.y = e.deltaY;\n\t\t\t\t}\n\t\t\t} else if('wheelDelta' in e) {\n\t\t\t\tif(e.wheelDeltaX) {\n\t\t\t\t\t_wheelDelta.x = -0.16 * e.wheelDeltaX;\n\t\t\t\t}\n\t\t\t\tif(e.wheelDeltaY) {\n\t\t\t\t\t_wheelDelta.y = -0.16 * e.wheelDeltaY;\n\t\t\t\t} else {\n\t\t\t\t\t_wheelDelta.y = -0.16 * e.wheelDelta;\n\t\t\t\t}\n\t\t\t} else if('detail' in e) {\n\t\t\t\t_wheelDelta.y = e.detail;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_calculatePanBounds(_currZoomLevel, true);\n\n\t\t\tvar newPanX = _panOffset.x - _wheelDelta.x,\n\t\t\t\tnewPanY = _panOffset.y - _wheelDelta.y;\n\n\t\t\t// only prevent scrolling in nonmodal mode when not at edges\n\t\t\tif (_options.modal ||\n\t\t\t\t(\n\t\t\t\tnewPanX <= _currPanBounds.min.x && newPanX >= _currPanBounds.max.x &&\n\t\t\t\tnewPanY <= _currPanBounds.min.y && newPanY >= _currPanBounds.max.y\n\t\t\t\t) ) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\t// TODO: use rAF instead of mousewheel?\n\t\t\tself.panTo(newPanX, newPanY);\n\t\t},\n\n\t\ttoggleDesktopZoom: function(centerPoint) {\n\t\t\tcenterPoint = centerPoint || {x:_viewportSize.x/2 + _offset.x, y:_viewportSize.y/2 + _offset.y };\n\n\t\t\tvar doubleTapZoomLevel = _options.getDoubleTapZoom(true, self.currItem);\n\t\t\tvar zoomOut = _currZoomLevel === doubleTapZoomLevel;\n\t\t\t\n\t\t\tself.mouseZoomedIn = !zoomOut;\n\n\t\t\tself.zoomTo(zoomOut ? self.currItem.initialZoomLevel : doubleTapZoomLevel, centerPoint, 333);\n\t\t\tframework[ (!zoomOut ? 'add' : 'remove') + 'Class'](template, 'pswp--zoomed-in');\n\t\t}\n\n\t}\n});\n\n\n/*>>desktop-zoom*/\n\n/*>>history*/\n/**\n *\n * history.js:\n *\n * - Back button to close gallery.\n * \n * - Unique URL for each slide: example.com/&pid=1&gid=3\n * (where PID is picture index, and GID and gallery index)\n * \n * - Switch URL when slides change.\n * \n */\n\n\nvar _historyDefaultOptions = {\n\thistory: true,\n\tgalleryUID: 1\n};\n\nvar _historyUpdateTimeout,\n\t_hashChangeTimeout,\n\t_hashAnimCheckTimeout,\n\t_hashChangedByScript,\n\t_hashChangedByHistory,\n\t_hashReseted,\n\t_initialHash,\n\t_historyChanged,\n\t_closedFromURL,\n\t_urlChangedOnce,\n\t_windowLoc,\n\n\t_supportsPushState,\n\n\t_getHash = function() {\n\t\treturn _windowLoc.hash.substring(1);\n\t},\n\t_cleanHistoryTimeouts = function() {\n\n\t\tif(_historyUpdateTimeout) {\n\t\t\tclearTimeout(_historyUpdateTimeout);\n\t\t}\n\n\t\tif(_hashAnimCheckTimeout) {\n\t\t\tclearTimeout(_hashAnimCheckTimeout);\n\t\t}\n\t},\n\n\t// pid - Picture index\n\t// gid - Gallery index\n\t_parseItemIndexFromURL = function() {\n\t\tvar hash = _getHash(),\n\t\t\tparams = {};\n\n\t\tif(hash.length < 5) { // pid=1\n\t\t\treturn params;\n\t\t}\n\n\t\tvar i, vars = hash.split('&');\n\t\tfor (i = 0; i < vars.length; i++) {\n\t\t\tif(!vars[i]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar pair = vars[i].split('=');\t\n\t\t\tif(pair.length < 2) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tparams[pair[0]] = pair[1];\n\t\t}\n\t\tif(_options.galleryPIDs) {\n\t\t\t// detect custom pid in hash and search for it among the items collection\n\t\t\tvar searchfor = params.pid;\n\t\t\tparams.pid = 0; // if custom pid cannot be found, fallback to the first item\n\t\t\tfor(i = 0; i < _items.length; i++) {\n\t\t\t\tif(_items[i].pid === searchfor) {\n\t\t\t\t\tparams.pid = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tparams.pid = parseInt(params.pid,10)-1;\n\t\t}\n\t\tif( params.pid < 0 ) {\n\t\t\tparams.pid = 0;\n\t\t}\n\t\treturn params;\n\t},\n\t_updateHash = function() {\n\n\t\tif(_hashAnimCheckTimeout) {\n\t\t\tclearTimeout(_hashAnimCheckTimeout);\n\t\t}\n\n\n\t\tif(_numAnimations || _isDragging) {\n\t\t\t// changing browser URL forces layout/paint in some browsers, which causes noticable lag during animation\n\t\t\t// that's why we update hash only when no animations running\n\t\t\t_hashAnimCheckTimeout = setTimeout(_updateHash, 500);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(_hashChangedByScript) {\n\t\t\tclearTimeout(_hashChangeTimeout);\n\t\t} else {\n\t\t\t_hashChangedByScript = true;\n\t\t}\n\n\n\t\tvar pid = (_currentItemIndex + 1);\n\t\tvar item = _getItemAt( _currentItemIndex );\n\t\tif(item.hasOwnProperty('pid')) {\n\t\t\t// carry forward any custom pid assigned to the item\n\t\t\tpid = item.pid;\n\t\t}\n\t\tvar newHash = _initialHash + '&' + 'gid=' + _options.galleryUID + '&' + 'pid=' + pid;\n\n\t\tif(!_historyChanged) {\n\t\t\tif(_windowLoc.hash.indexOf(newHash) === -1) {\n\t\t\t\t_urlChangedOnce = true;\n\t\t\t}\n\t\t\t// first time - add new hisory record, then just replace\n\t\t}\n\n\t\tvar newURL = _windowLoc.href.split('#')[0] + '#' + newHash;\n\n\t\tif( _supportsPushState ) {\n\n\t\t\tif('#' + newHash !== window.location.hash) {\n\t\t\t\thistory[_historyChanged ? 'replaceState' : 'pushState']('', document.title, newURL);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif(_historyChanged) {\n\t\t\t\t_windowLoc.replace( newURL );\n\t\t\t} else {\n\t\t\t\t_windowLoc.hash = newHash;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\n\t\t_historyChanged = true;\n\t\t_hashChangeTimeout = setTimeout(function() {\n\t\t\t_hashChangedByScript = false;\n\t\t}, 60);\n\t};\n\n\n\n\t\n\n_registerModule('History', {\n\n\t\n\n\tpublicMethods: {\n\t\tinitHistory: function() {\n\n\t\t\tframework.extend(_options, _historyDefaultOptions, true);\n\n\t\t\tif( !_options.history ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t_windowLoc = window.location;\n\t\t\t_urlChangedOnce = false;\n\t\t\t_closedFromURL = false;\n\t\t\t_historyChanged = false;\n\t\t\t_initialHash = _getHash();\n\t\t\t_supportsPushState = ('pushState' in history);\n\n\n\t\t\tif(_initialHash.indexOf('gid=') > -1) {\n\t\t\t\t_initialHash = _initialHash.split('&gid=')[0];\n\t\t\t\t_initialHash = _initialHash.split('?gid=')[0];\n\t\t\t}\n\t\t\t\n\n\t\t\t_listen('afterChange', self.updateURL);\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tframework.unbind(window, 'hashchange', self.onHashChange);\n\t\t\t});\n\n\n\t\t\tvar returnToOriginal = function() {\n\t\t\t\t_hashReseted = true;\n\t\t\t\tif(!_closedFromURL) {\n\n\t\t\t\t\tif(_urlChangedOnce) {\n\t\t\t\t\t\thistory.back();\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif(_initialHash) {\n\t\t\t\t\t\t\t_windowLoc.hash = _initialHash;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (_supportsPushState) {\n\n\t\t\t\t\t\t\t\t// remove hash from url without refreshing it or scrolling to top\n\t\t\t\t\t\t\t\thistory.pushState('', document.title, _windowLoc.pathname + _windowLoc.search );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_windowLoc.hash = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t_cleanHistoryTimeouts();\n\t\t\t};\n\n\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tif(_closedByScroll) {\n\t\t\t\t\t// if PhotoSwipe is closed by scroll, we go \"back\" before the closing animation starts\n\t\t\t\t\t// this is done to keep the scroll position\n\t\t\t\t\treturnToOriginal();\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('destroy', function() {\n\t\t\t\tif(!_hashReseted) {\n\t\t\t\t\treturnToOriginal();\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('firstUpdate', function() {\n\t\t\t\t_currentItemIndex = _parseItemIndexFromURL().pid;\n\t\t\t});\n\n\t\t\t\n\n\t\t\t\n\t\t\tvar index = _initialHash.indexOf('pid=');\n\t\t\tif(index > -1) {\n\t\t\t\t_initialHash = _initialHash.substring(0, index);\n\t\t\t\tif(_initialHash.slice(-1) === '&') {\n\t\t\t\t\t_initialHash = _initialHash.slice(0, -1);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\tsetTimeout(function() {\n\t\t\t\tif(_isOpen) { // hasn't destroyed yet\n\t\t\t\t\tframework.bind(window, 'hashchange', self.onHashChange);\n\t\t\t\t}\n\t\t\t}, 40);\n\t\t\t\n\t\t},\n\t\tonHashChange: function() {\n\n\t\t\tif(_getHash() === _initialHash) {\n\n\t\t\t\t_closedFromURL = true;\n\t\t\t\tself.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(!_hashChangedByScript) {\n\n\t\t\t\t_hashChangedByHistory = true;\n\t\t\t\tself.goTo( _parseItemIndexFromURL().pid );\n\t\t\t\t_hashChangedByHistory = false;\n\t\t\t}\n\t\t\t\n\t\t},\n\t\tupdateURL: function() {\n\n\t\t\t// Delay the update of URL, to avoid lag during transition, \n\t\t\t// and to not to trigger actions like \"refresh page sound\" or \"blinking favicon\" to often\n\t\t\t\n\t\t\t_cleanHistoryTimeouts();\n\t\t\t\n\n\t\t\tif(_hashChangedByHistory) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!_historyChanged) {\n\t\t\t\t_updateHash(); // first time\n\t\t\t} else {\n\t\t\t\t_historyUpdateTimeout = setTimeout(_updateHash, 800);\n\t\t\t}\n\t\t}\n\t\n\t}\n});\n\n\n/*>>history*/\n\tframework.extend(self, publicMethods); };\n\treturn PhotoSwipe;\n});\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/sprites nonrecursive /\\\\.svg$/\":\n/***/ (function(module, exports) {\n\nfunction webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/sprites nonrecursive /\\\\.svg$/\";\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/fn.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.debounce = debounce;\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n jQuery plugin\n \n \n ```\n import debug from 'debug';\n import plugin from '@core/plugins/lib';\n \n const ELEMENT_SELECTOR = '[data-my-plugin]';\n const PLUGIN_NAME = 'MyPlugin';\n const MODULE_NAME = 'plugins/my-plugin';\n const log = debug(MODULE_NAME);\n \n class PluginKlass {\n constructor(element, options) {\n log('new instance', element, options);\n \n this.element = element;\n this.options = options;\n this.$element = $(element);\n \n log('ready', this.$element);\n \n this.init();\n }\n }\n \n PluginKlass.DEFAULTS = {\n someCamelCasedProperty: `${PLUGIN_NAME}:something`,\n };\n \n plugin(PLUGIN_NAME, PluginKlass);\n \n $(document).ready(() => {\n $(ELEMENT_SELECTOR)[PLUGIN_NAME]();\n });\n ```\n \n Then using it in html:\n ```\n
\n ```\n \n Styelguide Core.Global.Javascript.JqueryPlugin\n */\n\n// import * as events from './events';\n\nexports.default = plugin;\nexports.jquery = jquery;\nexports.defaults = defaults;\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _debug = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _fn = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/fn.js\");\n\nvar fn = _interopRequireWildcard(_fn);\n\nvar _strings = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/strings.js\");\n\nvar strings = _interopRequireWildcard(_strings);\n\nvar _objects = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/objects.js\");\n\nvar objects = _interopRequireWildcard(_objects);\n\nvar _selectors = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/selectors.js\");\n\nvar selectors = _interopRequireWildcard(_selectors);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = (0, _debug2.default)('core/plugins/lib');\n\nfunction plugin(pluginName, klass) {\n var shortHand = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var formattedPluginName = (0, _strings.toCamelCase)(pluginName);\n var dataName = '__' + formattedPluginName;\n var old = _jquery2.default.fn[formattedPluginName];\n var ZERO = 0;\n\n klass.$bus = {\n subscribe: function subscribe(event, fn) {\n (0, _jquery2.default)(this).bind(event, fn);\n },\n publish: function publish(event, data) {\n (0, _jquery2.default)(this).trigger(event, [data]);\n }\n };\n\n klass.$util = {\n fn: fn,\n objects: objects,\n strings: strings,\n selectors: selectors\n };\n\n klass.prototype.selectors = selectors;\n klass.prototype.strings = strings;\n klass.prototype.objects = objects;\n klass.prototype.fn = fn;\n klass.prototype.inViewport = function (elm) {\n var rect = elm.getBoundingClientRect();\n var viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight);\n return !(rect.bottom < 0 || rect.top - viewHeight >= 0);\n };\n\n _jquery2.default.fn[pluginName] = function PluginFactory(option) {\n return this.each(function PluginInstanceFactory() {\n var $this = (0, _jquery2.default)(this);\n var data = $this.data();\n var overrides = (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' && option;\n var elementOptions = Object.keys(data).filter(function (key) {\n return (0, _strings.toCamelCase)(key).indexOf(formattedPluginName) >= ZERO;\n }).reduce(function (result, path) {\n var data = path && $this.data(path);\n var key = (0, _strings.toCamelCase)(path.replace(new RegExp(formattedPluginName + '-?'), ''));\n log(path, key, $this.data(path));\n\n if (key && data !== undefined) {\n result[key] = data;\n }\n return result;\n }, {});\n log(pluginName, { elementOptions: elementOptions });\n var instance = $this.data(dataName);\n var options = _jquery2.default.extend({}, klass.DEFAULTS, elementOptions, overrides);\n\n // store reference to instance\n if (!instance) {\n instance = new klass(this, options);\n instance.$utils = klass.$util;\n $this.data(dataName, instance);\n $this.addClass('u-' + pluginName);\n }\n\n // execute instance method\n if (typeof option === 'string') {\n instance[option]();\n }\n });\n };\n\n // - Short hand\n if (shortHand) {\n _jquery2.default[formattedPluginName] = function (options) {\n return (0, _jquery2.default)({})[formattedPluginName](options);\n };\n }\n\n // - No conflict\n // $.fn[formattedPluginName].noConflict = function noConflict () {\n // $.fn[formattedPluginName] = old;\n // };\n}\n\nfunction jquery(name) {\n return function decorate(target) {\n plugin(name, target);\n };\n}\n\nfunction defaults(options) {\n return function decorate(target) {\n target.DEFAULTS = options;\n };\n}\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/objects.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.elementAttrtibutesToObject = elementAttrtibutesToObject;\nexports.objectPath = objectPath;\n\nvar _debug = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _strings = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/strings.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MODULE_NAME = 'app.core/lib/objects';\nvar log = (0, _debug2.default)(MODULE_NAME);\n\nvar ZERO = 0;\n\n/**\n * Convert an elements attributes to an object, optionally filtering based on some predicate.\n * @param {DOMElement} element [description]\n * @param {Function} filterFn filtering function. return false to omit attribute.\n * @param {Function} transformFn transform attribute name function. returns camelCase by default\n * @return {[type]} [description]\n */\nfunction elementAttrtibutesToObject(element) {\n var filterFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {\n return true;\n };\n var transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (name) {\n return (0, _strings.toCamelCase)(name);\n };\n\n var output = {};\n var attrs = Array.from($(element).get(ZERO).attributes);\n\n if (!attrs) {\n return output;\n }\n\n log('converting element attributes to object', attrs);\n\n return attrs.reduce(function (result, attribute) {\n if (filterFn(attribute)) {\n var name = transformFn(attribute.name);\n var value = attribute.value;\n\n if (value === 'false' || value === 'true') {\n value = Boolean(value);\n }\n result[name] = attribute.value;\n }\n\n return result;\n }, output);\n}\n\n/**\n * Object.prop()\n *\n * Allows dot-notation access to object properties for both getting and setting.\n *\n * @param {Object} obj The object we're getting from or setting\n * @param {string} prop The dot-notated string defining the property location\n * @param {mixed} val For setting only; the value to set\n */\n\nfunction objectPath(obj, path, val) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { delimiter: '.' };\n\n var props = path.split(options.delimiter);\n var final = props.pop();\n var part = void 0;\n\n for (var index = 0; index < props.length; index++) {\n part = props[index];\n if (typeof obj[part] === 'undefined') {\n // If we're setting\n if (typeof val !== 'undefined' && index != props.length) {\n // If we're not at the end of the props, keep adding new empty objects\n obj[part] = {};\n } else {\n return undefined;\n }\n }\n obj = obj[part];\n }\n return typeof val !== \"undefined\" ? obj[final] = val : obj[final];\n}\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/selectors.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SELECTOR_PATTERNS = undefined;\nexports.selectorPattern = selectorPattern;\nexports.selectTarget = selectTarget;\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _debug = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = (0, _debug2.default)('core/plugins/lib/selectors');\n\nfunction selectorPattern() {\n for (var _len = arguments.length, directives = Array(_len), _key = 0; _key < _len; _key++) {\n directives[_key] = arguments[_key];\n }\n\n return new RegExp('\\\\((' + directives.join('|') + ')(.*)\\\\)\\\\s?(.*)');\n}\n\nvar SELECTOR_PATTERNS = exports.SELECTOR_PATTERNS = {\n\n // .find\n \"children\": selectorPattern('children'),\n\n // .closest\n \"parent\": selectorPattern('parent'),\n \"from\": selectorPattern('from'),\n \"parents\": selectorPattern('parents'),\n \"siblings\": selectorPattern('siblings'),\n \"here\": selectorPattern('here'),\n \"self\": selectorPattern('self')\n};\n\nfunction selectTarget(selector, $element) {\n var $target = void 0;\n\n var isClosestAncestoral = selector.match(SELECTOR_PATTERNS.parent);\n var isAllAncestoral = selector.match(SELECTOR_PATTERNS.parents);\n var isRetargeted = selector.match(SELECTOR_PATTERNS.from);\n var isAllDescendants = selector.match(SELECTOR_PATTERNS.children);\n var isGenerational = selector.match(SELECTOR_PATTERNS.here);\n var isSiblings = selector.match(SELECTOR_PATTERNS.siblings);\n var isSelfish = selector.match(SELECTOR_PATTERNS.self);\n\n // special retargeting root\n if (isRetargeted) {\n log('isRetargeted', isRetargeted[2], isRetargeted[3]);\n var $newElement = selectTarget(isRetargeted[2], $element);\n var newSelector = '(children) ' + isRetargeted[3];\n log('isRetargeted.newElement', $newElement);\n log('isRetargeted.newSelector', newSelector);\n $target = selectTarget(newSelector, $newElement);\n log('isRetargeted.target', $target);\n }\n\n // target is all ancestors\n else if (isAllAncestoral) {\n log('isAllAncestoral', isAllAncestoral);\n $target = $element.parents(isAllAncestoral[isAllAncestoral.length - 1]);\n }\n // target is closest ancestor\n else if (isClosestAncestoral) {\n log('isClosestAncestoral', isClosestAncestoral);\n $target = $element.closest(isClosestAncestoral[isClosestAncestoral.length - 1]);\n }\n // target is somewhere under current parent\n else if (isGenerational) {\n log('isGenerational', isGenerational);\n $target = $element.parent().find(isGenerational[isGenerational.length - 1]);\n }\n // target is only under self\n else if (isAllDescendants) {\n log('isAllDescendants', isAllDescendants);\n $target = $element.find(isAllDescendants[isAllDescendants.length - 1]);\n }\n // target is somewhere in siblings only\n else if (isSiblings) {\n log('isSiblings', isSiblings);\n $target = $element.siblings(isSiblings[isSiblings.length - 1]);\n }\n // target is source\n else if (!selector || isSelfish) {\n log('isSelfish', isSelfish);\n var selector = isSelfish[isSelfish.length - 1] || '*';\n $target = $element.filter(selector);\n }\n // target could be anywhere\n else {\n log('global', selector);\n $target = (0, _jquery2.default)(selector);\n }\n return $target;\n}\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/strings.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.toCamelCase = toCamelCase;\nexports.tmpl = tmpl;\nexports.$tmpl = $tmpl;\nexports.mustache = mustache;\nexports.booleanify = booleanify;\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _debug = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar log = (0, _debug2.default)('core/jquery_plugin/strings');\n\nfunction preserveCamelCase(str) {\n var isLastCharLower = false;\n var isLastCharUpper = false;\n var isLastLastCharUpper = false;\n\n for (var i = 0; i < str.length; i++) {\n var c = str[i];\n\n if (isLastCharLower && /[a-zA-Z]/.test(c) && c.toUpperCase() === c) {\n str = str.substr(0, i) + '-' + str.substr(i);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n i++;\n } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(c) && c.toLowerCase() === c) {\n str = str.substr(0, i - 1) + '-' + str.substr(i - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower = c.toLowerCase() === c;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = c.toUpperCase() === c;\n }\n }\n\n return str;\n}\n\nfunction toCamelCase(str) {\n if (arguments.length > 1) {\n str = Array.from(arguments).map(function (x) {\n return x.trim();\n }).filter(function (x) {\n return x.length;\n }).join('-');\n } else {\n str = str.trim();\n }\n\n if (str.length === 0) {\n return '';\n }\n\n if (str.length === 1) {\n return str.toLowerCase();\n }\n\n if (/^[a-z0-9]+$/.test(str)) {\n return str;\n }\n\n var hasUpperCase = str !== str.toLowerCase();\n\n if (hasUpperCase) {\n str = preserveCamelCase(str);\n }\n\n return str.replace(/^[_.\\- ]+/, '').toLowerCase().replace(/[_.\\- ]+(\\w|$)/g, function (m, p1) {\n return p1.toUpperCase();\n });\n};\n\nfunction tmpl(str, context) {\n var result = str;\n\n if (result) {\n\n Object.keys(context).forEach(function (item) {\n result = result.replace('{{' + item + '}}', context[item]);\n });\n }\n\n return result;\n}\n\nfunction $tmpl(element, context) {\n var $target = (0, _jquery2.default)(element);\n var templateString = $target.attr('data-text-template');\n var result = tmpl(templateString, context);\n\n $target.text(result);\n}\n\n/**\n * https://github.com/aishikaty/tiny-mustache\n * https://mustache.github.io/\n * @param {String} template [description]\n * @param {[type]} self [description]\n * @param {[type]} parent [description]\n * @param {[type]} invert [description]\n * @return {[type]} [description]\n */\nfunction mustache(template, self, parent, invert) {\n var render = mustache;\n var output = \"\";\n var i;\n\n log('mustache', { template: template, self: self, parent: parent, invert: invert });\n\n function get(ctx, path) {\n path = path.pop ? path : path.split(\".\");\n ctx = ctx[path.shift()] || \"\";\n return 0 in path ? get(ctx, path) : ctx;\n }\n\n self = Array.isArray(self) ? self : self ? [self] : [];\n self = invert ? 0 in self ? [] : [1] : self;\n\n for (i = 0; i < self.length; i++) {\n var childCode = '';\n var depth = 0;\n var inverted;\n var ctx = _typeof(self[i]) == \"object\" ? self[i] : {};\n ctx = Object.assign({}, parent, ctx);\n ctx[\"\"] = { \"\": self[i] };\n\n template.replace(/([\\s\\S]*?)({{((\\/)|(\\^)|#)(.*?)}}|$)/g, function (match, code, y, z, close, invert, name) {\n\n if (!depth) {\n output += code.replace(/{{{(.*?)}}}|{{(!?)(&?)(>?)(.*?)}}/g, function (match, raw, comment, isRaw, partial, name) {\n return raw ? get(ctx, raw) : isRaw ? get(ctx, name) : partial ? render(get(ctx, name), ctx) : !comment ? new Option(get(ctx, name)).innerHTML : \"\";\n });\n inverted = invert;\n } else {\n childCode += depth && !close || depth > 1 ? match : code;\n }\n\n if (close) {\n if (! --depth) {\n name = get(ctx, name);\n if (/^f/.test(typeof name === 'undefined' ? 'undefined' : _typeof(name))) {\n output += name.call(ctx, childCode, function (template) {\n return render(template, ctx);\n });\n } else {\n output += render(childCode, name, ctx, inverted);\n }\n childCode = \"\";\n }\n } else {\n ++depth;\n }\n log('mustache.output.' + depth, { output: output });\n });\n }\n log('mustache.output', { output: output });\n return output;\n}\n\nfunction booleanify(value) {\n var lower = value.toLowerCase();\n if (lower === 'false' || lower === '0') {\n return false;\n }\n return new Boolean(value);\n}\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/comparison-table/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n (0, _jquery2.default)(document).ready(function () {\n var NO_ICON_TABLE_CELL_LOCATOR = \".comparison-table tr.comparison-upper-row .comparison-cell.comparison-cell__upper.comparison-cell__no-icon\";\n // execute above function\n if (document.getElementsByClassName(\"block-comparison-table\").length) {\n if ((0, _jquery2.default)(window).width() < 768) {\n (0, _jquery2.default)(NO_ICON_TABLE_CELL_LOCATOR).attr(\"rowspan\", \"1\");\n } else {\n (0, _jquery2.default)(NO_ICON_TABLE_CELL_LOCATOR).attr(\"rowspan\", \"2\");\n }\n\n (0, _jquery2.default)(window).on(\"resize\", function () {\n if ((0, _jquery2.default)(this).width() < 768) {\n (0, _jquery2.default)(NO_ICON_TABLE_CELL_LOCATOR).attr(\"rowspan\", \"1\");\n (0, _jquery2.default)(\".comparison-table tr.comparison-upper-row.open .comparison-cell.comparison-cell__upper.comparison-cell__no-icon\").attr(\"rowspan\", \"2\");\n } else {\n (0, _jquery2.default)(NO_ICON_TABLE_CELL_LOCATOR).attr(\"rowspan\", \"2\");\n }\n });\n\n (0, _jquery2.default)(\".comparison-table tr.comparison-upper-row\").on(\"click\", function (event) {\n if ((0, _jquery2.default)(window).width() < 768) {\n event.preventDefault();\n (0, _jquery2.default)(this).toggleClass(\"open\").next().toggleClass(\"open\");\n\n var noIconCells = (0, _jquery2.default)(this).find(\".comparison-cell.comparison-cell__upper.comparison-cell__no-icon[rowspan='2']\");\n if (noIconCells.length > 0) {\n noIconCells.attr(\"rowspan\", \"1\");\n } else {\n (0, _jquery2.default)(this).find(\".comparison-cell.comparison-cell__upper.comparison-cell__no-icon[rowspan='1']\").attr(\"rowspan\", \"2\");\n }\n }\n });\n }\n });\n})();\n\n// Also add listener on resize\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/gallery/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n\n\tvar initGalleryBlock = function initGalleryBlock(galleryContainerSelector) {\n\n\t\t(0, _jquery2.default)(galleryContainerSelector).each(function (i, container) {\n\n\t\t\tvar containerElement = (0, _jquery2.default)(this);\n\t\t\tvar flickityElement = containerElement.find('.block-product-detail-slider__carousel-main')[0];\n\n\t\t\t// display each gallery item's corresponding content text\n\t\t\tvar flkty = Flickity.data(flickityElement);\n\n\t\t\tflkty.on('change', function (index) {\n\t\t\t\tcontainerElement.parent().find('.block-gallery__item-content-container').hide();\n\t\t\t\tcontainerElement.parent().find('.block-gallery__content-container').children().eq(index).fadeIn();\n\t\t\t});\n\t\t});\n\t};\n\n\t(0, _jquery2.default)(document).ready(function () {\n\n\t\t// execute above function\n\t\tif (document.getElementsByClassName('block-gallery__carousel-container').length) {\n\t\t\tinitGalleryBlock('.block-gallery__carousel-container');\n\t\t}\n\t});\n})();\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/image-gallery/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PhotoSwipe = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/client/src/core/vendor/photoswipe/photoswipe.js\");\nvar PhotoSwipeUIDefault = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/client/src/core/vendor/photoswipe/photoswipe-ui-default.js\");\n\n(function () {\n var initPhotoSwipeFromDOM = function initPhotoSwipeFromDOM(gallerySelector) {\n var div = document.createElement(\"div\");\n\n div.innerHTML = \"\";\n document.getElementsByTagName(\"body\")[0].appendChild(div);\n\n var parseThumbnailElements = function parseThumbnailElements(el) {\n var thumbElements = el.childNodes,\n numNodes = thumbElements.length,\n items = [],\n figureEl,\n linkEl,\n size,\n item;\n\n for (var i = 0; i < numNodes; i++) {\n figureEl = thumbElements[i]; //
element\n\n // include only element nodes\n if (figureEl.nodeType !== 1) {\n continue;\n }\n\n linkEl = figureEl.children[0]; // element\n\n size = linkEl.getAttribute(\"data-size\").split(\"x\");\n\n // create slide object\n item = {\n src: linkEl.getAttribute(\"href\"),\n w: parseInt(size[0], 10),\n h: parseInt(size[1], 10)\n };\n\n if (figureEl.children.length > 1) {\n //
content\n item.title = figureEl.children[1].innerHTML;\n }\n\n if (linkEl.children.length > 0) {\n // thumbnail element, retrieving thumbnail url\n item.msrc = linkEl.children[0].getAttribute(\"src\");\n }\n\n item.el = figureEl; // save link to element for getThumbBoundsFn\n items.push(item);\n }\n\n return items;\n };\n\n var closest = function closest(el, fn) {\n return el && (fn(el) ? el : closest(el.parentNode, fn));\n };\n\n var onThumbnailsClick = function onThumbnailsClick(e) {\n e = e || window.event;\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n // disable product image expanding on CSL site\n // var eTarget = e.target || e.srcElement;\n\n // // find root element of slide\n // var clickedListItem = closest(eTarget,\n // \tfunction(el) {\n // \t\treturn (el.tagName && el.tagName.toUpperCase() === 'FIGURE');\n // \t});\n\n // if (!clickedListItem) {\n // \treturn;\n // }\n\n // // find index of clicked item by looping through all child nodes\n // // alternatively, you may define index via data- attribute\n // var clickedGallery = clickedListItem.parentNode,\n // \tchildNodes = clickedListItem.parentNode.childNodes,\n // \tnumChildNodes = childNodes.length,\n // \tnodeIndex = 0,\n // \tindex;\n\n // for (var i = 0; i < numChildNodes; i++) {\n // \tif (childNodes[i].nodeType !== 1) {\n // \t\tcontinue;\n // \t}\n\n // \tif (childNodes[i] === clickedListItem) {\n // \t\tindex = nodeIndex;\n // \t\tbreak;\n // \t}\n // \tnodeIndex++;\n // }\n\n // if (index >= 0) {\n // \t// open PhotoSwipe if valid index found\n // \topenPhotoSwipe(index, clickedGallery);\n // }\n return false;\n };\n\n var photoswipeParseHash = function photoswipeParseHash() {\n var hash = window.location.hash.substring(1),\n params = {};\n\n if (hash.length < 5) {\n return params;\n }\n\n var vars = hash.split(\"&\");\n for (var i = 0; i < vars.length; i++) {\n if (!vars[i]) {\n continue;\n }\n var pair = vars[i].split(\"=\");\n if (pair.length < 2) {\n continue;\n }\n params[pair[0]] = pair[1];\n }\n\n if (params.gid) {\n params.gid = parseInt(params.gid, 10);\n }\n\n return params;\n };\n\n var openPhotoSwipe = function openPhotoSwipe(index, galleryElement, disableAnimation, fromURL) {\n var pswpElement = document.querySelectorAll(\".pswp\")[0],\n gallery,\n options,\n items;\n\n items = parseThumbnailElements(galleryElement);\n\n // define options (if needed)\n options = {\n // define gallery index (for URL)\n galleryUID: galleryElement.getAttribute(\"data-pswp-uid\"),\n\n getThumbBoundsFn: function getThumbBoundsFn(index) {\n // See Options -> getThumbBoundsFn section of documentation for more info\n var thumbnail = items[index].el.getElementsByTagName(\"img\")[0],\n // find thumbnail\n pageYScroll = window.pageYOffset || document.documentElement.scrollTop,\n rect = thumbnail.getBoundingClientRect();\n\n return { x: rect.left, y: rect.top + pageYScroll, w: rect.width };\n },\n\n shareButtons: [{\n id: \"download\",\n label: \"Download\",\n url: \"{{raw_image_url}}\",\n download: true\n }]\n };\n\n // PhotoSwipe opened from URL\n if (fromURL) {\n if (options.galleryPIDs) {\n // parse real index when custom PIDs are used\n // http://photoswipe.com/documentation/faq.html#custom-pid-in-url\n for (var j = 0; j < items.length; j++) {\n if (items[j].pid == index) {\n options.index = j;\n break;\n }\n }\n } else {\n // in URL indexes start from 1\n options.index = parseInt(index, 10) - 1;\n }\n } else {\n options.index = parseInt(index, 10);\n }\n\n // exit if index not found\n if (isNaN(options.index)) {\n return;\n }\n\n if (disableAnimation) {\n options.showAnimationDuration = 0;\n }\n\n // Pass data to PhotoSwipe and initialize it\n gallery = new PhotoSwipe(pswpElement, PhotoSwipeUIDefault, items, options);\n gallery.init();\n };\n\n // loop through all gallery elements and bind events\n var galleryElements = document.querySelectorAll(gallerySelector);\n\n for (var i = 0, l = galleryElements.length; i < l; i++) {\n galleryElements[i].setAttribute(\"data-pswp-uid\", i + 1);\n galleryElements[i].onclick = onThumbnailsClick;\n }\n\n // Parse URL and open gallery if it contains #&pid=3&gid=1\n var hashData = photoswipeParseHash();\n if (hashData.pid && hashData.gid) {\n openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true);\n }\n };\n\n // execute above function\n if (document.getElementsByClassName(\"m-gallery\").length) {\n initPhotoSwipeFromDOM(\".m-gallery\");\n }\n})();\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/image-gallery/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/gallery/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/comparison-table/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/sales-block/index.js\");\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/sales-block/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery2.default)(document).ready(function () {\n (0, _jquery2.default)(\".sales-block-select\").each(function () {\n var classes = (0, _jquery2.default)(this).attr(\"class\"),\n name = (0, _jquery2.default)(this).attr(\"name\");\n var template = '
';\n var displayValue = (0, _jquery2.default)(this).val().length > 0 ? (0, _jquery2.default)(this).val() : (0, _jquery2.default)(this).attr(\"placeholder\");\n template += '' + displayValue + \"\";\n template += '
';\n (0, _jquery2.default)(this).find(\"option\").each(function () {\n var select = (0, _jquery2.default)(this).attr(\"selected\") ? \"selection\" : \"\";\n template += '' + (0, _jquery2.default)(this).html() + \"\";\n });\n template += \"
\";\n\n (0, _jquery2.default)(this).wrap('
');\n (0, _jquery2.default)(this).hide();\n (0, _jquery2.default)(this).after(template);\n });\n\n (0, _jquery2.default)(\".sales-block-select-trigger\").on(\"click\", function () {\n (0, _jquery2.default)(\"html\").one(\"click\", function () {\n (0, _jquery2.default)(\".sales-block-select\").removeClass(\"opened\");\n });\n (0, _jquery2.default)(this).parents(\".sales-block-select\").toggleClass(\"opened\");\n event.stopPropagation();\n });\n (0, _jquery2.default)(\".sales-option\").on(\"click\", function () {\n var value = (0, _jquery2.default)(this).data(\"value\");\n var isFirst = true;\n var showToggle = false;\n var target = (0, _jquery2.default)(this).parents(\".sales-block-select.sources\").data(\"target\");\n (0, _jquery2.default)(this).parents(\".sales-block-select-wrapper\").find(\"select\").val((0, _jquery2.default)(this).data(\"value\"));\n (0, _jquery2.default)(this).parents(\".sales-options\").find(\".sales-option\").removeClass(\"selection\");\n (0, _jquery2.default)(this).addClass(\"selection\");\n (0, _jquery2.default)(this).parents(\".sales-block-select\").removeClass(\"opened\");\n (0, _jquery2.default)(this).parents(\".sales-block-select\").find(\".sales-block-select-trigger\").text((0, _jquery2.default)(this).text());\n (0, _jquery2.default)(this).parents(\".layout.block-sales-block\").find(\".block-card\").each(function () {\n if (target) {\n (0, _jquery2.default)(this).removeClass(\"block-card__featured-article\");\n if (value) {\n if ((0, _jquery2.default)(this).data(target) == value) {\n (0, _jquery2.default)(this).removeClass(target + \"-hide\");\n } else {\n (0, _jquery2.default)(this).addClass(target + \"-hide\");\n }\n } else {\n (0, _jquery2.default)(this).removeClass(target + \"-hide\");\n }\n if (isFirst && !(0, _jquery2.default)(this).attr(\"class\").includes(\"hide\")) {\n (0, _jquery2.default)(this).addClass(\"block-card__featured-article\");\n isFirst = false;\n }\n }\n (0, _jquery2.default)(this).removeClass(\"toggle-show\");\n });\n (0, _jquery2.default)(this).parents(\".layout.block-sales-block\").find(\".block-sales-layout__toggle-button\").hide();\n (0, _jquery2.default)(this).parents(\".layout.block-sales-block\").find(\".block-card\").not(\".location-hide\").not(\".issold-hide\").each(function (index) {\n if (index < 4) {\n (0, _jquery2.default)(this).addClass(\"toggle-show\");\n } else if (!showToggle) {\n showToggle = true;\n (0, _jquery2.default)(this).parents(\".layout.block-sales-block\").find(\".block-sales-layout__toggle-button\").show();\n }\n });\n });\n});\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site-footer/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/blocks/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/page/index.js\");\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/page/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// import './home/';\n\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/global-search/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/global-search/search-form-collapsible.js\");\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/global-search/search-form-collapsible.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _debug = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _lib = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/index.js\");\n\nvar _lib2 = _interopRequireDefault(_lib);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ELEMENT_SELECTOR = '[data-search-form-collapsible]';\nvar PLUGIN_NAME = 'searchFormCollapsible';\n\nvar log = (0, _debug2.default)('site-header/header-controller:search');\n\nvar SearchFormCollapsible = function () {\n\tfunction SearchFormCollapsible(element, options) {\n\t\t_classCallCheck(this, SearchFormCollapsible);\n\n\t\tlog('element', element);\n\t\tlog('options', options);\n\n\t\tthis.options = options;\n\t\tthis.element = element;\n\t\tthis.$element = (0, _jquery2.default)(element);\n\n\t\tthis.enabled = false;\n\n\t\tthis.formElements = this.selectors.selectTarget(this.options.elementsSelector, this.$element);\n\n\t\tthis.watch();\n\n\t\tlog('ready', this, this.$target);\n\t}\n\n\t_createClass(SearchFormCollapsible, [{\n\t\tkey: 'watch',\n\t\tvalue: function watch() {\n\t\t\tlog('watching');\n\n\t\t\tthis.$element.on('togglesearch', this.toggle.bind(this));\n\t\t\tthis.$element.on('disablesearch', this.disable.bind(this));\n\t\t}\n\t}, {\n\t\tkey: 'enable',\n\t\tvalue: function enable() {\n\t\t\tthis.formElements.removeAttr('disabled');\n\t\t\tthis.enabled = true;\n\t\t\tthis.formElements[0].focus();\n\t\t\tlog('enable');\n\t\t}\n\t}, {\n\t\tkey: 'disable',\n\t\tvalue: function disable() {\n\t\t\tthis.formElements.attr('disabled', 'disabled');\n\t\t\tthis.enabled = false;\n\t\t\tlog('disable');\n\t\t}\n\t}, {\n\t\tkey: 'toggle',\n\t\tvalue: function toggle() {\n\t\t\tvar handler = this.enabled ? this.disable.bind(this) : this.enable.bind(this);\n\t\t\tlog('toggle');\n\t\t\thandler();\n\t\t}\n\t}]);\n\n\treturn SearchFormCollapsible;\n}();\n\nSearchFormCollapsible.DEFAULTS = {};\n\n(0, _lib2.default)(PLUGIN_NAME, SearchFormCollapsible);\n\n(0, _jquery2.default)(document).ready(function () {\n\t(0, _jquery2.default)(ELEMENT_SELECTOR)[PLUGIN_NAME]();\n});\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/search/global-search/index.js\");\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site-footer/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _bootstrap = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/bootstrap/dist/js/bootstrap.js\");\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/sprites/index.js\");\n\nvar _debug = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import './icons/icons__config'; // icon font import\nvar log = (0, _debug2.default)(\"site__csl001\");\n\n$(function () {\n log(\"ready\");\n});\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/sprites/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\nSVG Sprite\n*/\nvar files = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/site/sprites nonrecursive /\\\\.svg$/\");\nfiles.keys().forEach(files);\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/tables.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/video-block.js\");\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/tables.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n$('.table--scrollable').wrap('
');\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/wysiwyg/video-block.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar videoContainers = document.querySelectorAll('.video-container');\nif (videoContainers.length > 0) {\n videoContainers.forEach(function (c) {\n var playButton = c.querySelector('.play-button');\n var video = c.querySelector(\"video\");\n\n // Play or pause the video and toggle the button visibility\n playButton.addEventListener('click', function () {\n if (video.paused) {\n video.play();\n playButton.classList.add('hidden'); // Hide the play button when playing\n }\n });\n\n // Pause or play the video when clicking on the video itself\n video.addEventListener('click', function () {\n if (video.paused) {\n video.play();\n playButton.classList.add('hidden');\n } else {\n video.pause();\n playButton.classList.remove('hidden');\n }\n });\n\n // Show the play button when the video ends\n video.addEventListener('ended', function () {\n playButton.classList.remove('hidden');\n });\n });\n}\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/components/index.js\");\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/utilities/index.js\");\n\n/* Favicons entry point for webpack\n * html_code.html as expected output from realfavicongenerator.net\n * manually insert `WEBPACKHACK` to content attribute of meta[name=\"msapplication-config\"] i.e.\n * \n */\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/file-loader/dist/cjs.js??ref--6-0!/home/vsts/work/1/s/src/SCF/node_modules/extract-loader/lib/extractLoader.js!/home/vsts/work/1/s/src/SCF/node_modules/html-loader/index.js??ref--6-2!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/favicons/html_code.html\");\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/utilities/a11y__focus.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _focusSource = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/style/focus-source.js\");\n\nvar _focusSource2 = _interopRequireDefault(_focusSource);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _focusSource2.default)();\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/utilities/index.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/site__csl001/utilities/a11y__focus.js\");\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/event/shadow-focus.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _activeElements = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/active-elements.js\");\n\nvar _activeElements2 = _interopRequireDefault(_activeElements);\n\nvar _decorateService = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/decorate-service.js\");\n\nvar _decorateService2 = _interopRequireDefault(_decorateService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Utility to observe focus changes within ShadowDOMs.\n\n USAGE:\n engage();\n document.body.addEventListener('shadow-focus', function(event) {\n // event.detail.elements: complete focus ancestry (array of nodes)\n // event.detail.active: the actually focused element within the ShadowDOM\n // event.detail.hosts: the shadow host ancestry of the active element\n }, false);\n\n Alternate implementation: https://github.com/cdata/focus-observer\n*/\n\nvar engage = void 0;\nvar disengage = void 0;\n\nif (typeof document === 'undefined' || !document.documentElement.createShadowRoot) {\n // no need to initialize any of this if we don't have ShadowDOM available\n engage = disengage = function disengage() {};\n} else {\n var blurTimer = void 0;\n var blurElement = void 0;\n\n var handleElementBlurEvent = function handleElementBlurEvent() {\n stopHandleElementBlurEvent();\n // abort any handlers that come from document blur handler\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n blurTimer = (window.setImmediate || window.setTimeout)(function () {\n handleFocusChange();\n });\n };\n\n var observeElementBlurEvent = function observeElementBlurEvent(element) {\n // call us when we're leaving the element\n element.addEventListener('blur', handleElementBlurEvent, true);\n blurElement = element;\n };\n\n var stopHandleElementBlurEvent = function stopHandleElementBlurEvent() {\n // once() - sometimes I miss jQuery's simplicity…\n blurElement && blurElement.removeEventListener('blur', handleElementBlurEvent, true);\n blurElement = null;\n };\n\n var handleFocusChange = function handleFocusChange() {\n var _active = (0, _activeElements2.default)();\n if (_active.length === 1) {\n stopHandleElementBlurEvent();\n return;\n }\n\n // listen for blur so we know when to re-validate\n observeElementBlurEvent(_active[0]);\n var shadowFocusEvent = new CustomEvent('shadow-focus', {\n bubbles: false,\n cancelable: false,\n detail: {\n // complete focus ancestry\n elements: _active,\n // the actually focused element\n active: _active[0],\n // shadow host ancestry\n hosts: _active.slice(1)\n }\n });\n\n document.dispatchEvent(shadowFocusEvent);\n };\n\n var handleDocumentFocusEvent = function handleDocumentFocusEvent() {\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n handleFocusChange();\n };\n\n engage = function engage() {\n document.addEventListener('focus', handleDocumentFocusEvent, true);\n };\n\n disengage = function disengage() {\n (window.clearImmediate || window.clearTimeout)(blurTimer);\n blurElement && blurElement.removeEventListener('blur', handleElementBlurEvent, true);\n document.removeEventListener('focus', handleDocumentFocusEvent, true);\n };\n}\n\nexports.default = (0, _decorateService2.default)({ engage: engage, disengage: disengage });\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/active-elements.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n if (document.activeElement === null) {\n // IE10 does not redirect focus to when the activeElement is removed\n document.body.focus();\n }\n\n // Firefox currently leaks the shadowed element\n // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1117535\n if ((0, _shadowed2.default)(document.activeElement)) {\n return walkFromShadowedElement();\n }\n\n return walkToShadowedElement();\n};\n\nvar _shadowed = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/is/shadowed.js\");\n\nvar _shadowed2 = _interopRequireDefault(_shadowed);\n\nvar _shadowHostParents = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/shadow-host-parents.js\");\n\nvar _shadowHostParents2 = _interopRequireDefault(_shadowHostParents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// [0] always is the actual active element (even within web-components)\n// [0+n] is the hierarchy of shadow-doms with [length -1] being the top most shadow-host\n\nfunction walkToShadowedElement() {\n var list = [document.activeElement];\n\n while (list[0] && list[0].shadowRoot) {\n list.unshift(list[0].shadowRoot.activeElement);\n }\n\n return list;\n}\n\nfunction walkFromShadowedElement() {\n var hosts = (0, _shadowHostParents2.default)({ context: document.activeElement });\n return [document.activeElement].concat(hosts);\n}\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/shadow-host-parents.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n context = _ref.context;\n\n var list = [];\n var element = (0, _contextToElement2.default)({\n label: 'get/shadow-host-parents',\n context: context\n });\n\n while (element) {\n element = (0, _shadowHost2.default)({ context: element });\n if (!element) {\n break;\n }\n\n list.push(element);\n }\n\n return list;\n};\n\nvar _shadowHost = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/shadow-host.js\");\n\nvar _shadowHost2 = _interopRequireDefault(_shadowHost);\n\nvar _contextToElement = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/context-to-element.js\");\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/shadow-host.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n context = _ref.context;\n\n var element = (0, _contextToElement2.default)({\n label: 'get/shadow-host',\n context: context\n });\n\n // walk up to the root\n var container = null;\n\n while (element) {\n container = element;\n element = element.parentNode;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType\n // NOTE: Firefox 34 does not expose ShadowRoot.host (but 37 does)\n if (container.nodeType === container.DOCUMENT_FRAGMENT_NODE && container.host) {\n // the root is attached to a fragment node that has a host\n return container.host;\n }\n\n return null;\n};\n\nvar _contextToElement = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/context-to-element.js\");\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/is/shadowed.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (context) {\n var element = (0, _contextToElement2.default)({\n label: 'is/shadowed',\n resolveDocument: true,\n context: context\n });\n\n return Boolean((0, _shadowHost2.default)({ context: element }));\n};\n\nvar _contextToElement = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/context-to-element.js\");\n\nvar _contextToElement2 = _interopRequireDefault(_contextToElement);\n\nvar _shadowHost = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/get/shadow-host.js\");\n\nvar _shadowHost2 = _interopRequireDefault(_shadowHost);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/observe/interaction-type.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _decorateService = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/decorate-service.js\");\n\nvar _decorateService2 = _interopRequireDefault(_decorateService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// counters to track primary input\nvar _activePointers = 0;\n/*\n Observe keyboard-, pointer-, mouse- and touch-events so that a query for\n the current interaction type can be made at any time. For pointer interaction\n this observer is limited to pointer button down/up - move is not observed!\n\n USAGE:\n var listener = engage();\n listener.get() === {pointer: Boolean, key: Boolean}\n*/\n\nvar _activeKeys = 0;\n\nvar pointerStartEvents = ['touchstart', 'pointerdown', 'MSPointerDown', 'mousedown'];\nvar pointerEndEvents = ['touchend', 'touchcancel', 'pointerup', 'MSPointerUp', 'pointercancel', 'MSPointerCancel', 'mouseup'];\n\nfunction handleWindowBlurEvent() {\n // reset internal counters when window loses focus\n _activePointers = 0;\n _activeKeys = 0;\n}\n\nfunction handlePointerStartEvent(event) {\n if (event.isPrimary === false) {\n // ignore non-primary pointer events\n // https://w3c.github.io/pointerevents/#widl-PointerEvent-isPrimary\n return;\n }\n\n // mousedown without following mouseup\n // (likely not possible in Chrome)\n _activePointers++;\n}\n\nfunction handlePointerEndEvent(event) {\n if (event.isPrimary === false) {\n // ignore non-primary pointer events\n // https://w3c.github.io/pointerevents/#widl-PointerEvent-isPrimary\n return;\n } else if (event.touches) {\n _activePointers = event.touches.length;\n return;\n }\n\n // delay reset to when the current handlers are executed\n (window.setImmediate || window.setTimeout)(function () {\n // mouseup without prior mousedown\n // (drag something out of the window)\n _activePointers = Math.max(_activePointers - 1, 0);\n });\n}\n\nfunction handleKeyStartEvent(event) {\n // ignore modifier keys\n switch (event.keyCode || event.which) {\n case 16: // space\n case 17: // control\n case 18: // alt\n case 91: // command left\n case 93:\n // command right\n return;\n }\n\n // keydown without a following keyup\n // (may happen on CMD+TAB)\n _activeKeys++;\n}\n\nfunction handleKeyEndEvent(event) {\n // ignore modifier keys\n switch (event.keyCode || event.which) {\n case 16: // space\n case 17: // control\n case 18: // alt\n case 91: // command left\n case 93:\n // command right\n return;\n }\n\n // delay reset to when the current handlers are executed\n (window.setImmediate || window.setTimeout)(function () {\n // keyup without prior keydown\n // (may happen on CMD+R)\n _activeKeys = Math.max(_activeKeys - 1, 0);\n });\n}\n\nfunction getInteractionType() {\n return {\n pointer: Boolean(_activePointers),\n key: Boolean(_activeKeys)\n };\n}\n\nfunction disengage() {\n _activePointers = _activeKeys = 0;\n window.removeEventListener('blur', handleWindowBlurEvent, false);\n document.documentElement.removeEventListener('keydown', handleKeyStartEvent, true);\n document.documentElement.removeEventListener('keyup', handleKeyEndEvent, true);\n pointerStartEvents.forEach(function (event) {\n document.documentElement.removeEventListener(event, handlePointerStartEvent, true);\n });\n pointerEndEvents.forEach(function (event) {\n document.documentElement.removeEventListener(event, handlePointerEndEvent, true);\n });\n}\n\nfunction engage() {\n // window blur must be in bubble phase so it won't capture regular blurs\n window.addEventListener('blur', handleWindowBlurEvent, false);\n // handlers to identify the method of focus change\n document.documentElement.addEventListener('keydown', handleKeyStartEvent, true);\n document.documentElement.addEventListener('keyup', handleKeyEndEvent, true);\n pointerStartEvents.forEach(function (event) {\n document.documentElement.addEventListener(event, handlePointerStartEvent, true);\n });\n pointerEndEvents.forEach(function (event) {\n document.documentElement.addEventListener(event, handlePointerEndEvent, true);\n });\n\n return {\n get: getInteractionType\n };\n}\n\nexports.default = (0, _decorateService2.default)({ engage: engage, disengage: disengage });\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/style/focus-source.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toggleClass = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/toggle-class.js\");\n\nvar _shadowFocus = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/event/shadow-focus.js\");\n\nvar _shadowFocus2 = _interopRequireDefault(_shadowFocus);\n\nvar _interactionType = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/observe/interaction-type.js\");\n\nvar _interactionType2 = _interopRequireDefault(_interactionType);\n\nvar _decorateService = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/decorate-service.js\");\n\nvar _decorateService2 = _interopRequireDefault(_decorateService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// preferring focusin/out because they are synchronous in IE10+11\n\n/*\n add data-focus-source attribute to html element containing \"key\", \"pointer\" or \"script\"\n depending on the input method used to change focus.\n\n USAGE:\n style/focus-source()\n\n body :focus {\n outline: 1px solid grey;\n }\n\n html[data-focus-source=\"key\"] body :focus {\n outline: 5px solid red;\n }\n\n html[data-focus-source=\"key\"] body :focus {\n outline: 1px solid blue;\n }\n\n NOTE: I don't have a GamePad to test, if you do and you want to\n implement an observer for https://w3c.github.io/gamepad/ - send a PR!\n\n Alternate implementation: https://github.com/alice/modality\n*/\n\nvar supportsFocusIn = typeof document !== 'undefined' && 'onfocusin' in document;\nvar focusEventName = supportsFocusIn ? 'focusin' : 'focus';\nvar blurEventName = supportsFocusIn ? 'focusout' : 'blur';\n\n// interface to read interaction-type-listener state\nvar interactionTypeHandler = void 0;\nvar shadowHandle = void 0;\n// keep track of last focus source\nvar current = null;\n// overwrite focus source for use with the every upcoming focus event\nvar lock = null;\n// keep track of ever having used a particular input method to change focus\nvar used = {\n pointer: false,\n key: false,\n script: false,\n initial: false\n};\n\nfunction handleFocusEvent(event) {\n var source = '';\n if (event.type === focusEventName || event.type === 'shadow-focus') {\n var interactionType = interactionTypeHandler.get();\n source = lock || interactionType.pointer && 'pointer' || interactionType.key && 'key' || 'script';\n } else if (event.type === 'initial') {\n source = 'initial';\n }\n\n document.documentElement.setAttribute('data-focus-source', source);\n\n if (event.type !== blurEventName) {\n if (!used[source]) {\n (0, _toggleClass.addClass)(document.documentElement, 'focus-source-' + source);\n }\n\n used[source] = true;\n current = source;\n }\n}\n\nfunction getCurrentFocusSource() {\n return current;\n}\n\nfunction getUsedFocusSource(source) {\n return used[source];\n}\n\nfunction lockFocusSource(source) {\n lock = source;\n}\n\nfunction unlockFocusSource() {\n lock = false;\n}\n\nfunction disengage() {\n // clear dom state\n handleFocusEvent({ type: blurEventName });\n current = lock = null;\n Object.keys(used).forEach(function (key) {\n (0, _toggleClass.removeClass)(document.documentElement, 'focus-source-' + key);\n used[key] = false;\n });\n // kill interaction type identification listener\n interactionTypeHandler.disengage();\n // kill shadow-focus event dispatcher\n shadowHandle && shadowHandle.disengage();\n document.removeEventListener('shadow-focus', handleFocusEvent, true);\n document.documentElement.removeEventListener(focusEventName, handleFocusEvent, true);\n document.documentElement.removeEventListener(blurEventName, handleFocusEvent, true);\n document.documentElement.removeAttribute('data-focus-source');\n}\n\nfunction engage() {\n // enable the shadow-focus event dispatcher\n shadowHandle = (0, _shadowFocus2.default)();\n // handlers to modify the focused element\n document.addEventListener('shadow-focus', handleFocusEvent, true);\n document.documentElement.addEventListener(focusEventName, handleFocusEvent, true);\n document.documentElement.addEventListener(blurEventName, handleFocusEvent, true);\n // enable the interaction type identification observer\n interactionTypeHandler = (0, _interactionType2.default)();\n // set up initial dom state\n handleFocusEvent({ type: 'initial' });\n\n return {\n used: getUsedFocusSource,\n current: getCurrentFocusSource,\n lock: lockFocusSource,\n unlock: unlockFocusSource\n };\n}\n\nexports.default = (0, _decorateService2.default)({ engage: engage, disengage: disengage });\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/context-to-element.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (_ref) {\n var context = _ref.context,\n _ref$label = _ref.label,\n label = _ref$label === undefined ? 'context-to-element' : _ref$label,\n resolveDocument = _ref.resolveDocument,\n defaultToDocument = _ref.defaultToDocument;\n\n var element = (0, _nodeArray2.default)(context)[0];\n\n if (resolveDocument && element && element.nodeType === Node.DOCUMENT_NODE) {\n element = element.documentElement;\n }\n\n if (!element && defaultToDocument) {\n return document.documentElement;\n }\n\n if (!element) {\n throw new TypeError(label + ' requires valid options.context');\n }\n\n if (element.nodeType !== Node.ELEMENT_NODE && element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {\n throw new TypeError(label + ' requires options.context to be an Element');\n }\n\n return element;\n};\n\nvar _nodeArray = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/node-array.js\");\n\nvar _nodeArray2 = _interopRequireDefault(_nodeArray);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/decorate-service.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n engage = _ref2.engage,\n disengage = _ref2.disengage;\n\n var data = {\n engage: engage || noop,\n disengage: disengage || noop,\n instances: 0,\n _result: null\n };\n\n return initialize.bind(data);\n};\n\n/*\n The Singleton Decorator is intended to allow modules to initialize a (\"singleton\") component as if\n it was the only one using it. Every module gets to initialize and destruct the component by itself.\n Via simple reference counting the component keeps track of how many modules have initialized it,\n so it destructs only when the last module is gone. This decorator hides the component's singleton\n nature from the application in order to offer a homogenous API.\n\n engage() can return an object (result) with methods to expose to the consumer,\n upon initialization result.disengage is added and returned to the consumer.\n*/\n\nfunction destruct() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n force = _ref.force;\n\n if (force) {\n this.instances = 0;\n } else {\n this.instances--;\n }\n\n if (!this.instances) {\n this.disengage();\n this._result = null;\n }\n}\n\nfunction initialize() {\n if (this.instances) {\n this.instances++;\n return this._result;\n }\n\n this.instances++;\n this._result = this.engage() || {};\n this._result.disengage = destruct.bind(this);\n\n return this._result;\n}\n\nfunction noop() {}\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/node-array.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (input) {\n if (!input) {\n return [];\n }\n\n if (Array.isArray(input)) {\n return input;\n }\n\n // instanceof Node - does not work with iframes\n if (input.nodeType !== undefined) {\n return [input];\n }\n\n if (typeof input === 'string') {\n input = document.querySelectorAll(input);\n }\n\n if (input.length !== undefined) {\n return [].slice.call(input, 0);\n }\n\n throw new TypeError('unexpected input ' + String(input));\n};\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/ally.js/src/util/toggle-class.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toggleClass = toggleClass;\nexports.removeClass = removeClass;\nexports.addClass = addClass;\n//\n// This util allows to easily add, remove or toggle classes.\n//\n// Using it is neccessary as IE 9 doesn't support element classList\n// and IE 11 doesn't support classList for SVG elements\n// see also https://developer.mozilla.org/en/docs/Web/API/Element/classList\n//\n// This file is a replacement for domtokenlist because of\n// https://github.com/medialize/ally.js/issues/147\n//\n// Usage:\n//\n// toggleClass(div, 'demo'); // Toggles the class `demo`\n// toggleClass(div, 'demo', true); // Adds the class `demo`\n// toggleClass(div, 'demo', false); // removes the class `demo`\n//\n// removeClass(div, 'demo');\n// addClass(div, 'demo');\n//\n\n/**\n * Extract an array of all classNames of the given DOM or SVG node\n */\nfunction getClassNames(element) {\n var className = element.getAttribute && element.getAttribute('class') || '';\n return className === '' ? [] : className.split(' ');\n}\n\nfunction toggleClass(element, className, force) {\n var classNames = getClassNames(element);\n var idx = classNames.indexOf(className);\n var hasClass = idx !== -1;\n var shouldHaveClass = force !== undefined ? force : !hasClass;\n // Break if classes are already set/removed\n if (shouldHaveClass === hasClass) {\n return;\n }\n // Remove class\n if (!shouldHaveClass) {\n classNames.splice(idx, 1);\n }\n // Add class\n if (shouldHaveClass) {\n classNames.push(className);\n }\n element.setAttribute('class', classNames.join(' '));\n}\n\nfunction removeClass(element, className) {\n return toggleClass(element, className, false);\n}\n\nfunction addClass(element, className) {\n return toggleClass(element, className, true);\n}\n\n/***/ }),\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/bootstrap/dist/js/bootstrap.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*!\n * Bootstrap v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n ( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, __webpack_require__(\"external \\\"jQuery\\\"\"), __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/popper.js/dist/esm/popper.js\")) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(\"external \\\"jQuery\\\"\"), __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/popper.js/dist/esm/popper.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(undefined, function (exports, $, Popper) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && (typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && 'default' in e ? e : { 'default': e };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * Private TransitionEnd Helpers\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default[\"default\"](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * Public Util API\n */\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default[\"default\"](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * Constants\n */\n\n var NAME$a = 'alert';\n var VERSION$a = '4.6.2';\n var DATA_KEY$a = 'bs.alert';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_SHOW$7 = 'show';\n var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n $__default[\"default\"](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n\n if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$a);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY$a, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }]);\n\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n\n $__default[\"default\"].fn[NAME$a].noConflict = function () {\n $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Alert._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$9 = 'button';\n var VERSION$9 = '4.6.2';\n var DATA_KEY$9 = 'bs.button';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_BUTTON = '.btn';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n if (activeElement) {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $__default[\"default\"](input).trigger('change');\n }\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n }\n\n if (triggerChangeEvent) {\n $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$9);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$9, data);\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n $__default[\"default\"].fn[NAME$9].Constructor = Button;\n\n $__default[\"default\"].fn[NAME$9].noConflict = function () {\n $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Button._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$8 = 'carousel';\n var VERSION$8 = '4.6.2';\n var DATA_KEY$8 = 'bs.carousel';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var Default$7 = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType$7 = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * Class definition\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"](this._element).off(EVENT_KEY$8);\n $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, config);\n Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default[\"default\"](this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n }\n }\n };\n\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n if (!element) {\n return;\n }\n\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default[\"default\"](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default[\"default\"](activeElement).addClass(directionalClassName);\n $__default[\"default\"](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default[\"default\"](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n this._isSliding = false;\n $__default[\"default\"](this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$8);\n\n var _config = _extends({}, Default$7, $__default[\"default\"](this).data());\n\n if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $__default[\"default\"](selector)[0];\n\n if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n\n if (slideIndex) {\n $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default[\"default\"](carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n\n $__default[\"default\"].fn[NAME$8].noConflict = function () {\n $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return Carousel._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$7 = 'collapse';\n var VERSION$7 = '4.6.2';\n var DATA_KEY$7 = 'bs.collapse';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n var CLASS_NAME_SHOW$6 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n var Default$6 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$6 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $__default[\"default\"](actives).data(DATA_KEY$7, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n\n var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default[\"default\"](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n\n if (triggerArray.length) {\n $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$7);\n\n var _config = _extends({}, Default$6, $element.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n // preventDefault only for
elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $__default[\"default\"](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default[\"default\"](selectors).each(function () {\n var $target = $__default[\"default\"](this);\n var data = $target.data(DATA_KEY$7);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n\n $__default[\"default\"].fn[NAME$7].noConflict = function () {\n $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Collapse._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$6 = 'dropdown';\n var VERSION$6 = '4.6.2';\n var DATA_KEY$6 = 'bs.dropdown';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_SHOW$5 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$5 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$5 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * Class definition\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n $__default[\"default\"](this._element).off(EVENT_KEY$6);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$6);\n\n var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE$1) {\n $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n\n $__default[\"default\"](this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default[\"default\"](item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n\n $__default[\"default\"].fn[NAME$6].noConflict = function () {\n $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.2';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n var Default$4 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$4 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n /**\n * Class definition\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n this._isTransitioning = true;\n }\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n return _this.hide(event);\n });\n $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default[\"default\"](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n $__default[\"default\"](this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$4, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $__default[\"default\"](_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default[\"default\"](window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default[\"default\"](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $__default[\"default\"](this._backdrop).appendTo(document.body);\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default[\"default\"](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var padding = $__default[\"default\"](element).data('padding-right');\n $__default[\"default\"](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default[\"default\"](elements).each(function (index, element) {\n var margin = $__default[\"default\"](element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default[\"default\"](document.body).data('padding-right');\n $__default[\"default\"](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$5);\n\n var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }]);\n\n return Modal;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default[\"default\"](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n\n $__default[\"default\"].fn[NAME$5].noConflict = function () {\n $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * Constants\n */\n\n var NAME$4 = 'tooltip';\n var VERSION$4 = '4.6.2';\n var DATA_KEY$4 = 'bs.tooltip';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n var CLASS_PREFIX$1 = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$3 = {\n animation: true,\n template: '
' + '
' + '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var DefaultType$3 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n INSERTED: \"inserted\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n FOCUSIN: \"focusin\" + EVENT_KEY$4,\n FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n };\n /**\n * Class definition\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // Private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $__default[\"default\"](this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($__default[\"default\"](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $__default[\"default\"](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n\n if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default[\"default\"](tip).appendTo(container);\n }\n\n $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $__default[\"default\"](this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if ((typeof content === 'undefined' ? 'undefined' : _typeof(content)) === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default[\"default\"](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default[\"default\"](content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $__default[\"default\"](this.config.container);\n }\n\n return $__default[\"default\"](document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = _typeof(this.element.getAttribute('data-original-title'));\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default[\"default\"](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$4);\n\n var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$4;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$4;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$4;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$3;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n\n $__default[\"default\"].fn[NAME$4].noConflict = function () {\n $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$3 = 'popover';\n var VERSION$3 = '4.6.2';\n var DATA_KEY$3 = 'bs.popover';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n var CLASS_PREFIX = 'bs-popover';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$2 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n\n var Default$2 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
' + '
' + '

' + '
'\n });\n\n var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n INSERTED: \"inserted\" + EVENT_KEY$3,\n CLICK: \"click\" + EVENT_KEY$3,\n FOCUSIN: \"focusin\" + EVENT_KEY$3,\n FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n };\n /**\n * Class definition\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$3);\n\n var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n get: // Getters\n function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$3;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$3;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$3;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n\n $__default[\"default\"].fn[NAME$3].noConflict = function () {\n $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Popover._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$2 = 'scrollspy';\n var VERSION$2 = '4.6.2';\n var DATA_KEY$2 = 'bs.scrollspy';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var Default$1 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$1 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(Boolean).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default[\"default\"](config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$2);\n $__default[\"default\"](config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n $link.addClass(CLASS_NAME_ACTIVE$1);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n // With both