{"version":3,"sources":["webpack://gatsby-starter-default/./node_modules/uikit/dist/js/uikit.js"],"names":["module","exports","objPrototype","Object","prototype","hasOwnProperty","hasOwn","obj","key","call","hyphenateRe","hyphenate","memoize","str","replace","toLowerCase","camelizeRe","camelize","toUpper","ucfirst","length","charAt","slice","_","c","toUpperCase","strPrototype","String","startsWithFn","startsWith","search","this","lastIndexOf","endsWithFn","endsWith","substr","arrPrototype","Array","includesFn","i","indexOf","includesStr","includes","includesArray","isString","findIndexFn","findIndex","predicate","arguments$1","arguments","array","isArray","isFunction","isObject","toString","isPlainObject","isWindow","window","isDocument","nodeType","isNode","isElement","isBoolean","value","isNumber","isNumeric","isNaN","parseFloat","isEmpty","keys","isUndefined","toBoolean","toNumber","number","Number","toFloat","toArray","from","toNode","element","toNodes","filter","toWindow","ownerDocument","defaultView","toMs","time","isEqual","other","each","val","swap","a","b","RegExp","match","assign","target","args","len","source","last","cb","sortBy","prop","sort","ref","ref$1","propA","propB","uniqueBy","seen","Set","check","has","add","clamp","min","max","Math","noop","intersectRect","rects","every","minProp","maxProp","apply","map","pointInRect","point","rect","x","right","left","y","bottom","top","Dimensions","ratio","dimensions","aProp","round","contain","maxDimensions","this$1","cover","_getIndex","elements","current","finite","fn","cache","create","attr","name","getAttribute","forEach","removeAttr","setAttribute","hasAttr","some","hasAttribute","split","removeAttribute","data","attribute","attrs","inBrowser","isIE","test","navigator","userAgent","isRtl","document","documentElement","hasTouchEvents","hasPointerEvents","PointerEvent","hasTouch","DocumentTouch","maxTouchPoints","pointerDown","pointerMove","pointerUp","pointerEnter","pointerLeave","pointerCancel","voidElements","area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","track","wbr","isVoidElement","tagName","isVisible","offsetWidth","offsetHeight","getClientRects","selInput","isInput","matches","parent","parentNode","selector","elProto","Element","matchesFn","webkitMatchesSelector","msMatchesSelector","closestFn","closest","ancestor","Boolean","within","contains","parents","push","_children","children","index","query","context","find","getContext","queryAll","nodes","findAll","isContextSelector","_query","queryFn","contextSanitizeRe","splitSelector","ctx","selectors","trim","join","selectors$1","prev","previousElementSibling","domPath","e","contextSelectorRe","selectorRe","names","id","unshift","escape","escapeFn","CSS","css","on","getArgs","targets","type","listener","useCapture","toEventTargets","detail","self","selfFilter","delegate","useCaptureFilter","addEventListener","off","removeEventListener","once","condition","result","trigger","event","reduce","notCanceled","dispatchEvent","createEvent","bubbles","cancelable","initCustomEvent","splice","currentTarget","reverse","concat","options","capture","isEventTarget","toEventTarget","isTouch","pointerType","touches","getEventPos","changedTouches","clientX","clientY","Promise","PromiseFn","Deferred","promise","resolve","reject","RESOLVED","REJECTED","PENDING","async","setImmediate","setTimeout","executor","state","undefined","deferred","r","all","iterable","count","resolver","then","race","p","ajax","url","env","method","headers","xhr","XMLHttpRequest","beforeSend","responseType","send","header","open","setRequestHeader","status","response","copyXhr","JSON","parse","Error","statusText","getImage","src","srcset","sizes","Image","onerror","onload","ready","readyState","unbind","empty","$","innerHTML","html","append","hasChildNodes","prepend","insertNodes","insertBefore","firstChild","appendChild","before","after","nextSibling","fragment","_remove","removeChild","wrapAll","structure","wrapInner","childNodes","unwrap","TypeError","called","notify","reason","shift","onResolved","onRejected","catch","fragmentRe","singleTagRe","exec","createElement","container","insertAdjacentHTML","textContent","node","firstElementChild","next","nextElementSibling","isHtml","$$","addClass","apply$1","removeClass","removeClasses","cls","replaceClass","hasClass","getClasses","n","classList","toggleClass","force","list","toggle","supports","Force","arg","loop","Multiple","get","cssNumber","property","priority","propName","getStyle","style","setProperty","removeProperty","styles","getStyles","props","pseudoElt","getComputedStyle","parseCssVar","getCssVar","getPropertyValue","vendorPropName","cssPrefixes","prefixedName","transition","duration","timing","timer","clearTimeout","transitionProperty","transitionDuration","transitionTimingFunction","Transition","start","stop","cancel","inProgress","animationPrefix","animate","animation","origin","out","_inProgress","Animation","in","dirs","width","height","getBoundingClientRect","offset","coordinates","currentOffset","offsetBy","pageYOffset","pageXOffset","dir","pos","position","ref$1_ownerDocument","body","offsetParent","parentOffset","offsetPosition","offsetTop","offsetLeft","win","dimension","doc","boxModelAdjust","sizing","flipPosition","toPx","percent","fastdom","reads","writes","read","task","scheduleFlush","write","clear","remove$1","flush","recursion","runTasks","scheduled","RECURSION_LIMIT","requestAnimationFrame","tasks","console","error","item","MouseTracker","intersect","ref_0","x1","y1","ref_1","x2","y2","ref$1_0","x3","y3","ref$1_1","x4","y4","denominator","ua","positions","init","interval","setInterval","clearInterval","movesTo","prevPosition","path","diagonal","intersection","strats","mergeFnData","parentVal","childVal","vm","computed","concatStrat","defaultStrat","mergeOptions","child","extends","mixins","l","mergeKey","key$1","parseOptions","option","play","el","isIFrame","func","isHTML5","pause","mute","muted","isYoutube","isVimeo","cmd","enableApi","post","contentWindow","postMessage","stringify","events","created","beforeConnect","connected","beforeDisconnect","disconnected","destroy","update","methods","stateKey","counter","poller","youtube","vimeo","player_id","isInView","scrollParents","getViewport","scrollTop","getScrollingElement","scrollIntoView","diff","scrollElement","maxScroll","scrollHeight","getViewportClientHeight","ceil","scrollTo","scroll","getDuration","abs","Date","now","step","ease","dist","pow","k","cos","PI","scrolledOver","heightOffset","clientHeight","viewportTop","viewportDist","overflowRe","scrollable","scrollEl","ancestors","fixedIndex","scrollingElement","dirs$1","_positionAt","elAttach","targetAttach","elOffset","targetOffset","flip","boundary","getPos","flipped","dim","targetDim","moveTo","getOffsets","boundaries","align","alignFlip","elemOffset","centerOffset","centerTargetOffset","newVal","toFixed","attach","factor","offsets","util","freeze","__proto__","remove","getIndex","positionAt","globalAPI","UIkit","DATA","_connected","_callUpdate","use","plugin","installed","mixin","component","extend","Super","Sub","_init","constructor","super","defineProperty","set","hooksAPI","runUpdates","types","updates","$options","_data","_callHook","hook","handlers","handler","_callConnected","_computeds","_initProps","_initEvents","_initObservers","_callDisconnected","_disconnectObservers","_unbindEvents","_watch","_callWatches","_updates","initital","hasPrev","watch","immediate","stateAPI","uid","getProps","opts","data$1","coerce","prop$1","registerComputed","enumerable","$props","$el","registerEvent","passive","_events","bind","notIn","arr","toList","normalizeData","initChildListObserver","observer","MutationObserver","$emit","observe","childList","subtree","initPropsObserver","$name","attributes","records","attributeName","$reset","attributeFilter","_uid","_initData","_initMethods","_initComputeds","$mount","exclude","_observers","disconnect","instanceAPI","$create","$destroy","removeEl","$update","$getComponent","getComponent","componentName","prefix","defineProperties","$container","getOwnPropertyDescriptor","componentAPI","components","argsArray","functional","instance","opt","install","_initialized","getComponents","connect","name$1","getComponentName","Core","pendingResize","pending","handleResize","ResizeObserver","started","swipeDirection","boot","applyChildListMutation","addedNodes","removedNodes","i$1","applyAttributeMutation","version","Class","Togglable","clsEnter","clsLeave","initProps","overflow","paddingTop","paddingBottom","marginTop","marginBottom","hideProps","hasAnimation","hasTransition","toggleElement","show","isToggled","toggleHeight","toggleAnimation","_toggle","done","toggled","changed","hidden","focus","blur","inner","lastElementChild","currentHeight","endHeight","cmp","Accordion","active","collapsible","multiple","content","clsOpen","items","hide","toggles","preventDefault","activeItems","_wrapper","alert","close","selClose","opacity","Video","automute","autoplay","inView","preload","visible","getPositionedParent","naturalWidth","videoWidth","clientWidth","naturalHeight","videoHeight","Position","clsPos","offset$1","axis","getAxis","drop","mode","boundaryAlign","delayShow","delayHide","clsDrop","tracker","isActive","defaultPrevented","hash","clearTimers","relatedTarget","newTarget","keyCode","delay","isDelaying","showTimer","getPositionedElements","hideTimer","alignTo","formCustom","files","selected","gif","inview","Margin","margin","firstColumn","rows","getRows","columns","getColumns","j","sortBy$1","sorted","startProp","endProp","getOffset","startDim","grid","masonry","parallax","clsStack","positionedAbsolute","translates","columnHeights","getColumnHeights","getMarginTop","elHeight","getTranslates","column","padding","newPadding","hgt","height$1","scrolled","rowHeights","row","sum","FlexBug","selMinHeight","forceHeight","order","heightMatch","heights","getHeight","hasMinHeight","minHeight","hasShrunk","display","heightViewport","expand","offsetBottom","box","SVG","icon","class","strokeAnimation","focusable","include","svg","getSvg","insertSVG","svgEl","applyAttributes","applyAnimation","loadSVG","parseSVG","viewBox","decodeURIComponent","parseSymbols","symbolRe","symbols","lastIndex","getMaxPathLength","stroke","getTotalLength","root","equals","isSVG","XMLSerializer","serializeToString","icons","spinner","totop","marker","Icon","isIcon","getIcon","IconComponent","Slidenav","Search","Close","Spinner","parsed","added","applyRtl","cloneNode","dataSrc","dataSrcset","cacheKey","dataWidth","dataHeight","dataSizes","isImg","_isImg","IntersectionObserver","storage","setSrcAttrs","getPlaceholderImage","load","rootMargin","image","takeRecords","currentSrc","devicePixelRatio","bgSize","getSourceSize","entries","entry","isIntersecting","backgroundImage","sizesToPixel","sizesRe","matchMedia","evaluateSize","sizeRe","additionRe","size","srcSetRe","srcSize","descriptors","pop","sessionStorage","Media","media","toMedia","leader","fill","clsWrapper","clsHide","attrFill","wrapper","floor","Container","active$1","Modal","selPanel","escClose","bgClose","stack","overlay","panel","transitionElement","modal","docEl","clsPage","animate$1","_reject","install$1","openDialog","tmpl","hideFn","submitFn","labels","dialog","resolved","message","ok","confirm","prompt","nav","navbar","dropdown","dropbar","dropbarMode","dropbarAnchor","_dropbar","dropdowns","getDropdown","getActive","transitionTo","newHeight","oldHeight","clip","offcanvas","clsContainer","clsFlip","clsContainerAnimation","clsSidebarAnimation","clsMode","clsOverlay","targetTouches","suppressUserScale","resumeUserScale","getViewport$1","viewport","head","overflowAuto","selContainer","selContent","responsive","click","stateKey$1","scrollspy","repeat","inViewClass","queued","scrollspyNav","links","sticky","clsActive","clsInactive","clsFixed","clsBelow","selTarget","widthElement","showOnUp","placeholder","isFixed","location","elTop","inactive","topOffset","bottomOffset","parseProp","margins","isScrollUpdate","initTimestamp","lastDir","lastScroll","initScroll","propOffset","Switcher","swiping","attrItem","connects","tab","href","updateAria","leaving","isLeaving","Alert","Cover","Drop","Dropdown","FormCustom","Gif","Grid","HeightMatch","HeightViewport","Img","Leader","Nav","Navbar","Offcanvas","OverflowAuto","Responsive","Scroll","Scrollspy","ScrollspyNav","Sticky","Svg","Tab","Toggle","SlidenavNext","SlidenavPrevious","SearchIcon","Marker","NavbarToggleIcon","OverlayIcon","PaginationNext","PaginationPrevious","Totop","countdown","date","days","hours","minutes","seconds","units","unit","timespan","getTimeSpan","total","digits","digit","fade","action","stagger","transitionIndex","propsIn","propsOut","wrapIndexFn","leaveFn","getTransitionNodes","enterFn","transitionNodes","transitions","alignContent","dataset","waitTransitionend","slide","currentProps","targetProps","reset","targetPropsTo","getTransitionProps","propsTo","propsFrom","zIndex","pointerEvents","getPositionWithMargin","marginLeft","transform","ref$2","Animate","filter$1","selActive","updateState","actives","old","isEqualList","prevState","getState","newState","mergeState","isEqualState","setState","matchFilter","filterFn","applyState","getFilter","stateA","stateB","getSelector","sortItems","filterBy","group","stateFilter","ref_sort","stateSort","stateOrder","listA","listB","localeCompare","numeric","Animations","_translate","translated","translate","scale3d","Animations$1","scale","Transitioner","easing","_percent","_translate2","linear","triggerUpdate","forward","getDistance","SliderAutoplay","autoplayInterval","pauseOnHover","startAutoplay","stopAutoplay","slides","draggable","SliderDrag","threshold","prevPos","selSlides","hasTextNodesOnly","button","drag","_transitioner","dragging","prevIndex","move","end","distance","dis","nextIndex","_getDistance","itemShown","edge","_show","dirChange","userSelect","Slider","selNav","selNavItem","navItems","maxIndex","updateNav","getValidIndex","clsActivated","velocity","transitionOptions","speedUp","selList","itemshown","queueIndex","getDirection","_getTransitioner","transitioner","Slideshow","beforeitemshow","itemhidden","LightboxPanel","delayControls","videoAutoplay","template","selCaption","caption","showControls","hideControls","getItem","loadItem","alt","poster","setItem","iframeAttrs","frameborder","allow","allowfullscreen","createEl","setError","video","controls","playsinline","encodeURI","withCredentials","ref_response","getSlide","childElementCount","controlsTimer","tag","lightbox","install$2","toItem","Lightbox","lightboxPanel","notification","timeout","clsClose","clsMsg","install$3","marginProp","startProps","removeFn","closeAll","_props","Parallax","properties","bgPos","isColor","isCssProp","steps","getUnit","color","parseColor","covers","down","bgProps","bg","_covers","_image","dimEl","dimImage","span","posPercentage","backgroundSize","backgroundRepeat","getCss","getValue","getStep","parseInt","getOffsetElement","SliderReactive","Transitioner$1","center","getLeft","to","triggerUpdate$1","getItemIn","getWidth","getActives","itemIn","itemOut","isIn","isOut","getElLeft","nextActives","temp","centerEl","getMax","listLeft","listRight","slideLeft","slideRight","slider","sets","avgWidth","getMaxElWidth","lft","leftCenter","slideWidth","reorder","itemshow","slideIndex","sliderParallax","selItem","ref_detail","getCurrentPercent","trackTimer","obj$1","Animations$2","pull","slideshow","maxHeight","sortable","clsItem","clsPlaceholder","clsDrag","clsDragState","clsBase","clsNoDrag","clsEmpty","clsCustom","handle","tBodies","handles","touchAction","ref_pos","ref_origin","getSortable","elementFromPoint","findTarget","previous","insertTarget","findInsertTarget","moved","insert","touched","appendDrag","trackScroll","untrackScroll","clone","outerHTML","boxSizing","sameList","isHorizontal","placeholderRect","sameRow","linesIntersect","pointerPos","lengthProp","single","rectA","rectB","lineA","lineB","tooltip","title","_hasTitle","makeFocusable","_unbind","isFocusable","upload","clsDragover","concurrent","maxSize","mime","msgInvalidMime","msgInvalidName","msgInvalidSize","params","abort","beforeAll","complete","completeAll","fail","loadEnd","loadStart","progress","change","transfer","dataTransfer","dragenter","dragover","dragleave","match$1","chunks","chunk","FormData","file","pattern","stopPropagation","Countdown","Filter","Notification","SliderParallax","SlideshowParallax","Sortable","Tooltip","Upload","factory"],"mappings":";oHAEiEA,EAAOC,QAC/D,WACP,aAEA,IAAIC,EAAeC,OAAOC,UACtBC,EAAiBH,EAAaG,eAElC,SAASC,EAAOC,EAAKC,GACnB,OAAOH,EAAeI,KAAKF,EAAKC,GAGlC,IAAIE,EAAc,aACdC,EAAYC,IAAQ,SAAUC,GAChC,OAAOA,EAAIC,QAAQJ,EAAa,OAAOK,iBAErCC,EAAa,SACbC,EAAWL,IAAQ,SAAUC,GAC/B,OAAOA,EAAIC,QAAQE,EAAYE,MAE7BC,EAAUP,IAAQ,SAAUC,GAC9B,OAAOA,EAAIO,OAASF,EAAQ,KAAML,EAAIQ,OAAO,IAAMR,EAAIS,MAAM,GAAK,MAGpE,SAASJ,EAAQK,EAAGC,GAClB,OAAOA,EAAIA,EAAEC,cAAgB,GAG/B,IAAIC,EAAeC,OAAOvB,UAEtBwB,EAAeF,EAAaG,YAAc,SAAUC,GACtD,OAAuC,IAAhCC,KAAKC,YAAYF,EAAQ,IAGlC,SAASD,EAAWhB,EAAKiB,GACvB,OAAOF,EAAanB,KAAKI,EAAKiB,GAGhC,IAAIG,EAAaP,EAAaQ,UAAY,SAAUJ,GAClD,OAAOC,KAAKI,QAAQL,EAAOV,UAAYU,GAGzC,SAASI,EAASrB,EAAKiB,GACrB,OAAOG,EAAWxB,KAAKI,EAAKiB,GAG9B,IAAIM,EAAeC,MAAMjC,UAErBkC,EAAa,SAAoBR,EAAQS,GAC3C,SAAUR,KAAKS,QAAQV,EAAQS,IAG7BE,EAAcf,EAAagB,UAAYJ,EACvCK,EAAgBP,EAAaM,UAAYJ,EAE7C,SAASI,EAASnC,EAAKuB,GACrB,OAAOvB,IAAQqC,EAASrC,GAAOkC,EAAcE,GAAelC,KAAKF,EAAKuB,GAGxE,IAAIe,EAAcT,EAAaU,WAAa,SAAUC,GAGpD,IAFA,IAAIC,EAAcC,UAETV,EAAI,EAAGA,EAAIR,KAAKX,OAAQmB,IAC/B,GAAIQ,EAAUtC,KAAKuC,EAAY,GAAIjB,KAAKQ,GAAIA,EAAGR,MAC7C,OAAOQ,EAIX,OAAQ,GAGV,SAASO,EAAUI,EAAOH,GACxB,OAAOF,EAAYpC,KAAKyC,EAAOH,GAGjC,IAAII,EAAUd,MAAMc,QAEpB,SAASC,EAAW7C,GAClB,MAAsB,mBAARA,EAGhB,SAAS8C,EAAS9C,GAChB,OAAe,OAARA,GAA+B,iBAARA,EAGhC,IAAI+C,EAAWpD,EAAaoD,SAE5B,SAASC,EAAchD,GACrB,MAA8B,oBAAvB+C,EAAS7C,KAAKF,GAGvB,SAASiD,EAASjD,GAChB,OAAO8C,EAAS9C,IAAQA,IAAQA,EAAIkD,OAGtC,SAASC,EAAWnD,GAClB,OAAyB,IAAlBoD,EAASpD,GAGlB,SAASqD,EAAOrD,GACd,OAAOoD,EAASpD,IAAQ,EAG1B,SAASsD,EAAUtD,GACjB,OAAyB,IAAlBoD,EAASpD,GAGlB,SAASoD,EAASpD,GAChB,OAAQiD,EAASjD,IAAQ8C,EAAS9C,IAAQA,EAAIoD,SAGhD,SAASG,EAAUC,GACjB,MAAwB,kBAAVA,EAGhB,SAASnB,EAASmB,GAChB,MAAwB,iBAAVA,EAGhB,SAASC,EAASD,GAChB,MAAwB,iBAAVA,EAGhB,SAASE,EAAUF,GACjB,OAAOC,EAASD,IAAUnB,EAASmB,KAAWG,MAAMH,EAAQI,WAAWJ,IAGzE,SAASK,EAAQ7D,GACf,QAAS4C,EAAQ5C,GAAOA,EAAIa,OAASiC,EAAS9C,IAAOJ,OAAOkE,KAAK9D,GAAKa,QAGxE,SAASkD,EAAYP,GACnB,YAAiB,IAAVA,EAGT,SAASQ,EAAUR,GACjB,OAAOD,EAAUC,GAASA,EAAkB,SAAVA,GAA8B,MAAVA,GAA2B,KAAVA,GAAgC,UAAVA,GAA+B,MAAVA,GAAwBA,EAG5I,SAASS,EAAST,GAChB,IAAIU,EAASC,OAAOX,GACpB,OAAQG,MAAMO,IAAUA,EAG1B,SAASE,EAAQZ,GACf,OAAOI,WAAWJ,IAAU,EAG9B,IAAIa,EAAUvC,MAAMwC,MAAQ,SAAUd,GACpC,OAAO3B,EAAad,MAAMb,KAAKsD,IAGjC,SAASe,EAAOC,GACd,OAAOC,EAAQD,GAAS,GAG1B,SAASC,EAAQD,GACf,OAAOA,IAAYnB,EAAOmB,GAAW,CAACA,GAAWH,EAAQG,GAASE,OAAOrB,KAAY,GAGvF,SAASsB,EAASH,GAChB,OAAIvB,EAASuB,GACJA,GAGTA,EAAUD,EAAOC,KACCrB,EAAWqB,GAAWA,EAAUA,EAAQI,eAAeC,YAAc3B,OAGzF,SAAS4B,EAAKC,GACZ,OAAQA,EAAWpD,EAASoD,EAAM,MAAQX,EAAQW,GAAwB,IAAhBX,EAAQW,GAAnD,EAGjB,SAASC,EAAQxB,EAAOyB,GACtB,OAAOzB,IAAUyB,GAASnC,EAASU,IAAUV,EAASmC,IAAUrF,OAAOkE,KAAKN,GAAO3C,SAAWjB,OAAOkE,KAAKmB,GAAOpE,QAAUqE,EAAK1B,GAAO,SAAU2B,EAAKlF,GACpJ,OAAOkF,IAAQF,EAAMhF,MAIzB,SAASmF,EAAK5B,EAAO6B,EAAGC,GACtB,OAAO9B,EAAMjD,QAAQ,IAAIgF,OAAOF,EAAI,IAAMC,EAAG,MAAM,SAAUE,GAC3D,OAAOA,IAAUH,EAAIC,EAAID,KAI7B,IAAII,EAAS7F,OAAO6F,QAAU,SAAUC,GAItC,IAHA,IAAIC,EAAO,GACPC,EAAMlD,UAAU7B,OAAS,EAEtB+E,KAAQ,GACbD,EAAKC,GAAOlD,UAAUkD,EAAM,GAG9BF,EAAS9F,OAAO8F,GAEhB,IAAK,IAAI1D,EAAI,EAAGA,EAAI2D,EAAK9E,OAAQmB,IAAK,CACpC,IAAI6D,EAASF,EAAK3D,GAElB,GAAe,OAAX6D,EACF,IAAK,IAAI5F,KAAO4F,EACV9F,EAAO8F,EAAQ5F,KACjByF,EAAOzF,GAAO4F,EAAO5F,IAM7B,OAAOyF,GAGT,SAASI,EAAKnD,GACZ,OAAOA,EAAMA,EAAM9B,OAAS,GAG9B,SAASqE,EAAKlF,EAAK+F,GACjB,IAAK,IAAI9F,KAAOD,EACd,IAAI,IAAU+F,EAAG/F,EAAIC,GAAMA,GACzB,OAAO,EAIX,OAAO,EAGT,SAAS+F,EAAOrD,EAAOsD,GACrB,OAAOtD,EAAM5B,QAAQmF,MAAK,SAAUC,EAAKC,GACvC,IAAIC,EAAQF,EAAIF,QACF,IAAVI,IAAkBA,EAAQ,GAC9B,IAAIC,EAAQF,EAAMH,GAElB,YADc,IAAVK,IAAkBA,EAAQ,GACvBD,EAAQC,EAAQ,EAAIA,EAAQD,GAAS,EAAI,KAIpD,SAASE,EAAS5D,EAAOsD,GACvB,IAAIO,EAAO,IAAIC,IACf,OAAO9D,EAAM+B,QAAO,SAAUyB,GAC5B,IAAIO,EAAQP,EAAIF,GAChB,OAAOO,EAAKG,IAAID,KAAiBF,EAAKI,IAAIF,KAAU,MAKxD,SAASG,EAAM3C,EAAQ4C,EAAKC,GAG1B,YAFY,IAARD,IAAgBA,EAAM,QACd,IAARC,IAAgBA,EAAM,GACnBC,KAAKF,IAAIE,KAAKD,IAAI9C,EAASC,IAAW,EAAG4C,GAAMC,GAGxD,SAASE,KAET,SAASC,KAIP,IAHA,IAAIC,EAAQ,GACRvB,EAAMlD,UAAU7B,OAEb+E,KACLuB,EAAMvB,GAAOlD,UAAUkD,GAGzB,MAAO,CAAC,CAAC,SAAU,OAAQ,CAAC,QAAS,SAASwB,OAAM,SAAUjB,GAC5D,IAAIkB,EAAUlB,EAAI,GACdmB,EAAUnB,EAAI,GAClB,OAAOa,KAAKF,IAAIS,MAAMP,KAAMG,EAAMK,KAAI,SAAUrB,GAE9C,OADUA,EAAIkB,OAEVL,KAAKD,IAAIQ,MAAMP,KAAMG,EAAMK,KAAI,SAAUrB,GAE7C,OADUA,EAAImB,OAEV,KAIV,SAASG,GAAYC,EAAOC,GAC1B,OAAOD,EAAME,GAAKD,EAAKE,OAASH,EAAME,GAAKD,EAAKG,MAAQJ,EAAMK,GAAKJ,EAAKK,QAAUN,EAAMK,GAAKJ,EAAKM,IAGpG,IAAIC,GAAa,CACfC,MAAO,SAAeC,EAAYnC,EAAMzC,GACtC,IAAIxD,EACAqI,EAAiB,UAATpC,EAAmB,SAAW,QAC1C,OAAOjG,EAAM,IAAQqI,GAASD,EAAWnC,GAAQe,KAAKsB,MAAM9E,EAAQ4E,EAAWC,GAASD,EAAWnC,IAASmC,EAAWC,GAAQrI,EAAIiG,GAAQzC,EAAOxD,GAEpJuI,QAAS,SAAiBH,EAAYI,GACpC,IAAIC,EAASjH,KAKb,OAHA0D,EADAkD,EAAa3C,EAAO,GAAI2C,IACP,SAAUpH,EAAGiF,GAC5B,OAAOmC,EAAaA,EAAWnC,GAAQuC,EAAcvC,GAAQwC,EAAON,MAAMC,EAAYnC,EAAMuC,EAAcvC,IAASmC,KAE9GA,GAETM,MAAO,SAAeN,EAAYI,GAChC,IAAIC,EAASjH,KAKb,OAHA0D,EADAkD,EAAa5G,KAAK+G,QAAQH,EAAYI,IACrB,SAAUxH,EAAGiF,GAC5B,OAAOmC,EAAaA,EAAWnC,GAAQuC,EAAcvC,GAAQwC,EAAON,MAAMC,EAAYnC,EAAMuC,EAAcvC,IAASmC,KAE9GA,IAIX,SAASO,GAAU3G,EAAG4G,EAAUC,EAASC,QACvB,IAAZD,IAAoBA,EAAU,QACnB,IAAXC,IAAmBA,GAAS,GAEhC,IAAIjI,GADJ+H,EAAWnE,EAAQmE,IACG/H,OAGtB,OAFAmB,EAAI0B,EAAU1B,GAAKiC,EAASjC,GAAW,SAANA,EAAe6G,EAAU,EAAU,aAAN7G,EAAmB6G,EAAU,EAAID,EAAS3G,QAAQsC,EAAOvC,IAEnH8G,EACKjC,EAAM7E,EAAG,EAAGnB,EAAS,IAG9BmB,GAAKnB,GACM,EAAImB,EAAInB,EAASmB,EAG9B,SAAS3B,GAAQ0I,GACf,IAAIC,EAAQpJ,OAAOqJ,OAAO,MAC1B,OAAO,SAAUhJ,GACf,OAAO+I,EAAM/I,KAAS+I,EAAM/I,GAAO8I,EAAG9I,KAI1C,SAASiJ,GAAK1E,EAAS2E,EAAM3F,GAC3B,GAAIV,EAASqG,GACX,IAAK,IAAIlJ,KAAOkJ,EACdD,GAAK1E,EAASvE,EAAKkJ,EAAKlJ,QAF5B,CAQA,GAAI8D,EAAYP,GAEd,OADAgB,EAAUD,EAAOC,KACCA,EAAQ4E,aAAaD,GAEvC1E,EAAQD,GAAS6E,SAAQ,SAAU7E,GAC7B3B,EAAWW,KACbA,EAAQA,EAAMtD,KAAKsE,EAAS0E,GAAK1E,EAAS2E,KAG9B,OAAV3F,EACF8F,GAAW9E,EAAS2E,GAEpB3E,EAAQ+E,aAAaJ,EAAM3F,OAMnC,SAASgG,GAAQhF,EAAS2E,GACxB,OAAO1E,EAAQD,GAASiF,MAAK,SAAUjF,GACrC,OAAOA,EAAQkF,aAAaP,MAIhC,SAASG,GAAW9E,EAAS2E,GAC3B3E,EAAUC,EAAQD,GAClB2E,EAAKQ,MAAM,KAAKN,SAAQ,SAAUF,GAChC,OAAO3E,EAAQ6E,SAAQ,SAAU7E,GAC/B,OAAOA,EAAQkF,aAAaP,IAAS3E,EAAQoF,gBAAgBT,SAKnE,SAASU,GAAKrF,EAASsF,GACrB,IAAK,IAAI9H,EAAI,EAAG+H,EAAQ,CAACD,EAAW,QAAUA,GAAY9H,EAAI+H,EAAMlJ,OAAQmB,IAC1E,GAAIwH,GAAQhF,EAASuF,EAAM/H,IACzB,OAAOkH,GAAK1E,EAASuF,EAAM/H,IAOjC,IAAIgI,GAA8B,oBAAX9G,OACnB+G,GAAOD,IAAa,gBAAgBE,KAAKhH,OAAOiH,UAAUC,WAC1DC,GAAQL,IAAuD,QAA1Cd,GAAKoB,SAASC,gBAAiB,OACpDC,GAAiBR,IAAa,iBAAkB9G,OAChDuH,GAAmBT,IAAa9G,OAAOwH,aACvCC,GAAWX,KAAcQ,IAAkBtH,OAAO0H,eAAiBN,oBAAoBM,eAAiBT,UAAUU,gBAElHC,GAAcL,GAAmB,cAAgBD,GAAiB,aAAe,YACjFO,GAAcN,GAAmB,cAAgBD,GAAiB,YAAc,YAChFQ,GAAYP,GAAmB,YAAcD,GAAiB,WAAa,UAC3ES,GAAeR,GAAmB,eAAiBD,GAAiB,GAAK,aACzEU,GAAeT,GAAmB,eAAiBD,GAAiB,GAAK,aACzEW,GAAgBV,GAAmB,gBAAkB,cACrDW,GAAe,CACjBC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,OAAO,EACPC,IAAI,EACJC,KAAK,EACLC,OAAO,EACPC,QAAQ,EACRC,MAAM,EACNC,UAAU,EACVC,MAAM,EACNC,OAAO,EACPpG,QAAQ,EACRqG,OAAO,EACPC,KAAK,GAGP,SAASC,GAAc5H,GACrB,OAAOC,EAAQD,GAASiF,MAAK,SAAUjF,GACrC,OAAO4G,GAAa5G,EAAQ6H,QAAQ7L,kBAIxC,SAAS8L,GAAU9H,GACjB,OAAOC,EAAQD,GAASiF,MAAK,SAAUjF,GACrC,OAAOA,EAAQ+H,aAAe/H,EAAQgI,cAAgBhI,EAAQiI,iBAAiB5L,UAInF,IAAI6L,GAAW,+BAEf,SAASC,GAAQnI,GACf,OAAOC,EAAQD,GAASiF,MAAK,SAAUjF,GACrC,OAAOoI,GAAQpI,EAASkI,OAI5B,SAASG,GAAOrI,GAEd,OADAA,EAAUD,EAAOC,KACClB,EAAUkB,EAAQsI,aAAetI,EAAQsI,WAG7D,SAASpI,GAAOF,EAASuI,GACvB,OAAOtI,EAAQD,GAASE,QAAO,SAAUF,GACvC,OAAOoI,GAAQpI,EAASuI,MAI5B,IAAIC,GAAUhD,GAAYiD,QAAQpN,UAAY,GAC1CqN,GAAYF,GAAQJ,SAAWI,GAAQG,uBAAyBH,GAAQI,mBAAqBnG,EAEjG,SAAS2F,GAAQpI,EAASuI,GACxB,OAAOtI,EAAQD,GAASiF,MAAK,SAAUjF,GACrC,OAAO0I,GAAUhN,KAAKsE,EAASuI,MAInC,IAAIM,GAAYL,GAAQM,SAAW,SAAUP,GAC3C,IAAIQ,EAAW/L,KAEf,GACE,GAAIoL,GAAQW,EAAUR,GACpB,OAAOQ,QAEFA,EAAWV,GAAOU,KAG7B,SAASD,GAAQ9I,EAASuI,GAKxB,OAJIzL,EAAWyL,EAAU,OACvBA,EAAWA,EAAShM,MAAM,IAGrBuC,EAAUkB,GAAW6I,GAAUnN,KAAKsE,EAASuI,GAAYtI,EAAQD,GAASgD,KAAI,SAAUhD,GAC7F,OAAO8I,GAAQ9I,EAASuI,MACvBrI,OAAO8I,SAGZ,SAASC,GAAOjJ,EAASuI,GACvB,OAAQ1K,EAAS0K,GACfH,GAAQpI,EAASuI,MAAeO,GAAQ9I,EAASuI,GADtBvI,IAAYuI,IAAa5J,EAAW4J,GAAYA,EAASxC,gBAAkBhG,EAAOwI,IAAWW,SAASnJ,EAAOC,IAI5I,SAASmJ,GAAQnJ,EAASuI,GAGxB,IAFA,IAAInE,EAAW,GAERpE,EAAUqI,GAAOrI,IACjBuI,IAAYH,GAAQpI,EAASuI,IAChCnE,EAASgF,KAAKpJ,GAIlB,OAAOoE,EAGT,SAASiF,GAAUrJ,EAASuI,GAE1B,IAAIe,GADJtJ,EAAUD,EAAOC,IACQC,EAAQD,EAAQsJ,UAAY,GACrD,OAAOf,EAAWrI,GAAOoJ,EAAUf,GAAYe,EAGjD,SAASC,GAAMvJ,EAAS2B,GACtB,OAAOA,EAAM1B,EAAQD,GAASvC,QAAQsC,EAAO4B,IAAQ0H,GAAUhB,GAAOrI,IAAUvC,QAAQuC,GAG1F,SAASwJ,GAAMjB,EAAUkB,GACvB,OAAO1J,EAAOwI,IAAamB,GAAKnB,EAAUoB,GAAWpB,EAAUkB,IAGjE,SAASG,GAASrB,EAAUkB,GAC1B,IAAII,EAAQ5J,EAAQsI,GACpB,OAAOsB,EAAMxN,QAAUwN,GAASC,GAAQvB,EAAUoB,GAAWpB,EAAUkB,IAGzE,SAASE,GAAWpB,EAAUkB,GAE5B,YADgB,IAAZA,IAAoBA,EAAU3D,UAC3BjI,EAAS0K,IAAawB,GAAkBxB,IAAa5J,EAAW8K,GAAWA,EAAUA,EAAQrJ,cAGtG,SAASsJ,GAAKnB,EAAUkB,GACtB,OAAO1J,EAAOiK,GAAOzB,EAAUkB,EAAS,kBAG1C,SAASK,GAAQvB,EAAUkB,GACzB,OAAOxJ,EAAQ+J,GAAOzB,EAAUkB,EAAS,qBAG3C,SAASO,GAAOzB,EAAUkB,EAASQ,GAGjC,QAFgB,IAAZR,IAAoBA,EAAU3D,WAE7ByC,IAAa1K,EAAS0K,GACzB,OAAO,KAGTA,EAAWA,EAASxM,QAAQmO,GAAmB,QAE3CH,GAAkBxB,KACpBA,EAAW4B,GAAc5B,GAAUvF,KAAI,SAAUuF,EAAU/K,GACzD,IAAI4M,EAAMX,EAEV,GAAoB,MAAhBlB,EAAS,GAAY,CACvB,IAAI8B,EAAY9B,EAASnL,OAAO,GAAGkN,OAAOnF,MAAM,KAChDiF,EAAMtB,GAAQT,GAAOoB,GAAUY,EAAU,IACzC9B,EAAW8B,EAAU9N,MAAM,GAAGgO,KAAK,KAAKD,OAG1C,GAAoB,MAAhB/B,EAAS,GAAY,CACvB,IAAIiC,EAAcjC,EAASnL,OAAO,GAAGkN,OAAOnF,MAAM,KAC9CsF,GAAQL,GAAOX,GAASiB,uBAC5BN,EAAMhC,GAAQqC,EAAMlC,EAASnL,OAAO,IAAMqN,EAAO,KACjDlC,EAAWiC,EAAYjO,MAAM,GAAGgO,KAAK,KAGvC,OAAKH,EAIEO,GAAQP,GAAO,IAAM7B,EAHnB,QAIRrI,OAAO8I,SAASuB,KAAK,KACxBd,EAAU3D,UAGZ,IACE,OAAO2D,EAAQQ,GAAS1B,GACxB,MAAOqC,GACP,OAAO,MAIX,IAAIC,GAAoB,uBACpBX,GAAoB,gCACpBH,GAAoBlO,IAAQ,SAAU0M,GACxC,OAAOA,EAASvH,MAAM6J,OAEpBC,GAAa,mBACbX,GAAgBtO,IAAQ,SAAU0M,GACpC,OAAOA,EAASvH,MAAM8J,IAAY9H,KAAI,SAAUuF,GAC9C,OAAOA,EAASxM,QAAQ,KAAM,IAAIuO,aAItC,SAASK,GAAQ3K,GAGf,IAFA,IAAI+K,EAAQ,GAEL/K,EAAQsI,YAAY,CACzB,GAAItI,EAAQgL,GAAI,CACdD,EAAME,QAAQ,IAAMC,GAAOlL,EAAQgL,KACnC,MAEA,IAAInD,EAAU7H,EAAQ6H,QAEN,SAAZA,IACFA,GAAW,eAAiB0B,GAAMvJ,GAAW,GAAK,KAGpD+K,EAAME,QAAQpD,GACd7H,EAAUA,EAAQsI,WAItB,OAAOyC,EAAMR,KAAK,OAGpB,IAAIY,GAAW3F,IAAa9G,OAAO0M,KAAOA,IAAIF,QAAU,SAAUG,GAChE,OAAOA,EAAItP,QAAQ,wBAAwB,SAAUiF,GACnD,MAAO,KAAOA,MAIlB,SAASkK,GAAOG,GACd,OAAOxN,EAASwN,GAAOF,GAASzP,KAAK,KAAM2P,GAAO,GAGpD,SAASC,KAIP,IAHA,IAAInK,EAAO,GACPC,EAAMlD,UAAU7B,OAEb+E,KACLD,EAAKC,GAAOlD,UAAUkD,GAGxB,IAAIO,EAAM4J,GAAQpK,GACdqK,EAAU7J,EAAI,GACd8J,EAAO9J,EAAI,GACX4G,EAAW5G,EAAI,GACf+J,EAAW/J,EAAI,GACfgK,EAAahK,EAAI,GAqBrB,OApBA6J,EAAUI,GAAeJ,GAErBE,EAASrP,OAAS,IACpBqP,EAAWG,GAAOH,IAGhBC,GAAcA,EAAWG,OAC3BJ,EAAWK,GAAWL,IAGpBnD,IACFmD,EAAWM,GAASzD,EAAUmD,IAGhCC,EAAaM,GAAiBN,GAC9BF,EAAKtG,MAAM,KAAKN,SAAQ,SAAU4G,GAChC,OAAOD,EAAQ3G,SAAQ,SAAU3D,GAC/B,OAAOA,EAAOgL,iBAAiBT,EAAMC,EAAUC,SAG5C,WACL,OAAOQ,GAAIX,EAASC,EAAMC,EAAUC,IAIxC,SAASQ,GAAIX,EAASC,EAAMC,EAAUC,QACjB,IAAfA,IAAuBA,GAAa,GACxCA,EAAaM,GAAiBN,GAC9BH,EAAUI,GAAeJ,GACzBC,EAAKtG,MAAM,KAAKN,SAAQ,SAAU4G,GAChC,OAAOD,EAAQ3G,SAAQ,SAAU3D,GAC/B,OAAOA,EAAOkL,oBAAoBX,EAAMC,EAAUC,SAKxD,SAASU,KAIP,IAHA,IAAIlL,EAAO,GACPC,EAAMlD,UAAU7B,OAEb+E,KACLD,EAAKC,GAAOlD,UAAUkD,GAGxB,IAAIO,EAAM4J,GAAQpK,GACdnB,EAAU2B,EAAI,GACd8J,EAAO9J,EAAI,GACX4G,EAAW5G,EAAI,GACf+J,EAAW/J,EAAI,GACfgK,EAAahK,EAAI,GACjB2K,EAAY3K,EAAI,GAChBwK,EAAMb,GAAGtL,EAASyL,EAAMlD,GAAU,SAAUqC,GAC9C,IAAI2B,GAAUD,GAAaA,EAAU1B,GAEjC2B,IACFJ,IACAT,EAASd,EAAG2B,MAEbZ,GACH,OAAOQ,EAGT,SAASK,GAAQhB,EAASiB,EAAOZ,GAC/B,OAAOD,GAAeJ,GAASkB,QAAO,SAAUC,EAAazL,GAC3D,OAAOyL,GAAezL,EAAO0L,cAAcC,GAAYJ,GAAO,GAAM,EAAMZ,OACzE,GAGL,SAASgB,GAAYjC,EAAGkC,EAASC,EAAYlB,GAI3C,QAHgB,IAAZiB,IAAoBA,GAAU,QACf,IAAfC,IAAuBA,GAAa,GAEpClP,EAAS+M,GAAI,CACf,IAAI6B,EAAQ3G,SAAS+G,YAAY,eAEjCJ,EAAMO,gBAAgBpC,EAAGkC,EAASC,EAAYlB,GAC9CjB,EAAI6B,EAGN,OAAO7B,EAGT,SAASW,GAAQpK,GAKf,OAJI9C,EAAW8C,EAAK,KAClBA,EAAK8L,OAAO,EAAG,GAAG,GAGb9L,EAGT,SAAS6K,GAASzD,EAAUmD,GAC1B,IAAIzH,EAASjH,KACb,OAAO,SAAU4N,GACf,IAAIvG,EAA0B,MAAhBkE,EAAS,GAAauB,GAAQvB,EAAUqC,EAAEsC,eAAeC,UAAUjN,QAAO,SAAUF,GAChG,OAAOiJ,GAAO2B,EAAE1J,OAAQlB,MACvB,GAAK8I,GAAQ8B,EAAE1J,OAAQqH,GAEtBlE,IACFuG,EAAEvG,QAAUA,EACZqH,EAAShQ,KAAKuI,EAAQ2G,KAK5B,SAASiB,GAAOH,GACd,OAAO,SAAUd,GACf,OAAOxM,EAAQwM,EAAEiB,QAAUH,EAAS3I,WAAM,EAAQ,CAAC6H,GAAGwC,OAAOxC,EAAEiB,SAAWH,EAASd,IAIvF,SAASmB,GAAWL,GAClB,OAAO,SAAUd,GACf,GAAIA,EAAE1J,SAAW0J,EAAEsC,eAAiBtC,EAAE1J,SAAW0J,EAAEvG,QACjD,OAAOqH,EAAShQ,KAAK,KAAMkP,IAKjC,SAASqB,GAAiBoB,GACxB,OAAOA,GAAW5H,KAAS1G,EAAUsO,KAAaA,EAAQC,QAAUD,EAGtE,SAASE,GAAcrM,GACrB,OAAOA,GAAU,qBAAsBA,EAGzC,SAASsM,GAActM,GACrB,OAAOqM,GAAcrM,GAAUA,EAASnB,EAAOmB,GAGjD,SAAS0K,GAAe1K,GACtB,OAAO9C,EAAQ8C,GAAUA,EAAO8B,IAAIwK,IAAetN,OAAO8I,SAAWnL,EAASqD,GAAU4I,GAAQ5I,GAAUqM,GAAcrM,GAAU,CAACA,GAAUjB,EAAQiB,GAGvJ,SAASuM,GAAQ7C,GACf,MAAyB,UAAlBA,EAAE8C,eAA6B9C,EAAE+C,QAG1C,SAASC,GAAYhD,GACnB,IAAI+C,EAAU/C,EAAE+C,QACZE,EAAiBjD,EAAEiD,eACnBlM,EAAMgM,GAAWA,EAAQ,IAAME,GAAkBA,EAAe,IAAMjD,EAG1E,MAAO,CACLxH,EAHMzB,EAAImM,QAIVvK,EAHM5B,EAAIoM,SASd,IAAIC,GAAUxI,IAAa9G,OAAOsP,SAAWC,GAEzCC,GAAW,WACb,IAAIjK,EAASjH,KACbA,KAAKmR,QAAU,IAAIH,IAAQ,SAAUI,EAASC,GAC5CpK,EAAOoK,OAASA,EAChBpK,EAAOmK,QAAUA,MAQjBE,GAAW,EACXC,GAAW,EACXC,GAAU,EACVC,GAAQjJ,IAAa9G,OAAOgQ,cAAgBC,WAEhD,SAASV,GAAUW,GACjB5R,KAAK6R,MAAQL,GACbxR,KAAKgC,WAAQ8P,EACb9R,KAAK+R,SAAW,GAChB,IAAIZ,EAAUnR,KAEd,IACE4R,GAAS,SAAUxL,GACjB+K,EAAQC,QAAQhL,MACf,SAAU4L,GACXb,EAAQE,OAAOW,MAEjB,MAAOpE,GACPuD,EAAQE,OAAOzD,IAInBqD,GAAUI,OAAS,SAAUW,GAC3B,OAAO,IAAIf,IAAU,SAAUG,EAASC,GACtCA,EAAOW,OAIXf,GAAUG,QAAU,SAAUhL,GAC5B,OAAO,IAAI6K,IAAU,SAAUG,EAASC,GACtCD,EAAQhL,OAIZ6K,GAAUgB,IAAM,SAAaC,GAC3B,OAAO,IAAIjB,IAAU,SAAUG,EAASC,GACtC,IAAI9B,EAAS,GACT4C,EAAQ,EAMZ,SAASC,EAAS5R,GAChB,OAAO,SAAU4F,GACfmJ,EAAO/O,GAAK4F,GACZ+L,GAAS,KAEKD,EAAS7S,QACrB+R,EAAQ7B,IAVU,IAApB2C,EAAS7S,QACX+R,EAAQ7B,GAcV,IAAK,IAAI/O,EAAI,EAAGA,EAAI0R,EAAS7S,OAAQmB,GAAK,EACxCyQ,GAAUG,QAAQc,EAAS1R,IAAI6R,KAAKD,EAAS5R,GAAI6Q,OAKvDJ,GAAUqB,KAAO,SAAcJ,GAC7B,OAAO,IAAIjB,IAAU,SAAUG,EAASC,GACtC,IAAK,IAAI7Q,EAAI,EAAGA,EAAI0R,EAAS7S,OAAQmB,GAAK,EACxCyQ,GAAUG,QAAQc,EAAS1R,IAAI6R,KAAKjB,EAASC,OAKnD,IAAIkB,GAAItB,GAAU5S,UAwGlB,SAASmU,GAAKC,EAAKpC,GACjB,IAAIqC,EAAMzO,EAAO,CACfoE,KAAM,KACNsK,OAAQ,MACRC,QAAS,GACTC,IAAK,IAAIC,eACTC,WAAYtN,EACZuN,aAAc,IACb3C,GACH,OAAOW,GAAQI,UAAUiB,MAAK,WAC5B,OAAOK,EAAIK,WAAWL,MACrBL,MAAK,WACN,OAAOY,GAAKR,EAAKC,MAIrB,SAASO,GAAKR,EAAKC,GACjB,OAAO,IAAI1B,IAAQ,SAAUI,EAASC,GACpC,IAAIwB,EAAMH,EAAIG,IAEd,IAAK,IAAIpO,KAAQiO,EACf,GAAIjO,KAAQoO,EACV,IACEA,EAAIpO,GAAQiO,EAAIjO,GAChB,MAAOmJ,IAMb,IAAK,IAAIsF,KAFTL,EAAIM,KAAKT,EAAIC,OAAOjT,cAAe+S,GAEhBC,EAAIE,QACrBC,EAAIO,iBAAiBF,EAAQR,EAAIE,QAAQM,IAG3C5E,GAAGuE,EAAK,QAAQ,WACK,IAAfA,EAAIQ,QAAgBR,EAAIQ,QAAU,KAAOR,EAAIQ,OAAS,KAAsB,MAAfR,EAAIQ,QAE1C,SAArBX,EAAIM,cAA2BnS,EAASgS,EAAIS,YAC9CT,EAAM5O,EAAOsP,GAAQV,GAAM,CACzBS,SAAUE,KAAKC,MAAMZ,EAAIS,aAI7BlC,EAAQyB,IAERxB,EAAOpN,EAAOyP,MAAMb,EAAIc,YAAa,CACnCd,IAAKA,EACLQ,OAAQR,EAAIQ,aAIlB/E,GAAGuE,EAAK,SAAS,WACf,OAAOxB,EAAOpN,EAAOyP,MAAM,iBAAkB,CAC3Cb,IAAKA,QAGTvE,GAAGuE,EAAK,WAAW,WACjB,OAAOxB,EAAOpN,EAAOyP,MAAM,mBAAoB,CAC7Cb,IAAKA,QAGTA,EAAII,KAAKP,EAAIrK,SAIjB,SAASuL,GAASC,EAAKC,EAAQC,GAC7B,OAAO,IAAI/C,IAAQ,SAAUI,EAASC,GACpC,IAAIlH,EAAM,IAAI6J,MAEd7J,EAAI8J,QAAU,SAAUrG,GACtB,OAAOyD,EAAOzD,IAGhBzD,EAAI+J,OAAS,WACX,OAAO9C,EAAQjH,IAGjB4J,IAAU5J,EAAI4J,MAAQA,GACtBD,IAAW3J,EAAI2J,OAASA,GACxB3J,EAAI0J,IAAMA,KAId,SAASN,GAAQlP,GACf,IAAIH,EAAS,GAEb,IAAK,IAAIzF,KAAO4F,EACdH,EAAOzF,GAAO4F,EAAO5F,GAGvB,OAAOyF,EAGT,SAASiQ,GAAM5M,GACb,GAA4B,YAAxBuB,SAASsL,WAKb,IAAIC,EAAS/F,GAAGxF,SAAU,oBAAoB,WAC5CuL,IACA9M,YANAA,IAUJ,SAAS+M,GAAMtR,GAGb,OAFAA,EAAUuR,GAAEvR,IACJwR,UAAY,GACbxR,EAGT,SAASyR,GAAKpJ,EAAQoJ,GAEpB,OADApJ,EAASkJ,GAAElJ,GACJ9I,EAAYkS,GAAQpJ,EAAOmJ,UAAYE,GAAOrJ,EAAOsJ,gBAAkBL,GAAMjJ,GAAUA,EAAQoJ,GAGxG,SAASG,GAAQvJ,EAAQrI,GAGvB,OAFAqI,EAASkJ,GAAElJ,IAECsJ,gBAGHE,GAAY7R,GAAS,SAAUA,GACpC,OAAOqI,EAAOyJ,aAAa9R,EAASqI,EAAO0J,eAHtCL,GAAOrJ,EAAQrI,GAQ1B,SAAS0R,GAAOrJ,EAAQrI,GAEtB,OADAqI,EAASkJ,GAAElJ,GACJwJ,GAAY7R,GAAS,SAAUA,GACpC,OAAOqI,EAAO2J,YAAYhS,MAI9B,SAASiS,GAAOtQ,EAAK3B,GAEnB,OADA2B,EAAM4P,GAAE5P,GACDkQ,GAAY7R,GAAS,SAAUA,GACpC,OAAO2B,EAAI2G,WAAWwJ,aAAa9R,EAAS2B,MAIhD,SAASuQ,GAAMvQ,EAAK3B,GAElB,OADA2B,EAAM4P,GAAE5P,GACDkQ,GAAY7R,GAAS,SAAUA,GACpC,OAAO2B,EAAIwQ,YAAcF,GAAOtQ,EAAIwQ,YAAanS,GAAW0R,GAAO/P,EAAI2G,WAAYtI,MAIvF,SAAS6R,GAAY7R,EAASuE,GAE5B,OADAvE,EAAUnC,EAASmC,GAAWoS,GAASpS,GAAWA,GACjC,WAAYA,EAAUC,EAAQD,GAASgD,IAAIuB,GAAMA,EAAGvE,GAAW,KAGlF,SAASqS,GAAQrS,GACfC,EAAQD,GAAS6E,SAAQ,SAAU7E,GACjC,OAAOA,EAAQsI,YAActI,EAAQsI,WAAWgK,YAAYtS,MAIhE,SAASuS,GAAQvS,EAASwS,GAGxB,IAFAA,EAAYzS,EAAOkS,GAAOjS,EAASwS,IAE5BA,EAAUT,YACfS,EAAYA,EAAUT,WAIxB,OADAL,GAAOc,EAAWxS,GACXwS,EAGT,SAASC,GAAUzS,EAASwS,GAC1B,OAAOvS,EAAQA,EAAQD,GAASgD,KAAI,SAAUhD,GAC5C,OAAOA,EAAQ2R,cAAgBY,GAAQtS,EAAQD,EAAQ0S,YAAaF,GAAad,GAAO1R,EAASwS,OAIrG,SAASG,GAAO3S,GACdC,EAAQD,GAASgD,IAAIqF,IAAQnI,QAAO,SAAUlB,EAAOuK,EAAOuC,GAC1D,OAAOA,EAAKrO,QAAQuB,KAAWuK,KAC9B1E,SAAQ,SAAUwD,GACnB4J,GAAO5J,EAAQA,EAAOqK,YAEtBL,GAAQhK,MA7RZkH,GAAEnB,QAAU,SAAiBhL,GAC3B,IAAI+K,EAAUnR,KAEd,GAAImR,EAAQU,QAAUL,GAAS,CAC7B,GAAIpL,IAAM+K,EACR,MAAM,IAAIyE,UAAU,gCAGtB,IAAIC,GAAS,EAEb,IACE,IAAIxD,EAAOjM,GAAKA,EAAEiM,KAElB,GAAU,OAANjM,GAAc9E,EAAS8E,IAAM/E,EAAWgR,GAc1C,YAbAA,EAAK3T,KAAK0H,GAAG,SAAUA,GAChByP,GACH1E,EAAQC,QAAQhL,GAGlByP,GAAS,KACR,SAAU7D,GACN6D,GACH1E,EAAQE,OAAOW,GAGjB6D,GAAS,KAIb,MAAOjI,GAKP,YAJKiI,GACH1E,EAAQE,OAAOzD,IAMnBuD,EAAQU,MAAQP,GAChBH,EAAQnP,MAAQoE,EAChB+K,EAAQ2E,WAIZvD,GAAElB,OAAS,SAAgB0E,GACzB,IAAI5E,EAAUnR,KAEd,GAAImR,EAAQU,QAAUL,GAAS,CAC7B,GAAIuE,IAAW5E,EACb,MAAM,IAAIyE,UAAU,gCAGtBzE,EAAQU,MAAQN,GAChBJ,EAAQnP,MAAQ+T,EAChB5E,EAAQ2E,WAIZvD,GAAEuD,OAAS,WACT,IAAI7O,EAASjH,KACbyR,IAAM,WACJ,GAAIxK,EAAO4K,QAAUL,GACnB,KAAOvK,EAAO8K,SAAS1S,QAAQ,CAC7B,IAAIsF,EAAMsC,EAAO8K,SAASiE,QACtBC,EAAatR,EAAI,GACjBuR,EAAavR,EAAI,GACjByM,EAAUzM,EAAI,GACd0M,EAAS1M,EAAI,GAEjB,IACMsC,EAAO4K,QAAUP,GACfjQ,EAAW4U,GACb7E,EAAQ6E,EAAWvX,UAAKoT,EAAW7K,EAAOjF,QAE1CoP,EAAQnK,EAAOjF,OAERiF,EAAO4K,QAAUN,KACtBlQ,EAAW6U,GACb9E,EAAQ8E,EAAWxX,UAAKoT,EAAW7K,EAAOjF,QAE1CqP,EAAOpK,EAAOjF,QAGlB,MAAO4L,GACPyD,EAAOzD,SAOjB2E,GAAEF,KAAO,SAAc4D,EAAYC,GACjC,IAAIjP,EAASjH,KACb,OAAO,IAAIiR,IAAU,SAAUG,EAASC,GACtCpK,EAAO8K,SAAS3F,KAAK,CAAC6J,EAAYC,EAAY9E,EAASC,IACvDpK,EAAO6O,aAIXvD,GAAE4D,MAAQ,SAAUD,GAClB,OAAOlW,KAAKqS,UAAKP,EAAWoE,IA8L9B,IAAIE,GAAa,qBACbC,GAAc,6BAElB,SAASjB,GAASX,GAChB,IAAIrJ,EAAUiL,GAAYC,KAAK7B,GAE/B,GAAIrJ,EACF,OAAOtC,SAASyN,cAAcnL,EAAQ,IAGxC,IAAIoL,EAAY1N,SAASyN,cAAc,OAQvC,OANIH,GAAW1N,KAAK+L,GAClB+B,EAAUC,mBAAmB,YAAahC,EAAKnH,QAE/CkJ,EAAUE,YAAcjC,EAGnB+B,EAAUd,WAAWrW,OAAS,EAAI4D,EAAQuT,EAAUd,YAAcc,EAAUzB,WAGrF,SAAShP,GAAM4Q,EAAMpP,GACnB,GAAKzF,EAAU6U,GAOf,IAHApP,EAAGoP,GACHA,EAAOA,EAAKC,kBAELD,GAAM,CACX,IAAIE,EAAOF,EAAKG,mBAChB/Q,GAAM4Q,EAAMpP,GACZoP,EAAOE,GAIX,SAAStC,GAAEhJ,EAAUkB,GACnB,OAAQ5L,EAAS0K,GAA+BwL,GAAOxL,GAAYxI,EAAOqS,GAAS7J,IAAamB,GAAKnB,EAAUkB,GAAlF1J,EAAOwI,GAGtC,SAASyL,GAAGzL,EAAUkB,GACpB,OAAQ5L,EAAS0K,GAAgCwL,GAAOxL,GAAYtI,EAAQmS,GAAS7J,IAAauB,GAAQvB,EAAUkB,GAAvFxJ,EAAQsI,GAGvC,SAASwL,GAAOjY,GACd,MAAkB,MAAXA,EAAI,IAAcA,EAAIkF,MAAM,SAGrC,SAASiT,GAASjU,GAIhB,IAHA,IAAImB,EAAO,GACPC,EAAMlD,UAAU7B,OAAS,EAEtB+E,KAAQ,GACbD,EAAKC,GAAOlD,UAAUkD,EAAM,GAG9B8S,GAAQlU,EAASmB,EAAM,OAGzB,SAASgT,GAAYnU,GAInB,IAHA,IAAImB,EAAO,GACPC,EAAMlD,UAAU7B,OAAS,EAEtB+E,KAAQ,GACbD,EAAKC,GAAOlD,UAAUkD,EAAM,GAG9B8S,GAAQlU,EAASmB,EAAM,UAGzB,SAASiT,GAAcpU,EAASqU,GAC9B3P,GAAK1E,EAAS,SAAS,SAAUhB,GAC/B,OAAQA,GAAS,IAAIjD,QAAQ,IAAIgF,OAAO,MAAQsT,EAAM,MAAO,KAAM,OAIvE,SAASC,GAAatU,GAIpB,IAHA,IAAImB,EAAO,GACPC,EAAMlD,UAAU7B,OAAS,EAEtB+E,KAAQ,GACbD,EAAKC,GAAOlD,UAAUkD,EAAM,GAG9BD,EAAK,IAAMgT,GAAYnU,EAASmB,EAAK,IACrCA,EAAK,IAAM8S,GAASjU,EAASmB,EAAK,IAGpC,SAASoT,GAASvU,EAASqU,GAECA,EAAjBG,GAAWH,GAAmB,GAGvC,IAFA,IAAIxK,EAAQ5J,EAAQD,GAEXyU,EAAI,EAAGA,EAAI5K,EAAMxN,OAAQoY,IAChC,GAAIJ,GAAOxK,EAAM4K,GAAGC,UAAUxL,SAASmL,GACrC,OAAO,EAIX,OAAO,EAGT,SAASM,GAAY3U,EAASqU,EAAKO,GACjCP,EAAMG,GAAWH,GAGjB,IAFA,IAAIxK,EAAQ5J,EAAQD,GAEXyU,EAAI,EAAGA,EAAI5K,EAAMxN,OAAQoY,IAGhC,IAFA,IAAII,EAAOhL,EAAM4K,GAAGC,UAEXlX,EAAI,EAAGA,EAAI6W,EAAIhY,OAAQmB,IAC1B+B,EAAYqV,GACdC,EAAKC,OAAOT,EAAI7W,IACPuX,GAASC,MAClBH,EAAKC,OAAOT,EAAI7W,KAAMoX,GAEtBC,EAAKD,EAAQ,MAAQ,UAAUP,EAAI7W,IAM3C,SAAS0W,GAAQlU,EAASmB,EAAMoD,GAC9B,IAAI5C,EACJR,EAAOA,EAAKuL,QAAO,SAAUvL,EAAM8T,GACjC,OAAO9T,EAAKiM,OAAOoH,GAAWS,MAC7B,IAaH,IAZA,IAAIpL,EAAQ5J,EAAQD,GAEhBkV,EAAO,SAAcT,GACnBM,GAASI,UACVxT,EAAMkI,EAAM4K,GAAGC,WAAWnQ,GAAIxB,MAAMpB,EAAKR,GAE1CA,EAAK0D,SAAQ,SAAUwP,GACrB,OAAOxK,EAAM4K,GAAGC,UAAUnQ,GAAI8P,OAK3BI,EAAI,EAAGA,EAAI5K,EAAMxN,OAAQoY,IAChCS,EAAKT,GAIT,SAASD,GAAW1Y,GAElB,SADAA,EAAMc,OAAOd,IACA2B,QAAQ,KAAO3B,EAAIqJ,MAAM,KAAO,CAACrJ,IAAMoE,OAAO8I,SAI7D,IAAI+L,GAAW,CACb,eACE,OAAO/X,KAAKoY,IAAI,aAGlB,YACE,OAAOpY,KAAKoY,IAAI,UAGlBA,IAAK,SAAa3Z,GAChB,IACIiZ,EADM5O,SAASyN,cAAc,KACbmB,UAOpB,OANAA,EAAUtS,IAAI,IAAK,KACnBsS,EAAUI,OAAO,KAAK,IACtBC,GAAW,CACTI,SAAUT,EAAUxL,SAAS,KAC7B8L,OAAQN,EAAUxL,SAAS,OAEbzN,KAGhB4Z,GAAY,CACd,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,SAAW,EACX,OAAS,EACT,SAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,QAAU,EACV,WAAW,EACX,MAAQ,GAGV,SAAShK,GAAIrL,EAASsV,EAAUtW,EAAOuW,GAErC,YADiB,IAAbA,IAAqBA,EAAW,IAC7BtV,EAAQD,GAASgD,KAAI,SAAUhD,GACpC,GAAInC,EAASyX,GAAW,CAGtB,GAFAA,EAAWE,GAASF,GAEhB/V,EAAYP,GACd,OAAOyW,GAASzV,EAASsV,GACftW,GAAUC,EAASD,GAG7BgB,EAAQ0V,MAAMC,YAAYL,EAAUpW,EAAUF,KAAWqW,GAAUC,GAAYtW,EAAQ,KAAOA,EAAOuW,GAFrGvV,EAAQ0V,MAAME,eAAeN,OAI1B,IAAIlX,EAAQkX,GAAW,CAC5B,IAAIO,EAASC,GAAU9V,GACvB,OAAOsV,EAAS5I,QAAO,SAAUqJ,EAAOT,GAEtC,OADAS,EAAMT,GAAYO,EAAOL,GAASF,IAC3BS,IACN,IACMzX,EAASgX,KAClBC,EAAWvW,EACX0B,EAAK4U,GAAU,SAAUtW,EAAOsW,GAC9B,OAAOjK,GAAIrL,EAASsV,EAAUtW,EAAOuW,OAIzC,OAAOvV,KACN,GAGL,SAAS8V,GAAU9V,EAASgW,GAC1B,OAAO7V,EAASH,GAASiW,iBAAiBjW,EAASgW,GAGrD,SAASP,GAASzV,EAASsV,EAAUU,GACnC,OAAOF,GAAU9V,EAASgW,GAAWV,GAGvC,IAAIY,GAAcra,IAAQ,SAAU8I,GAElC,IAAI3E,EAAU0R,GAAO5L,SAASC,gBAAiBD,SAASyN,cAAc,QAMtE,OALAU,GAASjU,EAAS,MAAQ2E,GAC1BA,EAAO8Q,GAASzV,EAAS,UAAW,WAAWjE,QAAQ,iBAAkB,MAEzEsW,GAAQrS,GAED2E,KAGT,SAASwR,GAAUxR,GACjB,OAAQc,GAA8EyQ,GAAYvR,GAAnFmR,GAAUhQ,SAASC,iBAAiBqQ,iBAAiB,QAAUzR,GAIhF,IAAI6Q,GAAW3Z,IAAQ,SAAU8I,GAC/B,OAAO0R,GAAe1R,MAEpB2R,GAAc,CAAC,SAAU,MAAO,MAEpC,SAASD,GAAe1R,GACtBA,EAAO/I,EAAU+I,GACjB,IACI+Q,EADM5P,SAASC,gBACH2P,MAEhB,GAAI/Q,KAAQ+Q,EACV,OAAO/Q,EAMT,IAHA,IACI4R,EADA/Y,EAAI8Y,GAAYja,OAGbmB,KAGL,IAFA+Y,EAAe,IAAMD,GAAY9Y,GAAK,IAAMmH,KAExB+Q,EAClB,OAAOa,EAKb,SAASC,GAAWxW,EAAS+V,EAAOU,EAAUC,GAG5C,YAFiB,IAAbD,IAAqBA,EAAW,UACrB,IAAXC,IAAmBA,EAAS,UACzB1I,GAAQiB,IAAIhP,EAAQD,GAASgD,KAAI,SAAUhD,GAChD,OAAO,IAAIgO,IAAQ,SAAUI,EAASC,GACpC,IAAK,IAAI1J,KAAQoR,EAAO,CACtB,IAAI/W,EAAQqM,GAAIrL,EAAS2E,GAEX,KAAV3F,GACFqM,GAAIrL,EAAS2E,EAAM3F,GAIvB,IAAI2X,EAAQhI,YAAW,WACrB,OAAOnC,GAAQxM,EAAS,mBACvByW,GACHpK,GAAKrM,EAAS,oCAAoC,SAAU2B,GAC1D,IAAI8J,EAAO9J,EAAI8J,KACfmL,aAAaD,GACbxC,GAAYnU,EAAS,iBACrBqL,GAAIrL,EAAS,CACX6W,mBAAoB,GACpBC,mBAAoB,GACpBC,yBAA0B,KAEnB,uBAATtL,EAAgC4C,IAAWD,EAAQpO,KAClD,CACD8L,MAAM,IAERmI,GAASjU,EAAS,iBAClBqL,GAAIrL,EAASiB,EAAO,CAClB4V,mBAAoBzb,OAAOkE,KAAKyW,GAAO/S,IAAIwS,IAAUjL,KAAK,KAC1DuM,mBAAoBL,EAAW,KAC/BM,yBAA0BL,GACzBX,WAKT,IAAIiB,GAAa,CACfC,MAAOT,GACPU,KAAM,SAAclX,GAElB,OADAwM,GAAQxM,EAAS,iBACVgO,GAAQI,WAEjB+I,OAAQ,SAAgBnX,GACtBwM,GAAQxM,EAAS,uBAEnBoX,WAAY,SAAoBpX,GAC9B,OAAOuU,GAASvU,EAAS,mBAGzBqX,GAAkB,gBAEtB,SAASC,GAAQtX,EAASuX,EAAWd,EAAUe,EAAQC,GAErD,YADiB,IAAbhB,IAAqBA,EAAW,KAC7BzI,GAAQiB,IAAIhP,EAAQD,GAASgD,KAAI,SAAUhD,GAChD,OAAO,IAAIgO,IAAQ,SAAUI,EAASC,GACpC7B,GAAQxM,EAAS,qBACjB,IAAI2W,EAAQhI,YAAW,WACrB,OAAOnC,GAAQxM,EAAS,kBACvByW,GACHpK,GAAKrM,EAAS,kCAAkC,SAAU2B,GACxD,IAAI8J,EAAO9J,EAAI8J,KACfmL,aAAaD,GACJ,sBAATlL,EAA+B4C,IAAWD,EAAQpO,GAClDqL,GAAIrL,EAAS,oBAAqB,IAClCoU,GAAcpU,EAASqX,GAAkB,UACxC,CACDvL,MAAM,IAERT,GAAIrL,EAAS,oBAAqByW,EAAW,MAC7CxC,GAASjU,EAASuX,EAAWF,IAAmBI,EAAM,QAAU,UAE5D3a,EAAWya,EAAWF,MACxBG,GAAUvD,GAASjU,EAAS,uBAAyBwX,GACrDC,GAAOxD,GAASjU,EAASqX,GAAkB,mBAMnD,IAAIK,GAAc,IAAI3W,OAAOsW,GAAkB,iBAE3CM,GAAY,CACdC,GAAIN,GACJG,IAAK,SAAazX,EAASuX,EAAWd,EAAUe,GAC9C,OAAOF,GAAQtX,EAASuX,EAAWd,EAAUe,GAAQ,IAEvDJ,WAAY,SAAoBpX,GAC9B,OAAO0X,GAAYhS,KAAKhB,GAAK1E,EAAS,WAExCmX,OAAQ,SAAgBnX,GACtBwM,GAAQxM,EAAS,uBAGjB6X,GAAO,CACTC,MAAO,CAAC,OAAQ,SAChBC,OAAQ,CAAC,MAAO,WAGlB,SAASnU,GAAW5D,GAClB,IAAImD,EAAOrE,EAAUkB,GAAWD,EAAOC,GAASgY,wBAA0B,CACxED,OAAQA,GAAO/X,GACf8X,MAAOA,GAAM9X,GACbyD,IAAK,EACLH,KAAM,GAER,MAAO,CACLyU,OAAQ5U,EAAK4U,OACbD,MAAO3U,EAAK2U,MACZrU,IAAKN,EAAKM,IACVH,KAAMH,EAAKG,KACXE,OAAQL,EAAKM,IAAMN,EAAK4U,OACxB1U,MAAOF,EAAKG,KAAOH,EAAK2U,OAI5B,SAASG,GAAOjY,EAASkY,GACvB,IAAIC,EAAgBvU,GAAW5D,GAC3B2B,EAAMxB,EAASH,GAGfoY,EAAW,CACbL,OAHgBpW,EAAI0W,YAIpBP,MAHgBnW,EAAI2W,aAMtB,IAAK,IAAIC,KAAOV,GACd,IAAK,IAAIra,KAAKqa,GAAKU,GACjBJ,EAAcN,GAAKU,GAAK/a,KAAO4a,EAASG,GAI5C,IAAKL,EACH,OAAOC,EAGT,IAAIK,EAAMnN,GAAIrL,EAAS,YACvBU,EAAK2K,GAAIrL,EAAS,CAAC,OAAQ,SAAS,SAAUhB,EAAOyC,GACnD,OAAO4J,GAAIrL,EAASyB,EAAMyW,EAAYzW,GAAQ0W,EAAc1W,GAAQ7B,EAAgB,aAAR4Y,GAAgC,SAAVxZ,EAAmByZ,GAASzY,GAASyB,GAAQzC,OAInJ,SAASyZ,GAASzY,GAWhB,IAVA,IAAI2B,EAAMsW,GAAOjY,GACbyD,EAAM9B,EAAI8B,IACVH,EAAO3B,EAAI2B,KACX1B,EAAQ7B,EAAOC,GACf0Y,EAAsB9W,EAAMxB,cAC5BuY,EAAOD,EAAoBC,KAC3B5S,EAAkB2S,EAAoB3S,gBAEtCsC,EADezG,EAAMgX,cACI7S,EAEtBsC,IAAWA,IAAWsQ,GAAQtQ,IAAWtC,IAAgD,WAA5BsF,GAAIhD,EAAQ,aAC9EA,EAASA,EAAOC,WAGlB,GAAIxJ,EAAUuJ,GAAS,CACrB,IAAIwQ,EAAeZ,GAAO5P,GAC1B5E,GAAOoV,EAAapV,IAAM7D,EAAQyL,GAAIhD,EAAQ,mBAC9C/E,GAAQuV,EAAavV,KAAO1D,EAAQyL,GAAIhD,EAAQ,oBAGlD,MAAO,CACL5E,IAAKA,EAAM7D,EAAQyL,GAAIrL,EAAS,cAChCsD,KAAMA,EAAO1D,EAAQyL,GAAIrL,EAAS,gBAItC,SAAS8Y,GAAe9Y,GACtB,IAAIiY,EAAS,CAAC,EAAG,GACjBjY,EAAUD,EAAOC,GAEjB,GAIE,GAHAiY,EAAO,IAAMjY,EAAQ+Y,UACrBd,EAAO,IAAMjY,EAAQgZ,WAEY,UAA7B3N,GAAIrL,EAAS,YAAyB,CACxC,IAAIiZ,EAAM9Y,EAASH,GAGnB,OAFAiY,EAAO,IAAMgB,EAAIZ,YACjBJ,EAAO,IAAMgB,EAAIX,YACVL,SAEFjY,EAAUA,EAAQ4Y,cAE3B,OAAOX,EAGT,IAAIF,GAASmB,GAAU,UACnBpB,GAAQoB,GAAU,SAEtB,SAASA,GAAUzX,GACjB,IAAI+T,EAAWpZ,EAAQqF,GACvB,OAAO,SAAUzB,EAAShB,GACxB,GAAIO,EAAYP,GAAQ,CACtB,GAAIP,EAASuB,GACX,OAAOA,EAAQ,QAAUwV,GAG3B,GAAI7W,EAAWqB,GAAU,CACvB,IAAImZ,EAAMnZ,EAAQ+F,gBAClB,OAAOvD,KAAKD,IAAI4W,EAAI,SAAW3D,GAAW2D,EAAI,SAAW3D,IAM3D,OADAxW,EAAkB,UADlBA,EAAQqM,GADRrL,EAAUD,EAAOC,GACIyB,IACMzB,EAAQ,SAAWwV,GAAY5V,EAAQZ,IAAU,GAC7Doa,GAAepZ,EAASyB,GAEvC,OAAO4J,GAAIrL,EAASyB,EAAOzC,GAAmB,IAAVA,GAAoBA,EAAQoa,GAAepZ,EAASyB,GAAQ,KAA9C,KAKxD,SAAS2X,GAAepZ,EAASyB,EAAM4X,GAErC,YADe,IAAXA,IAAmBA,EAAS,cACzBhO,GAAIrL,EAAS,eAAiBqZ,EAASxB,GAAKpW,GAAMuB,IAAI5G,GAASsQ,QAAO,SAAU1N,EAAOyC,GAC5F,OAAOzC,EAAQY,EAAQyL,GAAIrL,EAAS,UAAYyB,IAAS7B,EAAQyL,GAAIrL,EAAS,SAAWyB,EAAO,YAC/F,GAAK,EAGV,SAAS6X,GAAad,GACpB,IAAK,IAAID,KAAOV,GACd,IAAK,IAAIra,KAAKqa,GAAKU,GACjB,GAAIV,GAAKU,GAAK/a,KAAOgb,EACnB,OAAOX,GAAKU,GAAK,EAAI/a,GAK3B,OAAOgb,EAGT,SAASe,GAAKva,EAAOsW,EAAUtV,GAG7B,YAFiB,IAAbsV,IAAqBA,EAAW,cACpB,IAAZtV,IAAoBA,EAAUtB,QAC3BQ,EAAUF,IAAUA,EAAQ7B,EAAS6B,EAAO,MAAQwa,GAAQzB,GAAO5X,EAASH,IAAWhB,GAAS7B,EAAS6B,EAAO,MAAQwa,GAAQ1B,GAAM3X,EAASH,IAAWhB,GAAS7B,EAAS6B,EAAO,KAAOwa,GAAQ5V,GAAW5D,GAASsV,GAAWtW,GAASY,EAAQZ,GAG3P,SAASwa,GAAQ1S,EAAM9H,GACrB,OAAO8H,EAAOlH,EAAQZ,GAAS,IASjC,IAAIya,GAAU,CACZC,MAAO,GACPC,OAAQ,GACRC,KAAM,SAAcC,GAGlB,OAFA7c,KAAK0c,MAAMtQ,KAAKyQ,GAChBC,KACOD,GAETE,MAAO,SAAeF,GAGpB,OAFA7c,KAAK2c,OAAOvQ,KAAKyQ,GACjBC,KACOD,GAETG,MAAO,SAAeH,GACpBI,GAASjd,KAAK0c,MAAOG,GACrBI,GAASjd,KAAK2c,OAAQE,IAExBK,MAAOA,IAGT,SAASA,GAAMC,QACK,IAAdA,IAAsBA,EAAY,GACtCC,GAASX,GAAQC,OACjBU,GAASX,GAAQE,OAAO1M,OAAO,IAC/BwM,GAAQY,WAAY,GAEhBZ,GAAQC,MAAMrd,QAAUod,GAAQE,OAAOtd,SACzCyd,GAAcK,EAAY,GAI9B,IAAIG,GAAkB,EAEtB,SAASR,GAAcK,GACjBV,GAAQY,YAIZZ,GAAQY,WAAY,EAEhBF,GAAaA,EAAYG,GAC3BtM,GAAQI,UAAUiB,MAAK,WACrB,OAAO6K,GAAMC,MAGfI,uBAAsB,WACpB,OAAOL,SAKb,SAASE,GAASI,GAGhB,IAFA,IAAIX,EAEGA,EAAOW,EAAMxH,SAClB,IACE6G,IACA,MAAOjP,GACP6P,QAAQC,MAAM9P,IAKpB,SAASqP,GAAS9b,EAAOwc,GACvB,IAAIpR,EAAQpL,EAAMV,QAAQkd,GAC1B,OAAQpR,GAASpL,EAAM8O,OAAO1D,EAAO,GAGvC,SAASqR,MAkET,SAASC,GAAUlZ,EAAKC,GACtB,IAAIkZ,EAAQnZ,EAAI,GACZoZ,EAAKD,EAAM1X,EACX4X,EAAKF,EAAMvX,EACX0X,EAAQtZ,EAAI,GACZuZ,EAAKD,EAAM7X,EACX+X,EAAKF,EAAM1X,EACX6X,EAAUxZ,EAAM,GAChByZ,EAAKD,EAAQhY,EACbkY,EAAKF,EAAQ7X,EACbgY,EAAU3Z,EAAM,GAChB4Z,EAAKD,EAAQnY,EACbqY,EAAKF,EAAQhY,EACbmY,GAAeD,EAAKH,IAAOJ,EAAKH,IAAOS,EAAKH,IAAOF,EAAKH,GAE5D,GAAoB,IAAhBU,EACF,OAAO,EAGT,IAAIC,IAAOH,EAAKH,IAAOL,EAAKM,IAAOG,EAAKH,IAAOP,EAAKM,IAAOK,EAE3D,QAAIC,EAAK,IAKF,CACLvY,EAAG2X,EAAKY,GAAMT,EAAKH,GACnBxX,EAAGyX,EAAKW,GAAMR,EAAKH,IA5FvBJ,GAAavf,UAAY,CACvBugB,UAAW,GACXC,KAAM,WACJ,IAEIpD,EAFAxU,EAASjH,KACbA,KAAK4e,UAAY,GAEjB5e,KAAKqU,OAAS/F,GAAGxF,SAAU,aAAa,SAAU8E,GAChD,OAAO6N,EAAW7K,GAAYhD,MAEhC5N,KAAK8e,SAAWC,aAAY,WACrBtD,IAILxU,EAAO2X,UAAUxS,KAAKqP,GAElBxU,EAAO2X,UAAUvf,OAAS,GAC5B4H,EAAO2X,UAAU5I,WAElB,KAELmE,OAAQ,WACNna,KAAKqU,QAAUrU,KAAKqU,SACpBrU,KAAK8e,UAAYE,cAAchf,KAAK8e,WAEtCG,QAAS,SAAiB/a,GACxB,GAAIlE,KAAK4e,UAAUvf,OAAS,EAC1B,OAAO,EAGT,IAAIkT,EAAIrO,EAAO8W,wBACX1U,EAAOiM,EAAEjM,KACTD,EAAQkM,EAAElM,MACVI,EAAM8L,EAAE9L,IACRD,EAAS+L,EAAE/L,OAEX0Y,EADMlf,KAAK4e,UACQ,GACnBnD,EAAWnX,EAAKtE,KAAK4e,WACrBO,EAAO,CAACD,EAAczD,GAE1B,OAAIxV,GAAYwV,EAAUlJ,IAIV,CAAC,CAAC,CAChBnM,EAAGE,EACHC,EAAGE,GACF,CACDL,EAAGC,EACHE,EAAGC,IACD,CAAC,CACHJ,EAAGE,EACHC,EAAGC,GACF,CACDJ,EAAGC,EACHE,EAAGE,KAEYwB,MAAK,SAAUmX,GAC9B,IAAIC,EAAexB,GAAUsB,EAAMC,GACnC,OAAOC,GAAgBpZ,GAAYoZ,EAAc9M,QAqCvD,IAAI+M,GAAS,GAkDb,SAASC,GAAYC,EAAWC,EAAUC,GACxC,OAAOJ,GAAOK,SAASte,EAAWme,GAAaA,EAAU9gB,KAAKghB,EAAIA,GAAMF,EAAWne,EAAWoe,GAAYA,EAAS/gB,KAAKghB,EAAIA,GAAMD,GAIpI,SAASG,GAAYJ,EAAWC,GAE9B,OADAD,EAAYA,IAAcpe,EAAQoe,GAAa,CAACA,GAAaA,EACtDC,EAAWD,EAAYA,EAAUpP,OAAOqP,GAAYre,EAAQqe,GAAYA,EAAW,CAACA,GAAYD,EAIzG,SAASK,GAAaL,EAAWC,GAC/B,OAAOld,EAAYkd,GAAYD,EAAYC,EAG7C,SAASK,GAAazU,EAAQ0U,EAAOL,GACnC,IAAIrP,EAAU,GAUd,GARIhP,EAAW0e,KACbA,EAAQA,EAAM1P,SAGZ0P,EAAMC,UACR3U,EAASyU,GAAazU,EAAQ0U,EAAMC,QAASN,IAG3CK,EAAME,OACR,IAAK,IAAIzf,EAAI,EAAG0f,EAAIH,EAAME,OAAO5gB,OAAQmB,EAAI0f,EAAG1f,IAC9C6K,EAASyU,GAAazU,EAAQ0U,EAAME,OAAOzf,GAAIkf,GAInD,IAAK,IAAIjhB,KAAO4M,EACd8U,EAAS1hB,GAGX,IAAK,IAAI2hB,KAASL,EACXxhB,EAAO8M,EAAQ+U,IAClBD,EAASC,GAIb,SAASD,EAAS1hB,GAChB4R,EAAQ5R,IAAQ6gB,GAAO7gB,IAAQohB,IAAcxU,EAAO5M,GAAMshB,EAAMthB,GAAMihB,GAGxE,OAAOrP,EAGT,SAASgQ,GAAahQ,EAASlM,GAC7B,IAAI3F,OACS,IAAT2F,IAAiBA,EAAO,IAE5B,IACE,OAAQkM,EAAevQ,EAAWuQ,EAAS,KAAOmD,KAAKC,MAAMpD,GAAWlM,EAAK9E,SAAWsB,EAAS0P,EAAS,OAAQ7R,EAAM,IAAQ2F,EAAK,IAAMkM,EAAS7R,GAAO6R,EAAQlI,MAAM,KAAKuH,QAAO,SAAUW,EAASiQ,GACtM,IAAI3b,EAAM2b,EAAOnY,MAAM,SACnB1J,EAAMkG,EAAI,GACV3C,EAAQ2C,EAAI,GAMhB,OAJIlG,IAAQ8D,EAAYP,KACtBqO,EAAQ5R,EAAI6O,QAAUtL,EAAMsL,QAGvB+C,IACN,IAVe,GAWlB,MAAOzC,GACP,MAAO,IAIX,SAAS2S,GAAKC,GAQZ,GAPIC,GAASD,IACX9hB,GAAK8hB,EAAI,CACPE,KAAM,YACN/N,OAAQ,SAIRgO,GAAQH,GACV,IACEA,EAAGD,OAAOpK,MAAM1Q,GAChB,MAAOmI,KAIb,SAASgT,GAAMJ,GACTC,GAASD,IACX9hB,GAAK8hB,EAAI,CACPE,KAAM,aACN/N,OAAQ,UAIRgO,GAAQH,IACVA,EAAGI,QAIP,SAASC,GAAKL,GACRC,GAASD,IACX9hB,GAAK8hB,EAAI,CACPE,KAAM,OACN/N,OAAQ,YACR3Q,MAAO,IAIP2e,GAAQH,KACVA,EAAGM,OAAQ,GAIf,SAASH,GAAQH,GACf,OAAOA,GAAqB,UAAfA,EAAG3V,QAGlB,SAAS4V,GAASD,GAChB,OAAOA,GAAqB,WAAfA,EAAG3V,UAAyBkW,GAAUP,IAAOQ,GAAQR,IAGpE,SAASO,GAAUP,GACjB,QAASA,EAAG3M,IAAI7P,MAAM,8EAGxB,SAASgd,GAAQR,GACf,QAASA,EAAG3M,IAAI7P,MAAM,yBAGxB,SAAStF,GAAK8hB,EAAIS,GAChBC,GAAUV,GAAInO,MAAK,WACjB,OAAO8O,GAAKX,EAAIS,MAIpB,SAASE,GAAKX,EAAIS,GAChB,IACET,EAAGY,cAAcC,YAAY7N,KAAK8N,UAAUrd,EAAO,CACjDwL,MAAO,WACNwR,IAAO,KACV,MAAOrT,KA5LX0R,GAAOiC,OAASjC,GAAOkC,QAAUlC,GAAOmC,cAAgBnC,GAAOoC,UAAYpC,GAAOqC,iBAAmBrC,GAAOsC,aAAetC,GAAOuC,QAAUjC,GAE5IN,GAAOnb,KAAO,SAAUqb,EAAWC,GACjC,OAAoB,IAAbA,GAAsBG,GAAYH,GAAYD,IAIvDF,GAAOwC,OAAS,SAAUtC,EAAWC,GACnC,OAAOjb,EAAOob,GAAYJ,EAAWne,EAAWoe,GAAY,CAC1D7C,KAAM6C,GACJA,GAAW,UAIjBH,GAAOvG,MAAQ,SAAUyG,EAAWC,GAQlC,OAPIre,EAAQqe,KACVA,EAAWA,EAAS/P,QAAO,SAAU1N,EAAOvD,GAE1C,OADAuD,EAAMvD,GAAOmB,OACNoC,IACN,KAGEsd,GAAOyC,QAAQvC,EAAWC,IAInCH,GAAOK,SAAWL,GAAOyC,QAAU,SAAUvC,EAAWC,GACtD,OAAOA,EAAWD,EAAYvb,EAAO,GAAIub,EAAWC,GAAYA,EAAWD,GAI7EF,GAAOjX,KAAO,SAAUmX,EAAWC,EAAUC,GAC3C,OAAKA,EAcEH,GAAYC,EAAWC,EAAUC,GAbjCD,EAIAD,EAIE,SAAUE,GACf,OAAOH,GAAYC,EAAWC,EAAUC,IAJjCD,EAJAD,GA6Jb,IAAIwC,GAAW,YACXC,GAAU,EAEd,SAASf,GAAUV,GACjB,GAAIA,EAAGwB,IACL,OAAOxB,EAAGwB,IAGZ,IAGIE,EAHAC,EAAUpB,GAAUP,GACpB4B,EAAQpB,GAAQR,GAChBxS,IAAOiU,GAEX,OAAOzB,EAAGwB,IAAY,IAAIhR,IAAQ,SAAUI,GAC1C+Q,GAAW9S,GAAKmR,EAAI,QAAQ,WAC1B,IAAI9R,EAAW,WACb,OAAOyS,GAAKX,EAAI,CACd/Q,MAAO,YACPzB,GAAIA,KAIRkU,EAASnD,YAAYrQ,EAAU,KAC/BA,OAEFW,GAAK3N,OAAQ,UAAW0P,GAAS,GAAO,SAAUzM,GAChD,IAAI0D,EAAO1D,EAAI0D,KAEf,IAEE,OADAA,EAAOmL,KAAKC,MAAMpL,MACF8Z,GAAW9Z,EAAK2F,KAAOA,GAAqB,YAAf3F,EAAKoH,OAAuB2S,GAASzf,OAAO0F,EAAKga,aAAerU,GAC7G,MAAOJ,QAEX4S,EAAG3M,IAAW2M,EAAG3M,KAAOlT,EAAS6f,EAAG3M,IAAK,KAAO,IAAM,MAAQsO,EAAU,gBAAkB,mBAAqBnU,MAC9GqE,MAAK,WACN,OAAO2M,cAAckD,MAIzB,SAASI,GAAStf,EAAS+Y,EAAWC,GAIpC,YAHkB,IAAdD,IAAsBA,EAAY,QACnB,IAAfC,IAAuBA,EAAa,KAEnClR,GAAU9H,IAIR0C,GAAcK,WAAM,EAAQwc,GAAcvf,GAASgD,KAAI,SAAUqF,GACtE,IAAI1G,EAAMsW,GAAOuH,GAAYnX,IACzB5E,EAAM9B,EAAI8B,IACVH,EAAO3B,EAAI2B,KACXE,EAAS7B,EAAI6B,OACbH,EAAQ1B,EAAI0B,MAChB,MAAO,CACLI,IAAKA,EAAMsV,EACXzV,KAAMA,EAAO0V,EACbxV,OAAQA,EAASuV,EACjB1V,MAAOA,EAAQ2V,MAEhB5L,OAAO6K,GAAOjY,KAGnB,SAASyf,GAAUzf,EAASyD,IAExBzD,EADEvB,EAASuB,IAAYrB,EAAWqB,GACxB0f,GAAoB1f,GAEpBD,EAAOC,IAGXyf,UAAYhc,EAGtB,SAASkc,GAAe3f,EAAS2B,QACnB,IAARA,IAAgBA,EAAM,IAC1B,IAAIyW,EAAWzW,EAAIsW,OAGnB,QAFiB,IAAbG,IAAqBA,EAAW,GAE/BtQ,GAAU9H,GAAf,CAIA,IAAImJ,EAAUoW,GAAcvf,GACxB4f,EAAO,EACX,OAAOzW,EAAQuD,QAAO,SAAUnI,EAAIsb,EAAeriB,GACjD,IAAIiiB,EAAYI,EAAcJ,UAE1BK,EADeD,EAAcE,aACFC,GAAwBH,GACnDpc,EAAMjB,KAAKyd,KAAKhI,GAAO9O,EAAQ3L,EAAI,IAAMwC,GAASyD,IAAMwU,GAAOuH,GAAYK,IAAgBpc,IAAM2U,EAAWwH,EAAOH,GASvH,OAPIhc,EAAMqc,GACRF,EAAOnc,EAAMqc,EACbrc,EAAMqc,GAENF,EAAO,EAGF,WACL,OAAOM,EAASL,EAAepc,EAAMgc,GAAWpQ,KAAK9K,OAEtD,WACD,OAAOyJ,GAAQI,YAjBVjF,GAoBP,SAAS+W,EAASlgB,EAASyD,GACzB,OAAO,IAAIuK,IAAQ,SAAUI,GAC3B,IAAI+R,EAASngB,EAAQyf,UACjBhJ,EAAW2J,EAAY5d,KAAK6d,IAAI5c,IAChCwT,EAAQqJ,KAAKC,OAEjB,SAAUC,IACR,IAAIhH,EAAUiH,EAAKpe,GAAOie,KAAKC,MAAQtJ,GAASR,IAChDgJ,GAAUzf,EAASmgB,EAAS1c,EAAM+V,GAElB,IAAZA,EACFe,sBAAsBiG,GAEtBpS,IAPJ,MAaJ,SAASgS,EAAYM,GACnB,OAAO,GAAKle,KAAKme,IAAID,EAAM,MAG7B,SAASD,EAAKG,GACZ,MAAO,IAAO,EAAIpe,KAAKqe,IAAIre,KAAKse,GAAKF,KAIzC,SAASG,GAAa/gB,EAASghB,GAG7B,QAFqB,IAAjBA,IAAyBA,EAAe,IAEvClZ,GAAU9H,GACb,OAAO,EAGT,IACI6f,EADMN,GAAcvf,EAAS,eAAe,GACxB,GACpB+f,EAAeF,EAAcE,aAC7BN,EAAYI,EAAcJ,UAC1BwB,EAAejB,GAAwBH,GACvCqB,EAAcpI,GAAe9Y,GAAS,GAAKyf,EAAY3G,GAAe+G,GAAe,GACrFsB,EAAe3e,KAAKF,IAAI2e,EAAcC,EAAczB,GAGxD,OAAOpd,GAAO,GAFJ6e,EAAcC,GACb3e,KAAKF,IAAItC,EAAQgI,aAAegZ,EAAeG,EAAcpB,GAAgBmB,EAAczB,GAAYM,EAAekB,IAInI,SAAS1B,GAAcvf,EAASohB,EAAYC,QACvB,IAAfD,IAAuBA,EAAa,2BACrB,IAAfC,IAAuBA,GAAa,GACxC,IAAIC,EAAW5B,GAAoB1f,GAC/BuhB,EAAYpY,GAAQnJ,GAASmN,UAE7BqU,EAAazjB,EADjBwjB,EAAYA,EAAUhlB,MAAMglB,EAAU9jB,QAAQ6jB,GAAY,IACpB,SAAU9D,GAC9C,MAA+B,UAAxBnS,GAAImS,EAAI,eAOjB,OAJKgE,IACHD,EAAYA,EAAUhlB,MAAMilB,IAGvB,CAACF,GAAUlU,OAAOmU,EAAUrhB,QAAO,SAAUmI,GAClD,OAAO+Y,EAAW1b,KAAK2F,GAAIhD,EAAQ,gBAAkBgZ,GAAchZ,EAAO0X,aAAeC,GAAwB3X,QAC/G8E,UAGN,SAASqS,GAAYK,GACnB,OAAOA,IAAkBH,GAAoBG,GAAiBnhB,OAASmhB,EAIzE,SAASG,GAAwBH,GAC/B,OAAQA,IAAkBH,GAAoBG,GAAiB/Z,SAASC,gBAAkB8Z,GAAeoB,aAG3G,SAASvB,GAAoB1f,GAC3B,IACI8F,EADM3F,EAASH,GACA8F,SACnB,OAAOA,EAAS2b,kBAAoB3b,EAASC,gBAG/C,IAAI2b,GAAS,CACX5J,MAAO,CAAC,IAAK,OAAQ,SACrBC,OAAQ,CAAC,IAAK,MAAO,WAGvB,SAAS4J,GAAY3hB,EAASkB,EAAQ0gB,EAAUC,EAAcC,EAAUC,EAAcC,EAAMC,GAC1FL,EAAWM,GAAON,GAClBC,EAAeK,GAAOL,GACtB,IAAIM,EAAU,CACZniB,QAAS4hB,EACT1gB,OAAQ2gB,GAGV,IAAK7hB,IAAYkB,EACf,OAAOihB,EAGT,IAAIC,EAAMnK,GAAOjY,GACbqiB,EAAYpK,GAAO/W,GACnBuX,EAAW4J,EAUf,GATAC,GAAO7J,EAAUmJ,EAAUQ,GAAM,GACjCE,GAAO7J,EAAUoJ,EAAcQ,EAAW,GAC1CP,EAAWS,GAAWT,EAAUM,EAAItK,MAAOsK,EAAIrK,QAC/CgK,EAAeQ,GAAWR,EAAcM,EAAUvK,MAAOuK,EAAUtK,QACnE+J,EAAY,GAAKC,EAAgB,EACjCD,EAAY,GAAKC,EAAgB,EACjCtJ,EAASnV,MAAQwe,EAAY,EAC7BrJ,EAAShV,KAAOqe,EAAY,EAExBE,EAAM,CACR,IAAIQ,EAAajD,GAAcvf,GAASgD,IAAIwc,IAExCyC,GAAYtkB,EAAS6kB,EAAYP,IACnCO,EAAWvX,QAAQgX,GAGrBO,EAAaA,EAAWxf,KAAI,SAAUwa,GACpC,OAAOvF,GAAOuF,MAEhB9c,EAAKghB,IAAQ,SAAU/f,EAAKF,GAC1B,IAAI8W,EAAM5W,EAAI,GACV8gB,EAAQ9gB,EAAI,GACZ+gB,EAAY/gB,EAAI,KAEL,IAATqgB,GAAiBrkB,EAASqkB,EAAMzJ,KAItCiK,EAAWvd,MAAK,SAAUgd,GACxB,IAAIU,EAAaf,EAASrJ,KAASkK,GAASL,EAAI3gB,GAAQmgB,EAASrJ,KAASmK,EAAYN,EAAI3gB,GAAQ,EAC9FsgB,EAAeF,EAAatJ,KAASkK,EAAQJ,EAAU5gB,GAAQogB,EAAatJ,KAASmK,GAAaL,EAAU5gB,GAAQ,EAExH,GAAIgX,EAASgK,GAASR,EAASQ,IAAUhK,EAASgK,GAASL,EAAI3gB,GAAQwgB,EAASS,GAAY,CAC1F,IAAIE,EAAeR,EAAI3gB,GAAQ,EAC3BohB,EAA2C,WAAtBhB,EAAatJ,IAAqB8J,EAAU5gB,GAAQ,EAAI,EACjF,MAAyB,WAAlBmgB,EAASrJ,KAAsBxV,EAAM6f,EAAcC,IAAuB9f,GAAO6f,GAAeC,KAAwB9f,EAAM4f,EAAYZ,GAGnJ,SAAShf,EAAM4f,EAAYZ,GACzB,IAAIe,EAASljB,GAAS6Y,EAASgK,GAASE,EAAaZ,EAA+B,EAAhBD,EAASvJ,IAAUwK,QAAQ,IAE/F,GAAID,GAAUb,EAASQ,IAAUK,EAASV,EAAI3gB,IAASwgB,EAASS,GAK9D,OAJAjK,EAASgK,GAASK,EAClB,CAAC,UAAW,UAAUje,SAAQ,SAAU2Y,GACtC2E,EAAQ3E,GAAIjF,GAAQoK,EAAgCR,EAAQ3E,GAAIjF,KAASmJ,GAAOjgB,GAAM,GAAKigB,GAAOjgB,GAAM,GAAKigB,GAAOjgB,GAAM,GAAzF0gB,EAAQ3E,GAAIjF,OAExC,SAQjB,OADAN,GAAOjY,EAASyY,GACT0J,EAGT,SAASG,GAAO7J,EAAUuK,EAAQZ,EAAKa,GACrCviB,EAAKghB,IAAQ,SAAU/f,EAAKF,GAC1B,IAAI8W,EAAM5W,EAAI,GACV8gB,EAAQ9gB,EAAI,GACZ+gB,EAAY/gB,EAAI,GAEhBqhB,EAAOzK,KAASmK,EAClBjK,EAASgK,IAAUL,EAAI3gB,GAAQwhB,EACN,WAAhBD,EAAOzK,KAChBE,EAASgK,IAAUL,EAAI3gB,GAAQwhB,EAAS,MAK9C,SAASf,GAAO1J,GACd,IAAIpV,EAAI,oBACJG,EAAI,oBAOR,OAJmB,KAFnBiV,GAAOA,GAAO,IAAIrT,MAAM,MAEhB9I,SACNmc,EAAMpV,EAAEsC,KAAK8S,EAAI,IAAMA,EAAIpL,OAAO,UAAY7J,EAAEmC,KAAK8S,EAAI,IAAM,CAAC,UAAUpL,OAAOoL,GAAO,CAAC,SAAU,WAG9F,CACLpV,EAAGA,EAAEsC,KAAK8S,EAAI,IAAMA,EAAI,GAAK,SAC7BjV,EAAGA,EAAEmC,KAAK8S,EAAI,IAAMA,EAAI,GAAK,UAIjC,SAAS+J,GAAWW,EAASpL,EAAOC,GAClC,IAAIpW,GAAOuhB,GAAW,IAAI/d,MAAM,KAC5B/B,EAAIzB,EAAI,GACR4B,EAAI5B,EAAI,GACZ,MAAO,CACLyB,EAAGA,EAAIxD,EAAQwD,IAAMjG,EAASiG,EAAG,KAAO0U,EAAQ,IAAM,GAAK,EAC3DvU,EAAGA,EAAI3D,EAAQ2D,IAAMpG,EAASoG,EAAG,KAAOwU,EAAS,IAAM,GAAK,GAIhE,IAAIoL,GAAoB/nB,OAAOgoB,OAAO,CACpCC,UAAW,KACX7T,KAAMA,GACNoB,SAAUA,GACV4F,WAAYA,GACZQ,WAAYA,GACZM,QAASA,GACTK,UAAWA,GACXjT,KAAMA,GACNM,QAASA,GACTF,WAAYA,GACZO,KAAMA,GACN4O,SAAUA,GACVE,YAAaA,GACbC,cAAeA,GACfE,aAAcA,GACdC,SAAUA,GACVI,YAAaA,GACb/Q,WAAYA,GACZqU,OAAQA,GACRQ,SAAUA,GACVK,eAAgBA,GAChBf,OAAQA,GACRD,MAAOA,GACPsB,eAAgBA,GAChBE,aAAcA,GACdC,KAAMA,GACNpI,MAAOA,GACPG,MAAOA,GACPG,KAAMA,GACNG,QAASA,GACTF,OAAQA,GACRO,OAAQA,GACRC,MAAOA,GACPoR,OAAQjR,GACRE,QAASA,GACTE,UAAWA,GACXE,OAAQA,GACRP,SAAUA,GACVrP,MAAOA,GACPwO,EAAGA,GACHyC,GAAIA,GACJxO,UAAWA,GACXC,KAAMA,GACNI,MAAOA,GACPM,SAAUA,GACVG,YAAaA,GACbC,YAAaA,GACbC,UAAWA,GACXC,aAAcA,GACdC,aAAcA,GACdC,cAAeA,GACf2E,GAAIA,GACJa,IAAKA,GACLE,KAAMA,GACNG,QAASA,GACTK,YAAaA,GACbjB,eAAgBA,GAChB6B,QAASA,GACTG,YAAaA,GACb6L,QAASA,GACT7R,cAAeA,GACfE,UAAWA,GACXI,SAAUA,GACVC,QAASA,GACTE,OAAQA,GACRnI,OAAQA,GACRkI,QAASA,GACTU,QAASA,GACTG,OAAQA,GACRE,QAASA,GACTG,SAAUD,GACVE,MAAOA,GACPhO,OAAQA,EACRK,UAAWA,EACXM,SAAUA,EACVE,QAASA,EACTU,WAAYA,EACZK,SAAUA,EACVQ,SAAUA,EACVI,UAAWA,EACXK,QAASA,EACTC,WAAYA,EACZC,SAAUA,EACVE,cAAeA,EACfC,SAAUA,EACVE,WAAYA,EACZE,OAAQA,EACRC,UAAWA,EACXC,UAAWA,EACXlB,SAAUA,EACVoB,SAAUA,EACVC,UAAWA,EACXG,QAASA,EACTE,YAAaA,EACbC,UAAWA,EACXC,SAAUA,EACVG,QAASA,EACTC,QAASA,EACTE,OAAQA,EACRE,QAASA,EACTE,SAAUA,EACVG,KAAMA,EACNE,QAASA,EACTI,KAAMA,EACNK,OAAQA,EACRK,KAAMA,EACNZ,KAAMA,EACNc,OAAQA,EACRO,SAAUA,EACVM,MAAOA,EACPI,KAAMA,EACNC,cAAeA,GACfO,YAAaA,GACbS,WAAYA,GACZ6f,SAAUpf,GACVtI,QAASA,GACT+e,aAAcA,GACdkC,aAAcA,GACdO,aAAcA,GACdE,KAAMA,GACNK,MAAOA,GACPC,KAAMA,GACN2F,WAAY7B,GACZ3T,QAASA,GACTE,SAAUA,GACV1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","file":"a987ea44-763ac5081be25323372a.js","sourcesContent":["/*! UIkit 3.6.19 | https://www.getuikit.com | (c) 2014 - 2021 YOOtheme | MIT License */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define('uikit', factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.UIkit = factory());\n})(this, function () {\n 'use strict';\n\n var objPrototype = Object.prototype;\n var hasOwnProperty = objPrototype.hasOwnProperty;\n\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n var hyphenateRe = /\\B([A-Z])/g;\n var hyphenate = memoize(function (str) {\n return str.replace(hyphenateRe, '-$1').toLowerCase();\n });\n var camelizeRe = /-(\\w)/g;\n var camelize = memoize(function (str) {\n return str.replace(camelizeRe, toUpper);\n });\n var ucfirst = memoize(function (str) {\n return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '';\n });\n\n function toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n }\n\n var strPrototype = String.prototype;\n\n var startsWithFn = strPrototype.startsWith || function (search) {\n return this.lastIndexOf(search, 0) === 0;\n };\n\n function startsWith(str, search) {\n return startsWithFn.call(str, search);\n }\n\n var endsWithFn = strPrototype.endsWith || function (search) {\n return this.substr(-search.length) === search;\n };\n\n function endsWith(str, search) {\n return endsWithFn.call(str, search);\n }\n\n var arrPrototype = Array.prototype;\n\n var includesFn = function includesFn(search, i) {\n return !!~this.indexOf(search, i);\n };\n\n var includesStr = strPrototype.includes || includesFn;\n var includesArray = arrPrototype.includes || includesFn;\n\n function includes(obj, search) {\n return obj && (isString(obj) ? includesStr : includesArray).call(obj, search);\n }\n\n var findIndexFn = arrPrototype.findIndex || function (predicate) {\n var arguments$1 = arguments;\n\n for (var i = 0; i < this.length; i++) {\n if (predicate.call(arguments$1[1], this[i], i, this)) {\n return i;\n }\n }\n\n return -1;\n };\n\n function findIndex(array, predicate) {\n return findIndexFn.call(array, predicate);\n }\n\n var isArray = Array.isArray;\n\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n var toString = objPrototype.toString;\n\n function isPlainObject(obj) {\n return toString.call(obj) === '[object Object]';\n }\n\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n\n function isDocument(obj) {\n return nodeType(obj) === 9;\n }\n\n function isNode(obj) {\n return nodeType(obj) >= 1;\n }\n\n function isElement(obj) {\n return nodeType(obj) === 1;\n }\n\n function nodeType(obj) {\n return !isWindow(obj) && isObject(obj) && obj.nodeType;\n }\n\n function isBoolean(value) {\n return typeof value === 'boolean';\n }\n\n function isString(value) {\n return typeof value === 'string';\n }\n\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n\n function isEmpty(obj) {\n return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false);\n }\n\n function isUndefined(value) {\n return value === void 0;\n }\n\n function toBoolean(value) {\n return isBoolean(value) ? value : value === 'true' || value === '1' || value === '' ? true : value === 'false' || value === '0' ? false : value;\n }\n\n function toNumber(value) {\n var number = Number(value);\n return !isNaN(number) ? number : false;\n }\n\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n\n var toArray = Array.from || function (value) {\n return arrPrototype.slice.call(value);\n };\n\n function toNode(element) {\n return toNodes(element)[0];\n }\n\n function toNodes(element) {\n return element && (isNode(element) ? [element] : toArray(element).filter(isNode)) || [];\n }\n\n function toWindow(element) {\n if (isWindow(element)) {\n return element;\n }\n\n element = toNode(element);\n return element ? (isDocument(element) ? element : element.ownerDocument).defaultView : window;\n }\n\n function toMs(time) {\n return !time ? 0 : endsWith(time, 'ms') ? toFloat(time) : toFloat(time) * 1000;\n }\n\n function isEqual(value, other) {\n return value === other || isObject(value) && isObject(other) && Object.keys(value).length === Object.keys(other).length && each(value, function (val, key) {\n return val === other[key];\n });\n }\n\n function swap(value, a, b) {\n return value.replace(new RegExp(a + \"|\" + b, 'g'), function (match) {\n return match === a ? b : a;\n });\n }\n\n var assign = Object.assign || function (target) {\n var args = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n args[len] = arguments[len + 1];\n }\n\n target = Object(target);\n\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n\n if (source !== null) {\n for (var key in source) {\n if (hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n\n return target;\n };\n\n function last(array) {\n return array[array.length - 1];\n }\n\n function each(obj, cb) {\n for (var key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n\n return true;\n }\n\n function sortBy(array, prop) {\n return array.slice().sort(function (ref, ref$1) {\n var propA = ref[prop];\n if (propA === void 0) propA = 0;\n var propB = ref$1[prop];\n if (propB === void 0) propB = 0;\n return propA > propB ? 1 : propB > propA ? -1 : 0;\n });\n }\n\n function uniqueBy(array, prop) {\n var seen = new Set();\n return array.filter(function (ref) {\n var check = ref[prop];\n return seen.has(check) ? false : seen.add(check) || true;\n } // IE 11 does not return the Set object\n );\n }\n\n function clamp(number, min, max) {\n if (min === void 0) min = 0;\n if (max === void 0) max = 1;\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n\n function noop() {}\n\n function intersectRect() {\n var rects = [],\n len = arguments.length;\n\n while (len--) {\n rects[len] = arguments[len];\n }\n\n return [['bottom', 'top'], ['right', 'left']].every(function (ref) {\n var minProp = ref[0];\n var maxProp = ref[1];\n return Math.min.apply(Math, rects.map(function (ref) {\n var min = ref[minProp];\n return min;\n })) - Math.max.apply(Math, rects.map(function (ref) {\n var max = ref[maxProp];\n return max;\n })) > 0;\n });\n }\n\n function pointInRect(point, rect) {\n return point.x <= rect.right && point.x >= rect.left && point.y <= rect.bottom && point.y >= rect.top;\n }\n\n var Dimensions = {\n ratio: function ratio(dimensions, prop, value) {\n var obj;\n var aProp = prop === 'width' ? 'height' : 'width';\n return obj = {}, obj[aProp] = dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], obj[prop] = value, obj;\n },\n contain: function contain(dimensions, maxDimensions) {\n var this$1 = this;\n dimensions = assign({}, dimensions);\n each(dimensions, function (_, prop) {\n return dimensions = dimensions[prop] > maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n });\n return dimensions;\n },\n cover: function cover(dimensions, maxDimensions) {\n var this$1 = this;\n dimensions = this.contain(dimensions, maxDimensions);\n each(dimensions, function (_, prop) {\n return dimensions = dimensions[prop] < maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n });\n return dimensions;\n }\n };\n\n function _getIndex(i, elements, current, finite) {\n if (current === void 0) current = 0;\n if (finite === void 0) finite = false;\n elements = toNodes(elements);\n var length = elements.length;\n i = isNumeric(i) ? toNumber(i) : i === 'next' ? current + 1 : i === 'previous' ? current - 1 : elements.indexOf(toNode(i));\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n return i < 0 ? i + length : i;\n }\n\n function memoize(fn) {\n var cache = Object.create(null);\n return function (key) {\n return cache[key] || (cache[key] = fn(key));\n };\n }\n\n function attr(element, name, value) {\n if (isObject(name)) {\n for (var key in name) {\n attr(element, key, name[key]);\n }\n\n return;\n }\n\n if (isUndefined(value)) {\n element = toNode(element);\n return element && element.getAttribute(name);\n } else {\n toNodes(element).forEach(function (element) {\n if (isFunction(value)) {\n value = value.call(element, attr(element, name));\n }\n\n if (value === null) {\n removeAttr(element, name);\n } else {\n element.setAttribute(name, value);\n }\n });\n }\n }\n\n function hasAttr(element, name) {\n return toNodes(element).some(function (element) {\n return element.hasAttribute(name);\n });\n }\n\n function removeAttr(element, name) {\n element = toNodes(element);\n name.split(' ').forEach(function (name) {\n return element.forEach(function (element) {\n return element.hasAttribute(name) && element.removeAttribute(name);\n });\n });\n }\n\n function data(element, attribute) {\n for (var i = 0, attrs = [attribute, \"data-\" + attribute]; i < attrs.length; i++) {\n if (hasAttr(element, attrs[i])) {\n return attr(element, attrs[i]);\n }\n }\n }\n /* global DocumentTouch */\n\n\n var inBrowser = typeof window !== 'undefined';\n var isIE = inBrowser && /msie|trident/i.test(window.navigator.userAgent);\n var isRtl = inBrowser && attr(document.documentElement, 'dir') === 'rtl';\n var hasTouchEvents = inBrowser && 'ontouchstart' in window;\n var hasPointerEvents = inBrowser && window.PointerEvent;\n var hasTouch = inBrowser && (hasTouchEvents || window.DocumentTouch && document instanceof DocumentTouch || navigator.maxTouchPoints); // IE >=11\n\n var pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown';\n var pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove';\n var pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup';\n var pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter';\n var pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave';\n var pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';\n var voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n menuitem: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n\n function isVoidElement(element) {\n return toNodes(element).some(function (element) {\n return voidElements[element.tagName.toLowerCase()];\n });\n }\n\n function isVisible(element) {\n return toNodes(element).some(function (element) {\n return element.offsetWidth || element.offsetHeight || element.getClientRects().length;\n });\n }\n\n var selInput = 'input,select,textarea,button';\n\n function isInput(element) {\n return toNodes(element).some(function (element) {\n return matches(element, selInput);\n });\n }\n\n function parent(element) {\n element = toNode(element);\n return element && isElement(element.parentNode) && element.parentNode;\n }\n\n function filter(element, selector) {\n return toNodes(element).filter(function (element) {\n return matches(element, selector);\n });\n }\n\n var elProto = inBrowser ? Element.prototype : {};\n var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector || noop;\n\n function matches(element, selector) {\n return toNodes(element).some(function (element) {\n return matchesFn.call(element, selector);\n });\n }\n\n var closestFn = elProto.closest || function (selector) {\n var ancestor = this;\n\n do {\n if (matches(ancestor, selector)) {\n return ancestor;\n }\n } while (ancestor = parent(ancestor));\n };\n\n function closest(element, selector) {\n if (startsWith(selector, '>')) {\n selector = selector.slice(1);\n }\n\n return isElement(element) ? closestFn.call(element, selector) : toNodes(element).map(function (element) {\n return closest(element, selector);\n }).filter(Boolean);\n }\n\n function within(element, selector) {\n return !isString(selector) ? element === selector || (isDocument(selector) ? selector.documentElement : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains\n : matches(element, selector) || !!closest(element, selector);\n }\n\n function parents(element, selector) {\n var elements = [];\n\n while (element = parent(element)) {\n if (!selector || matches(element, selector)) {\n elements.push(element);\n }\n }\n\n return elements;\n }\n\n function _children(element, selector) {\n element = toNode(element);\n var children = element ? toNodes(element.children) : [];\n return selector ? filter(children, selector) : children;\n }\n\n function index(element, ref) {\n return ref ? toNodes(element).indexOf(toNode(ref)) : _children(parent(element)).indexOf(element);\n }\n\n function query(selector, context) {\n return toNode(selector) || find(selector, getContext(selector, context));\n }\n\n function queryAll(selector, context) {\n var nodes = toNodes(selector);\n return nodes.length && nodes || findAll(selector, getContext(selector, context));\n }\n\n function getContext(selector, context) {\n if (context === void 0) context = document;\n return isString(selector) && isContextSelector(selector) || isDocument(context) ? context : context.ownerDocument;\n }\n\n function find(selector, context) {\n return toNode(_query(selector, context, 'querySelector'));\n }\n\n function findAll(selector, context) {\n return toNodes(_query(selector, context, 'querySelectorAll'));\n }\n\n function _query(selector, context, queryFn) {\n if (context === void 0) context = document;\n\n if (!selector || !isString(selector)) {\n return null;\n }\n\n selector = selector.replace(contextSanitizeRe, '$1 *');\n\n if (isContextSelector(selector)) {\n selector = splitSelector(selector).map(function (selector, i) {\n var ctx = context;\n\n if (selector[0] === '!') {\n var selectors = selector.substr(1).trim().split(' ');\n ctx = closest(parent(context), selectors[0]);\n selector = selectors.slice(1).join(' ').trim();\n }\n\n if (selector[0] === '-') {\n var selectors$1 = selector.substr(1).trim().split(' ');\n var prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, selector.substr(1)) ? prev : null;\n selector = selectors$1.slice(1).join(' ');\n }\n\n if (!ctx) {\n return null;\n }\n\n return domPath(ctx) + \" \" + selector;\n }).filter(Boolean).join(',');\n context = document;\n }\n\n try {\n return context[queryFn](selector);\n } catch (e) {\n return null;\n }\n }\n\n var contextSelectorRe = /(^|[^\\\\],)\\s*[!>+~-]/;\n var contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n var isContextSelector = memoize(function (selector) {\n return selector.match(contextSelectorRe);\n });\n var selectorRe = /.*?[^\\\\](?:,|$)/g;\n var splitSelector = memoize(function (selector) {\n return selector.match(selectorRe).map(function (selector) {\n return selector.replace(/,$/, '').trim();\n });\n });\n\n function domPath(element) {\n var names = [];\n\n while (element.parentNode) {\n if (element.id) {\n names.unshift(\"#\" + escape(element.id));\n break;\n } else {\n var tagName = element.tagName;\n\n if (tagName !== 'HTML') {\n tagName += \":nth-child(\" + (index(element) + 1) + \")\";\n }\n\n names.unshift(tagName);\n element = element.parentNode;\n }\n }\n\n return names.join(' > ');\n }\n\n var escapeFn = inBrowser && window.CSS && CSS.escape || function (css) {\n return css.replace(/([^\\x7f-\\uFFFF\\w-])/g, function (match) {\n return \"\\\\\" + match;\n });\n };\n\n function escape(css) {\n return isString(css) ? escapeFn.call(null, css) : '';\n }\n\n function on() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var ref = getArgs(args);\n var targets = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n targets = toEventTargets(targets);\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n if (useCapture && useCapture.self) {\n listener = selfFilter(listener);\n }\n\n if (selector) {\n listener = delegate(selector, listener);\n }\n\n useCapture = useCaptureFilter(useCapture);\n type.split(' ').forEach(function (type) {\n return targets.forEach(function (target) {\n return target.addEventListener(type, listener, useCapture);\n });\n });\n return function () {\n return off(targets, type, listener, useCapture);\n };\n }\n\n function off(targets, type, listener, useCapture) {\n if (useCapture === void 0) useCapture = false;\n useCapture = useCaptureFilter(useCapture);\n targets = toEventTargets(targets);\n type.split(' ').forEach(function (type) {\n return targets.forEach(function (target) {\n return target.removeEventListener(type, listener, useCapture);\n });\n });\n }\n\n function once() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var ref = getArgs(args);\n var element = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n var condition = ref[5];\n var off = on(element, type, selector, function (e) {\n var result = !condition || condition(e);\n\n if (result) {\n off();\n listener(e, result);\n }\n }, useCapture);\n return off;\n }\n\n function trigger(targets, event, detail) {\n return toEventTargets(targets).reduce(function (notCanceled, target) {\n return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail));\n }, true);\n }\n\n function createEvent(e, bubbles, cancelable, detail) {\n if (bubbles === void 0) bubbles = true;\n if (cancelable === void 0) cancelable = false;\n\n if (isString(e)) {\n var event = document.createEvent('CustomEvent'); // IE 11\n\n event.initCustomEvent(e, bubbles, cancelable, detail);\n e = event;\n }\n\n return e;\n }\n\n function getArgs(args) {\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n\n return args;\n }\n\n function delegate(selector, listener) {\n var this$1 = this;\n return function (e) {\n var current = selector[0] === '>' ? findAll(selector, e.currentTarget).reverse().filter(function (element) {\n return within(e.target, element);\n })[0] : closest(e.target, selector);\n\n if (current) {\n e.current = current;\n listener.call(this$1, e);\n }\n };\n }\n\n function detail(listener) {\n return function (e) {\n return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e);\n };\n }\n\n function selfFilter(listener) {\n return function (e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n }\n\n function useCaptureFilter(options) {\n return options && isIE && !isBoolean(options) ? !!options.capture : options;\n }\n\n function isEventTarget(target) {\n return target && 'addEventListener' in target;\n }\n\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n\n function toEventTargets(target) {\n return isArray(target) ? target.map(toEventTarget).filter(Boolean) : isString(target) ? findAll(target) : isEventTarget(target) ? [target] : toNodes(target);\n }\n\n function isTouch(e) {\n return e.pointerType === 'touch' || !!e.touches;\n }\n\n function getEventPos(e) {\n var touches = e.touches;\n var changedTouches = e.changedTouches;\n var ref = touches && touches[0] || changedTouches && changedTouches[0] || e;\n var x = ref.clientX;\n var y = ref.clientY;\n return {\n x: x,\n y: y\n };\n }\n /* global setImmediate */\n\n\n var Promise = inBrowser && window.Promise || PromiseFn;\n\n var Deferred = function Deferred() {\n var this$1 = this;\n this.promise = new Promise(function (resolve, reject) {\n this$1.reject = reject;\n this$1.resolve = resolve;\n });\n };\n /**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\n\n var RESOLVED = 0;\n var REJECTED = 1;\n var PENDING = 2;\n var async = inBrowser && window.setImmediate || setTimeout;\n\n function PromiseFn(executor) {\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n var promise = this;\n\n try {\n executor(function (x) {\n promise.resolve(x);\n }, function (r) {\n promise.reject(r);\n });\n } catch (e) {\n promise.reject(e);\n }\n }\n\n PromiseFn.reject = function (r) {\n return new PromiseFn(function (resolve, reject) {\n reject(r);\n });\n };\n\n PromiseFn.resolve = function (x) {\n return new PromiseFn(function (resolve, reject) {\n resolve(x);\n });\n };\n\n PromiseFn.all = function all(iterable) {\n return new PromiseFn(function (resolve, reject) {\n var result = [];\n var count = 0;\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n };\n\n PromiseFn.race = function race(iterable) {\n return new PromiseFn(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolve, reject);\n }\n });\n };\n\n var p = PromiseFn.prototype;\n\n p.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x.then;\n\n if (x !== null && isObject(x) && isFunction(then)) {\n then.call(x, function (x) {\n if (!called) {\n promise.resolve(x);\n }\n\n called = true;\n }, function (r) {\n if (!called) {\n promise.reject(r);\n }\n\n called = true;\n });\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n };\n\n p.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n };\n\n p.notify = function notify() {\n var this$1 = this;\n async(function () {\n if (this$1.state !== PENDING) {\n while (this$1.deferred.length) {\n var ref = this$1.deferred.shift();\n var onResolved = ref[0];\n var onRejected = ref[1];\n var resolve = ref[2];\n var reject = ref[3];\n\n try {\n if (this$1.state === RESOLVED) {\n if (isFunction(onResolved)) {\n resolve(onResolved.call(undefined, this$1.value));\n } else {\n resolve(this$1.value);\n }\n } else if (this$1.state === REJECTED) {\n if (isFunction(onRejected)) {\n resolve(onRejected.call(undefined, this$1.value));\n } else {\n reject(this$1.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n };\n\n p.then = function then(onResolved, onRejected) {\n var this$1 = this;\n return new PromiseFn(function (resolve, reject) {\n this$1.deferred.push([onResolved, onRejected, resolve, reject]);\n this$1.notify();\n });\n };\n\n p.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n };\n\n function ajax(url, options) {\n var env = assign({\n data: null,\n method: 'GET',\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: ''\n }, options);\n return Promise.resolve().then(function () {\n return env.beforeSend(env);\n }).then(function () {\n return send(url, env);\n });\n }\n\n function send(url, env) {\n return new Promise(function (resolve, reject) {\n var xhr = env.xhr;\n\n for (var prop in env) {\n if (prop in xhr) {\n try {\n xhr[prop] = env[prop];\n } catch (e) {}\n }\n }\n\n xhr.open(env.method.toUpperCase(), url);\n\n for (var header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n\n on(xhr, 'load', function () {\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n // IE 11 does not support responseType 'json'\n if (env.responseType === 'json' && isString(xhr.response)) {\n xhr = assign(copyXhr(xhr), {\n response: JSON.parse(xhr.response)\n });\n }\n\n resolve(xhr);\n } else {\n reject(assign(Error(xhr.statusText), {\n xhr: xhr,\n status: xhr.status\n }));\n }\n });\n on(xhr, 'error', function () {\n return reject(assign(Error('Network Error'), {\n xhr: xhr\n }));\n });\n on(xhr, 'timeout', function () {\n return reject(assign(Error('Network Timeout'), {\n xhr: xhr\n }));\n });\n xhr.send(env.data);\n });\n }\n\n function getImage(src, srcset, sizes) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n\n img.onerror = function (e) {\n return reject(e);\n };\n\n img.onload = function () {\n return resolve(img);\n };\n\n sizes && (img.sizes = sizes);\n srcset && (img.srcset = srcset);\n img.src = src;\n });\n }\n\n function copyXhr(source) {\n var target = {};\n\n for (var key in source) {\n target[key] = source[key];\n }\n\n return target;\n }\n\n function ready(fn) {\n if (document.readyState !== 'loading') {\n fn();\n return;\n }\n\n var unbind = on(document, 'DOMContentLoaded', function () {\n unbind();\n fn();\n });\n }\n\n function empty(element) {\n element = $(element);\n element.innerHTML = '';\n return element;\n }\n\n function html(parent, html) {\n parent = $(parent);\n return isUndefined(html) ? parent.innerHTML : append(parent.hasChildNodes() ? empty(parent) : parent, html);\n }\n\n function prepend(parent, element) {\n parent = $(parent);\n\n if (!parent.hasChildNodes()) {\n return append(parent, element);\n } else {\n return insertNodes(element, function (element) {\n return parent.insertBefore(element, parent.firstChild);\n });\n }\n }\n\n function append(parent, element) {\n parent = $(parent);\n return insertNodes(element, function (element) {\n return parent.appendChild(element);\n });\n }\n\n function before(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) {\n return ref.parentNode.insertBefore(element, ref);\n });\n }\n\n function after(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) {\n return ref.nextSibling ? before(ref.nextSibling, element) : append(ref.parentNode, element);\n });\n }\n\n function insertNodes(element, fn) {\n element = isString(element) ? fragment(element) : element;\n return element ? 'length' in element ? toNodes(element).map(fn) : fn(element) : null;\n }\n\n function _remove(element) {\n toNodes(element).forEach(function (element) {\n return element.parentNode && element.parentNode.removeChild(element);\n });\n }\n\n function wrapAll(element, structure) {\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n return structure;\n }\n\n function wrapInner(element, structure) {\n return toNodes(toNodes(element).map(function (element) {\n return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure);\n }));\n }\n\n function unwrap(element) {\n toNodes(element).map(parent).filter(function (value, index, self) {\n return self.indexOf(value) === index;\n }).forEach(function (parent) {\n before(parent, parent.childNodes);\n\n _remove(parent);\n });\n }\n\n var fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\n var singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\n function fragment(html) {\n var matches = singleTagRe.exec(html);\n\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n var container = document.createElement('div');\n\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;\n }\n\n function apply(node, fn) {\n if (!isElement(node)) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n\n while (node) {\n var next = node.nextElementSibling;\n apply(node, fn);\n node = next;\n }\n }\n\n function $(selector, context) {\n return !isString(selector) ? toNode(selector) : isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);\n }\n\n function $$(selector, context) {\n return !isString(selector) ? toNodes(selector) : isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);\n }\n\n function isHtml(str) {\n return str[0] === '<' || str.match(/^\\s* 0) {\n args[len] = arguments[len + 1];\n }\n\n apply$1(element, args, 'add');\n }\n\n function removeClass(element) {\n var args = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n args[len] = arguments[len + 1];\n }\n\n apply$1(element, args, 'remove');\n }\n\n function removeClasses(element, cls) {\n attr(element, 'class', function (value) {\n return (value || '').replace(new RegExp(\"\\\\b\" + cls + \"\\\\b\", 'g'), '');\n });\n }\n\n function replaceClass(element) {\n var args = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n args[len] = arguments[len + 1];\n }\n\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n }\n\n function hasClass(element, cls) {\n var assign;\n assign = getClasses(cls), cls = assign[0];\n var nodes = toNodes(element);\n\n for (var n = 0; n < nodes.length; n++) {\n if (cls && nodes[n].classList.contains(cls)) {\n return true;\n }\n }\n\n return false;\n }\n\n function toggleClass(element, cls, force) {\n cls = getClasses(cls);\n var nodes = toNodes(element);\n\n for (var n = 0; n < nodes.length; n++) {\n var list = nodes[n].classList;\n\n for (var i = 0; i < cls.length; i++) {\n if (isUndefined(force)) {\n list.toggle(cls[i]);\n } else if (supports.Force) {\n list.toggle(cls[i], !!force);\n } else {\n list[force ? 'add' : 'remove'](cls[i]);\n }\n }\n }\n }\n\n function apply$1(element, args, fn) {\n var ref;\n args = args.reduce(function (args, arg) {\n return args.concat(getClasses(arg));\n }, []);\n var nodes = toNodes(element);\n\n var loop = function loop(n) {\n if (supports.Multiple) {\n (ref = nodes[n].classList)[fn].apply(ref, args);\n } else {\n args.forEach(function (cls) {\n return nodes[n].classList[fn](cls);\n });\n }\n };\n\n for (var n = 0; n < nodes.length; n++) {\n loop(n);\n }\n }\n\n function getClasses(str) {\n str = String(str);\n return (~str.indexOf(' ') ? str.split(' ') : [str]).filter(Boolean);\n } // IE 11\n\n\n var supports = {\n get Multiple() {\n return this.get('Multiple');\n },\n\n get Force() {\n return this.get('Force');\n },\n\n get: function get(key) {\n var ref = document.createElement('_');\n var classList = ref.classList;\n classList.add('a', 'b');\n classList.toggle('c', false);\n supports = {\n Multiple: classList.contains('b'),\n Force: !classList.contains('c')\n };\n return supports[key];\n }\n };\n var cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n 'opacity': true,\n 'order': true,\n 'orphans': true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n 'widows': true,\n 'z-index': true,\n 'zoom': true\n };\n\n function css(element, property, value, priority) {\n if (priority === void 0) priority = '';\n return toNodes(element).map(function (element) {\n if (isString(property)) {\n property = propName(property);\n\n if (isUndefined(value)) {\n return getStyle(element, property);\n } else if (!value && !isNumber(value)) {\n element.style.removeProperty(property);\n } else {\n element.style.setProperty(property, isNumeric(value) && !cssNumber[property] ? value + \"px\" : value, priority);\n }\n } else if (isArray(property)) {\n var styles = getStyles(element);\n return property.reduce(function (props, property) {\n props[property] = styles[propName(property)];\n return props;\n }, {});\n } else if (isObject(property)) {\n priority = value;\n each(property, function (value, property) {\n return css(element, property, value, priority);\n });\n }\n\n return element;\n })[0];\n }\n\n function getStyles(element, pseudoElt) {\n return toWindow(element).getComputedStyle(element, pseudoElt);\n }\n\n function getStyle(element, property, pseudoElt) {\n return getStyles(element, pseudoElt)[property];\n }\n\n var parseCssVar = memoize(function (name) {\n /* usage in css: .uk-name:before { content:\"xyz\" } */\n var element = append(document.documentElement, document.createElement('div'));\n addClass(element, \"uk-\" + name);\n name = getStyle(element, 'content', ':before').replace(/^[\"'](.*)[\"']$/, '$1');\n\n _remove(element);\n\n return name;\n });\n\n function getCssVar(name) {\n return !isIE ? getStyles(document.documentElement).getPropertyValue(\"--uk-\" + name) : parseCssVar(name);\n } // https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty\n\n\n var propName = memoize(function (name) {\n return vendorPropName(name);\n });\n var cssPrefixes = ['webkit', 'moz', 'ms'];\n\n function vendorPropName(name) {\n name = hyphenate(name);\n var ref = document.documentElement;\n var style = ref.style;\n\n if (name in style) {\n return name;\n }\n\n var i = cssPrefixes.length,\n prefixedName;\n\n while (i--) {\n prefixedName = \"-\" + cssPrefixes[i] + \"-\" + name;\n\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n }\n\n function transition(element, props, duration, timing) {\n if (duration === void 0) duration = 400;\n if (timing === void 0) timing = 'linear';\n return Promise.all(toNodes(element).map(function (element) {\n return new Promise(function (resolve, reject) {\n for (var name in props) {\n var value = css(element, name);\n\n if (value === '') {\n css(element, name, value);\n }\n }\n\n var timer = setTimeout(function () {\n return trigger(element, 'transitionend');\n }, duration);\n once(element, 'transitionend transitioncanceled', function (ref) {\n var type = ref.type;\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n transitionProperty: '',\n transitionDuration: '',\n transitionTimingFunction: ''\n });\n type === 'transitioncanceled' ? reject() : resolve(element);\n }, {\n self: true\n });\n addClass(element, 'uk-transition');\n css(element, assign({\n transitionProperty: Object.keys(props).map(propName).join(','),\n transitionDuration: duration + \"ms\",\n transitionTimingFunction: timing\n }, props));\n });\n }));\n }\n\n var Transition = {\n start: transition,\n stop: function stop(element) {\n trigger(element, 'transitionend');\n return Promise.resolve();\n },\n cancel: function cancel(element) {\n trigger(element, 'transitioncanceled');\n },\n inProgress: function inProgress(element) {\n return hasClass(element, 'uk-transition');\n }\n };\n var animationPrefix = 'uk-animation-';\n\n function animate(element, animation, duration, origin, out) {\n if (duration === void 0) duration = 200;\n return Promise.all(toNodes(element).map(function (element) {\n return new Promise(function (resolve, reject) {\n trigger(element, 'animationcanceled');\n var timer = setTimeout(function () {\n return trigger(element, 'animationend');\n }, duration);\n once(element, 'animationend animationcanceled', function (ref) {\n var type = ref.type;\n clearTimeout(timer);\n type === 'animationcanceled' ? reject() : resolve(element);\n css(element, 'animationDuration', '');\n removeClasses(element, animationPrefix + \"\\\\S*\");\n }, {\n self: true\n });\n css(element, 'animationDuration', duration + \"ms\");\n addClass(element, animation, animationPrefix + (out ? 'leave' : 'enter'));\n\n if (startsWith(animation, animationPrefix)) {\n origin && addClass(element, \"uk-transform-origin-\" + origin);\n out && addClass(element, animationPrefix + \"reverse\");\n }\n });\n }));\n }\n\n var _inProgress = new RegExp(animationPrefix + \"(enter|leave)\");\n\n var Animation = {\n in: animate,\n out: function out(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, true);\n },\n inProgress: function inProgress(element) {\n return _inProgress.test(attr(element, 'class'));\n },\n cancel: function cancel(element) {\n trigger(element, 'animationcanceled');\n }\n };\n var dirs = {\n width: ['left', 'right'],\n height: ['top', 'bottom']\n };\n\n function dimensions(element) {\n var rect = isElement(element) ? toNode(element).getBoundingClientRect() : {\n height: height(element),\n width: width(element),\n top: 0,\n left: 0\n };\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top,\n left: rect.left,\n bottom: rect.top + rect.height,\n right: rect.left + rect.width\n };\n }\n\n function offset(element, coordinates) {\n var currentOffset = dimensions(element);\n var ref = toWindow(element);\n var pageYOffset = ref.pageYOffset;\n var pageXOffset = ref.pageXOffset;\n var offsetBy = {\n height: pageYOffset,\n width: pageXOffset\n };\n\n for (var dir in dirs) {\n for (var i in dirs[dir]) {\n currentOffset[dirs[dir][i]] += offsetBy[dir];\n }\n }\n\n if (!coordinates) {\n return currentOffset;\n }\n\n var pos = css(element, 'position');\n each(css(element, ['left', 'top']), function (value, prop) {\n return css(element, prop, coordinates[prop] - currentOffset[prop] + toFloat(pos === 'absolute' && value === 'auto' ? position(element)[prop] : value));\n });\n }\n\n function position(element) {\n var ref = offset(element);\n var top = ref.top;\n var left = ref.left;\n var ref$1 = toNode(element);\n var ref$1_ownerDocument = ref$1.ownerDocument;\n var body = ref$1_ownerDocument.body;\n var documentElement = ref$1_ownerDocument.documentElement;\n var offsetParent = ref$1.offsetParent;\n var parent = offsetParent || documentElement;\n\n while (parent && (parent === body || parent === documentElement) && css(parent, 'position') === 'static') {\n parent = parent.parentNode;\n }\n\n if (isElement(parent)) {\n var parentOffset = offset(parent);\n top -= parentOffset.top + toFloat(css(parent, 'borderTopWidth'));\n left -= parentOffset.left + toFloat(css(parent, 'borderLeftWidth'));\n }\n\n return {\n top: top - toFloat(css(element, 'marginTop')),\n left: left - toFloat(css(element, 'marginLeft'))\n };\n }\n\n function offsetPosition(element) {\n var offset = [0, 0];\n element = toNode(element);\n\n do {\n offset[0] += element.offsetTop;\n offset[1] += element.offsetLeft;\n\n if (css(element, 'position') === 'fixed') {\n var win = toWindow(element);\n offset[0] += win.pageYOffset;\n offset[1] += win.pageXOffset;\n return offset;\n }\n } while (element = element.offsetParent);\n\n return offset;\n }\n\n var height = dimension('height');\n var width = dimension('width');\n\n function dimension(prop) {\n var propName = ucfirst(prop);\n return function (element, value) {\n if (isUndefined(value)) {\n if (isWindow(element)) {\n return element[\"inner\" + propName];\n }\n\n if (isDocument(element)) {\n var doc = element.documentElement;\n return Math.max(doc[\"offset\" + propName], doc[\"scroll\" + propName]);\n }\n\n element = toNode(element);\n value = css(element, prop);\n value = value === 'auto' ? element[\"offset\" + propName] : toFloat(value) || 0;\n return value - boxModelAdjust(element, prop);\n } else {\n return css(element, prop, !value && value !== 0 ? '' : +value + boxModelAdjust(element, prop) + 'px');\n }\n };\n }\n\n function boxModelAdjust(element, prop, sizing) {\n if (sizing === void 0) sizing = 'border-box';\n return css(element, 'boxSizing') === sizing ? dirs[prop].map(ucfirst).reduce(function (value, prop) {\n return value + toFloat(css(element, \"padding\" + prop)) + toFloat(css(element, \"border\" + prop + \"Width\"));\n }, 0) : 0;\n }\n\n function flipPosition(pos) {\n for (var dir in dirs) {\n for (var i in dirs[dir]) {\n if (dirs[dir][i] === pos) {\n return dirs[dir][1 - i];\n }\n }\n }\n\n return pos;\n }\n\n function toPx(value, property, element) {\n if (property === void 0) property = 'width';\n if (element === void 0) element = window;\n return isNumeric(value) ? +value : endsWith(value, 'vh') ? percent(height(toWindow(element)), value) : endsWith(value, 'vw') ? percent(width(toWindow(element)), value) : endsWith(value, '%') ? percent(dimensions(element)[property], value) : toFloat(value);\n }\n\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n /*\n Based on:\n Copyright (c) 2016 Wilson Page wilsonpage@me.com\n https://github.com/wilsonpage/fastdom\n */\n\n\n var fastdom = {\n reads: [],\n writes: [],\n read: function read(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n write: function write(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n clear: function clear(task) {\n remove$1(this.reads, task);\n remove$1(this.writes, task);\n },\n flush: flush\n };\n\n function flush(recursion) {\n if (recursion === void 0) recursion = 1;\n runTasks(fastdom.reads);\n runTasks(fastdom.writes.splice(0));\n fastdom.scheduled = false;\n\n if (fastdom.reads.length || fastdom.writes.length) {\n scheduleFlush(recursion + 1);\n }\n }\n\n var RECURSION_LIMIT = 4;\n\n function scheduleFlush(recursion) {\n if (fastdom.scheduled) {\n return;\n }\n\n fastdom.scheduled = true;\n\n if (recursion && recursion < RECURSION_LIMIT) {\n Promise.resolve().then(function () {\n return flush(recursion);\n });\n } else {\n requestAnimationFrame(function () {\n return flush();\n });\n }\n }\n\n function runTasks(tasks) {\n var task;\n\n while (task = tasks.shift()) {\n try {\n task();\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n function remove$1(array, item) {\n var index = array.indexOf(item);\n return ~index && array.splice(index, 1);\n }\n\n function MouseTracker() {}\n\n MouseTracker.prototype = {\n positions: [],\n init: function init() {\n var this$1 = this;\n this.positions = [];\n var position;\n this.unbind = on(document, 'mousemove', function (e) {\n return position = getEventPos(e);\n });\n this.interval = setInterval(function () {\n if (!position) {\n return;\n }\n\n this$1.positions.push(position);\n\n if (this$1.positions.length > 5) {\n this$1.positions.shift();\n }\n }, 50);\n },\n cancel: function cancel() {\n this.unbind && this.unbind();\n this.interval && clearInterval(this.interval);\n },\n movesTo: function movesTo(target) {\n if (this.positions.length < 2) {\n return false;\n }\n\n var p = target.getBoundingClientRect();\n var left = p.left;\n var right = p.right;\n var top = p.top;\n var bottom = p.bottom;\n var ref = this.positions;\n var prevPosition = ref[0];\n var position = last(this.positions);\n var path = [prevPosition, position];\n\n if (pointInRect(position, p)) {\n return false;\n }\n\n var diagonals = [[{\n x: left,\n y: top\n }, {\n x: right,\n y: bottom\n }], [{\n x: left,\n y: bottom\n }, {\n x: right,\n y: top\n }]];\n return diagonals.some(function (diagonal) {\n var intersection = intersect(path, diagonal);\n return intersection && pointInRect(intersection, p);\n });\n }\n }; // Inspired by http://paulbourke.net/geometry/pointlineplane/\n\n function intersect(ref, ref$1) {\n var ref_0 = ref[0];\n var x1 = ref_0.x;\n var y1 = ref_0.y;\n var ref_1 = ref[1];\n var x2 = ref_1.x;\n var y2 = ref_1.y;\n var ref$1_0 = ref$1[0];\n var x3 = ref$1_0.x;\n var y3 = ref$1_0.y;\n var ref$1_1 = ref$1[1];\n var x4 = ref$1_1.x;\n var y4 = ref$1_1.y;\n var denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1); // Lines are parallel\n\n if (denominator === 0) {\n return false;\n }\n\n var ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n\n if (ua < 0) {\n return false;\n } // Return an object with the x and y coordinates of the intersection\n\n\n return {\n x: x1 + ua * (x2 - x1),\n y: y1 + ua * (y2 - y1)\n };\n }\n\n var strats = {};\n strats.events = strats.created = strats.beforeConnect = strats.connected = strats.beforeDisconnect = strats.disconnected = strats.destroy = concatStrat; // args strategy\n\n strats.args = function (parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n }; // update strategy\n\n\n strats.update = function (parentVal, childVal) {\n return sortBy(concatStrat(parentVal, isFunction(childVal) ? {\n read: childVal\n } : childVal), 'order');\n }; // property strategy\n\n\n strats.props = function (parentVal, childVal) {\n if (isArray(childVal)) {\n childVal = childVal.reduce(function (value, key) {\n value[key] = String;\n return value;\n }, {});\n }\n\n return strats.methods(parentVal, childVal);\n }; // extend strategy\n\n\n strats.computed = strats.methods = function (parentVal, childVal) {\n return childVal ? parentVal ? assign({}, parentVal, childVal) : childVal : parentVal;\n }; // data strategy\n\n\n strats.data = function (parentVal, childVal, vm) {\n if (!vm) {\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n return function (vm) {\n return mergeFnData(parentVal, childVal, vm);\n };\n }\n\n return mergeFnData(parentVal, childVal, vm);\n };\n\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal, isFunction(childVal) ? childVal.call(vm, vm) : childVal);\n } // concat strategy\n\n\n function concatStrat(parentVal, childVal) {\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;\n } // default strategy\n\n\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n\n function mergeOptions(parent, child, vm) {\n var options = {};\n\n if (isFunction(child)) {\n child = child.options;\n }\n\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n\n for (var key in parent) {\n mergeKey(key);\n }\n\n for (var key$1 in child) {\n if (!hasOwn(parent, key$1)) {\n mergeKey(key$1);\n }\n }\n\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n\n return options;\n }\n\n function parseOptions(options, args) {\n var obj;\n if (args === void 0) args = [];\n\n try {\n return !options ? {} : startsWith(options, '{') ? JSON.parse(options) : args.length && !includes(options, ':') ? (obj = {}, obj[args[0]] = options, obj) : options.split(';').reduce(function (options, option) {\n var ref = option.split(/:(.*)/);\n var key = ref[0];\n var value = ref[1];\n\n if (key && !isUndefined(value)) {\n options[key.trim()] = value.trim();\n }\n\n return options;\n }, {});\n } catch (e) {\n return {};\n }\n }\n\n function play(el) {\n if (isIFrame(el)) {\n call(el, {\n func: 'playVideo',\n method: 'play'\n });\n }\n\n if (isHTML5(el)) {\n try {\n el.play().catch(noop);\n } catch (e) {}\n }\n }\n\n function pause(el) {\n if (isIFrame(el)) {\n call(el, {\n func: 'pauseVideo',\n method: 'pause'\n });\n }\n\n if (isHTML5(el)) {\n el.pause();\n }\n }\n\n function mute(el) {\n if (isIFrame(el)) {\n call(el, {\n func: 'mute',\n method: 'setVolume',\n value: 0\n });\n }\n\n if (isHTML5(el)) {\n el.muted = true;\n }\n }\n\n function isHTML5(el) {\n return el && el.tagName === 'VIDEO';\n }\n\n function isIFrame(el) {\n return el && el.tagName === 'IFRAME' && (isYoutube(el) || isVimeo(el));\n }\n\n function isYoutube(el) {\n return !!el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/);\n }\n\n function isVimeo(el) {\n return !!el.src.match(/vimeo\\.com\\/video\\/.*/);\n }\n\n function call(el, cmd) {\n enableApi(el).then(function () {\n return post(el, cmd);\n });\n }\n\n function post(el, cmd) {\n try {\n el.contentWindow.postMessage(JSON.stringify(assign({\n event: 'command'\n }, cmd)), '*');\n } catch (e) {}\n }\n\n var stateKey = '_ukPlayer';\n var counter = 0;\n\n function enableApi(el) {\n if (el[stateKey]) {\n return el[stateKey];\n }\n\n var youtube = isYoutube(el);\n var vimeo = isVimeo(el);\n var id = ++counter;\n var poller;\n return el[stateKey] = new Promise(function (resolve) {\n youtube && once(el, 'load', function () {\n var listener = function listener() {\n return post(el, {\n event: 'listening',\n id: id\n });\n };\n\n poller = setInterval(listener, 100);\n listener();\n });\n once(window, 'message', resolve, false, function (ref) {\n var data = ref.data;\n\n try {\n data = JSON.parse(data);\n return data && (youtube && data.id === id && data.event === 'onReady' || vimeo && Number(data.player_id) === id);\n } catch (e) {}\n });\n el.src = \"\" + el.src + (includes(el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : \"api=1&player_id=\" + id);\n }).then(function () {\n return clearInterval(poller);\n });\n }\n\n function isInView(element, offsetTop, offsetLeft) {\n if (offsetTop === void 0) offsetTop = 0;\n if (offsetLeft === void 0) offsetLeft = 0;\n\n if (!isVisible(element)) {\n return false;\n }\n\n return intersectRect.apply(void 0, scrollParents(element).map(function (parent) {\n var ref = offset(getViewport(parent));\n var top = ref.top;\n var left = ref.left;\n var bottom = ref.bottom;\n var right = ref.right;\n return {\n top: top - offsetTop,\n left: left - offsetLeft,\n bottom: bottom + offsetTop,\n right: right + offsetLeft\n };\n }).concat(offset(element)));\n }\n\n function scrollTop(element, top) {\n if (isWindow(element) || isDocument(element)) {\n element = getScrollingElement(element);\n } else {\n element = toNode(element);\n }\n\n element.scrollTop = top;\n }\n\n function scrollIntoView(element, ref) {\n if (ref === void 0) ref = {};\n var offsetBy = ref.offset;\n if (offsetBy === void 0) offsetBy = 0;\n\n if (!isVisible(element)) {\n return;\n }\n\n var parents = scrollParents(element);\n var diff = 0;\n return parents.reduce(function (fn, scrollElement, i) {\n var scrollTop = scrollElement.scrollTop;\n var scrollHeight = scrollElement.scrollHeight;\n var maxScroll = scrollHeight - getViewportClientHeight(scrollElement);\n var top = Math.ceil(offset(parents[i - 1] || element).top - offset(getViewport(scrollElement)).top - offsetBy + diff + scrollTop);\n\n if (top > maxScroll) {\n diff = top - maxScroll;\n top = maxScroll;\n } else {\n diff = 0;\n }\n\n return function () {\n return scrollTo(scrollElement, top - scrollTop).then(fn);\n };\n }, function () {\n return Promise.resolve();\n })();\n\n function scrollTo(element, top) {\n return new Promise(function (resolve) {\n var scroll = element.scrollTop;\n var duration = getDuration(Math.abs(top));\n var start = Date.now();\n\n (function step() {\n var percent = ease(clamp((Date.now() - start) / duration));\n scrollTop(element, scroll + top * percent); // scroll more if we have not reached our destination\n\n if (percent !== 1) {\n requestAnimationFrame(step);\n } else {\n resolve();\n }\n })();\n });\n }\n\n function getDuration(dist) {\n return 40 * Math.pow(dist, .375);\n }\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n }\n\n function scrolledOver(element, heightOffset) {\n if (heightOffset === void 0) heightOffset = 0;\n\n if (!isVisible(element)) {\n return 0;\n }\n\n var ref = scrollParents(element, /auto|scroll/, true);\n var scrollElement = ref[0];\n var scrollHeight = scrollElement.scrollHeight;\n var scrollTop = scrollElement.scrollTop;\n var clientHeight = getViewportClientHeight(scrollElement);\n var viewportTop = offsetPosition(element)[0] - scrollTop - offsetPosition(scrollElement)[0];\n var viewportDist = Math.min(clientHeight, viewportTop + scrollTop);\n var top = viewportTop - viewportDist;\n var dist = Math.min(element.offsetHeight + heightOffset + viewportDist, scrollHeight - (viewportTop + scrollTop), scrollHeight - clientHeight);\n return clamp(-1 * top / dist);\n }\n\n function scrollParents(element, overflowRe, scrollable) {\n if (overflowRe === void 0) overflowRe = /auto|scroll|hidden/;\n if (scrollable === void 0) scrollable = false;\n var scrollEl = getScrollingElement(element);\n var ancestors = parents(element).reverse();\n ancestors = ancestors.slice(ancestors.indexOf(scrollEl) + 1);\n var fixedIndex = findIndex(ancestors, function (el) {\n return css(el, 'position') === 'fixed';\n });\n\n if (~fixedIndex) {\n ancestors = ancestors.slice(fixedIndex);\n }\n\n return [scrollEl].concat(ancestors.filter(function (parent) {\n return overflowRe.test(css(parent, 'overflow')) && (!scrollable || parent.scrollHeight > getViewportClientHeight(parent));\n })).reverse();\n }\n\n function getViewport(scrollElement) {\n return scrollElement === getScrollingElement(scrollElement) ? window : scrollElement;\n } // iOS 12 returns as scrollingElement\n\n\n function getViewportClientHeight(scrollElement) {\n return (scrollElement === getScrollingElement(scrollElement) ? document.documentElement : scrollElement).clientHeight;\n }\n\n function getScrollingElement(element) {\n var ref = toWindow(element);\n var document = ref.document;\n return document.scrollingElement || document.documentElement;\n }\n\n var dirs$1 = {\n width: ['x', 'left', 'right'],\n height: ['y', 'top', 'bottom']\n };\n\n function _positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {\n elAttach = getPos(elAttach);\n targetAttach = getPos(targetAttach);\n var flipped = {\n element: elAttach,\n target: targetAttach\n };\n\n if (!element || !target) {\n return flipped;\n }\n\n var dim = offset(element);\n var targetDim = offset(target);\n var position = targetDim;\n moveTo(position, elAttach, dim, -1);\n moveTo(position, targetAttach, targetDim, 1);\n elOffset = getOffsets(elOffset, dim.width, dim.height);\n targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);\n elOffset['x'] += targetOffset['x'];\n elOffset['y'] += targetOffset['y'];\n position.left += elOffset['x'];\n position.top += elOffset['y'];\n\n if (flip) {\n var boundaries = scrollParents(element).map(getViewport);\n\n if (boundary && includes(boundaries, boundary)) {\n boundaries.unshift(boundary);\n }\n\n boundaries = boundaries.map(function (el) {\n return offset(el);\n });\n each(dirs$1, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (!(flip === true || includes(flip, dir))) {\n return;\n }\n\n boundaries.some(function (boundary) {\n var elemOffset = elAttach[dir] === align ? -dim[prop] : elAttach[dir] === alignFlip ? dim[prop] : 0;\n var targetOffset = targetAttach[dir] === align ? targetDim[prop] : targetAttach[dir] === alignFlip ? -targetDim[prop] : 0;\n\n if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {\n var centerOffset = dim[prop] / 2;\n var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;\n return elAttach[dir] === 'center' && (apply(centerOffset, centerTargetOffset) || apply(-centerOffset, -centerTargetOffset)) || apply(elemOffset, targetOffset);\n }\n\n function apply(elemOffset, targetOffset) {\n var newVal = toFloat((position[align] + elemOffset + targetOffset - elOffset[dir] * 2).toFixed(4));\n\n if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {\n position[align] = newVal;\n ['element', 'target'].forEach(function (el) {\n flipped[el][dir] = !elemOffset ? flipped[el][dir] : flipped[el][dir] === dirs$1[prop][1] ? dirs$1[prop][2] : dirs$1[prop][1];\n });\n return true;\n }\n }\n });\n });\n }\n\n offset(element, position);\n return flipped;\n }\n\n function moveTo(position, attach, dim, factor) {\n each(dirs$1, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (attach[dir] === alignFlip) {\n position[align] += dim[prop] * factor;\n } else if (attach[dir] === 'center') {\n position[align] += dim[prop] * factor / 2;\n }\n });\n }\n\n function getPos(pos) {\n var x = /left|center|right/;\n var y = /top|center|bottom/;\n pos = (pos || '').split(' ');\n\n if (pos.length === 1) {\n pos = x.test(pos[0]) ? pos.concat('center') : y.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center'];\n }\n\n return {\n x: x.test(pos[0]) ? pos[0] : 'center',\n y: y.test(pos[1]) ? pos[1] : 'center'\n };\n }\n\n function getOffsets(offsets, width, height) {\n var ref = (offsets || '').split(' ');\n var x = ref[0];\n var y = ref[1];\n return {\n x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,\n y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0\n };\n }\n\n var util = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ajax: ajax,\n getImage: getImage,\n transition: transition,\n Transition: Transition,\n animate: animate,\n Animation: Animation,\n attr: attr,\n hasAttr: hasAttr,\n removeAttr: removeAttr,\n data: data,\n addClass: addClass,\n removeClass: removeClass,\n removeClasses: removeClasses,\n replaceClass: replaceClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n dimensions: dimensions,\n offset: offset,\n position: position,\n offsetPosition: offsetPosition,\n height: height,\n width: width,\n boxModelAdjust: boxModelAdjust,\n flipPosition: flipPosition,\n toPx: toPx,\n ready: ready,\n empty: empty,\n html: html,\n prepend: prepend,\n append: append,\n before: before,\n after: after,\n remove: _remove,\n wrapAll: wrapAll,\n wrapInner: wrapInner,\n unwrap: unwrap,\n fragment: fragment,\n apply: apply,\n $: $,\n $$: $$,\n inBrowser: inBrowser,\n isIE: isIE,\n isRtl: isRtl,\n hasTouch: hasTouch,\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerCancel: pointerCancel,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n createEvent: createEvent,\n toEventTargets: toEventTargets,\n isTouch: isTouch,\n getEventPos: getEventPos,\n fastdom: fastdom,\n isVoidElement: isVoidElement,\n isVisible: isVisible,\n selInput: selInput,\n isInput: isInput,\n parent: parent,\n filter: filter,\n matches: matches,\n closest: closest,\n within: within,\n parents: parents,\n children: _children,\n index: index,\n hasOwn: hasOwn,\n hyphenate: hyphenate,\n camelize: camelize,\n ucfirst: ucfirst,\n startsWith: startsWith,\n endsWith: endsWith,\n includes: includes,\n findIndex: findIndex,\n isArray: isArray,\n isFunction: isFunction,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isWindow: isWindow,\n isDocument: isDocument,\n isNode: isNode,\n isElement: isElement,\n isBoolean: isBoolean,\n isString: isString,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isEmpty: isEmpty,\n isUndefined: isUndefined,\n toBoolean: toBoolean,\n toNumber: toNumber,\n toFloat: toFloat,\n toArray: toArray,\n toNode: toNode,\n toNodes: toNodes,\n toWindow: toWindow,\n toMs: toMs,\n isEqual: isEqual,\n swap: swap,\n assign: assign,\n last: last,\n each: each,\n sortBy: sortBy,\n uniqueBy: uniqueBy,\n clamp: clamp,\n noop: noop,\n intersectRect: intersectRect,\n pointInRect: pointInRect,\n Dimensions: Dimensions,\n getIndex: _getIndex,\n memoize: memoize,\n MouseTracker: MouseTracker,\n mergeOptions: mergeOptions,\n parseOptions: parseOptions,\n play: play,\n pause: pause,\n mute: mute,\n positionAt: _positionAt,\n Promise: Promise,\n Deferred: Deferred,\n query: query,\n queryAll: queryAll,\n find: find,\n findAll: findAll,\n escape: escape,\n css: css,\n getCssVar: getCssVar,\n propName: propName,\n isInView: isInView,\n scrollTop: scrollTop,\n scrollIntoView: scrollIntoView,\n scrolledOver: scrolledOver,\n scrollParents: scrollParents,\n getViewport: getViewport,\n getViewportClientHeight: getViewportClientHeight\n });\n\n function globalAPI(UIkit) {\n var DATA = UIkit.data;\n\n UIkit.use = function (plugin) {\n if (plugin.installed) {\n return;\n }\n\n plugin.call(null, this);\n plugin.installed = true;\n return this;\n };\n\n UIkit.mixin = function (mixin, component) {\n component = (isString(component) ? UIkit.component(component) : component) || this;\n component.options = mergeOptions(component.options, mixin);\n };\n\n UIkit.extend = function (options) {\n options = options || {};\n var Super = this;\n\n var Sub = function UIkitComponent(options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n Sub.super = Super;\n Sub.extend = Super.extend;\n return Sub;\n };\n\n UIkit.update = function (element, e) {\n element = element ? toNode(element) : document.body;\n parents(element).reverse().forEach(function (element) {\n return update(element[DATA], e);\n });\n apply(element, function (element) {\n return update(element[DATA], e);\n });\n };\n\n var container;\n Object.defineProperty(UIkit, 'container', {\n get: function get() {\n return container || document.body;\n },\n set: function set(element) {\n container = $(element);\n }\n });\n\n function update(data, e) {\n if (!data) {\n return;\n }\n\n for (var name in data) {\n if (data[name]._connected) {\n data[name]._callUpdate(e);\n }\n }\n }\n }\n\n function hooksAPI(UIkit) {\n UIkit.prototype._callHook = function (hook) {\n var this$1 = this;\n var handlers = this.$options[hook];\n\n if (handlers) {\n handlers.forEach(function (handler) {\n return handler.call(this$1);\n });\n }\n };\n\n UIkit.prototype._callConnected = function () {\n if (this._connected) {\n return;\n }\n\n this._data = {};\n this._computeds = {};\n\n this._initProps();\n\n this._callHook('beforeConnect');\n\n this._connected = true;\n\n this._initEvents();\n\n this._initObservers();\n\n this._callHook('connected');\n\n this._callUpdate();\n };\n\n UIkit.prototype._callDisconnected = function () {\n if (!this._connected) {\n return;\n }\n\n this._callHook('beforeDisconnect');\n\n this._disconnectObservers();\n\n this._unbindEvents();\n\n this._callHook('disconnected');\n\n this._connected = false;\n delete this._watch;\n };\n\n UIkit.prototype._callUpdate = function (e) {\n var this$1 = this;\n if (e === void 0) e = 'update';\n\n if (!this._connected) {\n return;\n }\n\n if (e === 'update' || e === 'resize') {\n this._callWatches();\n }\n\n if (!this.$options.update) {\n return;\n }\n\n if (!this._updates) {\n this._updates = new Set();\n fastdom.read(function () {\n runUpdates.call(this$1, this$1._updates);\n delete this$1._updates;\n });\n }\n\n this._updates.add(e.type || e);\n };\n\n UIkit.prototype._callWatches = function () {\n var this$1 = this;\n\n if (this._watch) {\n return;\n }\n\n var initital = !hasOwn(this, '_watch');\n this._watch = fastdom.read(function () {\n var ref = this$1;\n var computed = ref.$options.computed;\n var _computeds = ref._computeds;\n\n for (var key in computed) {\n var hasPrev = hasOwn(_computeds, key);\n var prev = _computeds[key];\n delete _computeds[key];\n var ref$1 = computed[key];\n var watch = ref$1.watch;\n var immediate = ref$1.immediate;\n\n if (watch && (initital && immediate || hasPrev && !isEqual(prev, this$1[key]))) {\n watch.call(this$1, this$1[key], prev);\n }\n }\n\n this$1._watch = null;\n });\n };\n\n function runUpdates(types) {\n var this$1 = this;\n var updates = this.$options.update;\n\n var loop = function loop(i) {\n var ref = updates[i];\n var read = ref.read;\n var write = ref.write;\n var events = ref.events;\n\n if (!types.has('update') && (!events || !events.some(function (type) {\n return types.has(type);\n }))) {\n return;\n }\n\n var result = void 0;\n\n if (read) {\n result = read.call(this$1, this$1._data, types);\n\n if (result && isPlainObject(result)) {\n assign(this$1._data, result);\n }\n }\n\n if (write && result !== false) {\n fastdom.write(function () {\n return write.call(this$1, this$1._data, types);\n });\n }\n };\n\n for (var i = 0; i < updates.length; i++) {\n loop(i);\n }\n }\n }\n\n function stateAPI(UIkit) {\n var uid = 0;\n\n UIkit.prototype._init = function (options) {\n options = options || {};\n options.data = normalizeData(options, this.constructor.options);\n this.$options = mergeOptions(this.constructor.options, options, this);\n this.$el = null;\n this.$props = {};\n this._uid = uid++;\n\n this._initData();\n\n this._initMethods();\n\n this._initComputeds();\n\n this._callHook('created');\n\n if (options.el) {\n this.$mount(options.el);\n }\n };\n\n UIkit.prototype._initData = function () {\n var ref = this.$options;\n var data = ref.data;\n if (data === void 0) data = {};\n\n for (var key in data) {\n this.$props[key] = this[key] = data[key];\n }\n };\n\n UIkit.prototype._initMethods = function () {\n var ref = this.$options;\n var methods = ref.methods;\n\n if (methods) {\n for (var key in methods) {\n this[key] = methods[key].bind(this);\n }\n }\n };\n\n UIkit.prototype._initComputeds = function () {\n var ref = this.$options;\n var computed = ref.computed;\n this._computeds = {};\n\n if (computed) {\n for (var key in computed) {\n registerComputed(this, key, computed[key]);\n }\n }\n };\n\n UIkit.prototype._initProps = function (props) {\n var key;\n props = props || getProps(this.$options, this.$name);\n\n for (key in props) {\n if (!isUndefined(props[key])) {\n this.$props[key] = props[key];\n }\n }\n\n var exclude = [this.$options.computed, this.$options.methods];\n\n for (key in this.$props) {\n if (key in props && notIn(exclude, key)) {\n this[key] = this.$props[key];\n }\n }\n };\n\n UIkit.prototype._initEvents = function () {\n var this$1 = this;\n this._events = [];\n var ref = this.$options;\n var events = ref.events;\n\n if (events) {\n events.forEach(function (event) {\n if (!hasOwn(event, 'handler')) {\n for (var key in event) {\n registerEvent(this$1, event[key], key);\n }\n } else {\n registerEvent(this$1, event);\n }\n });\n }\n };\n\n UIkit.prototype._unbindEvents = function () {\n this._events.forEach(function (unbind) {\n return unbind();\n });\n\n delete this._events;\n };\n\n UIkit.prototype._initObservers = function () {\n this._observers = [initChildListObserver(this), initPropsObserver(this)];\n };\n\n UIkit.prototype._disconnectObservers = function () {\n this._observers.forEach(function (observer) {\n return observer && observer.disconnect();\n });\n };\n\n function getProps(opts, name) {\n var data$1 = {};\n var args = opts.args;\n if (args === void 0) args = [];\n var props = opts.props;\n if (props === void 0) props = {};\n var el = opts.el;\n\n if (!props) {\n return data$1;\n }\n\n for (var key in props) {\n var prop = hyphenate(key);\n var value = data(el, prop);\n\n if (isUndefined(value)) {\n continue;\n }\n\n value = props[key] === Boolean && value === '' ? true : coerce(props[key], value);\n\n if (prop === 'target' && (!value || startsWith(value, '_'))) {\n continue;\n }\n\n data$1[key] = value;\n }\n\n var options = parseOptions(data(el, name), args);\n\n for (var key$1 in options) {\n var prop$1 = camelize(key$1);\n\n if (props[prop$1] !== undefined) {\n data$1[prop$1] = coerce(props[prop$1], options[key$1]);\n }\n }\n\n return data$1;\n }\n\n function registerComputed(component, key, cb) {\n Object.defineProperty(component, key, {\n enumerable: true,\n get: function get() {\n var _computeds = component._computeds;\n var $props = component.$props;\n var $el = component.$el;\n\n if (!hasOwn(_computeds, key)) {\n _computeds[key] = (cb.get || cb).call(component, $props, $el);\n }\n\n return _computeds[key];\n },\n set: function set(value) {\n var _computeds = component._computeds;\n _computeds[key] = cb.set ? cb.set.call(component, value) : value;\n\n if (isUndefined(_computeds[key])) {\n delete _computeds[key];\n }\n }\n });\n }\n\n function registerEvent(component, event, key) {\n if (!isPlainObject(event)) {\n event = {\n name: key,\n handler: event\n };\n }\n\n var name = event.name;\n var el = event.el;\n var handler = event.handler;\n var capture = event.capture;\n var passive = event.passive;\n var delegate = event.delegate;\n var filter = event.filter;\n var self = event.self;\n el = isFunction(el) ? el.call(component) : el || component.$el;\n\n if (isArray(el)) {\n el.forEach(function (el) {\n return registerEvent(component, assign({}, event, {\n el: el\n }), key);\n });\n return;\n }\n\n if (!el || filter && !filter.call(component)) {\n return;\n }\n\n component._events.push(on(el, name, !delegate ? null : isString(delegate) ? delegate : delegate.call(component), isString(handler) ? component[handler] : handler.bind(component), {\n passive: passive,\n capture: capture,\n self: self\n }));\n }\n\n function notIn(options, key) {\n return options.every(function (arr) {\n return !arr || !hasOwn(arr, key);\n });\n }\n\n function coerce(type, value) {\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === 'list') {\n return toList(value);\n }\n\n return type ? type(value) : value;\n }\n\n function toList(value) {\n return isArray(value) ? value : isString(value) ? value.split(/,(?![^(]*\\))/).map(function (value) {\n return isNumeric(value) ? toNumber(value) : toBoolean(value.trim());\n }) : [value];\n }\n\n function normalizeData(ref, ref$1) {\n var data = ref.data;\n var args = ref$1.args;\n var props = ref$1.props;\n if (props === void 0) props = {};\n data = isArray(data) ? !isEmpty(args) ? data.slice(0, args.length).reduce(function (data, value, index) {\n if (isPlainObject(value)) {\n assign(data, value);\n } else {\n data[args[index]] = value;\n }\n\n return data;\n }, {}) : undefined : data;\n\n if (data) {\n for (var key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else {\n data[key] = props[key] ? coerce(props[key], data[key]) : data[key];\n }\n }\n }\n\n return data;\n }\n\n function initChildListObserver(component) {\n var ref = component.$options;\n var el = ref.el;\n var observer = new MutationObserver(function () {\n return component.$emit();\n });\n observer.observe(el, {\n childList: true,\n subtree: true\n });\n return observer;\n }\n\n function initPropsObserver(component) {\n var $name = component.$name;\n var $options = component.$options;\n var $props = component.$props;\n var attrs = $options.attrs;\n var props = $options.props;\n var el = $options.el;\n\n if (!props || attrs === false) {\n return;\n }\n\n var attributes = isArray(attrs) ? attrs : Object.keys(props);\n var filter = attributes.map(function (key) {\n return hyphenate(key);\n }).concat($name);\n var observer = new MutationObserver(function (records) {\n var data = getProps($options, $name);\n\n if (records.some(function (ref) {\n var attributeName = ref.attributeName;\n var prop = attributeName.replace('data-', '');\n return (prop === $name ? attributes : [camelize(prop), camelize(attributeName)]).some(function (prop) {\n return !isUndefined(data[prop]) && data[prop] !== $props[prop];\n });\n })) {\n component.$reset();\n }\n });\n observer.observe(el, {\n attributes: true,\n attributeFilter: filter.concat(filter.map(function (key) {\n return \"data-\" + key;\n }))\n });\n return observer;\n }\n }\n\n function instanceAPI(UIkit) {\n var DATA = UIkit.data;\n\n UIkit.prototype.$create = function (component, element, data) {\n return UIkit[component](element, data);\n };\n\n UIkit.prototype.$mount = function (el) {\n var ref = this.$options;\n var name = ref.name;\n\n if (!el[DATA]) {\n el[DATA] = {};\n }\n\n if (el[DATA][name]) {\n return;\n }\n\n el[DATA][name] = this;\n this.$el = this.$options.el = this.$options.el || el;\n\n if (within(el, document)) {\n this._callConnected();\n }\n };\n\n UIkit.prototype.$reset = function () {\n this._callDisconnected();\n\n this._callConnected();\n };\n\n UIkit.prototype.$destroy = function (removeEl) {\n if (removeEl === void 0) removeEl = false;\n var ref = this.$options;\n var el = ref.el;\n var name = ref.name;\n\n if (el) {\n this._callDisconnected();\n }\n\n this._callHook('destroy');\n\n if (!el || !el[DATA]) {\n return;\n }\n\n delete el[DATA][name];\n\n if (!isEmpty(el[DATA])) {\n delete el[DATA];\n }\n\n if (removeEl) {\n _remove(this.$el);\n }\n };\n\n UIkit.prototype.$emit = function (e) {\n this._callUpdate(e);\n };\n\n UIkit.prototype.$update = function (element, e) {\n if (element === void 0) element = this.$el;\n UIkit.update(element, e);\n };\n\n UIkit.prototype.$getComponent = UIkit.getComponent;\n var componentName = memoize(function (name) {\n return UIkit.prefix + hyphenate(name);\n });\n Object.defineProperties(UIkit.prototype, {\n $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),\n $name: {\n get: function get() {\n return componentName(this.$options.name);\n }\n }\n });\n }\n\n function componentAPI(UIkit) {\n var DATA = UIkit.data;\n var components = {};\n\n UIkit.component = function (name, options) {\n var id = hyphenate(name);\n name = camelize(id);\n\n if (!options) {\n if (isPlainObject(components[name])) {\n components[name] = UIkit.extend(components[name]);\n }\n\n return components[name];\n }\n\n UIkit[name] = function (element, data) {\n var i = arguments.length,\n argsArray = Array(i);\n\n while (i--) {\n argsArray[i] = arguments[i];\n }\n\n var component = UIkit.component(name);\n return component.options.functional ? new component({\n data: isPlainObject(element) ? element : [].concat(argsArray)\n }) : !element ? init(element) : $$(element).map(init)[0];\n\n function init(element) {\n var instance = UIkit.getComponent(element, name);\n\n if (instance) {\n if (!data) {\n return instance;\n } else {\n instance.$destroy();\n }\n }\n\n return new component({\n el: element,\n data: data\n });\n }\n };\n\n var opt = isPlainObject(options) ? assign({}, options) : options.options;\n opt.name = name;\n\n if (opt.install) {\n opt.install(UIkit, opt, name);\n }\n\n if (UIkit._initialized && !opt.functional) {\n fastdom.read(function () {\n return UIkit[name](\"[uk-\" + id + \"],[data-uk-\" + id + \"]\");\n });\n }\n\n return components[name] = isPlainObject(options) ? opt : options;\n };\n\n UIkit.getComponents = function (element) {\n return element && element[DATA] || {};\n };\n\n UIkit.getComponent = function (element, name) {\n return UIkit.getComponents(element)[name];\n };\n\n UIkit.connect = function (node) {\n if (node[DATA]) {\n for (var name in node[DATA]) {\n node[DATA][name]._callConnected();\n }\n }\n\n for (var i = 0; i < node.attributes.length; i++) {\n var name$1 = getComponentName(node.attributes[i].name);\n\n if (name$1 && name$1 in components) {\n UIkit[name$1](node);\n }\n }\n };\n\n UIkit.disconnect = function (node) {\n for (var name in node[DATA]) {\n node[DATA][name]._callDisconnected();\n }\n };\n }\n\n var getComponentName = memoize(function (attribute) {\n return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-') ? camelize(attribute.replace('data-uk-', '').replace('uk-', '')) : false;\n });\n\n var UIkit = function UIkit(options) {\n this._init(options);\n };\n\n UIkit.util = util;\n UIkit.data = '__uikit__';\n UIkit.prefix = 'uk-';\n UIkit.options = {};\n UIkit.version = '3.6.19';\n globalAPI(UIkit);\n hooksAPI(UIkit);\n stateAPI(UIkit);\n componentAPI(UIkit);\n instanceAPI(UIkit);\n\n function Core(UIkit) {\n if (!inBrowser) {\n return;\n } // throttle 'resize'\n\n\n var pendingResize;\n\n var handleResize = function handleResize() {\n if (pendingResize) {\n return;\n }\n\n pendingResize = true;\n fastdom.write(function () {\n return pendingResize = false;\n });\n UIkit.update(null, 'resize');\n };\n\n on(window, 'load resize', handleResize);\n on(document, 'loadedmetadata load', handleResize, true);\n\n if ('ResizeObserver' in window) {\n new ResizeObserver(handleResize).observe(document.documentElement);\n } // throttle `scroll` event (Safari triggers multiple `scroll` events per frame)\n\n\n var pending;\n on(window, 'scroll', function (e) {\n if (pending) {\n return;\n }\n\n pending = true;\n fastdom.write(function () {\n return pending = false;\n });\n UIkit.update(null, e.type);\n }, {\n passive: true,\n capture: true\n });\n var started = 0;\n on(document, 'animationstart', function (ref) {\n var target = ref.target;\n\n if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {\n started++;\n css(document.documentElement, 'overflowX', 'hidden');\n setTimeout(function () {\n if (! --started) {\n css(document.documentElement, 'overflowX', '');\n }\n }, toMs(css(target, 'animationDuration')) + 100);\n }\n }, true);\n on(document, pointerDown, function (e) {\n if (!isTouch(e)) {\n return;\n } // Handle Swipe Gesture\n\n\n var pos = getEventPos(e);\n var target = 'tagName' in e.target ? e.target : parent(e.target);\n once(document, pointerUp + \" \" + pointerCancel + \" scroll\", function (e) {\n var ref = getEventPos(e);\n var x = ref.x;\n var y = ref.y; // swipe\n\n if (e.type !== 'scroll' && target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {\n setTimeout(function () {\n trigger(target, 'swipe');\n trigger(target, \"swipe\" + swipeDirection(pos.x, pos.y, x, y));\n });\n }\n });\n }, {\n passive: true\n });\n }\n\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? 'Left' : 'Right' : y1 - y2 > 0 ? 'Up' : 'Down';\n }\n\n function boot(UIkit) {\n var connect = UIkit.connect;\n var disconnect = UIkit.disconnect;\n\n if (!inBrowser || !window.MutationObserver) {\n return;\n }\n\n fastdom.read(function () {\n if (document.body) {\n apply(document.body, connect);\n }\n\n new MutationObserver(function (records) {\n return records.forEach(applyChildListMutation);\n }).observe(document, {\n childList: true,\n subtree: true\n });\n new MutationObserver(function (records) {\n return records.forEach(applyAttributeMutation);\n }).observe(document, {\n attributes: true,\n subtree: true\n });\n UIkit._initialized = true;\n });\n\n function applyChildListMutation(ref) {\n var addedNodes = ref.addedNodes;\n var removedNodes = ref.removedNodes;\n\n for (var i = 0; i < addedNodes.length; i++) {\n apply(addedNodes[i], connect);\n }\n\n for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {\n apply(removedNodes[i$1], disconnect);\n }\n }\n\n function applyAttributeMutation(ref) {\n var target = ref.target;\n var attributeName = ref.attributeName;\n var name = getComponentName(attributeName);\n\n if (!name || !(name in UIkit)) {\n return;\n }\n\n if (hasAttr(target, attributeName)) {\n UIkit[name](target);\n return;\n }\n\n var component = UIkit.getComponent(target, name);\n\n if (component) {\n component.$destroy();\n }\n }\n }\n\n var Class = {\n connected: function connected() {\n !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);\n }\n };\n var Togglable = {\n props: {\n cls: Boolean,\n animation: 'list',\n duration: Number,\n origin: String,\n transition: String\n },\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n origin: false,\n transition: 'linear',\n clsEnter: 'uk-togglabe-enter',\n clsLeave: 'uk-togglabe-leave',\n initProps: {\n overflow: '',\n height: '',\n paddingTop: '',\n paddingBottom: '',\n marginTop: '',\n marginBottom: ''\n },\n hideProps: {\n overflow: 'hidden',\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginTop: 0,\n marginBottom: 0\n }\n },\n computed: {\n hasAnimation: function hasAnimation(ref) {\n var animation = ref.animation;\n return !!animation[0];\n },\n hasTransition: function hasTransition(ref) {\n var animation = ref.animation;\n return this.hasAnimation && animation[0] === true;\n }\n },\n methods: {\n toggleElement: function toggleElement(targets, toggle, animate) {\n var this$1 = this;\n return new Promise(function (resolve) {\n return Promise.all(toNodes(targets).map(function (el) {\n var show = isBoolean(toggle) ? toggle : !this$1.isToggled(el);\n\n if (!trigger(el, \"before\" + (show ? 'show' : 'hide'), [this$1])) {\n return Promise.reject();\n }\n\n var promise = (isFunction(animate) ? animate : animate === false || !this$1.hasAnimation ? this$1._toggle : this$1.hasTransition ? toggleHeight(this$1) : toggleAnimation(this$1))(el, show);\n var cls = show ? this$1.clsEnter : this$1.clsLeave;\n addClass(el, cls);\n trigger(el, show ? 'show' : 'hide', [this$1]);\n\n var done = function done() {\n removeClass(el, cls);\n trigger(el, show ? 'shown' : 'hidden', [this$1]);\n this$1.$update(el);\n };\n\n return promise ? promise.then(done, function () {\n removeClass(el, cls);\n return Promise.reject();\n }) : done();\n })).then(resolve, noop);\n });\n },\n isToggled: function isToggled(el) {\n if (el === void 0) el = this.$el;\n return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(' ')[0]) : !hasAttr(el, 'hidden');\n },\n _toggle: function _toggle(el, toggled) {\n if (!el) {\n return;\n }\n\n toggled = Boolean(toggled);\n var changed;\n\n if (this.cls) {\n changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);\n } else {\n changed = toggled === el.hidden;\n changed && (el.hidden = !toggled);\n }\n\n $$('[autofocus]', el).some(function (el) {\n return isVisible(el) ? el.focus() || true : el.blur();\n });\n\n if (changed) {\n trigger(el, 'toggled', [toggled, this]);\n this.$update(el);\n }\n }\n }\n };\n\n function toggleHeight(ref) {\n var isToggled = ref.isToggled;\n var duration = ref.duration;\n var initProps = ref.initProps;\n var hideProps = ref.hideProps;\n var transition = ref.transition;\n var _toggle = ref._toggle;\n return function (el, show) {\n var inProgress = Transition.inProgress(el);\n var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0;\n var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;\n Transition.cancel(el);\n\n if (!isToggled(el)) {\n _toggle(el, true);\n }\n\n height(el, ''); // Update child components first\n\n fastdom.flush();\n var endHeight = height(el) + (inProgress ? 0 : inner);\n height(el, currentHeight);\n return (show ? Transition.start(el, assign({}, initProps, {\n overflow: 'hidden',\n height: endHeight\n }), Math.round(duration * (1 - currentHeight / endHeight)), transition) : Transition.start(el, hideProps, Math.round(duration * (currentHeight / endHeight)), transition).then(function () {\n return _toggle(el, false);\n })).then(function () {\n return css(el, initProps);\n });\n };\n }\n\n function toggleAnimation(cmp) {\n return function (el, show) {\n Animation.cancel(el);\n var animation = cmp.animation;\n var duration = cmp.duration;\n var _toggle = cmp._toggle;\n\n if (show) {\n _toggle(el, true);\n\n return Animation.in(el, animation[0], duration, cmp.origin);\n }\n\n return Animation.out(el, animation[1] || animation[0], duration, cmp.origin).then(function () {\n return _toggle(el, false);\n });\n };\n }\n\n var Accordion = {\n mixins: [Class, Togglable],\n props: {\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n transition: String,\n offset: Number\n },\n data: {\n targets: '> *',\n active: false,\n animation: [true],\n collapsible: true,\n multiple: false,\n clsOpen: 'uk-open',\n toggle: '> .uk-accordion-title',\n content: '> .uk-accordion-content',\n transition: 'ease',\n offset: 0\n },\n computed: {\n items: {\n get: function get(ref, $el) {\n var targets = ref.targets;\n return $$(targets, $el);\n },\n watch: function watch(items, prev) {\n var this$1 = this;\n items.forEach(function (el) {\n return hide($(this$1.content, el), !hasClass(el, this$1.clsOpen));\n });\n\n if (prev || hasClass(items, this.clsOpen)) {\n return;\n }\n\n var active = this.active !== false && items[Number(this.active)] || !this.collapsible && items[0];\n\n if (active) {\n this.toggle(active, false);\n }\n },\n immediate: true\n },\n toggles: function toggles(ref) {\n var toggle = ref.toggle;\n return this.items.map(function (item) {\n return $(toggle, item);\n });\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.targets + \" \" + this.$props.toggle;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.toggle(index(this.toggles, e.current));\n }\n }],\n methods: {\n toggle: function toggle(item, animate) {\n var this$1 = this;\n var items = [this.items[_getIndex(item, this.items)]];\n var activeItems = filter(this.items, \".\" + this.clsOpen);\n\n if (!this.multiple && !includes(activeItems, items[0])) {\n items = items.concat(activeItems);\n }\n\n if (!this.collapsible && activeItems.length < 2 && !filter(items, \":not(.\" + this.clsOpen + \")\").length) {\n return;\n }\n\n items.forEach(function (el) {\n return this$1.toggleElement(el, !hasClass(el, this$1.clsOpen), function (el, show) {\n toggleClass(el, this$1.clsOpen, show);\n attr($(this$1.$props.toggle, el), 'aria-expanded', show);\n var content = $(\"\" + (el._wrapper ? '> * ' : '') + this$1.content, el);\n\n if (animate === false || !this$1.hasTransition) {\n hide(content, !show);\n return;\n }\n\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, \"\");\n }\n\n hide(content, false);\n return toggleHeight(this$1)(el._wrapper, show).then(function () {\n hide(content, !show);\n delete el._wrapper;\n unwrap(content);\n\n if (show) {\n var toggle = $(this$1.$props.toggle, el);\n\n if (!isInView(toggle)) {\n scrollIntoView(toggle, {\n offset: this$1.offset\n });\n }\n }\n });\n });\n });\n }\n }\n };\n\n function hide(el, hide) {\n el && (el.hidden = hide);\n }\n\n var alert = {\n mixins: [Class, Togglable],\n args: 'animation',\n props: {\n close: String\n },\n data: {\n animation: [true],\n selClose: '.uk-alert-close',\n duration: 150,\n hideProps: assign({\n opacity: 0\n }, Togglable.data.hideProps)\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.selClose;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.close();\n }\n }],\n methods: {\n close: function close() {\n var this$1 = this;\n this.toggleElement(this.$el).then(function () {\n return this$1.$destroy(true);\n });\n }\n }\n };\n var Video = {\n args: 'autoplay',\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n data: {\n automute: false,\n autoplay: true\n },\n computed: {\n inView: function inView(ref) {\n var autoplay = ref.autoplay;\n return autoplay === 'inview';\n }\n },\n connected: function connected() {\n if (this.inView && !hasAttr(this.$el, 'preload')) {\n this.$el.preload = 'none';\n }\n\n if (this.automute) {\n mute(this.$el);\n }\n },\n update: {\n read: function read() {\n return {\n visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',\n inView: this.inView && isInView(this.$el)\n };\n },\n write: function write(ref) {\n var visible = ref.visible;\n var inView = ref.inView;\n\n if (!visible || this.inView && !inView) {\n pause(this.$el);\n } else if (this.autoplay === true || this.inView && inView) {\n play(this.$el);\n }\n },\n events: ['resize', 'scroll']\n }\n };\n var cover = {\n mixins: [Class, Video],\n props: {\n width: Number,\n height: Number\n },\n data: {\n automute: true\n },\n update: {\n read: function read() {\n var el = this.$el;\n var ref = getPositionedParent(el) || parent(el);\n var height = ref.offsetHeight;\n var width = ref.offsetWidth;\n var dim = Dimensions.cover({\n width: this.width || el.naturalWidth || el.videoWidth || el.clientWidth,\n height: this.height || el.naturalHeight || el.videoHeight || el.clientHeight\n }, {\n width: width + (width % 2 ? 1 : 0),\n height: height + (height % 2 ? 1 : 0)\n });\n\n if (!dim.width || !dim.height) {\n return false;\n }\n\n return dim;\n },\n write: function write(ref) {\n var height = ref.height;\n var width = ref.width;\n css(this.$el, {\n height: height,\n width: width\n });\n },\n events: ['resize']\n }\n };\n\n function getPositionedParent(el) {\n while (el = parent(el)) {\n if (css(el, 'position') !== 'static') {\n return el;\n }\n }\n }\n\n var Position = {\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n clsPos: String\n },\n data: {\n pos: \"bottom-\" + (!isRtl ? 'left' : 'right'),\n flip: true,\n offset: false,\n clsPos: ''\n },\n computed: {\n pos: function pos(ref) {\n var pos = ref.pos;\n return (pos + (!includes(pos, '-') ? '-center' : '')).split('-');\n },\n dir: function dir() {\n return this.pos[0];\n },\n align: function align() {\n return this.pos[1];\n }\n },\n methods: {\n positionAt: function positionAt(element, target, boundary) {\n removeClasses(element, this.clsPos + \"-(top|bottom|left|right)(-[a-z]+)?\");\n var ref = this;\n var offset$1 = ref.offset;\n var axis = this.getAxis();\n\n if (!isNumeric(offset$1)) {\n var node = $(offset$1);\n offset$1 = node ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom'] : 0;\n }\n\n var ref$1 = _positionAt(element, target, axis === 'x' ? flipPosition(this.dir) + \" \" + this.align : this.align + \" \" + flipPosition(this.dir), axis === 'x' ? this.dir + \" \" + this.align : this.align + \" \" + this.dir, axis === 'x' ? \"\" + (this.dir === 'left' ? -offset$1 : offset$1) : \" \" + (this.dir === 'top' ? -offset$1 : offset$1), null, this.flip, boundary).target;\n\n var x = ref$1.x;\n var y = ref$1.y;\n this.dir = axis === 'x' ? x : y;\n this.align = axis === 'x' ? y : x;\n toggleClass(element, this.clsPos + \"-\" + this.dir + \"-\" + this.align, this.offset === false);\n },\n getAxis: function getAxis() {\n return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';\n }\n }\n };\n var active;\n var drop = {\n mixins: [Position, Togglable],\n args: 'pos',\n props: {\n mode: 'list',\n toggle: Boolean,\n boundary: Boolean,\n boundaryAlign: Boolean,\n delayShow: Number,\n delayHide: Number,\n clsDrop: String\n },\n data: {\n mode: ['click', 'hover'],\n toggle: '- *',\n boundary: true,\n boundaryAlign: false,\n delayShow: 0,\n delayHide: 800,\n clsDrop: false,\n animation: ['uk-animation-fade'],\n cls: 'uk-open'\n },\n computed: {\n boundary: function boundary(ref, $el) {\n var boundary = ref.boundary;\n return boundary === true ? window : query(boundary, $el);\n },\n clsDrop: function clsDrop(ref) {\n var clsDrop = ref.clsDrop;\n return clsDrop || \"uk-\" + this.$options.name;\n },\n clsPos: function clsPos() {\n return this.clsDrop;\n }\n },\n created: function created() {\n this.tracker = new MouseTracker();\n },\n connected: function connected() {\n addClass(this.$el, this.clsDrop);\n var ref = this.$props;\n var toggle = ref.toggle;\n this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n });\n },\n disconnected: function disconnected() {\n if (this.isActive()) {\n active = null;\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return \".\" + this.clsDrop + \"-close\";\n },\n handler: function handler(e) {\n e.preventDefault();\n this.hide(false);\n }\n }, {\n name: 'click',\n delegate: function delegate() {\n return 'a[href^=\"#\"]';\n },\n handler: function handler(ref) {\n var defaultPrevented = ref.defaultPrevented;\n var hash = ref.current.hash;\n\n if (!defaultPrevented && hash && !within(hash, this.$el)) {\n this.hide(false);\n }\n }\n }, {\n name: 'beforescroll',\n handler: function handler() {\n this.hide(false);\n }\n }, {\n name: 'toggle',\n self: true,\n handler: function handler(e, toggle) {\n e.preventDefault();\n\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle, false);\n }\n }\n }, {\n name: 'toggleshow',\n self: true,\n handler: function handler(e, toggle) {\n e.preventDefault();\n this.show(toggle);\n }\n }, {\n name: 'togglehide',\n self: true,\n handler: function handler(e) {\n e.preventDefault();\n this.hide();\n }\n }, {\n name: pointerEnter,\n filter: function filter() {\n return includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n if (!isTouch(e)) {\n this.clearTimers();\n }\n }\n }, {\n name: pointerLeave,\n filter: function filter() {\n return includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n if (!isTouch(e) && e.relatedTarget) {\n this.hide();\n }\n }\n }, {\n name: 'toggled',\n self: true,\n handler: function handler(e, toggled) {\n if (!toggled) {\n return;\n }\n\n this.clearTimers();\n this.position();\n }\n }, {\n name: 'show',\n self: true,\n handler: function handler() {\n var this$1 = this;\n active = this;\n this.tracker.init();\n once(this.$el, 'hide', on(document, pointerDown, function (ref) {\n var target = ref.target;\n return !within(target, this$1.$el) && once(document, pointerUp + \" \" + pointerCancel + \" scroll\", function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var type = ref.type;\n var newTarget = ref.target;\n\n if (!defaultPrevented && type === pointerUp && target === newTarget && !(this$1.toggle && within(target, this$1.toggle.$el))) {\n this$1.hide(false);\n }\n }, true);\n }), {\n self: true\n });\n once(this.$el, 'hide', on(document, 'keydown', function (e) {\n if (e.keyCode === 27) {\n this$1.hide(false);\n }\n }), {\n self: true\n });\n }\n }, {\n name: 'beforehide',\n self: true,\n handler: function handler() {\n this.clearTimers();\n }\n }, {\n name: 'hide',\n handler: function handler(ref) {\n var target = ref.target;\n\n if (this.$el !== target) {\n active = active === null && within(target, this.$el) && this.isToggled() ? this : active;\n return;\n }\n\n active = this.isActive() ? null : active;\n this.tracker.cancel();\n }\n }],\n update: {\n write: function write() {\n if (this.isToggled() && !hasClass(this.$el, this.clsEnter)) {\n this.position();\n }\n },\n events: ['resize']\n },\n methods: {\n show: function show(toggle, delay) {\n var this$1 = this;\n if (toggle === void 0) toggle = this.toggle;\n if (delay === void 0) delay = true;\n\n if (this.isToggled() && toggle && this.toggle && toggle.$el !== this.toggle.$el) {\n this.hide(false);\n }\n\n this.toggle = toggle;\n this.clearTimers();\n\n if (this.isActive()) {\n return;\n }\n\n if (active) {\n if (delay && active.isDelaying) {\n this.showTimer = setTimeout(this.show, 10);\n return;\n }\n\n var prev;\n\n while (active && prev !== active && !within(this.$el, active.$el)) {\n prev = active;\n active.hide(false);\n }\n }\n\n this.showTimer = setTimeout(function () {\n return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true);\n }, delay && this.delayShow || 0);\n },\n hide: function hide(delay) {\n var this$1 = this;\n if (delay === void 0) delay = true;\n\n var hide = function hide() {\n return this$1.toggleElement(this$1.$el, false, false);\n };\n\n this.clearTimers();\n this.isDelaying = getPositionedElements(this.$el).some(function (el) {\n return this$1.tracker.movesTo(el);\n });\n\n if (delay && this.isDelaying) {\n this.hideTimer = setTimeout(this.hide, 50);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n clearTimers: function clearTimers() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n this.isDelaying = false;\n },\n isActive: function isActive() {\n return active === this;\n },\n position: function position() {\n removeClass(this.$el, this.clsDrop + \"-stack\");\n toggleClass(this.$el, this.clsDrop + \"-boundary\", this.boundaryAlign);\n var boundary = offset(this.boundary);\n var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el);\n\n if (this.align === 'justify') {\n var prop = this.getAxis() === 'y' ? 'width' : 'height';\n css(this.$el, prop, alignTo[prop]);\n } else if (this.boundary && this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) {\n addClass(this.$el, this.clsDrop + \"-stack\");\n }\n\n this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary);\n }\n }\n };\n\n function getPositionedElements(el) {\n var result = [];\n apply(el, function (el) {\n return css(el, 'position') !== 'static' && result.push(el);\n });\n return result;\n }\n\n var formCustom = {\n mixins: [Class],\n args: 'target',\n props: {\n target: Boolean\n },\n data: {\n target: false\n },\n computed: {\n input: function input(_, $el) {\n return $(selInput, $el);\n },\n state: function state() {\n return this.input.nextElementSibling;\n },\n target: function target(ref, $el) {\n var target = ref.target;\n return target && (target === true && parent(this.input) === $el && this.input.nextElementSibling || query(target, $el));\n }\n },\n update: function update() {\n var ref = this;\n var target = ref.target;\n var input = ref.input;\n\n if (!target) {\n return;\n }\n\n var option;\n var prop = isInput(target) ? 'value' : 'textContent';\n var prev = target[prop];\n var value = input.files && input.files[0] ? input.files[0].name : matches(input, 'select') && (option = $$('option', input).filter(function (el) {\n return el.selected;\n })[0]) // eslint-disable-line prefer-destructuring\n ? option.textContent : input.value;\n\n if (prev !== value) {\n target[prop] = value;\n }\n },\n events: [{\n name: 'change',\n handler: function handler() {\n this.$update();\n }\n }, {\n name: 'reset',\n el: function el() {\n return closest(this.$el, 'form');\n },\n handler: function handler() {\n this.$update();\n }\n }]\n }; // Deprecated\n\n var gif = {\n update: {\n read: function read(data) {\n var inview = isInView(this.$el);\n\n if (!inview || data.isInView === inview) {\n return false;\n }\n\n data.isInView = inview;\n },\n write: function write() {\n this.$el.src = '' + this.$el.src; // force self-assign\n },\n events: ['scroll', 'resize']\n }\n };\n var Margin = {\n props: {\n margin: String,\n firstColumn: Boolean\n },\n data: {\n margin: 'uk-margin-small-top',\n firstColumn: 'uk-first-column'\n },\n update: {\n read: function read() {\n var rows = getRows(this.$el.children);\n return {\n rows: rows,\n columns: getColumns(rows)\n };\n },\n write: function write(ref) {\n var columns = ref.columns;\n var rows = ref.rows;\n\n for (var i = 0; i < rows.length; i++) {\n for (var j = 0; j < rows[i].length; j++) {\n toggleClass(rows[i][j], this.margin, i !== 0);\n toggleClass(rows[i][j], this.firstColumn, !!~columns[0].indexOf(rows[i][j]));\n }\n }\n },\n events: ['resize']\n }\n };\n\n function getRows(items) {\n return sortBy$1(items, 'top', 'bottom');\n }\n\n function getColumns(rows) {\n var columns = [];\n\n for (var i = 0; i < rows.length; i++) {\n var sorted = sortBy$1(rows[i], 'left', 'right');\n\n for (var j = 0; j < sorted.length; j++) {\n columns[j] = !columns[j] ? sorted[j] : columns[j].concat(sorted[j]);\n }\n }\n\n return isRtl ? columns.reverse() : columns;\n }\n\n function sortBy$1(items, startProp, endProp) {\n var sorted = [[]];\n\n for (var i = 0; i < items.length; i++) {\n var el = items[i];\n\n if (!isVisible(el)) {\n continue;\n }\n\n var dim = getOffset(el);\n\n for (var j = sorted.length - 1; j >= 0; j--) {\n var current = sorted[j];\n\n if (!current[0]) {\n current.push(el);\n break;\n }\n\n var startDim = void 0;\n\n if (current[0].offsetParent === el.offsetParent) {\n startDim = getOffset(current[0]);\n } else {\n dim = getOffset(el, true);\n startDim = getOffset(current[0], true);\n }\n\n if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) {\n sorted.push([el]);\n break;\n }\n\n if (dim[endProp] - 1 > startDim[startProp] || dim[startProp] === startDim[startProp]) {\n current.push(el);\n break;\n }\n\n if (j === 0) {\n sorted.unshift([el]);\n break;\n }\n }\n }\n\n return sorted;\n }\n\n function getOffset(element, offset) {\n var assign;\n if (offset === void 0) offset = false;\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n var offsetHeight = element.offsetHeight;\n var offsetWidth = element.offsetWidth;\n\n if (offset) {\n assign = offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1];\n }\n\n return {\n top: offsetTop,\n left: offsetLeft,\n bottom: offsetTop + offsetHeight,\n right: offsetLeft + offsetWidth\n };\n }\n\n var grid = {\n extends: Margin,\n mixins: [Class],\n name: 'grid',\n props: {\n masonry: Boolean,\n parallax: Number\n },\n data: {\n margin: 'uk-grid-margin',\n clsStack: 'uk-grid-stack',\n masonry: false,\n parallax: 0\n },\n connected: function connected() {\n this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');\n },\n update: [{\n write: function write(ref) {\n var columns = ref.columns;\n toggleClass(this.$el, this.clsStack, columns.length < 2);\n },\n events: ['resize']\n }, {\n read: function read(data) {\n var columns = data.columns;\n var rows = data.rows; // Filter component makes elements positioned absolute\n\n if (!columns.length || !this.masonry && !this.parallax || positionedAbsolute(this.$el)) {\n data.translates = false;\n return false;\n }\n\n var translates = false;\n\n var nodes = _children(this.$el);\n\n var columnHeights = getColumnHeights(columns);\n var margin = getMarginTop(nodes, this.margin) * (rows.length - 1);\n var elHeight = Math.max.apply(Math, columnHeights) + margin;\n\n if (this.masonry) {\n columns = columns.map(function (column) {\n return sortBy(column, 'offsetTop');\n });\n translates = getTranslates(rows, columns);\n }\n\n var padding = Math.abs(this.parallax);\n\n if (padding) {\n padding = columnHeights.reduce(function (newPadding, hgt, i) {\n return Math.max(newPadding, hgt + margin + (i % 2 ? padding : padding / 8) - elHeight);\n }, 0);\n }\n\n return {\n padding: padding,\n columns: columns,\n translates: translates,\n height: translates ? elHeight : ''\n };\n },\n write: function write(ref) {\n var height = ref.height;\n var padding = ref.padding;\n css(this.$el, 'paddingBottom', padding || '');\n height !== false && css(this.$el, 'height', height);\n },\n events: ['resize']\n }, {\n read: function read(ref) {\n var height$1 = ref.height;\n\n if (positionedAbsolute(this.$el)) {\n return false;\n }\n\n return {\n scrolled: this.parallax ? scrolledOver(this.$el, height$1 ? height$1 - height(this.$el) : 0) * Math.abs(this.parallax) : false\n };\n },\n write: function write(ref) {\n var columns = ref.columns;\n var scrolled = ref.scrolled;\n var translates = ref.translates;\n\n if (scrolled === false && !translates) {\n return;\n }\n\n columns.forEach(function (column, i) {\n return column.forEach(function (el, j) {\n return css(el, 'transform', !scrolled && !translates ? '' : \"translateY(\" + ((translates && -translates[i][j]) + (scrolled ? i % 2 ? scrolled : scrolled / 8 : 0)) + \"px)\");\n });\n });\n },\n events: ['scroll', 'resize']\n }]\n };\n\n function positionedAbsolute(el) {\n return _children(el).some(function (el) {\n return css(el, 'position') === 'absolute';\n });\n }\n\n function getTranslates(rows, columns) {\n var rowHeights = rows.map(function (row) {\n return Math.max.apply(Math, row.map(function (el) {\n return el.offsetHeight;\n }));\n });\n return columns.map(function (elements) {\n var prev = 0;\n return elements.map(function (element, row) {\n return prev += row ? rowHeights[row - 1] - elements[row - 1].offsetHeight : 0;\n });\n });\n }\n\n function getMarginTop(nodes, cls) {\n var ref = nodes.filter(function (el) {\n return hasClass(el, cls);\n });\n var node = ref[0];\n return toFloat(node ? css(node, 'marginTop') : css(nodes[0], 'paddingLeft'));\n }\n\n function getColumnHeights(columns) {\n return columns.map(function (column) {\n return column.reduce(function (sum, el) {\n return sum + el.offsetHeight;\n }, 0);\n });\n } // IE 11 fix (min-height on a flex container won't apply to its flex items)\n\n\n var FlexBug = isIE ? {\n props: {\n selMinHeight: String\n },\n data: {\n selMinHeight: false,\n forceHeight: false\n },\n computed: {\n elements: function elements(ref, $el) {\n var selMinHeight = ref.selMinHeight;\n return selMinHeight ? $$(selMinHeight, $el) : [$el];\n }\n },\n update: [{\n read: function read() {\n css(this.elements, 'height', '');\n },\n order: -5,\n events: ['resize']\n }, {\n write: function write() {\n var this$1 = this;\n this.elements.forEach(function (el) {\n var height = toFloat(css(el, 'minHeight'));\n\n if (height && (this$1.forceHeight || Math.round(height + boxModelAdjust(el, 'height', 'content-box')) >= el.offsetHeight)) {\n css(el, 'height', height);\n }\n });\n },\n order: 5,\n events: ['resize']\n }]\n } : {};\n var heightMatch = {\n mixins: [FlexBug],\n args: 'target',\n props: {\n target: String,\n row: Boolean\n },\n data: {\n target: '> *',\n row: true,\n forceHeight: true\n },\n computed: {\n elements: function elements(ref, $el) {\n var target = ref.target;\n return $$(target, $el);\n }\n },\n update: {\n read: function read() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)\n };\n },\n write: function write(ref) {\n var rows = ref.rows;\n rows.forEach(function (ref) {\n var heights = ref.heights;\n var elements = ref.elements;\n return elements.forEach(function (el, i) {\n return css(el, 'minHeight', heights[i]);\n });\n });\n },\n events: ['resize']\n }\n };\n\n function match(elements) {\n if (elements.length < 2) {\n return {\n heights: [''],\n elements: elements\n };\n }\n\n var heights = elements.map(getHeight);\n var max = Math.max.apply(Math, heights);\n var hasMinHeight = elements.some(function (el) {\n return el.style.minHeight;\n });\n var hasShrunk = elements.some(function (el, i) {\n return !el.style.minHeight && heights[i] < max;\n });\n\n if (hasMinHeight && hasShrunk) {\n css(elements, 'minHeight', '');\n heights = elements.map(getHeight);\n max = Math.max.apply(Math, heights);\n }\n\n heights = elements.map(function (el, i) {\n return heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max;\n });\n return {\n heights: heights,\n elements: elements\n };\n }\n\n function getHeight(element) {\n var style = false;\n\n if (!isVisible(element)) {\n style = element.style.display;\n css(element, 'display', 'block', 'important');\n }\n\n var height = dimensions(element).height - boxModelAdjust(element, 'height', 'content-box');\n\n if (style !== false) {\n css(element, 'display', style);\n }\n\n return height;\n }\n\n var heightViewport = {\n mixins: [FlexBug],\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n update: {\n read: function read(ref) {\n var prev = ref.minHeight;\n\n if (!isVisible(this.$el)) {\n return false;\n }\n\n var minHeight = '';\n var box = boxModelAdjust(this.$el, 'height', 'content-box');\n\n if (this.expand) {\n minHeight = height(window) - (dimensions(document.documentElement).height - dimensions(this.$el).height) - box || '';\n } else {\n // on mobile devices (iOS and Android) window.innerHeight !== 100vh\n minHeight = 'calc(100vh';\n\n if (this.offsetTop) {\n var ref$1 = offset(this.$el);\n var top = ref$1.top;\n minHeight += top > 0 && top < height(window) / 2 ? \" - \" + top + \"px\" : '';\n }\n\n if (this.offsetBottom === true) {\n minHeight += \" - \" + dimensions(this.$el.nextElementSibling).height + \"px\";\n } else if (isNumeric(this.offsetBottom)) {\n minHeight += \" - \" + this.offsetBottom + \"vh\";\n } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {\n minHeight += \" - \" + toFloat(this.offsetBottom) + \"px\";\n } else if (isString(this.offsetBottom)) {\n minHeight += \" - \" + dimensions(query(this.offsetBottom, this.$el)).height + \"px\";\n }\n\n minHeight += (box ? \" - \" + box + \"px\" : '') + \")\";\n }\n\n return {\n minHeight: minHeight,\n prev: prev\n };\n },\n write: function write(ref) {\n var minHeight = ref.minHeight;\n var prev = ref.prev;\n css(this.$el, {\n minHeight: minHeight\n });\n\n if (minHeight !== prev) {\n this.$update(this.$el, 'resize');\n }\n\n if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {\n css(this.$el, 'minHeight', this.minHeight);\n }\n },\n events: ['resize']\n }\n };\n var SVG = {\n args: 'src',\n props: {\n id: Boolean,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n class: String,\n strokeAnimation: Boolean,\n focusable: Boolean,\n // IE 11\n attributes: 'list'\n },\n data: {\n ratio: 1,\n include: ['style', 'class', 'focusable'],\n class: '',\n strokeAnimation: false\n },\n beforeConnect: function beforeConnect() {\n this.class += ' uk-svg';\n },\n connected: function connected() {\n var this$1 = this;\n var assign;\n\n if (!this.icon && includes(this.src, '#')) {\n assign = this.src.split('#'), this.src = assign[0], this.icon = assign[1];\n }\n\n this.svg = this.getSvg().then(function (el) {\n if (this$1._connected) {\n var svg = insertSVG(el, this$1.$el);\n\n if (this$1.svgEl && svg !== this$1.svgEl) {\n _remove(this$1.svgEl);\n }\n\n this$1.applyAttributes(svg, el);\n this$1.$emit();\n return this$1.svgEl = svg;\n }\n }, noop);\n },\n disconnected: function disconnected() {\n var this$1 = this;\n this.svg.then(function (svg) {\n if (!this$1._connected) {\n if (isVoidElement(this$1.$el)) {\n this$1.$el.hidden = false;\n }\n\n _remove(svg);\n\n this$1.svgEl = null;\n }\n });\n this.svg = null;\n },\n update: {\n read: function read() {\n return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));\n },\n write: function write() {\n applyAnimation(this.svgEl);\n },\n type: ['resize']\n },\n methods: {\n getSvg: function getSvg() {\n var this$1 = this;\n return loadSVG(this.src).then(function (svg) {\n return parseSVG(svg, this$1.icon) || Promise.reject('SVG not found.');\n });\n },\n applyAttributes: function applyAttributes(el, ref) {\n var this$1 = this;\n\n for (var prop in this.$options.props) {\n if (includes(this.include, prop) && prop in this) {\n attr(el, prop, this[prop]);\n }\n }\n\n for (var attribute in this.attributes) {\n var ref$1 = this.attributes[attribute].split(':', 2);\n var prop$1 = ref$1[0];\n var value = ref$1[1];\n attr(el, prop$1, value);\n }\n\n if (!this.id) {\n removeAttr(el, 'id');\n }\n\n var props = ['width', 'height'];\n var dimensions = props.map(function (prop) {\n return this$1[prop];\n });\n\n if (!dimensions.some(function (val) {\n return val;\n })) {\n dimensions = props.map(function (prop) {\n return attr(ref, prop);\n });\n }\n\n var viewBox = attr(ref, 'viewBox');\n\n if (viewBox && !dimensions.some(function (val) {\n return val;\n })) {\n dimensions = viewBox.split(' ').slice(2);\n }\n\n dimensions.forEach(function (val, i) {\n return attr(el, props[i], toFloat(val) * this$1.ratio || null);\n });\n }\n }\n };\n var loadSVG = memoize(function (src) {\n return new Promise(function (resolve, reject) {\n if (!src) {\n reject();\n return;\n }\n\n if (startsWith(src, 'data:')) {\n resolve(decodeURIComponent(src.split(',')[1]));\n } else {\n ajax(src).then(function (xhr) {\n return resolve(xhr.response);\n }, function () {\n return reject('SVG not found.');\n });\n }\n });\n });\n\n function parseSVG(svg, icon) {\n if (icon && includes(svg, '/g;\n var symbols = {};\n\n function parseSymbols(svg, icon) {\n if (!symbols[svg]) {\n symbols[svg] = {};\n symbolRe.lastIndex = 0;\n var match;\n\n while (match = symbolRe.exec(svg)) {\n symbols[svg][match[3]] = \"\";\n }\n }\n\n return symbols[svg][icon];\n }\n\n function applyAnimation(el) {\n var length = getMaxPathLength(el);\n\n if (length) {\n el.style.setProperty('--uk-animation-stroke', length);\n }\n }\n\n function getMaxPathLength(el) {\n return Math.ceil(Math.max.apply(Math, [0].concat($$('[stroke]', el).map(function (stroke) {\n try {\n return stroke.getTotalLength();\n } catch (e) {\n return 0;\n }\n }))));\n }\n\n function insertSVG(el, root) {\n if (isVoidElement(root) || root.tagName === 'CANVAS') {\n root.hidden = true;\n var next = root.nextElementSibling;\n return equals(el, next) ? next : after(root, el);\n }\n\n var last = root.lastElementChild;\n return equals(el, last) ? last : append(root, el);\n }\n\n function equals(el, other) {\n return isSVG(el) && isSVG(other) && innerHTML(el) === innerHTML(other);\n }\n\n function isSVG(el) {\n return el && el.tagName === 'svg';\n }\n\n function innerHTML(el) {\n return (el.innerHTML || new XMLSerializer().serializeToString(el).replace(/(.*?)<\\/svg>/g, '$1')).replace(/\\s/g, '');\n }\n\n var closeIcon = \"\";\n var closeLarge = \"\";\n var marker = \"\";\n var navbarToggleIcon = \"\";\n var overlayIcon = \"\";\n var paginationNext = \"\";\n var paginationPrevious = \"\";\n var searchIcon = \"\";\n var searchLarge = \"\";\n var searchNavbar = \"\";\n var slidenavNext = \"\";\n var slidenavNextLarge = \"\";\n var slidenavPrevious = \"\";\n var slidenavPreviousLarge = \"\";\n var spinner = \"\";\n var totop = \"\";\n var icons = {\n spinner: spinner,\n totop: totop,\n marker: marker,\n 'close-icon': closeIcon,\n 'close-large': closeLarge,\n 'navbar-toggle-icon': navbarToggleIcon,\n 'overlay-icon': overlayIcon,\n 'pagination-next': paginationNext,\n 'pagination-previous': paginationPrevious,\n 'search-icon': searchIcon,\n 'search-large': searchLarge,\n 'search-navbar': searchNavbar,\n 'slidenav-next': slidenavNext,\n 'slidenav-next-large': slidenavNextLarge,\n 'slidenav-previous': slidenavPrevious,\n 'slidenav-previous-large': slidenavPreviousLarge\n };\n var Icon = {\n install: install,\n extends: SVG,\n args: 'icon',\n props: ['icon'],\n data: {\n include: ['focusable']\n },\n isIcon: true,\n beforeConnect: function beforeConnect() {\n addClass(this.$el, 'uk-icon');\n },\n methods: {\n getSvg: function getSvg() {\n var icon = getIcon(this.icon);\n\n if (!icon) {\n return Promise.reject('Icon not found.');\n }\n\n return Promise.resolve(icon);\n }\n }\n };\n var IconComponent = {\n args: false,\n extends: Icon,\n data: function data(vm) {\n return {\n icon: hyphenate(vm.constructor.options.name)\n };\n },\n beforeConnect: function beforeConnect() {\n addClass(this.$el, this.$name);\n }\n };\n var Slidenav = {\n extends: IconComponent,\n beforeConnect: function beforeConnect() {\n addClass(this.$el, 'uk-slidenav');\n },\n computed: {\n icon: function icon(ref, $el) {\n var icon = ref.icon;\n return hasClass($el, 'uk-slidenav-large') ? icon + \"-large\" : icon;\n }\n }\n };\n var Search = {\n extends: IconComponent,\n computed: {\n icon: function icon(ref, $el) {\n var icon = ref.icon;\n return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length ? 'search-large' : parents($el, '.uk-search-navbar').length ? 'search-navbar' : icon;\n }\n }\n };\n var Close = {\n extends: IconComponent,\n computed: {\n icon: function icon() {\n return \"close-\" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon');\n }\n }\n };\n var Spinner = {\n extends: IconComponent,\n connected: function connected() {\n var this$1 = this;\n this.svg.then(function (svg) {\n return svg && this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio);\n });\n }\n };\n var parsed = {};\n\n function install(UIkit) {\n UIkit.icon.add = function (name, svg) {\n var obj;\n var added = isString(name) ? (obj = {}, obj[name] = svg, obj) : name;\n each(added, function (svg, name) {\n icons[name] = svg;\n delete parsed[name];\n });\n\n if (UIkit._initialized) {\n apply(document.body, function (el) {\n return each(UIkit.getComponents(el), function (cmp) {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n });\n });\n }\n };\n }\n\n function getIcon(icon) {\n if (!icons[icon]) {\n return null;\n }\n\n if (!parsed[icon]) {\n parsed[icon] = $((icons[applyRtl(icon)] || icons[icon]).trim());\n }\n\n return parsed[icon].cloneNode(true);\n }\n\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;\n }\n\n var img = {\n args: 'dataSrc',\n props: {\n dataSrc: String,\n dataSrcset: Boolean,\n sizes: String,\n width: Number,\n height: Number,\n offsetTop: String,\n offsetLeft: String,\n target: String\n },\n data: {\n dataSrc: '',\n dataSrcset: false,\n sizes: false,\n width: false,\n height: false,\n offsetTop: '50vh',\n offsetLeft: '50vw',\n target: false\n },\n computed: {\n cacheKey: function cacheKey(ref) {\n var dataSrc = ref.dataSrc;\n return this.$name + \".\" + dataSrc;\n },\n width: function width(ref) {\n var width = ref.width;\n var dataWidth = ref.dataWidth;\n return width || dataWidth;\n },\n height: function height(ref) {\n var height = ref.height;\n var dataHeight = ref.dataHeight;\n return height || dataHeight;\n },\n sizes: function sizes(ref) {\n var sizes = ref.sizes;\n var dataSizes = ref.dataSizes;\n return sizes || dataSizes;\n },\n isImg: function isImg(_, $el) {\n return _isImg($el);\n },\n target: {\n get: function get(ref) {\n var target = ref.target;\n return [this.$el].concat(queryAll(target, this.$el));\n },\n watch: function watch() {\n this.observe();\n }\n },\n offsetTop: function offsetTop(ref) {\n var offsetTop = ref.offsetTop;\n return toPx(offsetTop, 'height');\n },\n offsetLeft: function offsetLeft(ref) {\n var offsetLeft = ref.offsetLeft;\n return toPx(offsetLeft, 'width');\n }\n },\n connected: function connected() {\n if (!window.IntersectionObserver) {\n setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);\n return;\n }\n\n if (storage[this.cacheKey]) {\n setSrcAttrs(this.$el, storage[this.cacheKey], this.dataSrcset, this.sizes);\n } else if (this.isImg && this.width && this.height) {\n setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));\n }\n\n this.observer = new IntersectionObserver(this.load, {\n rootMargin: this.offsetTop + \"px \" + this.offsetLeft + \"px\"\n });\n requestAnimationFrame(this.observe);\n },\n disconnected: function disconnected() {\n this.observer && this.observer.disconnect();\n },\n update: {\n read: function read(ref) {\n var this$1 = this;\n var image = ref.image;\n\n if (!this.observer) {\n return false;\n }\n\n if (!image && document.readyState === 'complete') {\n this.load(this.observer.takeRecords());\n }\n\n if (this.isImg) {\n return false;\n }\n\n image && image.then(function (img) {\n return img && img.currentSrc !== '' && setSrcAttrs(this$1.$el, currentSrc(img));\n });\n },\n write: function write(data) {\n if (this.dataSrcset && window.devicePixelRatio !== 1) {\n var bgSize = css(this.$el, 'backgroundSize');\n\n if (bgSize.match(/^(auto\\s?)+$/) || toFloat(bgSize) === data.bgSize) {\n data.bgSize = getSourceSize(this.dataSrcset, this.sizes);\n css(this.$el, 'backgroundSize', data.bgSize + \"px\");\n }\n }\n },\n events: ['resize']\n },\n methods: {\n load: function load(entries) {\n var this$1 = this; // Old chromium based browsers (UC Browser) did not implement `isIntersecting`\n\n if (!entries.some(function (entry) {\n return isUndefined(entry.isIntersecting) || entry.isIntersecting;\n })) {\n return;\n }\n\n this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {\n setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes);\n storage[this$1.cacheKey] = currentSrc(img);\n return img;\n }, function (e) {\n return trigger(this$1.$el, new e.constructor(e.type, e));\n });\n this.observer.disconnect();\n },\n observe: function observe() {\n var this$1 = this;\n\n if (this._connected && !this._data.image) {\n this.target.forEach(function (el) {\n return this$1.observer.observe(el);\n });\n }\n }\n }\n };\n\n function setSrcAttrs(el, src, srcset, sizes) {\n if (_isImg(el)) {\n sizes && (el.sizes = sizes);\n srcset && (el.srcset = srcset);\n src && (el.src = src);\n } else if (src) {\n var change = !includes(el.style.backgroundImage, src);\n\n if (change) {\n css(el, 'backgroundImage', \"url(\" + escape(src) + \")\");\n trigger(el, createEvent('load', false));\n }\n }\n }\n\n function getPlaceholderImage(width, height, sizes) {\n var assign;\n\n if (sizes) {\n assign = Dimensions.ratio({\n width: width,\n height: height\n }, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height;\n }\n\n return \"data:image/svg+xml;utf8,\";\n }\n\n var sizesRe = /\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;\n\n function sizesToPixel(sizes) {\n var matches;\n sizesRe.lastIndex = 0;\n\n while (matches = sizesRe.exec(sizes)) {\n if (!matches[1] || window.matchMedia(matches[1]).matches) {\n matches = evaluateSize(matches[2]);\n break;\n }\n }\n\n return matches || '100vw';\n }\n\n var sizeRe = /\\d+(?:\\w+|%)/g;\n var additionRe = /[+-]?(\\d+)/g;\n\n function evaluateSize(size) {\n return startsWith(size, 'calc') ? size.slice(5, -1).replace(sizeRe, function (size) {\n return toPx(size);\n }).replace(/ /g, '').match(additionRe).reduce(function (a, b) {\n return a + +b;\n }, 0) : size;\n }\n\n var srcSetRe = /\\s+\\d+w\\s*(?:,|$)/g;\n\n function getSourceSize(srcset, sizes) {\n var srcSize = toPx(sizesToPixel(sizes));\n var descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort(function (a, b) {\n return a - b;\n });\n return descriptors.filter(function (size) {\n return size >= srcSize;\n })[0] || descriptors.pop() || '';\n }\n\n function _isImg(el) {\n return el.tagName === 'IMG';\n }\n\n function currentSrc(el) {\n return el.currentSrc || el.src;\n }\n\n var key = '__test__';\n var storage; // workaround for Safari's private browsing mode and accessing sessionStorage in Blink\n\n try {\n storage = window.sessionStorage || {};\n storage[key] = 1;\n delete storage[key];\n } catch (e) {\n storage = {};\n }\n\n var Media = {\n props: {\n media: Boolean\n },\n data: {\n media: false\n },\n computed: {\n matchMedia: function matchMedia() {\n var media = toMedia(this.media);\n return !media || window.matchMedia(media).matches;\n }\n }\n };\n\n function toMedia(value) {\n if (isString(value)) {\n if (value[0] === '@') {\n var name = \"breakpoint-\" + value.substr(1);\n value = toFloat(getCssVar(name));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && !isNaN(value) ? \"(min-width: \" + value + \"px)\" : false;\n }\n\n var leader = {\n mixins: [Class, Media],\n props: {\n fill: String\n },\n data: {\n fill: '',\n clsWrapper: 'uk-leader-fill',\n clsHide: 'uk-leader-hide',\n attrFill: 'data-fill'\n },\n computed: {\n fill: function fill(ref) {\n var fill = ref.fill;\n return fill || getCssVar('leader-fill-content');\n }\n },\n connected: function connected() {\n var assign;\n assign = wrapInner(this.$el, \"\"), this.wrapper = assign[0];\n },\n disconnected: function disconnected() {\n unwrap(this.wrapper.childNodes);\n },\n update: {\n read: function read(ref) {\n var changed = ref.changed;\n var width = ref.width;\n var prev = width;\n width = Math.floor(this.$el.offsetWidth / 2);\n return {\n width: width,\n fill: this.fill,\n changed: changed || prev !== width,\n hide: !this.matchMedia\n };\n },\n write: function write(data) {\n toggleClass(this.wrapper, this.clsHide, data.hide);\n\n if (data.changed) {\n data.changed = false;\n attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));\n }\n },\n events: ['resize']\n }\n };\n var Container = {\n props: {\n container: Boolean\n },\n data: {\n container: true\n },\n computed: {\n container: function container(ref) {\n var container = ref.container;\n return container === true && this.$container || container && $(container);\n }\n }\n };\n var active$1 = [];\n var Modal = {\n mixins: [Class, Container, Togglable],\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean\n },\n data: {\n cls: 'uk-open',\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false\n },\n computed: {\n panel: function panel(ref, $el) {\n var selPanel = ref.selPanel;\n return $(selPanel, $el);\n },\n transitionElement: function transitionElement() {\n return this.panel;\n },\n bgClose: function bgClose(ref) {\n var bgClose = ref.bgClose;\n return bgClose && this.panel;\n }\n },\n beforeDisconnect: function beforeDisconnect() {\n if (this.isToggled()) {\n this.toggleElement(this.$el, false, false);\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.selClose;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.hide();\n }\n }, {\n name: 'toggle',\n self: true,\n handler: function handler(e) {\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n\n if (this.isToggled() === includes(active$1, this)) {\n this.toggle();\n }\n }\n }, {\n name: 'beforeshow',\n self: true,\n handler: function handler(e) {\n if (includes(active$1, this)) {\n return false;\n }\n\n if (!this.stack && active$1.length) {\n Promise.all(active$1.map(function (modal) {\n return modal.hide();\n })).then(this.show);\n e.preventDefault();\n } else {\n active$1.push(this);\n }\n }\n }, {\n name: 'show',\n self: true,\n handler: function handler() {\n var this$1 = this;\n var docEl = document.documentElement;\n\n if (width(window) > docEl.clientWidth && this.overlay) {\n css(document.body, 'overflowY', 'scroll');\n }\n\n if (this.stack) {\n css(this.$el, 'zIndex', toFloat(css(this.$el, 'zIndex')) + active$1.length);\n }\n\n addClass(docEl, this.clsPage);\n\n if (this.bgClose) {\n once(this.$el, 'hide', on(document, pointerDown, function (ref) {\n var target = ref.target;\n\n if (last(active$1) !== this$1 || this$1.overlay && !within(target, this$1.$el) || within(target, this$1.panel)) {\n return;\n }\n\n once(document, pointerUp + \" \" + pointerCancel + \" scroll\", function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var type = ref.type;\n var newTarget = ref.target;\n\n if (!defaultPrevented && type === pointerUp && target === newTarget) {\n this$1.hide();\n }\n }, true);\n }), {\n self: true\n });\n }\n\n if (this.escClose) {\n once(this.$el, 'hide', on(document, 'keydown', function (e) {\n if (e.keyCode === 27 && last(active$1) === this$1) {\n this$1.hide();\n }\n }), {\n self: true\n });\n }\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n var this$1 = this;\n\n if (includes(active$1, this)) {\n active$1.splice(active$1.indexOf(this), 1);\n }\n\n if (!active$1.length) {\n css(document.body, 'overflowY', '');\n }\n\n css(this.$el, 'zIndex', '');\n\n if (!active$1.some(function (modal) {\n return modal.clsPage === this$1.clsPage;\n })) {\n removeClass(document.documentElement, this.clsPage);\n }\n }\n }],\n methods: {\n toggle: function toggle() {\n return this.isToggled() ? this.hide() : this.show();\n },\n show: function show() {\n var this$1 = this;\n\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n return new Promise(function (resolve) {\n return requestAnimationFrame(function () {\n return this$1.show().then(resolve);\n });\n });\n }\n\n return this.toggleElement(this.$el, true, animate$1(this));\n },\n hide: function hide() {\n return this.toggleElement(this.$el, false, animate$1(this));\n }\n }\n };\n\n function animate$1(ref) {\n var transitionElement = ref.transitionElement;\n var _toggle = ref._toggle;\n return function (el, show) {\n return new Promise(function (resolve, reject) {\n return once(el, 'show hide', function () {\n el._reject && el._reject();\n el._reject = reject;\n\n _toggle(el, show);\n\n var off = once(transitionElement, 'transitionstart', function () {\n once(transitionElement, 'transitionend transitioncancel', resolve, {\n self: true\n });\n clearTimeout(timer);\n }, {\n self: true\n });\n var timer = setTimeout(function () {\n off();\n resolve();\n }, toMs(css(transitionElement, 'transitionDuration')));\n });\n }).then(function () {\n return delete el._reject;\n });\n };\n }\n\n var modal = {\n install: install$1,\n mixins: [Modal],\n data: {\n clsPage: 'uk-modal-page',\n selPanel: '.uk-modal-dialog',\n selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'\n },\n events: [{\n name: 'show',\n self: true,\n handler: function handler() {\n if (hasClass(this.panel, 'uk-margin-auto-vertical')) {\n addClass(this.$el, 'uk-flex');\n } else {\n css(this.$el, 'display', 'block');\n }\n\n height(this.$el); // force reflow\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n css(this.$el, 'display', '');\n removeClass(this.$el, 'uk-flex');\n }\n }]\n };\n\n function install$1(ref) {\n var modal = ref.modal;\n\n modal.dialog = function (content, options) {\n var dialog = modal(\"
\" + content + \"
\", options);\n dialog.show();\n on(dialog.$el, 'hidden', function () {\n return Promise.resolve().then(function () {\n return dialog.$destroy(true);\n });\n }, {\n self: true\n });\n return dialog;\n };\n\n modal.alert = function (message, options) {\n return openDialog(function (ref) {\n var labels = ref.labels;\n return \"
\" + (isString(message) ? message : html(message)) + \"
\";\n }, options, function (deferred) {\n return deferred.resolve();\n });\n };\n\n modal.confirm = function (message, options) {\n return openDialog(function (ref) {\n var labels = ref.labels;\n return \"
\" + (isString(message) ? message : html(message)) + \"
\";\n }, options, function (deferred) {\n return deferred.reject();\n });\n };\n\n modal.prompt = function (message, value, options) {\n return openDialog(function (ref) {\n var labels = ref.labels;\n return \"
\";\n }, options, function (deferred) {\n return deferred.resolve(null);\n }, function (dialog) {\n return $('input', dialog.$el).value;\n });\n };\n\n modal.labels = {\n ok: 'Ok',\n cancel: 'Cancel'\n };\n\n function openDialog(tmpl, options, hideFn, submitFn) {\n options = assign({\n bgClose: false,\n escClose: true,\n labels: modal.labels\n }, options);\n var dialog = modal.dialog(tmpl(options), options);\n var deferred = new Deferred();\n var resolved = false;\n on(dialog.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n deferred.resolve(submitFn && submitFn(dialog));\n resolved = true;\n dialog.hide();\n });\n on(dialog.$el, 'hide', function () {\n return !resolved && hideFn(deferred);\n });\n deferred.promise.dialog = dialog;\n return deferred.promise;\n }\n }\n\n var nav = {\n extends: Accordion,\n data: {\n targets: '> .uk-parent',\n toggle: '> a',\n content: '> ul'\n }\n };\n var navbar = {\n mixins: [Class, FlexBug],\n props: {\n dropdown: String,\n mode: 'list',\n align: String,\n offset: Number,\n boundary: Boolean,\n boundaryAlign: Boolean,\n clsDrop: String,\n delayShow: Number,\n delayHide: Number,\n dropbar: Boolean,\n dropbarMode: String,\n dropbarAnchor: Boolean,\n duration: Number\n },\n data: {\n dropdown: '.uk-navbar-nav > li',\n align: !isRtl ? 'left' : 'right',\n clsDrop: 'uk-navbar-dropdown',\n mode: undefined,\n offset: undefined,\n delayShow: undefined,\n delayHide: undefined,\n boundaryAlign: undefined,\n flip: 'x',\n boundary: true,\n dropbar: false,\n dropbarMode: 'slide',\n dropbarAnchor: false,\n duration: 200,\n forceHeight: true,\n selMinHeight: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle'\n },\n computed: {\n boundary: function boundary(ref, $el) {\n var boundary = ref.boundary;\n var boundaryAlign = ref.boundaryAlign;\n return boundary === true || boundaryAlign ? $el : boundary;\n },\n dropbarAnchor: function dropbarAnchor(ref, $el) {\n var dropbarAnchor = ref.dropbarAnchor;\n return query(dropbarAnchor, $el);\n },\n pos: function pos(ref) {\n var align = ref.align;\n return \"bottom-\" + align;\n },\n dropbar: {\n get: function get(ref) {\n var dropbar = ref.dropbar;\n\n if (!dropbar) {\n return null;\n }\n\n dropbar = this._dropbar || query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el);\n return dropbar ? dropbar : this._dropbar = $('
');\n },\n watch: function watch(dropbar) {\n addClass(dropbar, 'uk-navbar-dropbar');\n },\n immediate: true\n },\n dropdowns: {\n get: function get(ref, $el) {\n var dropdown = ref.dropdown;\n var clsDrop = ref.clsDrop;\n return $$(dropdown + \" .\" + clsDrop, $el);\n },\n watch: function watch(dropdowns) {\n var this$1 = this;\n this.$create('drop', dropdowns.filter(function (el) {\n return !this$1.getDropdown(el);\n }), assign({}, this.$props, {\n boundary: this.boundary,\n pos: this.pos,\n offset: this.dropbar || this.offset\n }));\n },\n immediate: true\n }\n },\n disconnected: function disconnected() {\n this.dropbar && _remove(this.dropbar);\n delete this._dropbar;\n },\n events: [{\n name: 'mouseover',\n delegate: function delegate() {\n return this.dropdown;\n },\n handler: function handler(ref) {\n var current = ref.current;\n var active = this.getActive();\n\n if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) {\n active.hide(false);\n }\n }\n }, {\n name: 'mouseleave',\n el: function el() {\n return this.dropbar;\n },\n handler: function handler() {\n var active = this.getActive();\n\n if (active && !this.dropdowns.some(function (el) {\n return matches(el, ':hover');\n })) {\n active.hide();\n }\n }\n }, {\n name: 'beforeshow',\n capture: true,\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler() {\n if (!parent(this.dropbar)) {\n after(this.dropbarAnchor || this.$el, this.dropbar);\n }\n }\n }, {\n name: 'show',\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler(_, ref) {\n var $el = ref.$el;\n var dir = ref.dir;\n\n if (!hasClass($el, this.clsDrop)) {\n return;\n }\n\n if (this.dropbarMode === 'slide') {\n addClass(this.dropbar, 'uk-navbar-dropbar-slide');\n }\n\n this.clsDrop && addClass($el, this.clsDrop + \"-dropbar\");\n\n if (dir === 'bottom') {\n this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el);\n }\n }\n }, {\n name: 'beforehide',\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler(e, ref) {\n var $el = ref.$el;\n var active = this.getActive();\n\n if (matches(this.dropbar, ':hover') && active && active.$el === $el) {\n e.preventDefault();\n }\n }\n }, {\n name: 'hide',\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler(_, ref) {\n var $el = ref.$el;\n\n if (!hasClass($el, this.clsDrop)) {\n return;\n }\n\n var active = this.getActive();\n\n if (!active || active && active.$el === $el) {\n this.transitionTo(0);\n }\n }\n }],\n methods: {\n getActive: function getActive() {\n var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) {\n return drop && drop.isActive();\n });\n var active = ref[0];\n return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active;\n },\n transitionTo: function transitionTo(newHeight, el) {\n var this$1 = this;\n var ref = this;\n var dropbar = ref.dropbar;\n var oldHeight = isVisible(dropbar) ? height(dropbar) : 0;\n el = oldHeight < newHeight && el;\n css(el, 'clip', \"rect(0,\" + el.offsetWidth + \"px,\" + oldHeight + \"px,0)\");\n height(dropbar, oldHeight);\n Transition.cancel([el, dropbar]);\n return Promise.all([Transition.start(dropbar, {\n height: newHeight\n }, this.duration), Transition.start(el, {\n clip: \"rect(0,\" + el.offsetWidth + \"px,\" + newHeight + \"px,0)\"\n }, this.duration)]).catch(noop).then(function () {\n css(el, {\n clip: ''\n });\n this$1.$update(dropbar);\n });\n },\n getDropdown: function getDropdown(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n }\n }\n };\n var offcanvas = {\n mixins: [Modal],\n args: 'mode',\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean\n },\n data: {\n mode: 'slide',\n flip: false,\n overlay: false,\n clsPage: 'uk-offcanvas-page',\n clsContainer: 'uk-offcanvas-container',\n selPanel: '.uk-offcanvas-bar',\n clsFlip: 'uk-offcanvas-flip',\n clsContainerAnimation: 'uk-offcanvas-container-animation',\n clsSidebarAnimation: 'uk-offcanvas-bar-animation',\n clsMode: 'uk-offcanvas',\n clsOverlay: 'uk-offcanvas-overlay',\n selClose: '.uk-offcanvas-close',\n container: false\n },\n computed: {\n clsFlip: function clsFlip(ref) {\n var flip = ref.flip;\n var clsFlip = ref.clsFlip;\n return flip ? clsFlip : '';\n },\n clsOverlay: function clsOverlay(ref) {\n var overlay = ref.overlay;\n var clsOverlay = ref.clsOverlay;\n return overlay ? clsOverlay : '';\n },\n clsMode: function clsMode(ref) {\n var mode = ref.mode;\n var clsMode = ref.clsMode;\n return clsMode + \"-\" + mode;\n },\n clsSidebarAnimation: function clsSidebarAnimation(ref) {\n var mode = ref.mode;\n var clsSidebarAnimation = ref.clsSidebarAnimation;\n return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;\n },\n clsContainerAnimation: function clsContainerAnimation(ref) {\n var mode = ref.mode;\n var clsContainerAnimation = ref.clsContainerAnimation;\n return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;\n },\n transitionElement: function transitionElement(ref) {\n var mode = ref.mode;\n return mode === 'reveal' ? parent(this.panel) : this.panel;\n }\n },\n update: {\n read: function read() {\n if (this.isToggled() && !isVisible(this.$el)) {\n this.hide();\n }\n },\n events: ['resize']\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return 'a[href^=\"#\"]';\n },\n handler: function handler(ref) {\n var hash = ref.current.hash;\n var defaultPrevented = ref.defaultPrevented;\n\n if (!defaultPrevented && hash && $(hash, document.body)) {\n this.hide();\n }\n }\n }, {\n name: 'touchstart',\n passive: true,\n el: function el() {\n return this.panel;\n },\n handler: function handler(ref) {\n var targetTouches = ref.targetTouches;\n\n if (targetTouches.length === 1) {\n this.clientY = targetTouches[0].clientY;\n }\n }\n }, {\n name: 'touchmove',\n self: true,\n passive: false,\n filter: function filter() {\n return this.overlay;\n },\n handler: function handler(e) {\n e.cancelable && e.preventDefault();\n }\n }, {\n name: 'touchmove',\n passive: false,\n el: function el() {\n return this.panel;\n },\n handler: function handler(e) {\n if (e.targetTouches.length !== 1) {\n return;\n }\n\n var clientY = event.targetTouches[0].clientY - this.clientY;\n var ref = this.panel;\n var scrollTop = ref.scrollTop;\n var scrollHeight = ref.scrollHeight;\n var clientHeight = ref.clientHeight;\n\n if (clientHeight >= scrollHeight || scrollTop === 0 && clientY > 0 || scrollHeight - scrollTop <= clientHeight && clientY < 0) {\n e.cancelable && e.preventDefault();\n }\n }\n }, {\n name: 'show',\n self: true,\n handler: function handler() {\n if (this.mode === 'reveal' && !hasClass(parent(this.panel), this.clsMode)) {\n wrapAll(this.panel, '
');\n addClass(parent(this.panel), this.clsMode);\n }\n\n css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : '');\n addClass(document.body, this.clsContainer, this.clsFlip);\n css(document.body, 'touch-action', 'pan-y pinch-zoom');\n css(this.$el, 'display', 'block');\n addClass(this.$el, this.clsOverlay);\n addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : '');\n height(document.body); // force reflow\n\n addClass(document.body, this.clsContainerAnimation);\n this.clsContainerAnimation && suppressUserScale();\n }\n }, {\n name: 'hide',\n self: true,\n handler: function handler() {\n removeClass(document.body, this.clsContainerAnimation);\n css(document.body, 'touch-action', '');\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n this.clsContainerAnimation && resumeUserScale();\n\n if (this.mode === 'reveal') {\n unwrap(this.panel);\n }\n\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', '');\n removeClass(document.body, this.clsContainer, this.clsFlip);\n css(document.documentElement, 'overflowY', '');\n }\n }, {\n name: 'swipeLeft swipeRight',\n handler: function handler(e) {\n if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {\n this.hide();\n }\n }\n }]\n }; // Chrome in responsive mode zooms page upon opening offcanvas\n\n function suppressUserScale() {\n getViewport$1().content += ',user-scalable=0';\n }\n\n function resumeUserScale() {\n var viewport = getViewport$1();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, '');\n }\n\n function getViewport$1() {\n return $('meta[name=\"viewport\"]', document.head) || append(document.head, '');\n }\n\n var overflowAuto = {\n mixins: [Class],\n props: {\n selContainer: String,\n selContent: String\n },\n data: {\n selContainer: '.uk-modal',\n selContent: '.uk-modal-dialog'\n },\n computed: {\n container: function container(ref, $el) {\n var selContainer = ref.selContainer;\n return closest($el, selContainer);\n },\n content: function content(ref, $el) {\n var selContent = ref.selContent;\n return closest($el, selContent);\n }\n },\n connected: function connected() {\n css(this.$el, 'minHeight', 150);\n },\n update: {\n read: function read() {\n if (!this.content || !this.container || !isVisible(this.$el)) {\n return false;\n }\n\n return {\n current: toFloat(css(this.$el, 'maxHeight')),\n max: Math.max(150, height(this.container) - (dimensions(this.content).height - height(this.$el)))\n };\n },\n write: function write(ref) {\n var current = ref.current;\n var max = ref.max;\n css(this.$el, 'maxHeight', max);\n\n if (Math.round(current) !== Math.round(max)) {\n trigger(this.$el, 'resize');\n }\n },\n events: ['resize']\n }\n };\n var responsive = {\n props: ['width', 'height'],\n connected: function connected() {\n addClass(this.$el, 'uk-responsive-width');\n },\n update: {\n read: function read() {\n return isVisible(this.$el) && this.width && this.height ? {\n width: width(parent(this.$el)),\n height: this.height\n } : false;\n },\n write: function write(dim) {\n height(this.$el, Dimensions.contain({\n height: this.height,\n width: this.width\n }, dim).height);\n },\n events: ['resize']\n }\n };\n var scroll = {\n props: {\n offset: Number\n },\n data: {\n offset: 0\n },\n methods: {\n scrollTo: function scrollTo(el) {\n var this$1 = this;\n el = el && $(el) || document.body;\n\n if (trigger(this.$el, 'beforescroll', [this, el])) {\n scrollIntoView(el, {\n offset: this.offset\n }).then(function () {\n return trigger(this$1.$el, 'scrolled', [this$1, el]);\n });\n }\n }\n },\n events: {\n click: function click(e) {\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.scrollTo(\"#\" + escape(decodeURIComponent((this.$el.hash || '').substr(1))));\n }\n }\n };\n var stateKey$1 = '_ukScrollspy';\n var scrollspy = {\n args: 'cls',\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n offsetTop: Number,\n offsetLeft: Number,\n repeat: Boolean,\n delay: Number\n },\n data: function data() {\n return {\n cls: false,\n target: false,\n hidden: true,\n offsetTop: 0,\n offsetLeft: 0,\n repeat: false,\n delay: 0,\n inViewClass: 'uk-scrollspy-inview'\n };\n },\n computed: {\n elements: {\n get: function get(ref, $el) {\n var target = ref.target;\n return target ? $$(target, $el) : [$el];\n },\n watch: function watch(elements) {\n if (this.hidden) {\n css(filter(elements, \":not(.\" + this.inViewClass + \")\"), 'visibility', 'hidden');\n }\n },\n immediate: true\n }\n },\n disconnected: function disconnected() {\n var this$1 = this;\n this.elements.forEach(function (el) {\n removeClass(el, this$1.inViewClass, el[stateKey$1] ? el[stateKey$1].cls : '');\n delete el[stateKey$1];\n });\n },\n update: [{\n read: function read(data$1) {\n var this$1 = this; // Let child components be applied at least once first\n\n if (!data$1.update) {\n Promise.resolve().then(function () {\n this$1.$emit();\n data$1.update = true;\n });\n return false;\n }\n\n this.elements.forEach(function (el) {\n if (!el[stateKey$1]) {\n el[stateKey$1] = {\n cls: data(el, 'uk-scrollspy-class') || this$1.cls\n };\n }\n\n el[stateKey$1].show = isInView(el, this$1.offsetTop, this$1.offsetLeft);\n });\n },\n write: function write(data) {\n var this$1 = this;\n this.elements.forEach(function (el) {\n var state = el[stateKey$1];\n\n var toggle = function toggle(inview) {\n css(el, 'visibility', !inview && this$1.hidden ? 'hidden' : '');\n toggleClass(el, this$1.inViewClass, inview);\n toggleClass(el, state.cls);\n trigger(el, inview ? 'inview' : 'outview');\n state.inview = inview;\n this$1.$update(el);\n };\n\n if (state.show && !state.inview && !state.queued) {\n state.queued = true;\n data.promise = (data.promise || Promise.resolve()).then(function () {\n return new Promise(function (resolve) {\n return setTimeout(resolve, this$1.delay);\n });\n }).then(function () {\n toggle(true);\n setTimeout(function () {\n state.queued = false;\n this$1.$emit();\n }, 300);\n });\n } else if (!state.show && state.inview && !state.queued && this$1.repeat) {\n toggle(false);\n }\n });\n },\n events: ['scroll', 'resize']\n }]\n };\n var scrollspyNav = {\n props: {\n cls: String,\n closest: String,\n scroll: Boolean,\n overflow: Boolean,\n offset: Number\n },\n data: {\n cls: 'uk-active',\n closest: false,\n scroll: false,\n overflow: true,\n offset: 0\n },\n computed: {\n links: {\n get: function get(_, $el) {\n return $$('a[href^=\"#\"]', $el).filter(function (el) {\n return el.hash;\n });\n },\n watch: function watch(links) {\n if (this.scroll) {\n this.$create('scroll', links, {\n offset: this.offset || 0\n });\n }\n },\n immediate: true\n },\n targets: function targets() {\n return $$(this.links.map(function (el) {\n return escape(el.hash).substr(1);\n }).join(','));\n },\n elements: function elements(ref) {\n var selector = ref.closest;\n return closest(this.links, selector || '*');\n }\n },\n update: [{\n read: function read() {\n var this$1 = this;\n var ref = this.targets;\n var length = ref.length;\n\n if (!length || !isVisible(this.$el)) {\n return false;\n }\n\n var ref$1 = scrollParents(this.targets, /auto|scroll/, true);\n var scrollElement = ref$1[0];\n var scrollTop = scrollElement.scrollTop;\n var scrollHeight = scrollElement.scrollHeight;\n var max = scrollHeight - getViewportClientHeight(scrollElement);\n var active = false;\n\n if (scrollTop === max) {\n active = length - 1;\n } else {\n this.targets.every(function (el, i) {\n if (offset(el).top - offset(getViewport(scrollElement)).top - this$1.offset <= 0) {\n active = i;\n return true;\n }\n });\n\n if (active === false && this.overflow) {\n active = 0;\n }\n }\n\n return {\n active: active\n };\n },\n write: function write(ref) {\n var active = ref.active;\n this.links.forEach(function (el) {\n return el.blur();\n });\n removeClass(this.elements, this.cls);\n\n if (active !== false) {\n trigger(this.$el, 'active', [active, addClass(this.elements[active], this.cls)]);\n }\n },\n events: ['scroll', 'resize']\n }]\n };\n var sticky = {\n mixins: [Class, Media],\n props: {\n top: null,\n bottom: Boolean,\n offset: String,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n widthElement: Boolean,\n showOnUp: Boolean,\n targetOffset: Number\n },\n data: {\n top: 0,\n bottom: false,\n offset: 0,\n animation: '',\n clsActive: 'uk-active',\n clsInactive: '',\n clsFixed: 'uk-sticky-fixed',\n clsBelow: 'uk-sticky-below',\n selTarget: '',\n widthElement: false,\n showOnUp: false,\n targetOffset: false\n },\n computed: {\n offset: function offset(ref) {\n var offset = ref.offset;\n return toPx(offset);\n },\n selTarget: function selTarget(ref, $el) {\n var selTarget = ref.selTarget;\n return selTarget && $(selTarget, $el) || $el;\n },\n widthElement: function widthElement(ref, $el) {\n var widthElement = ref.widthElement;\n return query(widthElement, $el) || this.placeholder;\n },\n isActive: {\n get: function get() {\n return hasClass(this.selTarget, this.clsActive);\n },\n set: function set(value) {\n if (value && !this.isActive) {\n replaceClass(this.selTarget, this.clsInactive, this.clsActive);\n trigger(this.$el, 'active');\n } else if (!value && !hasClass(this.selTarget, this.clsInactive)) {\n replaceClass(this.selTarget, this.clsActive, this.clsInactive);\n trigger(this.$el, 'inactive');\n }\n }\n }\n },\n connected: function connected() {\n this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('
');\n this.isFixed = false;\n this.isActive = false;\n },\n disconnected: function disconnected() {\n if (this.isFixed) {\n this.hide();\n removeClass(this.selTarget, this.clsInactive);\n }\n\n _remove(this.placeholder);\n\n this.placeholder = null;\n this.widthElement = null;\n },\n events: [{\n name: 'load hashchange popstate',\n el: function el() {\n return window;\n },\n handler: function handler() {\n var this$1 = this;\n\n if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) {\n return;\n }\n\n var target = $(location.hash);\n\n if (target) {\n fastdom.read(function () {\n var ref = offset(target);\n var top = ref.top;\n var elTop = offset(this$1.$el).top;\n var elHeight = this$1.$el.offsetHeight;\n\n if (this$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {\n scrollTop(window, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset);\n }\n });\n }\n }\n }],\n update: [{\n read: function read(ref, types) {\n var height = ref.height;\n this.inactive = !this.matchMedia || !isVisible(this.$el);\n\n if (this.inactive) {\n return false;\n }\n\n if (this.isActive && types.has('resize')) {\n this.hide();\n height = this.$el.offsetHeight;\n this.show();\n }\n\n height = !this.isActive ? this.$el.offsetHeight : height;\n this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top;\n this.bottomOffset = this.topOffset + height;\n var bottom = parseProp('bottom', this);\n this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset;\n this.bottom = bottom && bottom - this.$el.offsetHeight;\n this.width = dimensions(isVisible(this.widthElement) ? this.widthElement : this.$el).width;\n return {\n height: height,\n top: offsetPosition(this.placeholder)[0],\n margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])\n };\n },\n write: function write(ref) {\n var height = ref.height;\n var margins = ref.margins;\n var ref$1 = this;\n var placeholder = ref$1.placeholder;\n css(placeholder, assign({\n height: height\n }, margins));\n\n if (!within(placeholder, document)) {\n after(this.$el, placeholder);\n placeholder.hidden = true;\n }\n\n this.isActive = !!this.isActive; // force self-assign\n },\n events: ['resize']\n }, {\n read: function read(ref) {\n var scroll = ref.scroll;\n if (scroll === void 0) scroll = 0;\n this.scroll = window.pageYOffset;\n return {\n dir: scroll <= this.scroll ? 'down' : 'up',\n scroll: this.scroll\n };\n },\n write: function write(data, types) {\n var this$1 = this;\n var now = Date.now();\n var isScrollUpdate = types.has('scroll');\n var initTimestamp = data.initTimestamp;\n if (initTimestamp === void 0) initTimestamp = 0;\n var dir = data.dir;\n var lastDir = data.lastDir;\n var lastScroll = data.lastScroll;\n var scroll = data.scroll;\n var top = data.top;\n data.lastScroll = scroll;\n\n if (scroll < 0 || scroll === lastScroll && isScrollUpdate || this.showOnUp && !isScrollUpdate && !this.isFixed) {\n return;\n }\n\n if (now - initTimestamp > 300 || dir !== lastDir) {\n data.initScroll = scroll;\n data.initTimestamp = now;\n }\n\n data.lastDir = dir;\n\n if (this.showOnUp && !this.isFixed && Math.abs(data.initScroll - scroll) <= 30 && Math.abs(lastScroll - scroll) <= 10) {\n return;\n }\n\n if (this.inactive || scroll < this.top || this.showOnUp && (scroll <= this.top || dir === 'down' && isScrollUpdate || dir === 'up' && !this.isFixed && scroll <= this.bottomOffset)) {\n if (!this.isFixed) {\n if (Animation.inProgress(this.$el) && top > scroll) {\n Animation.cancel(this.$el);\n this.hide();\n }\n\n return;\n }\n\n this.isFixed = false;\n\n if (this.animation && scroll > this.topOffset) {\n Animation.cancel(this.$el);\n Animation.out(this.$el, this.animation).then(function () {\n return this$1.hide();\n }, noop);\n } else {\n this.hide();\n }\n } else if (this.isFixed) {\n this.update();\n } else if (this.animation) {\n Animation.cancel(this.$el);\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n } else {\n this.show();\n }\n },\n events: ['resize', 'scroll']\n }],\n methods: {\n show: function show() {\n this.isFixed = true;\n this.update();\n this.placeholder.hidden = false;\n },\n hide: function hide() {\n this.isActive = false;\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n css(this.$el, {\n position: '',\n top: '',\n width: ''\n });\n this.placeholder.hidden = true;\n },\n update: function update() {\n var active = this.top !== 0 || this.scroll > this.top;\n var top = Math.max(0, this.offset);\n\n if (isNumeric(this.bottom) && this.scroll > this.bottom - this.offset) {\n top = this.bottom - this.scroll;\n }\n\n css(this.$el, {\n position: 'fixed',\n top: top + \"px\",\n width: this.width\n });\n this.isActive = active;\n toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset);\n addClass(this.$el, this.clsFixed);\n }\n }\n };\n\n function parseProp(prop, ref) {\n var $props = ref.$props;\n var $el = ref.$el;\n var propOffset = ref[prop + \"Offset\"];\n var value = $props[prop];\n\n if (!value) {\n return;\n }\n\n if (isString(value) && value.match(/^-?\\d/)) {\n return propOffset + toPx(value);\n } else {\n return offset(value === true ? parent($el) : query(value, $el)).bottom;\n }\n }\n\n var Switcher = {\n mixins: [Togglable],\n args: 'connect',\n props: {\n connect: String,\n toggle: String,\n active: Number,\n swiping: Boolean\n },\n data: {\n connect: '~.uk-switcher',\n toggle: '> * > :first-child',\n active: 0,\n swiping: true,\n cls: 'uk-active',\n attrItem: 'uk-switcher-item'\n },\n computed: {\n connects: {\n get: function get(ref, $el) {\n var connect = ref.connect;\n return queryAll(connect, $el);\n },\n watch: function watch(connects) {\n var this$1 = this;\n\n if (this.swiping) {\n css(connects, 'touch-action', 'pan-y pinch-zoom');\n }\n\n var index = this.index();\n this.connects.forEach(function (el) {\n return _children(el).forEach(function (child, i) {\n return toggleClass(child, this$1.cls, i === index);\n });\n });\n },\n immediate: true\n },\n toggles: {\n get: function get(ref, $el) {\n var toggle = ref.toggle;\n return $$(toggle, $el).filter(function (el) {\n return !matches(el, '.uk-disabled *, .uk-disabled, [disabled]');\n });\n },\n watch: function watch(toggles) {\n var active = this.index();\n this.show(~active ? active : toggles[this.active] || toggles[0]);\n },\n immediate: true\n },\n children: function children() {\n var this$1 = this;\n return _children(this.$el).filter(function (child) {\n return this$1.toggles.some(function (toggle) {\n return within(toggle, child);\n });\n });\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.toggle;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.show(e.current);\n }\n }, {\n name: 'click',\n el: function el() {\n return this.connects;\n },\n delegate: function delegate() {\n return \"[\" + this.attrItem + \"],[data-\" + this.attrItem + \"]\";\n },\n handler: function handler(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n }, {\n name: 'swipeRight swipeLeft',\n filter: function filter() {\n return this.swiping;\n },\n el: function el() {\n return this.connects;\n },\n handler: function handler(ref) {\n var type = ref.type;\n this.show(endsWith(type, 'Left') ? 'next' : 'previous');\n }\n }],\n methods: {\n index: function index() {\n var this$1 = this;\n return findIndex(this.children, function (el) {\n return hasClass(el, this$1.cls);\n });\n },\n show: function show(item) {\n var this$1 = this;\n var prev = this.index();\n\n var next = _getIndex(this.children[_getIndex(item, this.toggles, prev)], _children(this.$el));\n\n if (prev === next) {\n return;\n }\n\n this.children.forEach(function (child, i) {\n toggleClass(child, this$1.cls, next === i);\n attr(this$1.toggles[i], 'aria-expanded', next === i);\n });\n this.connects.forEach(function (ref) {\n var children = ref.children;\n return this$1.toggleElement(toNodes(children).filter(function (child) {\n return hasClass(child, this$1.cls);\n }), false, prev >= 0).then(function () {\n return this$1.toggleElement(children[next], true, prev >= 0);\n });\n });\n }\n }\n };\n var tab = {\n mixins: [Class],\n extends: Switcher,\n props: {\n media: Boolean\n },\n data: {\n media: 960,\n attrItem: 'uk-tab-item'\n },\n connected: function connected() {\n var cls = hasClass(this.$el, 'uk-tab-left') ? 'uk-tab-left' : hasClass(this.$el, 'uk-tab-right') ? 'uk-tab-right' : false;\n\n if (cls) {\n this.$create('toggle', this.$el, {\n cls: cls,\n mode: 'media',\n media: this.media\n });\n }\n }\n };\n var toggle = {\n mixins: [Media, Togglable],\n args: 'target',\n props: {\n href: String,\n target: null,\n mode: 'list',\n queued: Boolean\n },\n data: {\n href: false,\n target: false,\n mode: 'click',\n queued: true\n },\n computed: {\n target: {\n get: function get(ref, $el) {\n var href = ref.href;\n var target = ref.target;\n target = queryAll(target || href, $el);\n return target.length && target || [$el];\n },\n watch: function watch() {\n this.updateAria();\n },\n immediate: true\n }\n },\n events: [{\n name: pointerEnter + \" \" + pointerLeave,\n filter: function filter() {\n return includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n if (!isTouch(e)) {\n this.toggle(\"toggle\" + (e.type === pointerEnter ? 'show' : 'hide'));\n }\n }\n }, {\n name: 'click',\n filter: function filter() {\n return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n var link;\n\n if (closest(e.target, 'a[href=\"#\"], a[href=\"\"]') || (link = closest(e.target, 'a[href]')) && (!isToggled(this.target, this.cls) || link.hash && matches(this.target, link.hash))) {\n e.preventDefault();\n }\n\n this.toggle();\n }\n }, {\n name: 'toggled',\n self: true,\n el: function el() {\n return this.target;\n },\n handler: function handler(e, toggled) {\n this.updateAria(toggled);\n }\n }],\n update: {\n read: function read() {\n return includes(this.mode, 'media') && this.media ? {\n match: this.matchMedia\n } : false;\n },\n write: function write(ref) {\n var match = ref.match;\n var toggled = this.isToggled(this.target);\n\n if (match ? !toggled : toggled) {\n this.toggle();\n }\n },\n events: ['resize']\n },\n methods: {\n toggle: function toggle(type) {\n var this$1 = this;\n\n if (!trigger(this.target, type || 'toggle', [this])) {\n return;\n }\n\n if (!this.queued) {\n return this.toggleElement(this.target);\n }\n\n var leaving = this.target.filter(function (el) {\n return hasClass(el, this$1.clsLeave);\n });\n\n if (leaving.length) {\n this.target.forEach(function (el) {\n var isLeaving = includes(leaving, el);\n this$1.toggleElement(el, isLeaving, isLeaving);\n });\n return;\n }\n\n var toggled = this.target.filter(this.isToggled);\n this.toggleElement(toggled, false).then(function () {\n return this$1.toggleElement(this$1.target.filter(function (el) {\n return !includes(toggled, el);\n }), true);\n });\n },\n updateAria: function updateAria(toggled) {\n attr(this.$el, 'aria-expanded', isBoolean(toggled) ? toggled : isToggled(this.target, this.cls));\n }\n }\n }; // TODO improve isToggled handling\n\n function isToggled(target, cls) {\n return cls ? hasClass(target, cls.split(' ')[0]) : isVisible(target);\n }\n\n var components = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Accordion: Accordion,\n Alert: alert,\n Cover: cover,\n Drop: drop,\n Dropdown: drop,\n FormCustom: formCustom,\n Gif: gif,\n Grid: grid,\n HeightMatch: heightMatch,\n HeightViewport: heightViewport,\n Icon: Icon,\n Img: img,\n Leader: leader,\n Margin: Margin,\n Modal: modal,\n Nav: nav,\n Navbar: navbar,\n Offcanvas: offcanvas,\n OverflowAuto: overflowAuto,\n Responsive: responsive,\n Scroll: scroll,\n Scrollspy: scrollspy,\n ScrollspyNav: scrollspyNav,\n Sticky: sticky,\n Svg: SVG,\n Switcher: Switcher,\n Tab: tab,\n Toggle: toggle,\n Video: Video,\n Close: Close,\n Spinner: Spinner,\n SlidenavNext: Slidenav,\n SlidenavPrevious: Slidenav,\n SearchIcon: Search,\n Marker: IconComponent,\n NavbarToggleIcon: IconComponent,\n OverlayIcon: IconComponent,\n PaginationNext: IconComponent,\n PaginationPrevious: IconComponent,\n Totop: IconComponent\n }); // register components\n\n each(components, function (component, name) {\n return UIkit.component(name, component);\n }); // core functionality\n\n UIkit.use(Core);\n boot(UIkit);\n var countdown = {\n mixins: [Class],\n props: {\n date: String,\n clsWrapper: String\n },\n data: {\n date: '',\n clsWrapper: '.uk-countdown-%unit%'\n },\n computed: {\n date: function date(ref) {\n var date = ref.date;\n return Date.parse(date);\n },\n days: function days(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n return $(clsWrapper.replace('%unit%', 'days'), $el);\n },\n hours: function hours(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n return $(clsWrapper.replace('%unit%', 'hours'), $el);\n },\n minutes: function minutes(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n return $(clsWrapper.replace('%unit%', 'minutes'), $el);\n },\n seconds: function seconds(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n return $(clsWrapper.replace('%unit%', 'seconds'), $el);\n },\n units: function units() {\n var this$1 = this;\n return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) {\n return this$1[unit];\n });\n }\n },\n connected: function connected() {\n this.start();\n },\n disconnected: function disconnected() {\n var this$1 = this;\n this.stop();\n this.units.forEach(function (unit) {\n return empty(this$1[unit]);\n });\n },\n events: [{\n name: 'visibilitychange',\n el: function el() {\n return document;\n },\n handler: function handler() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n }],\n update: {\n write: function write() {\n var this$1 = this;\n var timespan = getTimeSpan(this.date);\n\n if (timespan.total <= 0) {\n this.stop();\n timespan.days = timespan.hours = timespan.minutes = timespan.seconds = 0;\n }\n\n this.units.forEach(function (unit) {\n var digits = String(Math.floor(timespan[unit]));\n digits = digits.length < 2 ? \"0\" + digits : digits;\n var el = this$1[unit];\n\n if (el.textContent !== digits) {\n digits = digits.split('');\n\n if (digits.length !== el.children.length) {\n html(el, digits.map(function () {\n return '';\n }).join(''));\n }\n\n digits.forEach(function (digit, i) {\n return el.children[i].textContent = digit;\n });\n }\n });\n }\n },\n methods: {\n start: function start() {\n this.stop();\n\n if (this.date && this.units.length) {\n this.$update();\n this.timer = setInterval(this.$update, 1000);\n }\n },\n stop: function stop() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n }\n };\n\n function getTimeSpan(date) {\n var total = date - Date.now();\n return {\n total: total,\n seconds: total / 1000 % 60,\n minutes: total / 1000 / 60 % 60,\n hours: total / 1000 / 60 / 60 % 24,\n days: total / 1000 / 60 / 60 / 24\n };\n }\n\n var clsLeave = 'uk-transition-leave';\n var clsEnter = 'uk-transition-enter';\n\n function fade(action, target, duration, stagger) {\n if (stagger === void 0) stagger = 0;\n var index = transitionIndex(target, true);\n var propsIn = {\n opacity: 1\n };\n var propsOut = {\n opacity: 0\n };\n\n var wrapIndexFn = function wrapIndexFn(fn) {\n return function () {\n return index === transitionIndex(target) ? fn() : Promise.reject();\n };\n };\n\n var leaveFn = wrapIndexFn(function () {\n addClass(target, clsLeave);\n return Promise.all(getTransitionNodes(target).map(function (child, i) {\n return new Promise(function (resolve) {\n return setTimeout(function () {\n return Transition.start(child, propsOut, duration / 2, 'ease').then(resolve);\n }, i * stagger);\n });\n })).then(function () {\n return removeClass(target, clsLeave);\n });\n });\n var enterFn = wrapIndexFn(function () {\n var oldHeight = height(target);\n addClass(target, clsEnter);\n action();\n css(_children(target), {\n opacity: 0\n }); // Ensure UIkit updates have propagated\n\n return new Promise(function (resolve) {\n return requestAnimationFrame(function () {\n var nodes = _children(target);\n\n var newHeight = height(target); // Ensure Grid cells do not stretch when height is applied\n\n css(target, 'alignContent', 'flex-start');\n height(target, oldHeight);\n var transitionNodes = getTransitionNodes(target);\n css(nodes, propsOut);\n var transitions = transitionNodes.map(function (child, i) {\n return new Promise(function (resolve) {\n return setTimeout(function () {\n return Transition.start(child, propsIn, duration / 2, 'ease').then(resolve);\n }, i * stagger);\n });\n });\n\n if (oldHeight !== newHeight) {\n transitions.push(Transition.start(target, {\n height: newHeight\n }, duration / 2 + transitionNodes.length * stagger, 'ease'));\n }\n\n Promise.all(transitions).then(function () {\n removeClass(target, clsEnter);\n\n if (index === transitionIndex(target)) {\n css(target, {\n height: '',\n alignContent: ''\n });\n css(nodes, {\n opacity: ''\n });\n delete target.dataset.transition;\n }\n\n resolve();\n });\n });\n });\n });\n return hasClass(target, clsLeave) ? waitTransitionend(target).then(enterFn) : hasClass(target, clsEnter) ? waitTransitionend(target).then(leaveFn).then(enterFn) : leaveFn().then(enterFn);\n }\n\n function transitionIndex(target, next) {\n if (next) {\n target.dataset.transition = 1 + transitionIndex(target);\n }\n\n return toNumber(target.dataset.transition) || 0;\n }\n\n function waitTransitionend(target) {\n return Promise.all(_children(target).filter(Transition.inProgress).map(function (el) {\n return new Promise(function (resolve) {\n return once(el, 'transitionend transitioncanceled', resolve);\n });\n }));\n }\n\n function getTransitionNodes(target) {\n return getRows(_children(target)).reduce(function (nodes, row) {\n return nodes.concat(sortBy(row.filter(function (el) {\n return isInView(el);\n }), 'offsetLeft'));\n }, []);\n }\n\n function slide(action, target, duration) {\n return new Promise(function (resolve) {\n return requestAnimationFrame(function () {\n var nodes = _children(target); // Get current state\n\n\n var currentProps = nodes.map(function (el) {\n return getProps(el, true);\n });\n var targetProps = css(target, ['height', 'padding']); // Cancel previous animations\n\n Transition.cancel(target);\n nodes.forEach(Transition.cancel);\n reset(target); // Adding, sorting, removing nodes\n\n action(); // Find new nodes\n\n nodes = nodes.concat(_children(target).filter(function (el) {\n return !includes(nodes, el);\n })); // Wait for update to propagate\n\n Promise.resolve().then(function () {\n // Force update\n fastdom.flush(); // Get new state\n\n var targetPropsTo = css(target, ['height', 'padding']);\n var ref = getTransitionProps(target, nodes, currentProps);\n var propsTo = ref[0];\n var propsFrom = ref[1]; // Reset to previous state\n\n nodes.forEach(function (el, i) {\n return propsFrom[i] && css(el, propsFrom[i]);\n });\n css(target, assign({\n display: 'block'\n }, targetProps)); // Start transitions on next frame\n\n requestAnimationFrame(function () {\n var transitions = nodes.map(function (el, i) {\n return parent(el) === target && Transition.start(el, propsTo[i], duration, 'ease');\n }).concat(Transition.start(target, targetPropsTo, duration, 'ease'));\n Promise.all(transitions).then(function () {\n nodes.forEach(function (el, i) {\n return parent(el) === target && css(el, 'display', propsTo[i].opacity === 0 ? 'none' : '');\n });\n reset(target);\n }, noop).then(resolve);\n });\n });\n });\n });\n }\n\n function getProps(el, opacity) {\n var zIndex = css(el, 'zIndex');\n return isVisible(el) ? assign({\n display: '',\n opacity: opacity ? css(el, 'opacity') : '0',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: zIndex === 'auto' ? index(el) : zIndex\n }, getPositionWithMargin(el)) : false;\n }\n\n function getTransitionProps(target, nodes, currentProps) {\n var propsTo = nodes.map(function (el, i) {\n return parent(el) && i in currentProps ? currentProps[i] ? isVisible(el) ? getPositionWithMargin(el) : {\n opacity: 0\n } : {\n opacity: isVisible(el) ? 1 : 0\n } : false;\n });\n var propsFrom = propsTo.map(function (props, i) {\n var from = parent(nodes[i]) === target && (currentProps[i] || getProps(nodes[i]));\n\n if (!from) {\n return false;\n }\n\n if (!props) {\n delete from.opacity;\n } else if (!('opacity' in props)) {\n var opacity = from.opacity;\n\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n\n return from;\n });\n return [propsTo, propsFrom];\n }\n\n function reset(el) {\n css(el.children, {\n height: '',\n left: '',\n opacity: '',\n pointerEvents: '',\n position: '',\n top: '',\n marginTop: '',\n marginLeft: '',\n transform: '',\n width: '',\n zIndex: ''\n });\n css(el, {\n height: '',\n display: '',\n padding: ''\n });\n }\n\n function getPositionWithMargin(el) {\n var ref = offset(el);\n var height = ref.height;\n var width = ref.width;\n var ref$1 = position(el);\n var top = ref$1.top;\n var left = ref$1.left;\n var ref$2 = css(el, ['marginTop', 'marginLeft']);\n var marginLeft = ref$2.marginLeft;\n var marginTop = ref$2.marginTop;\n return {\n top: top,\n left: left,\n height: height,\n width: width,\n marginLeft: marginLeft,\n marginTop: marginTop,\n transform: ''\n };\n }\n\n var Animate = {\n props: {\n duration: Number,\n animation: Boolean\n },\n data: {\n duration: 150,\n animation: 'slide'\n },\n methods: {\n animate: function animate(action, target) {\n var this$1 = this;\n if (target === void 0) target = this.$el;\n var name = this.animation;\n var animationFn = name === 'fade' ? fade : name === 'delayed-fade' ? function () {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n return fade.apply(void 0, args.concat([40]));\n } : slide;\n return animationFn(action, target, this.duration).then(function () {\n return this$1.$update(target, 'resize');\n }, noop);\n }\n }\n };\n var filter$1 = {\n mixins: [Animate],\n args: 'target',\n props: {\n target: Boolean,\n selActive: Boolean\n },\n data: {\n target: null,\n selActive: false,\n attrItem: 'uk-filter-control',\n cls: 'uk-active',\n duration: 250\n },\n computed: {\n toggles: {\n get: function get(ref, $el) {\n var attrItem = ref.attrItem;\n return $$(\"[\" + attrItem + \"],[data-\" + attrItem + \"]\", $el);\n },\n watch: function watch() {\n var this$1 = this;\n this.updateState();\n\n if (this.selActive !== false) {\n var actives = $$(this.selActive, this.$el);\n this.toggles.forEach(function (el) {\n return toggleClass(el, this$1.cls, includes(actives, el));\n });\n }\n },\n immediate: true\n },\n children: {\n get: function get(ref, $el) {\n var target = ref.target;\n return $$(target + \" > *\", $el);\n },\n watch: function watch(list, old) {\n if (old && !isEqualList(list, old)) {\n this.updateState();\n }\n },\n immediate: true\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return \"[\" + this.attrItem + \"],[data-\" + this.attrItem + \"]\";\n },\n handler: function handler(e) {\n e.preventDefault();\n this.apply(e.current);\n }\n }],\n methods: {\n apply: function apply(el) {\n var prevState = this.getState();\n var newState = mergeState(el, this.attrItem, this.getState());\n\n if (!isEqualState(prevState, newState)) {\n this.setState(newState);\n }\n },\n getState: function getState() {\n var this$1 = this;\n return this.toggles.filter(function (item) {\n return hasClass(item, this$1.cls);\n }).reduce(function (state, el) {\n return mergeState(el, this$1.attrItem, state);\n }, {\n filter: {\n '': ''\n },\n sort: []\n });\n },\n setState: function setState(state, animate) {\n var this$1 = this;\n if (animate === void 0) animate = true;\n state = assign({\n filter: {\n '': ''\n },\n sort: []\n }, state);\n trigger(this.$el, 'beforeFilter', [this, state]);\n this.toggles.forEach(function (el) {\n return toggleClass(el, this$1.cls, !!matchFilter(el, this$1.attrItem, state));\n });\n Promise.all($$(this.target, this.$el).map(function (target) {\n var filterFn = function filterFn() {\n applyState(state, target, _children(target));\n this$1.$update(this$1.$el);\n };\n\n return animate ? this$1.animate(filterFn, target) : filterFn();\n })).then(function () {\n return trigger(this$1.$el, 'afterFilter', [this$1]);\n });\n },\n updateState: function updateState() {\n var this$1 = this;\n fastdom.write(function () {\n return this$1.setState(this$1.getState(), false);\n });\n }\n }\n };\n\n function getFilter(el, attr) {\n return parseOptions(data(el, attr), ['filter']);\n }\n\n function isEqualState(stateA, stateB) {\n return ['filter', 'sort'].every(function (prop) {\n return isEqual(stateA[prop], stateB[prop]);\n });\n }\n\n function applyState(state, target, children) {\n var selector = getSelector(state);\n children.forEach(function (el) {\n return css(el, 'display', selector && !matches(el, selector) ? 'none' : '');\n });\n var ref = state.sort;\n var sort = ref[0];\n var order = ref[1];\n\n if (sort) {\n var sorted = sortItems(children, sort, order);\n\n if (!isEqual(sorted, children)) {\n append(target, sorted);\n }\n }\n }\n\n function mergeState(el, attr, state) {\n var filterBy = getFilter(el, attr);\n var filter = filterBy.filter;\n var group = filterBy.group;\n var sort = filterBy.sort;\n var order = filterBy.order;\n if (order === void 0) order = 'asc';\n\n if (filter || isUndefined(sort)) {\n if (group) {\n if (filter) {\n delete state.filter[''];\n state.filter[group] = filter;\n } else {\n delete state.filter[group];\n\n if (isEmpty(state.filter) || '' in state.filter) {\n state.filter = {\n '': filter || ''\n };\n }\n }\n } else {\n state.filter = {\n '': filter || ''\n };\n }\n }\n\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n\n return state;\n }\n\n function matchFilter(el, attr, ref) {\n var stateFilter = ref.filter;\n if (stateFilter === void 0) stateFilter = {\n '': ''\n };\n var ref_sort = ref.sort;\n var stateSort = ref_sort[0];\n var stateOrder = ref_sort[1];\n var ref$1 = getFilter(el, attr);\n var filter = ref$1.filter;\n if (filter === void 0) filter = '';\n var group = ref$1.group;\n if (group === void 0) group = '';\n var sort = ref$1.sort;\n var order = ref$1.order;\n if (order === void 0) order = 'asc';\n return isUndefined(sort) ? group in stateFilter && filter === stateFilter[group] || !filter && group && !(group in stateFilter) && !stateFilter[''] : stateSort === sort && stateOrder === order;\n }\n\n function isEqualList(listA, listB) {\n return listA.length === listB.length && listA.every(function (el) {\n return ~listB.indexOf(el);\n });\n }\n\n function getSelector(ref) {\n var filter = ref.filter;\n var selector = '';\n each(filter, function (value) {\n return selector += value || '';\n });\n return selector;\n }\n\n function sortItems(nodes, sort, order) {\n return assign([], nodes).sort(function (a, b) {\n return data(a, sort).localeCompare(data(b, sort), undefined, {\n numeric: true\n }) * (order === 'asc' || -1);\n });\n }\n\n var Animations = {\n slide: {\n show: function show(dir) {\n return [{\n transform: _translate(dir * -100)\n }, {\n transform: _translate()\n }];\n },\n percent: function percent(current) {\n return translated(current);\n },\n translate: function translate(percent, dir) {\n return [{\n transform: _translate(dir * -100 * percent)\n }, {\n transform: _translate(dir * 100 * (1 - percent))\n }];\n }\n }\n };\n\n function translated(el) {\n return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;\n }\n\n function _translate(value, unit) {\n if (value === void 0) value = 0;\n if (unit === void 0) unit = '%';\n value += value ? unit : '';\n return isIE ? \"translateX(\" + value + \")\" : \"translate3d(\" + value + \", 0, 0)\"; // currently not translate3d in IE, translate3d within translate3d does not work while transitioning\n }\n\n function scale3d(value) {\n return \"scale3d(\" + value + \", \" + value + \", 1)\";\n }\n\n var Animations$1 = assign({}, Animations, {\n fade: {\n show: function show() {\n return [{\n opacity: 0\n }, {\n opacity: 1\n }];\n },\n percent: function percent(current) {\n return 1 - css(current, 'opacity');\n },\n translate: function translate(percent) {\n return [{\n opacity: 1 - percent\n }, {\n opacity: percent\n }];\n }\n },\n scale: {\n show: function show() {\n return [{\n opacity: 0,\n transform: scale3d(1 - .2)\n }, {\n opacity: 1,\n transform: scale3d(1)\n }];\n },\n percent: function percent(current) {\n return 1 - css(current, 'opacity');\n },\n translate: function translate(percent) {\n return [{\n opacity: 1 - percent,\n transform: scale3d(1 - .2 * percent)\n }, {\n opacity: percent,\n transform: scale3d(1 - .2 + .2 * percent)\n }];\n }\n }\n });\n\n function Transitioner(prev, next, dir, ref) {\n var animation = ref.animation;\n var easing = ref.easing;\n var _percent = animation.percent;\n var _translate2 = animation.translate;\n var show = animation.show;\n if (show === void 0) show = noop;\n var props = show(dir);\n var deferred = new Deferred();\n return {\n dir: dir,\n show: function show(duration, percent, linear) {\n var this$1 = this;\n if (percent === void 0) percent = 0;\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n this.translate(percent);\n triggerUpdate(next, 'itemin', {\n percent: percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n triggerUpdate(prev, 'itemout', {\n percent: 1 - percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n Promise.all([Transition.start(next, props[1], duration, timing), Transition.start(prev, props[0], duration, timing)]).then(function () {\n this$1.reset();\n deferred.resolve();\n }, noop);\n return deferred.promise;\n },\n cancel: function cancel() {\n Transition.cancel([next, prev]);\n },\n reset: function reset() {\n for (var prop in props[0]) {\n css([next, prev], prop, '');\n }\n },\n forward: function forward(duration, percent) {\n if (percent === void 0) percent = this.percent();\n Transition.cancel([next, prev]);\n return this.show(duration, percent, true);\n },\n translate: function translate(percent) {\n this.reset();\n\n var props = _translate2(percent, dir);\n\n css(next, props[1]);\n css(prev, props[0]);\n triggerUpdate(next, 'itemtranslatein', {\n percent: percent,\n dir: dir\n });\n triggerUpdate(prev, 'itemtranslateout', {\n percent: 1 - percent,\n dir: dir\n });\n },\n percent: function percent() {\n return _percent(prev || next, next, dir);\n },\n getDistance: function getDistance() {\n return prev && prev.offsetWidth;\n }\n };\n }\n\n function triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n var SliderAutoplay = {\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n data: {\n autoplay: false,\n autoplayInterval: 7000,\n pauseOnHover: true\n },\n connected: function connected() {\n this.autoplay && this.startAutoplay();\n },\n disconnected: function disconnected() {\n this.stopAutoplay();\n },\n update: function update() {\n attr(this.slides, 'tabindex', '-1');\n },\n events: [{\n name: 'visibilitychange',\n el: function el() {\n return document;\n },\n filter: function filter() {\n return this.autoplay;\n },\n handler: function handler() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n }],\n methods: {\n startAutoplay: function startAutoplay() {\n var this$1 = this;\n this.stopAutoplay();\n this.interval = setInterval(function () {\n return (!this$1.draggable || !$(':focus', this$1.$el)) && (!this$1.pauseOnHover || !matches(this$1.$el, ':hover')) && !this$1.stack.length && this$1.show('next');\n }, this.autoplayInterval);\n },\n stopAutoplay: function stopAutoplay() {\n this.interval && clearInterval(this.interval);\n }\n }\n };\n var SliderDrag = {\n props: {\n draggable: Boolean\n },\n data: {\n draggable: true,\n threshold: 10\n },\n created: function created() {\n var this$1 = this;\n ['start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n\n this$1[key] = function (e) {\n var pos = getEventPos(e).x * (isRtl ? -1 : 1);\n this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos;\n this$1.pos = pos;\n fn(e);\n };\n });\n },\n events: [{\n name: pointerDown,\n delegate: function delegate() {\n return this.selSlides;\n },\n handler: function handler(e) {\n if (!this.draggable || !isTouch(e) && hasTextNodesOnly(e.target) || closest(e.target, selInput) || e.button > 0 || this.length < 2) {\n return;\n }\n\n this.start(e);\n }\n }, {\n name: 'dragstart',\n handler: function handler(e) {\n e.preventDefault();\n }\n }],\n methods: {\n start: function start() {\n this.drag = this.pos;\n\n if (this._transitioner) {\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n\n this._transitioner.cancel();\n\n this._transitioner.translate(this.percent);\n\n this.dragging = true;\n this.stack = [];\n } else {\n this.prevIndex = this.index;\n }\n\n on(document, pointerMove, this.move, {\n passive: false\n }); // 'input' event is triggered by video controls\n\n on(document, pointerUp + \" \" + pointerCancel + \" input\", this.end, true);\n css(this.list, 'userSelect', 'none');\n },\n move: function move(e) {\n var this$1 = this;\n var distance = this.pos - this.drag;\n\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n } // prevent click event\n\n\n css(this.list, 'pointerEvents', 'none');\n e.cancelable && e.preventDefault();\n this.dragging = true;\n this.dir = distance < 0 ? 1 : -1;\n var ref = this;\n var slides = ref.slides;\n var ref$1 = this;\n var prevIndex = ref$1.prevIndex;\n var dis = Math.abs(distance);\n var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n while (nextIndex !== prevIndex && dis > width) {\n this.drag -= width * this.dir;\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n }\n\n this.percent = dis / width;\n var prev = slides[prevIndex];\n var next = slides[nextIndex];\n var changed = this.index !== nextIndex;\n var edge = prevIndex === nextIndex;\n var itemShown;\n [this.index, this.prevIndex].filter(function (i) {\n return !includes([nextIndex, prevIndex], i);\n }).forEach(function (i) {\n trigger(slides[i], 'itemhidden', [this$1]);\n\n if (edge) {\n itemShown = true;\n this$1.prevIndex = prevIndex;\n }\n });\n\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], 'itemshown', [this]);\n }\n\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n !edge && trigger(prev, 'beforeitemhide', [this]);\n trigger(next, 'beforeitemshow', [this]);\n }\n\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n\n if (changed) {\n !edge && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n }\n },\n end: function end() {\n off(document, pointerMove, this.move, {\n passive: false\n });\n off(document, pointerUp + \" \" + pointerCancel + \" input\", this.end, true);\n\n if (this.dragging) {\n this.dragging = null;\n\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n\n this._show(false, this.index, true);\n\n this._transitioner = null;\n } else {\n var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n\n this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true);\n }\n }\n\n css(this.list, {\n userSelect: '',\n pointerEvents: ''\n });\n this.drag = this.percent = null;\n }\n }\n };\n\n function hasTextNodesOnly(el) {\n return !el.children.length && el.childNodes.length;\n }\n\n var SliderNav = {\n data: {\n selNav: false\n },\n computed: {\n nav: function nav(ref, $el) {\n var selNav = ref.selNav;\n return $(selNav, $el);\n },\n selNavItem: function selNavItem(ref) {\n var attrItem = ref.attrItem;\n return \"[\" + attrItem + \"],[data-\" + attrItem + \"]\";\n },\n navItems: function navItems(_, $el) {\n return $$(this.selNavItem, $el);\n }\n },\n update: {\n write: function write() {\n var this$1 = this;\n\n if (this.nav && this.length !== this.nav.children.length) {\n html(this.nav, this.slides.map(function (_, i) {\n return \"
  • \";\n }).join(''));\n }\n\n this.navItems.concat(this.nav).forEach(function (el) {\n return el && (el.hidden = !this$1.maxIndex);\n });\n this.updateNav();\n },\n events: ['resize']\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.selNavItem;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n }, {\n name: 'itemshow',\n handler: 'updateNav'\n }],\n methods: {\n updateNav: function updateNav() {\n var this$1 = this;\n var i = this.getValidIndex();\n this.navItems.forEach(function (el) {\n var cmd = data(el, this$1.attrItem);\n toggleClass(el, this$1.clsActive, toNumber(cmd) === i);\n toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex));\n });\n }\n }\n };\n var Slider = {\n mixins: [SliderAutoplay, SliderDrag, SliderNav],\n props: {\n clsActivated: Boolean,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number,\n selSlides: String\n },\n data: function data() {\n return {\n easing: 'ease',\n finite: false,\n velocity: 1,\n index: 0,\n prevIndex: -1,\n stack: [],\n percent: 0,\n clsActive: 'uk-active',\n clsActivated: false,\n Transitioner: false,\n transitionOptions: {}\n };\n },\n connected: function connected() {\n this.prevIndex = -1;\n this.index = this.getValidIndex(this.$props.index);\n this.stack = [];\n },\n disconnected: function disconnected() {\n removeClass(this.slides, this.clsActive);\n },\n computed: {\n duration: function duration(ref, $el) {\n var velocity = ref.velocity;\n return speedUp($el.offsetWidth / velocity);\n },\n list: function list(ref, $el) {\n var selList = ref.selList;\n return $(selList, $el);\n },\n maxIndex: function maxIndex() {\n return this.length - 1;\n },\n selSlides: function selSlides(ref) {\n var selList = ref.selList;\n var selSlides = ref.selSlides;\n return selList + \" \" + (selSlides || '> *');\n },\n slides: {\n get: function get() {\n return $$(this.selSlides, this.$el);\n },\n watch: function watch() {\n this.$reset();\n }\n },\n length: function length() {\n return this.slides.length;\n }\n },\n events: {\n itemshown: function itemshown() {\n this.$update(this.list);\n }\n },\n methods: {\n show: function show(index, force) {\n var this$1 = this;\n if (force === void 0) force = false;\n\n if (this.dragging || !this.length) {\n return;\n }\n\n var ref = this;\n var stack = ref.stack;\n var queueIndex = force ? 0 : stack.length;\n\n var reset = function reset() {\n stack.splice(queueIndex, 1);\n\n if (stack.length) {\n this$1.show(stack.shift(), true);\n }\n };\n\n stack[force ? 'unshift' : 'push'](index);\n\n if (!force && stack.length > 1) {\n if (stack.length === 2) {\n this._transitioner.forward(Math.min(this.duration, 200));\n }\n\n return;\n }\n\n var prevIndex = this.getIndex(this.index);\n var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n var nextIndex = this.getIndex(index, this.index);\n var next = this.slides[nextIndex];\n\n if (prev === next) {\n reset();\n return;\n }\n\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n if (prev && !trigger(prev, 'beforeitemhide', [this]) || !trigger(next, 'beforeitemshow', [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n\n var promise = this._show(prev, next, force).then(function () {\n prev && trigger(prev, 'itemhidden', [this$1]);\n trigger(next, 'itemshown', [this$1]);\n return new Promise(function (resolve) {\n fastdom.write(function () {\n stack.shift();\n\n if (stack.length) {\n this$1.show(stack.shift(), true);\n } else {\n this$1._transitioner = null;\n }\n\n resolve();\n });\n });\n });\n\n prev && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n return promise;\n },\n getIndex: function getIndex(index, prev) {\n if (index === void 0) index = this.index;\n if (prev === void 0) prev = this.index;\n return clamp(_getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);\n },\n getValidIndex: function getValidIndex(index, prevIndex) {\n if (index === void 0) index = this.index;\n if (prevIndex === void 0) prevIndex = this.prevIndex;\n return this.getIndex(index, prevIndex);\n },\n _show: function _show(prev, next, force) {\n this._transitioner = this._getTransitioner(prev, next, this.dir, assign({\n easing: force ? next.offsetWidth < 600 ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)'\n /* easeOutQuad */\n : 'cubic-bezier(0.165, 0.84, 0.44, 1)'\n /* easeOutQuart */\n : this.easing\n }, this.transitionOptions));\n\n if (!force && !prev) {\n this._translate(1);\n\n return Promise.resolve();\n }\n\n var ref = this.stack;\n var length = ref.length;\n return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent);\n },\n _getDistance: function _getDistance(prev, next) {\n return this._getTransitioner(prev, prev !== next && next).getDistance();\n },\n _translate: function _translate(percent, prev, next) {\n if (prev === void 0) prev = this.prevIndex;\n if (next === void 0) next = this.index;\n\n var transitioner = this._getTransitioner(prev !== next ? prev : false, next);\n\n transitioner.translate(percent);\n return transitioner;\n },\n _getTransitioner: function _getTransitioner(prev, next, dir, options) {\n if (prev === void 0) prev = this.prevIndex;\n if (next === void 0) next = this.index;\n if (dir === void 0) dir = this.dir || 1;\n if (options === void 0) options = this.transitionOptions;\n return new this.Transitioner(isNumber(prev) ? this.slides[prev] : prev, isNumber(next) ? this.slides[next] : next, dir * (isRtl ? -1 : 1), options);\n }\n }\n };\n\n function getDirection(index, prevIndex) {\n return index === 'next' ? 1 : index === 'previous' ? -1 : index < prevIndex ? -1 : 1;\n }\n\n function speedUp(x) {\n return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)\n }\n\n var Slideshow = {\n mixins: [Slider],\n props: {\n animation: String\n },\n data: {\n animation: 'slide',\n clsActivated: 'uk-transition-active',\n Animations: Animations,\n Transitioner: Transitioner\n },\n computed: {\n animation: function animation(ref) {\n var animation = ref.animation;\n var Animations = ref.Animations;\n return assign(Animations[animation] || Animations.slide, {\n name: animation\n });\n },\n transitionOptions: function transitionOptions() {\n return {\n animation: this.animation\n };\n }\n },\n events: {\n 'itemshow itemhide itemshown itemhidden': function itemshowItemhideItemshownItemhidden(ref) {\n var target = ref.target;\n this.$update(target);\n },\n beforeitemshow: function beforeitemshow(ref) {\n var target = ref.target;\n addClass(target, this.clsActive);\n },\n itemshown: function itemshown(ref) {\n var target = ref.target;\n addClass(target, this.clsActivated);\n },\n itemhidden: function itemhidden(ref) {\n var target = ref.target;\n removeClass(target, this.clsActive, this.clsActivated);\n }\n }\n };\n var LightboxPanel = {\n mixins: [Container, Modal, Togglable, Slideshow],\n functional: true,\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n data: function data() {\n return {\n preload: 1,\n videoAutoplay: false,\n delayControls: 3000,\n items: [],\n cls: 'uk-open',\n clsPage: 'uk-lightbox-page',\n selList: '.uk-lightbox-items',\n attrItem: 'uk-lightbox-item',\n selClose: '.uk-close-large',\n selCaption: '.uk-lightbox-caption',\n pauseOnHover: false,\n velocity: 2,\n Animations: Animations$1,\n template: \"
      \"\n };\n },\n created: function created() {\n var $el = $(this.template);\n var list = $(this.selList, $el);\n this.items.forEach(function () {\n return append(list, '
    • ');\n });\n this.$mount(append(this.container, $el));\n },\n computed: {\n caption: function caption(ref, $el) {\n var selCaption = ref.selCaption;\n return $(selCaption, $el);\n }\n },\n events: [{\n name: pointerMove + \" \" + pointerDown + \" keydown\",\n handler: 'showControls'\n }, {\n name: 'click',\n self: true,\n delegate: function delegate() {\n return this.selSlides;\n },\n handler: function handler(e) {\n if (e.defaultPrevented) {\n return;\n }\n\n this.hide();\n }\n }, {\n name: 'shown',\n self: true,\n handler: function handler() {\n this.showControls();\n }\n }, {\n name: 'hide',\n self: true,\n handler: function handler() {\n this.hideControls();\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n this.$destroy(true);\n }\n }, {\n name: 'keyup',\n el: function el() {\n return document;\n },\n handler: function handler(e) {\n if (!this.isToggled(this.$el) || !this.draggable) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n this.show('previous');\n break;\n\n case 39:\n this.show('next');\n break;\n }\n }\n }, {\n name: 'beforeitemshow',\n handler: function handler(e) {\n if (this.isToggled()) {\n return;\n }\n\n this.draggable = false;\n e.preventDefault();\n this.toggleElement(this.$el, true, false);\n this.animation = Animations$1['scale'];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n }\n }, {\n name: 'itemshow',\n handler: function handler() {\n html(this.caption, this.getItem().caption || '');\n\n for (var j = -this.preload; j <= this.preload; j++) {\n this.loadItem(this.index + j);\n }\n }\n }, {\n name: 'itemshown',\n handler: function handler() {\n this.draggable = this.$props.draggable;\n }\n }, {\n name: 'itemload',\n handler: function handler(_, item) {\n var this$1 = this;\n var src = item.source;\n var type = item.type;\n var alt = item.alt;\n if (alt === void 0) alt = '';\n var poster = item.poster;\n var attrs = item.attrs;\n if (attrs === void 0) attrs = {};\n this.setItem(item, '');\n\n if (!src) {\n return;\n }\n\n var matches;\n var iframeAttrs = {\n frameborder: '0',\n allow: 'autoplay',\n allowfullscreen: '',\n style: 'max-width: 100%; box-sizing: border-box;',\n 'uk-responsive': '',\n 'uk-video': \"\" + this.videoAutoplay\n }; // Image\n\n if (type === 'image' || src.match(/\\.(avif|jpe?g|a?png|gif|svg|webp)($|\\?)/i)) {\n getImage(src, attrs.srcset, attrs.size).then(function (ref) {\n var width = ref.width;\n var height = ref.height;\n return this$1.setItem(item, createEl('img', assign({\n src: src,\n width: width,\n height: height,\n alt: alt\n }, attrs)));\n }, function () {\n return this$1.setError(item);\n }); // Video\n } else if (type === 'video' || src.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n var video = createEl('video', assign({\n src: src,\n poster: poster,\n controls: '',\n playsinline: '',\n 'uk-video': \"\" + this.videoAutoplay\n }, attrs));\n on(video, 'loadedmetadata', function () {\n attr(video, {\n width: video.videoWidth,\n height: video.videoHeight\n });\n this$1.setItem(item, video);\n });\n on(video, 'error', function () {\n return this$1.setError(item);\n }); // Iframe\n } else if (type === 'iframe' || src.match(/\\.(html|php)($|\\?)/i)) {\n this.setItem(item, createEl('iframe', assign({\n src: src,\n frameborder: '0',\n allowfullscreen: '',\n class: 'uk-lightbox-iframe'\n }, attrs))); // YouTube\n } else if (matches = src.match(/\\/\\/(?:.*?youtube(-nocookie)?\\..*?[?&]v=|youtu\\.be\\/)([\\w-]{11})[&?]?(.*)?/)) {\n this.setItem(item, createEl('iframe', assign({\n src: \"https://www.youtube\" + (matches[1] || '') + \".com/embed/\" + matches[2] + (matches[3] ? \"?\" + matches[3] : ''),\n width: 1920,\n height: 1080\n }, iframeAttrs, attrs))); // Vimeo\n } else if (matches = src.match(/\\/\\/.*?vimeo\\.[a-z]+\\/(\\d+)[&?]?(.*)?/)) {\n ajax(\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\" + encodeURI(src), {\n responseType: 'json',\n withCredentials: false\n }).then(function (ref) {\n var ref_response = ref.response;\n var height = ref_response.height;\n var width = ref_response.width;\n return this$1.setItem(item, createEl('iframe', assign({\n src: \"https://player.vimeo.com/video/\" + matches[1] + (matches[2] ? \"?\" + matches[2] : ''),\n width: width,\n height: height\n }, iframeAttrs, attrs)));\n }, function () {\n return this$1.setError(item);\n });\n }\n }\n }],\n methods: {\n loadItem: function loadItem(index) {\n if (index === void 0) index = this.index;\n var item = this.getItem(index);\n\n if (!this.getSlide(item).childElementCount) {\n trigger(this.$el, 'itemload', [item]);\n }\n },\n getItem: function getItem(index) {\n if (index === void 0) index = this.index;\n return this.items[_getIndex(index, this.slides)];\n },\n setItem: function setItem(item, content) {\n trigger(this.$el, 'itemloaded', [this, html(this.getSlide(item), content)]);\n },\n getSlide: function getSlide(item) {\n return this.slides[this.items.indexOf(item)];\n },\n setError: function setError(item) {\n this.setItem(item, '');\n },\n showControls: function showControls() {\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n addClass(this.$el, 'uk-active', 'uk-transition-active');\n },\n hideControls: function hideControls() {\n removeClass(this.$el, 'uk-active', 'uk-transition-active');\n }\n }\n };\n\n function createEl(tag, attrs) {\n var el = fragment(\"<\" + tag + \">\");\n attr(el, attrs);\n return el;\n }\n\n var lightbox = {\n install: install$2,\n props: {\n toggle: String\n },\n data: {\n toggle: 'a'\n },\n computed: {\n toggles: {\n get: function get(ref, $el) {\n var toggle = ref.toggle;\n return $$(toggle, $el);\n },\n watch: function watch() {\n this.hide();\n }\n }\n },\n disconnected: function disconnected() {\n this.hide();\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.toggle + \":not(.uk-disabled)\";\n },\n handler: function handler(e) {\n e.preventDefault();\n this.show(e.current);\n }\n }],\n methods: {\n show: function show(index) {\n var this$1 = this;\n var items = uniqueBy(this.toggles.map(toItem), 'source');\n\n if (isElement(index)) {\n var ref = toItem(index);\n var source = ref.source;\n index = findIndex(items, function (ref) {\n var src = ref.source;\n return source === src;\n });\n }\n\n this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, {\n items: items\n }));\n on(this.panel.$el, 'hidden', function () {\n return this$1.panel = false;\n });\n return this.panel.show(index);\n },\n hide: function hide() {\n return this.panel && this.panel.hide();\n }\n }\n };\n\n function install$2(UIkit, Lightbox) {\n if (!UIkit.lightboxPanel) {\n UIkit.component('lightboxPanel', LightboxPanel);\n }\n\n assign(Lightbox.props, UIkit.component('lightboxPanel').options.props);\n }\n\n function toItem(el) {\n var item = {};\n ['href', 'caption', 'type', 'poster', 'alt', 'attrs'].forEach(function (attr) {\n item[attr === 'href' ? 'source' : attr] = data(el, attr);\n });\n item.attrs = parseOptions(item.attrs);\n return item;\n }\n\n var obj;\n var notification = {\n mixins: [Container],\n functional: true,\n args: ['message', 'status'],\n data: {\n message: '',\n status: '',\n timeout: 5000,\n group: null,\n pos: 'top-center',\n clsContainer: 'uk-notification',\n clsClose: 'uk-notification-close',\n clsMsg: 'uk-notification-message'\n },\n install: install$3,\n computed: {\n marginProp: function marginProp(ref) {\n var pos = ref.pos;\n return \"margin\" + (startsWith(pos, 'top') ? 'Top' : 'Bottom');\n },\n startProps: function startProps() {\n var obj;\n return obj = {\n opacity: 0\n }, obj[this.marginProp] = -this.$el.offsetHeight, obj;\n }\n },\n created: function created() {\n var container = $(\".\" + this.clsContainer + \"-\" + this.pos, this.container) || append(this.container, \"
      \");\n this.$mount(append(container, \"
      \" + this.message + \"
      \"));\n },\n connected: function connected() {\n var this$1 = this;\n var obj;\n var margin = toFloat(css(this.$el, this.marginProp));\n Transition.start(css(this.$el, this.startProps), (obj = {\n opacity: 1\n }, obj[this.marginProp] = margin, obj)).then(function () {\n if (this$1.timeout) {\n this$1.timer = setTimeout(this$1.close, this$1.timeout);\n }\n });\n },\n events: (obj = {\n click: function click(e) {\n if (closest(e.target, 'a[href=\"#\"],a[href=\"\"]')) {\n e.preventDefault();\n }\n\n this.close();\n }\n }, obj[pointerEnter] = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }, obj[pointerLeave] = function () {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }, obj),\n methods: {\n close: function close(immediate) {\n var this$1 = this;\n\n var removeFn = function removeFn(el) {\n var container = parent(el);\n trigger(el, 'close', [this$1]);\n\n _remove(el);\n\n if (container && !container.hasChildNodes()) {\n _remove(container);\n }\n };\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (immediate) {\n removeFn(this.$el);\n } else {\n Transition.start(this.$el, this.startProps).then(removeFn);\n }\n }\n }\n };\n\n function install$3(UIkit) {\n UIkit.notification.closeAll = function (group, immediate) {\n apply(document.body, function (el) {\n var notification = UIkit.getComponent(el, 'notification');\n\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var _props = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity', 'stroke'];\n var Parallax = {\n mixins: [Media],\n props: _props.reduce(function (props, prop) {\n props[prop] = 'list';\n return props;\n }, {}),\n data: _props.reduce(function (data, prop) {\n data[prop] = undefined;\n return data;\n }, {}),\n computed: {\n props: function props(properties, $el) {\n var this$1 = this;\n return _props.reduce(function (props, prop) {\n if (isUndefined(properties[prop])) {\n return props;\n }\n\n var isColor = prop.match(/color/i);\n var isCssProp = isColor || prop === 'opacity';\n var pos, bgPos, diff;\n var steps = properties[prop].slice();\n\n if (isCssProp) {\n css($el, prop, '');\n }\n\n if (steps.length < 2) {\n steps.unshift((prop === 'scale' ? 1 : isCssProp ? css($el, prop) : 0) || 0);\n }\n\n var unit = getUnit(steps);\n\n if (isColor) {\n var ref = $el.style;\n var color = ref.color;\n steps = steps.map(function (step) {\n return parseColor($el, step);\n });\n $el.style.color = color;\n } else if (startsWith(prop, 'bg')) {\n var attr = prop === 'bgy' ? 'height' : 'width';\n steps = steps.map(function (step) {\n return toPx(step, attr, this$1.$el);\n });\n css($el, \"background-position-\" + prop[2], '');\n bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]\n\n if (this$1.covers) {\n var min = Math.min.apply(Math, steps);\n var max = Math.max.apply(Math, steps);\n var down = steps.indexOf(min) < steps.indexOf(max);\n diff = max - min;\n steps = steps.map(function (step) {\n return step - (down ? min : max);\n });\n pos = (down ? -diff : 0) + \"px\";\n } else {\n pos = bgPos;\n }\n } else {\n steps = steps.map(toFloat);\n }\n\n if (prop === 'stroke') {\n if (!steps.some(function (step) {\n return step;\n })) {\n return props;\n }\n\n var length = getMaxPathLength(this$1.$el);\n css($el, 'strokeDasharray', length);\n\n if (unit === '%') {\n steps = steps.map(function (step) {\n return step * length / 100;\n });\n }\n\n steps = steps.reverse();\n prop = 'strokeDashoffset';\n }\n\n props[prop] = {\n steps: steps,\n unit: unit,\n pos: pos,\n bgPos: bgPos,\n diff: diff\n };\n return props;\n }, {});\n },\n bgProps: function bgProps() {\n var this$1 = this;\n return ['bgx', 'bgy'].filter(function (bg) {\n return bg in this$1.props;\n });\n },\n covers: function covers(_, $el) {\n return _covers($el);\n }\n },\n disconnected: function disconnected() {\n delete this._image;\n },\n update: {\n read: function read(data) {\n var this$1 = this;\n\n if (!this.matchMedia) {\n return;\n }\n\n if (!data.image && this.covers && this.bgProps.length) {\n var src = css(this.$el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n\n if (src) {\n var img = new Image();\n img.src = src;\n data.image = img;\n\n if (!img.naturalWidth) {\n img.onload = function () {\n return this$1.$update();\n };\n }\n }\n }\n\n var image = data.image;\n\n if (!image || !image.naturalWidth) {\n return;\n }\n\n var dimEl = {\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n };\n var dimImage = {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n var dim = Dimensions.cover(dimImage, dimEl);\n this.bgProps.forEach(function (prop) {\n var ref = this$1.props[prop];\n var diff = ref.diff;\n var bgPos = ref.bgPos;\n var steps = ref.steps;\n var attr = prop === 'bgy' ? 'height' : 'width';\n var span = dim[attr] - dimEl[attr];\n\n if (span < diff) {\n dimEl[attr] = dim[attr] + diff - span;\n } else if (span > diff) {\n var posPercentage = dimEl[attr] / toPx(bgPos, attr, this$1.$el);\n\n if (posPercentage) {\n this$1.props[prop].steps = steps.map(function (step) {\n return step - (span - diff) / posPercentage;\n });\n }\n }\n\n dim = Dimensions.cover(dimImage, dimEl);\n });\n data.dim = dim;\n },\n write: function write(ref) {\n var dim = ref.dim;\n\n if (!this.matchMedia) {\n css(this.$el, {\n backgroundSize: '',\n backgroundRepeat: ''\n });\n return;\n }\n\n dim && css(this.$el, {\n backgroundSize: dim.width + \"px \" + dim.height + \"px\",\n backgroundRepeat: 'no-repeat'\n });\n },\n events: ['resize']\n },\n methods: {\n reset: function reset() {\n var this$1 = this;\n each(this.getCss(0), function (_, prop) {\n return css(this$1.$el, prop, '');\n });\n },\n getCss: function getCss(percent) {\n var ref = this;\n var props = ref.props;\n return Object.keys(props).reduce(function (css, prop) {\n var ref = props[prop];\n var steps = ref.steps;\n var unit = ref.unit;\n var pos = ref.pos;\n var value = getValue(steps, percent);\n\n switch (prop) {\n // transforms\n case 'x':\n case 'y':\n {\n unit = unit || 'px';\n css.transform += \" translate\" + ucfirst(prop) + \"(\" + toFloat(value).toFixed(unit === 'px' ? 0 : 2) + unit + \")\";\n break;\n }\n\n case 'rotate':\n unit = unit || 'deg';\n css.transform += \" rotate(\" + (value + unit) + \")\";\n break;\n\n case 'scale':\n css.transform += \" scale(\" + value + \")\";\n break;\n // bg image\n\n case 'bgy':\n case 'bgx':\n css[\"background-position-\" + prop[2]] = \"calc(\" + pos + \" + \" + value + \"px)\";\n break;\n // color\n\n case 'color':\n case 'backgroundColor':\n case 'borderColor':\n {\n var ref$1 = getStep(steps, percent);\n var start = ref$1[0];\n var end = ref$1[1];\n var p = ref$1[2];\n css[prop] = \"rgba(\" + start.map(function (value, i) {\n value = value + p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n }).join(',') + \")\";\n break;\n }\n // CSS Filter\n\n case 'blur':\n unit = unit || 'px';\n css.filter += \" blur(\" + (value + unit) + \")\";\n break;\n\n case 'hue':\n unit = unit || 'deg';\n css.filter += \" hue-rotate(\" + (value + unit) + \")\";\n break;\n\n case 'fopacity':\n unit = unit || '%';\n css.filter += \" opacity(\" + (value + unit) + \")\";\n break;\n\n case 'grayscale':\n case 'invert':\n case 'saturate':\n case 'sepia':\n unit = unit || '%';\n css.filter += \" \" + prop + \"(\" + (value + unit) + \")\";\n break;\n\n default:\n css[prop] = value;\n }\n\n return css;\n }, {\n transform: '',\n filter: ''\n });\n }\n }\n };\n\n function parseColor(el, color) {\n return css(css(el, 'color', color), 'color').split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat);\n }\n\n function getStep(steps, percent) {\n var count = steps.length - 1;\n var index = Math.min(Math.floor(count * percent), count - 1);\n var step = steps.slice(index, index + 2);\n step.push(percent === 1 ? 1 : percent % (1 / count) * count);\n return step;\n }\n\n function getValue(steps, percent, digits) {\n if (digits === void 0) digits = 2;\n var ref = getStep(steps, percent);\n var start = ref[0];\n var end = ref[1];\n var p = ref[2];\n return (isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end).toFixed(digits);\n }\n\n function getUnit(steps) {\n return steps.reduce(function (unit, step) {\n return isString(step) && step.replace(/-|\\d/g, '').trim() || unit;\n }, '');\n }\n\n function _covers(el) {\n var ref = el.style;\n var backgroundSize = ref.backgroundSize;\n var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover';\n el.style.backgroundSize = backgroundSize;\n return covers;\n }\n\n var parallax = {\n mixins: [Parallax],\n props: {\n target: String,\n viewport: Number,\n easing: Number\n },\n data: {\n target: false,\n viewport: 1,\n easing: 1\n },\n computed: {\n target: function target(ref, $el) {\n var target = ref.target;\n return getOffsetElement(target && query(target, $el) || $el);\n }\n },\n update: {\n read: function read(ref, types) {\n var percent = ref.percent;\n\n if (!types.has('scroll')) {\n percent = false;\n }\n\n if (!this.matchMedia) {\n return;\n }\n\n var prev = percent;\n percent = ease(scrolledOver(this.target) / (this.viewport || 1), this.easing);\n return {\n percent: percent,\n style: prev !== percent ? this.getCss(percent) : false\n };\n },\n write: function write(ref) {\n var style = ref.style;\n\n if (!this.matchMedia) {\n this.reset();\n return;\n }\n\n style && css(this.$el, style);\n },\n events: ['scroll', 'resize']\n }\n };\n\n function ease(percent, easing) {\n return clamp(percent * (1 - (easing - easing * percent)));\n } // SVG elements do not inherit from HTMLElement\n\n\n function getOffsetElement(el) {\n return el ? 'offsetTop' in el ? el : getOffsetElement(parent(el)) : document.body;\n }\n\n var SliderReactive = {\n update: {\n write: function write() {\n if (this.stack.length || this.dragging) {\n return;\n }\n\n var index = this.getValidIndex(this.index);\n\n if (!~this.prevIndex || this.index !== index) {\n this.show(index);\n }\n },\n events: ['resize']\n }\n };\n\n function Transitioner$1(prev, next, dir, ref) {\n var center = ref.center;\n var easing = ref.easing;\n var list = ref.list;\n var deferred = new Deferred();\n var from = prev ? getLeft(prev, list, center) : getLeft(next, list, center) + dimensions(next).width * dir;\n var to = next ? getLeft(next, list, center) : from + dimensions(prev).width * dir * (isRtl ? -1 : 1);\n return {\n dir: dir,\n show: function show(duration, percent, linear) {\n if (percent === void 0) percent = 0;\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n this.translate(percent);\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate$1(this.getItemIn(), 'itemin', {\n percent: percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n prev && triggerUpdate$1(this.getItemIn(true), 'itemout', {\n percent: 1 - percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n Transition.start(list, {\n transform: _translate(-to * (isRtl ? -1 : 1), 'px')\n }, duration, timing).then(deferred.resolve, noop);\n return deferred.promise;\n },\n cancel: function cancel() {\n Transition.cancel(list);\n },\n reset: function reset() {\n css(list, 'transform', '');\n },\n forward: function forward(duration, percent) {\n if (percent === void 0) percent = this.percent();\n Transition.cancel(list);\n return this.show(duration, percent, true);\n },\n translate: function translate(percent) {\n var distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n css(list, 'transform', _translate(clamp(-to + (distance - distance * percent), -getWidth(list), dimensions(list).width) * (isRtl ? -1 : 1), 'px'));\n var actives = this.getActives();\n var itemIn = this.getItemIn();\n var itemOut = this.getItemIn(true);\n percent = prev ? clamp(percent, -1, 1) : 0;\n\n _children(list).forEach(function (slide, i) {\n var isActive = includes(actives, slide);\n var isIn = slide === itemIn;\n var isOut = slide === itemOut;\n var translateIn = isIn || !isOut && (isActive || dir * (isRtl ? -1 : 1) === -1 ^ getElLeft(slide, list) > getElLeft(prev || next));\n triggerUpdate$1(slide, \"itemtranslate\" + (translateIn ? 'in' : 'out'), {\n dir: dir,\n percent: isOut ? 1 - percent : isIn ? percent : isActive ? 1 : 0\n });\n });\n },\n percent: function percent() {\n return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));\n },\n getDistance: function getDistance() {\n return Math.abs(to - from);\n },\n getItemIn: function getItemIn(out) {\n if (out === void 0) out = false;\n var actives = this.getActives();\n var nextActives = inView(list, getLeft(next || prev, list, center));\n\n if (out) {\n var temp = actives;\n actives = nextActives;\n nextActives = temp;\n }\n\n return nextActives[findIndex(nextActives, function (el) {\n return !includes(actives, el);\n })];\n },\n getActives: function getActives() {\n return inView(list, getLeft(prev || next, list, center));\n }\n };\n }\n\n function getLeft(el, list, center) {\n var left = getElLeft(el, list);\n return center ? left - centerEl(el, list) : Math.min(left, getMax(list));\n }\n\n function getMax(list) {\n return Math.max(0, getWidth(list) - dimensions(list).width);\n }\n\n function getWidth(list) {\n return _children(list).reduce(function (right, el) {\n return dimensions(el).width + right;\n }, 0);\n }\n\n function centerEl(el, list) {\n return dimensions(list).width / 2 - dimensions(el).width / 2;\n }\n\n function getElLeft(el, list) {\n return el && (position(el).left + (isRtl ? dimensions(el).width - dimensions(list).width : 0)) * (isRtl ? -1 : 1) || 0;\n }\n\n function inView(list, listLeft) {\n listLeft -= 1;\n var listRight = listLeft + dimensions(list).width + 2;\n return _children(list).filter(function (slide) {\n var slideLeft = getElLeft(slide, list);\n var slideRight = slideLeft + dimensions(slide).width;\n return slideLeft >= listLeft && slideRight <= listRight;\n });\n }\n\n function triggerUpdate$1(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n var slider = {\n mixins: [Class, Slider, SliderReactive],\n props: {\n center: Boolean,\n sets: Boolean\n },\n data: {\n center: false,\n sets: false,\n attrItem: 'uk-slider-item',\n selList: '.uk-slider-items',\n selNav: '.uk-slider-nav',\n clsContainer: 'uk-slider-container',\n Transitioner: Transitioner$1\n },\n computed: {\n avgWidth: function avgWidth() {\n return getWidth(this.list) / this.length;\n },\n finite: function finite(ref) {\n var finite = ref.finite;\n return finite || Math.ceil(getWidth(this.list)) < dimensions(this.list).width + getMaxElWidth(this.list) + this.center;\n },\n maxIndex: function maxIndex() {\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n\n if (this.center) {\n return last(this.sets);\n }\n\n var lft = 0;\n var max = getMax(this.list);\n var index = findIndex(this.slides, function (el) {\n if (lft >= max) {\n return true;\n }\n\n lft += dimensions(el).width;\n });\n return ~index ? index : this.length - 1;\n },\n sets: function sets(ref) {\n var this$1 = this;\n var sets = ref.sets;\n\n if (!sets) {\n return;\n }\n\n var width = dimensions(this.list).width / (this.center ? 2 : 1);\n var left = 0;\n var leftCenter = width;\n var slideLeft = 0;\n sets = sortBy(this.slides, 'offsetLeft').reduce(function (sets, slide, i) {\n var slideWidth = dimensions(slide).width;\n var slideRight = slideLeft + slideWidth;\n\n if (slideRight > left) {\n if (!this$1.center && i > this$1.maxIndex) {\n i = this$1.maxIndex;\n }\n\n if (!includes(sets, i)) {\n var cmp = this$1.slides[i + 1];\n\n if (this$1.center && cmp && slideWidth < leftCenter - dimensions(cmp).width / 2) {\n leftCenter -= slideWidth;\n } else {\n leftCenter = width;\n sets.push(i);\n left = slideLeft + width + (this$1.center ? slideWidth / 2 : 0);\n }\n }\n }\n\n slideLeft += slideWidth;\n return sets;\n }, []);\n return !isEmpty(sets) && sets;\n },\n transitionOptions: function transitionOptions() {\n return {\n center: this.center,\n list: this.list\n };\n }\n },\n connected: function connected() {\n toggleClass(this.$el, this.clsContainer, !$(\".\" + this.clsContainer, this.$el));\n },\n update: {\n write: function write() {\n var this$1 = this;\n this.navItems.forEach(function (el) {\n var index = toNumber(data(el, this$1.attrItem));\n\n if (index !== false) {\n el.hidden = !this$1.maxIndex || index > this$1.maxIndex || this$1.sets && !includes(this$1.sets, index);\n }\n });\n\n if (this.length && !this.dragging && !this.stack.length) {\n this.reorder();\n\n this._translate(1);\n }\n\n var actives = this._getTransitioner(this.index).getActives();\n\n this.slides.forEach(function (slide) {\n return toggleClass(slide, this$1.clsActive, includes(actives, slide));\n });\n\n if (this.clsActivated && (!this.sets || includes(this.sets, toFloat(this.index)))) {\n this.slides.forEach(function (slide) {\n return toggleClass(slide, this$1.clsActivated || '', includes(actives, slide));\n });\n }\n },\n events: ['resize']\n },\n events: {\n beforeitemshow: function beforeitemshow(e) {\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n\n var diff = Math.abs(this.index - this.prevIndex + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0));\n\n if (!this.dragging && diff > 1) {\n for (var i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');\n }\n\n e.preventDefault();\n return;\n }\n\n var index = this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;\n this.duration = speedUp(this.avgWidth / this.velocity) * (dimensions(this.slides[index]).width / this.avgWidth);\n this.reorder();\n },\n itemshow: function itemshow() {\n ~this.prevIndex && addClass(this._getTransitioner().getItemIn(), this.clsActive);\n }\n },\n methods: {\n reorder: function reorder() {\n var this$1 = this;\n\n if (this.finite) {\n css(this.slides, 'order', '');\n return;\n }\n\n var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n this.slides.forEach(function (slide, i) {\n return css(slide, 'order', this$1.dir > 0 && i < index ? 1 : this$1.dir < 0 && i >= this$1.index ? -1 : '');\n });\n\n if (!this.center) {\n return;\n }\n\n var next = this.slides[index];\n var width = dimensions(this.list).width / 2 - dimensions(next).width / 2;\n var j = 0;\n\n while (width > 0) {\n var slideIndex = this.getIndex(--j + index, index);\n var slide = this.slides[slideIndex];\n css(slide, 'order', slideIndex > index ? -2 : -1);\n width -= dimensions(slide).width;\n }\n },\n getValidIndex: function getValidIndex(index, prevIndex) {\n if (index === void 0) index = this.index;\n if (prevIndex === void 0) prevIndex = this.prevIndex;\n index = this.getIndex(index, prevIndex);\n\n if (!this.sets) {\n return index;\n }\n\n var prev;\n\n do {\n if (includes(this.sets, index)) {\n return index;\n }\n\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n } while (index !== prev);\n\n return index;\n }\n }\n };\n\n function getMaxElWidth(list) {\n return Math.max.apply(Math, [0].concat(_children(list).map(function (el) {\n return dimensions(el).width;\n })));\n }\n\n var sliderParallax = {\n mixins: [Parallax],\n data: {\n selItem: '!li'\n },\n computed: {\n item: function item(ref, $el) {\n var selItem = ref.selItem;\n return query(selItem, $el);\n }\n },\n events: [{\n name: 'itemin itemout',\n self: true,\n el: function el() {\n return this.item;\n },\n handler: function handler(ref) {\n var this$1 = this;\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var duration = ref_detail.duration;\n var timing = ref_detail.timing;\n var dir = ref_detail.dir;\n fastdom.read(function () {\n var propsFrom = this$1.getCss(getCurrentPercent(type, dir, percent));\n var propsTo = this$1.getCss(isIn(type) ? .5 : dir > 0 ? 1 : 0);\n fastdom.write(function () {\n css(this$1.$el, propsFrom);\n Transition.start(this$1.$el, propsTo, duration, timing).catch(noop);\n });\n });\n }\n }, {\n name: 'transitioncanceled transitionend',\n self: true,\n el: function el() {\n return this.item;\n },\n handler: function handler() {\n Transition.cancel(this.$el);\n }\n }, {\n name: 'itemtranslatein itemtranslateout',\n self: true,\n el: function el() {\n return this.item;\n },\n handler: function handler(ref) {\n var this$1 = this;\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var dir = ref_detail.dir;\n fastdom.read(function () {\n var props = this$1.getCss(getCurrentPercent(type, dir, percent));\n fastdom.write(function () {\n return css(this$1.$el, props);\n });\n });\n }\n }]\n };\n\n function isIn(type) {\n return endsWith(type, 'in');\n }\n\n function getCurrentPercent(type, dir, percent) {\n percent /= 2;\n return !isIn(type) ? dir < 0 ? percent : 1 - percent : dir < 0 ? 1 - percent : percent;\n }\n\n var Animations$2 = assign({}, Animations, {\n fade: {\n show: function show() {\n return [{\n opacity: 0,\n zIndex: 0\n }, {\n zIndex: -1\n }];\n },\n percent: function percent(current) {\n return 1 - css(current, 'opacity');\n },\n translate: function translate(percent) {\n return [{\n opacity: 1 - percent,\n zIndex: 0\n }, {\n zIndex: -1\n }];\n }\n },\n scale: {\n show: function show() {\n return [{\n opacity: 0,\n transform: scale3d(1 + .5),\n zIndex: 0\n }, {\n zIndex: -1\n }];\n },\n percent: function percent(current) {\n return 1 - css(current, 'opacity');\n },\n translate: function translate(percent) {\n return [{\n opacity: 1 - percent,\n transform: scale3d(1 + .5 * percent),\n zIndex: 0\n }, {\n zIndex: -1\n }];\n }\n },\n pull: {\n show: function show(dir) {\n return dir < 0 ? [{\n transform: _translate(30),\n zIndex: -1\n }, {\n transform: _translate(),\n zIndex: 0\n }] : [{\n transform: _translate(-100),\n zIndex: 0\n }, {\n transform: _translate(),\n zIndex: -1\n }];\n },\n percent: function percent(current, next, dir) {\n return dir < 0 ? 1 - translated(next) : translated(current);\n },\n translate: function translate(percent, dir) {\n return dir < 0 ? [{\n transform: _translate(30 * percent),\n zIndex: -1\n }, {\n transform: _translate(-100 * (1 - percent)),\n zIndex: 0\n }] : [{\n transform: _translate(-percent * 100),\n zIndex: 0\n }, {\n transform: _translate(30 * (1 - percent)),\n zIndex: -1\n }];\n }\n },\n push: {\n show: function show(dir) {\n return dir < 0 ? [{\n transform: _translate(100),\n zIndex: 0\n }, {\n transform: _translate(),\n zIndex: -1\n }] : [{\n transform: _translate(-30),\n zIndex: -1\n }, {\n transform: _translate(),\n zIndex: 0\n }];\n },\n percent: function percent(current, next, dir) {\n return dir > 0 ? 1 - translated(next) : translated(current);\n },\n translate: function translate(percent, dir) {\n return dir < 0 ? [{\n transform: _translate(percent * 100),\n zIndex: 0\n }, {\n transform: _translate(-30 * (1 - percent)),\n zIndex: -1\n }] : [{\n transform: _translate(-30 * percent),\n zIndex: -1\n }, {\n transform: _translate(100 * (1 - percent)),\n zIndex: 0\n }];\n }\n }\n });\n var slideshow = {\n mixins: [Class, Slideshow, SliderReactive],\n props: {\n ratio: String,\n minHeight: Number,\n maxHeight: Number\n },\n data: {\n ratio: '16:9',\n minHeight: false,\n maxHeight: false,\n selList: '.uk-slideshow-items',\n attrItem: 'uk-slideshow-item',\n selNav: '.uk-slideshow-nav',\n Animations: Animations$2\n },\n update: {\n read: function read() {\n var ref = this.ratio.split(':').map(Number);\n var width = ref[0];\n var height = ref[1];\n height = height * this.list.offsetWidth / width || 0;\n\n if (this.minHeight) {\n height = Math.max(this.minHeight, height);\n }\n\n if (this.maxHeight) {\n height = Math.min(this.maxHeight, height);\n }\n\n return {\n height: height - boxModelAdjust(this.list, 'height', 'content-box')\n };\n },\n write: function write(ref) {\n var height = ref.height;\n height > 0 && css(this.list, 'minHeight', height);\n },\n events: ['resize']\n }\n };\n var sortable = {\n mixins: [Class, Animate],\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n data: {\n group: false,\n threshold: 5,\n clsItem: 'uk-sortable-item',\n clsPlaceholder: 'uk-sortable-placeholder',\n clsDrag: 'uk-sortable-drag',\n clsDragState: 'uk-drag',\n clsBase: 'uk-sortable',\n clsNoDrag: 'uk-sortable-nodrag',\n clsEmpty: 'uk-sortable-empty',\n clsCustom: '',\n handle: false,\n pos: {}\n },\n created: function created() {\n var this$1 = this;\n ['init', 'start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n\n this$1[key] = function (e) {\n assign(this$1.pos, getEventPos(e));\n fn(e);\n };\n });\n },\n events: {\n name: pointerDown,\n passive: false,\n handler: 'init'\n },\n computed: {\n target: function target() {\n return (this.$el.tBodies || [this.$el])[0];\n },\n items: function items() {\n return _children(this.target);\n },\n isEmpty: {\n get: function get() {\n return isEmpty(this.items);\n },\n watch: function watch(empty) {\n toggleClass(this.target, this.clsEmpty, empty);\n },\n immediate: true\n },\n handles: {\n get: function get(ref, el) {\n var handle = ref.handle;\n return handle ? $$(handle, el) : this.items;\n },\n watch: function watch(handles, prev) {\n css(prev, {\n touchAction: '',\n userSelect: ''\n });\n css(handles, {\n touchAction: hasTouch ? 'none' : '',\n userSelect: 'none'\n }); // touchAction set to 'none' causes a performance drop in Chrome 80\n },\n immediate: true\n }\n },\n update: {\n write: function write(data) {\n if (!this.drag || !parent(this.placeholder)) {\n return;\n }\n\n var ref = this;\n var ref_pos = ref.pos;\n var x = ref_pos.x;\n var y = ref_pos.y;\n var ref_origin = ref.origin;\n var offsetTop = ref_origin.offsetTop;\n var offsetLeft = ref_origin.offsetLeft;\n var placeholder = ref.placeholder;\n css(this.drag, {\n top: y - offsetTop,\n left: x - offsetLeft\n });\n var sortable = this.getSortable(document.elementFromPoint(x, y));\n\n if (!sortable) {\n return;\n }\n\n var items = sortable.items;\n\n if (items.some(Transition.inProgress)) {\n return;\n }\n\n var target = findTarget(items, {\n x: x,\n y: y\n });\n\n if (items.length && (!target || target === placeholder)) {\n return;\n }\n\n var previous = this.getSortable(placeholder);\n var insertTarget = findInsertTarget(sortable.target, target, placeholder, x, y, sortable === previous && data.moved !== target);\n\n if (insertTarget === false) {\n return;\n }\n\n if (insertTarget && placeholder === insertTarget) {\n return;\n }\n\n if (sortable !== previous) {\n previous.remove(placeholder);\n data.moved = target;\n } else {\n delete data.moved;\n }\n\n sortable.insert(placeholder, insertTarget);\n this.touched.add(sortable);\n },\n events: ['move']\n },\n methods: {\n init: function init(e) {\n var target = e.target;\n var button = e.button;\n var defaultPrevented = e.defaultPrevented;\n var ref = this.items.filter(function (el) {\n return within(target, el);\n });\n var placeholder = ref[0];\n\n if (!placeholder || defaultPrevented || button > 0 || isInput(target) || within(target, \".\" + this.clsNoDrag) || this.handle && !within(target, this.handle)) {\n return;\n }\n\n e.preventDefault();\n this.touched = new Set([this]);\n this.placeholder = placeholder;\n this.origin = assign({\n target: target,\n index: index(placeholder)\n }, this.pos);\n on(document, pointerMove, this.move);\n on(document, pointerUp, this.end);\n\n if (!this.threshold) {\n this.start(e);\n }\n },\n start: function start(e) {\n this.drag = appendDrag(this.$container, this.placeholder);\n var ref = this.placeholder.getBoundingClientRect();\n var left = ref.left;\n var top = ref.top;\n assign(this.origin, {\n offsetLeft: this.pos.x - left,\n offsetTop: this.pos.y - top\n });\n addClass(this.drag, this.clsDrag, this.clsCustom);\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.items, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n trigger(this.$el, 'start', [this, this.placeholder]);\n trackScroll(this.pos);\n this.move(e);\n },\n move: function move(e) {\n if (this.drag) {\n this.$emit('move');\n } else if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {\n this.start(e);\n }\n },\n end: function end() {\n var this$1 = this;\n off(document, pointerMove, this.move);\n off(document, pointerUp, this.end);\n off(window, 'scroll', this.scroll);\n\n if (!this.drag) {\n return;\n }\n\n untrackScroll();\n var sortable = this.getSortable(this.placeholder);\n\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, 'moved', [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, 'added', [sortable, this.placeholder]);\n trigger(this.$el, 'removed', [this, this.placeholder]);\n }\n\n trigger(this.$el, 'stop', [this, this.placeholder]);\n\n _remove(this.drag);\n\n this.drag = null;\n this.touched.forEach(function (ref) {\n var clsPlaceholder = ref.clsPlaceholder;\n var clsItem = ref.clsItem;\n return this$1.touched.forEach(function (sortable) {\n return removeClass(sortable.items, clsPlaceholder, clsItem);\n });\n });\n this.touched = null;\n removeClass(document.documentElement, this.clsDragState);\n },\n insert: function insert(element, target) {\n var this$1 = this;\n addClass(this.items, this.clsItem);\n\n var insert = function insert() {\n return target ? before(target, element) : append(this$1.target, element);\n };\n\n if (this.animation) {\n this.animate(insert);\n } else {\n insert();\n }\n },\n remove: function remove(element) {\n if (!within(element, this.target)) {\n return;\n }\n\n if (this.animation) {\n this.animate(function () {\n return _remove(element);\n });\n } else {\n _remove(element);\n }\n },\n getSortable: function getSortable(element) {\n do {\n var sortable = this.$getComponent(element, 'sortable');\n\n if (sortable && (sortable === this || this.group !== false && sortable.group === this.group)) {\n return sortable;\n }\n } while (element = parent(element));\n }\n }\n };\n var trackTimer;\n\n function trackScroll(pos) {\n var last = Date.now();\n trackTimer = setInterval(function () {\n var x = pos.x;\n var y = pos.y;\n y += window.pageYOffset;\n var dist = (Date.now() - last) * .3;\n last = Date.now();\n scrollParents(document.elementFromPoint(x, pos.y)).reverse().some(function (scrollEl) {\n var scroll = scrollEl.scrollTop;\n var scrollHeight = scrollEl.scrollHeight;\n var ref = offset(getViewport(scrollEl));\n var top = ref.top;\n var bottom = ref.bottom;\n var height = ref.height;\n\n if (top < y && top + 35 > y) {\n scroll -= dist;\n } else if (bottom > y && bottom - 35 < y) {\n scroll += dist;\n } else {\n return;\n }\n\n if (scroll > 0 && scroll < scrollHeight - height) {\n scrollTop(scrollEl, scroll);\n return true;\n }\n });\n }, 15);\n }\n\n function untrackScroll() {\n clearInterval(trackTimer);\n }\n\n function appendDrag(container, element) {\n var clone = append(container, element.outerHTML.replace(/(^<)(?:li|tr)|(?:li|tr)(\\/>$)/g, '$1div$2'));\n css(clone, 'margin', '0', 'important');\n css(clone, assign({\n boxSizing: 'border-box',\n width: element.offsetWidth,\n height: element.offsetHeight\n }, css(element, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));\n height(clone.firstElementChild, height(element.firstElementChild));\n return clone;\n }\n\n function findTarget(items, point) {\n return items[findIndex(items, function (item) {\n return pointInRect(point, item.getBoundingClientRect());\n })];\n }\n\n function findInsertTarget(list, target, placeholder, x, y, sameList) {\n if (!_children(list).length) {\n return;\n }\n\n var rect = target.getBoundingClientRect();\n\n if (!sameList) {\n if (!isHorizontal(list, placeholder)) {\n return y < rect.top + rect.height / 2 ? target : target.nextElementSibling;\n }\n\n return target;\n }\n\n var placeholderRect = placeholder.getBoundingClientRect();\n var sameRow = linesIntersect([rect.top, rect.bottom], [placeholderRect.top, placeholderRect.bottom]);\n var pointerPos = sameRow ? x : y;\n var lengthProp = sameRow ? 'width' : 'height';\n var startProp = sameRow ? 'left' : 'top';\n var endProp = sameRow ? 'right' : 'bottom';\n var diff = placeholderRect[lengthProp] < rect[lengthProp] ? rect[lengthProp] - placeholderRect[lengthProp] : 0;\n\n if (placeholderRect[startProp] < rect[startProp]) {\n if (diff && pointerPos < rect[startProp] + diff) {\n return false;\n }\n\n return target.nextElementSibling;\n }\n\n if (diff && pointerPos > rect[endProp] - diff) {\n return false;\n }\n\n return target;\n }\n\n function isHorizontal(list, placeholder) {\n var single = _children(list).length === 1;\n\n if (single) {\n append(list, placeholder);\n }\n\n var items = _children(list);\n\n var isHorizontal = items.some(function (el, i) {\n var rectA = el.getBoundingClientRect();\n return items.slice(i + 1).some(function (el) {\n var rectB = el.getBoundingClientRect();\n return !linesIntersect([rectA.left, rectA.right], [rectB.left, rectB.right]);\n });\n });\n\n if (single) {\n _remove(placeholder);\n }\n\n return isHorizontal;\n }\n\n function linesIntersect(lineA, lineB) {\n return lineA[1] > lineB[0] && lineB[1] > lineA[0];\n }\n\n var obj$1;\n var tooltip = {\n mixins: [Container, Togglable, Position],\n args: 'title',\n props: {\n delay: Number,\n title: String\n },\n data: {\n pos: 'top',\n title: '',\n delay: 0,\n animation: ['uk-animation-scale-up'],\n duration: 100,\n cls: 'uk-active',\n clsPos: 'uk-tooltip'\n },\n beforeConnect: function beforeConnect() {\n this._hasTitle = hasAttr(this.$el, 'title');\n attr(this.$el, 'title', '');\n this.updateAria(false);\n makeFocusable(this.$el);\n },\n disconnected: function disconnected() {\n this.hide();\n attr(this.$el, 'title', this._hasTitle ? this.title : null);\n },\n methods: {\n show: function show() {\n var this$1 = this;\n\n if (this.isToggled(this.tooltip || null) || !this.title) {\n return;\n }\n\n this._unbind = once(document, \"show keydown \" + pointerDown, this.hide, false, function (e) {\n return e.type === pointerDown && !within(e.target, this$1.$el) || e.type === 'keydown' && e.keyCode === 27 || e.type === 'show' && e.detail[0] !== this$1 && e.detail[0].$name === this$1.$name;\n });\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(this._show, this.delay);\n },\n hide: function hide() {\n var this$1 = this;\n\n if (matches(this.$el, 'input:focus')) {\n return;\n }\n\n clearTimeout(this.showTimer);\n\n if (!this.isToggled(this.tooltip || null)) {\n return;\n }\n\n this.toggleElement(this.tooltip, false, false).then(function () {\n this$1.tooltip = _remove(this$1.tooltip);\n\n this$1._unbind();\n });\n },\n _show: function _show() {\n var this$1 = this;\n this.tooltip = append(this.container, \"
      \" + this.title + \"
      \");\n on(this.tooltip, 'toggled', function (e, toggled) {\n this$1.updateAria(toggled);\n\n if (!toggled) {\n return;\n }\n\n this$1.positionAt(this$1.tooltip, this$1.$el);\n this$1.origin = this$1.getAxis() === 'y' ? flipPosition(this$1.dir) + \"-\" + this$1.align : this$1.align + \"-\" + flipPosition(this$1.dir);\n });\n this.toggleElement(this.tooltip, true);\n },\n updateAria: function updateAria(toggled) {\n attr(this.$el, 'aria-expanded', toggled);\n }\n },\n events: (obj$1 = {\n focus: 'show',\n blur: 'hide'\n }, obj$1[pointerEnter + \" \" + pointerLeave] = function (e) {\n if (!isTouch(e)) {\n this[e.type === pointerEnter ? 'show' : 'hide']();\n }\n }, obj$1[pointerDown] = function (e) {\n if (isTouch(e)) {\n this.show();\n }\n }, obj$1)\n };\n\n function makeFocusable(el) {\n if (!isFocusable(el)) {\n attr(el, 'tabindex', '0');\n }\n }\n\n function isFocusable(el) {\n return isInput(el) || matches(el, 'a,button') || hasAttr(el, 'tabindex');\n }\n\n var upload = {\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n msgInvalidMime: String,\n msgInvalidName: String,\n msgInvalidSize: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String\n },\n data: {\n allow: false,\n clsDragover: 'uk-dragover',\n concurrent: 1,\n maxSize: 0,\n method: 'POST',\n mime: false,\n msgInvalidMime: 'Invalid File Type: %s',\n msgInvalidName: 'Invalid File Name: %s',\n msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',\n multiple: false,\n name: 'files[]',\n params: {},\n type: '',\n url: '',\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n events: {\n change: function change(e) {\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n\n e.preventDefault();\n\n if (e.target.files) {\n this.upload(e.target.files);\n }\n\n e.target.value = '';\n },\n drop: function drop(e) {\n stop(e);\n var transfer = e.dataTransfer;\n\n if (!transfer || !transfer.files) {\n return;\n }\n\n removeClass(this.$el, this.clsDragover);\n this.upload(transfer.files);\n },\n dragenter: function dragenter(e) {\n stop(e);\n },\n dragover: function dragover(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n dragleave: function dragleave(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n },\n methods: {\n upload: function upload(files) {\n var this$1 = this;\n\n if (!files.length) {\n return;\n }\n\n trigger(this.$el, 'upload', [files]);\n\n for (var i = 0; i < files.length; i++) {\n if (this.maxSize && this.maxSize * 1000 < files[i].size) {\n this.fail(this.msgInvalidSize.replace('%s', this.maxSize));\n return;\n }\n\n if (this.allow && !match$1(this.allow, files[i].name)) {\n this.fail(this.msgInvalidName.replace('%s', this.allow));\n return;\n }\n\n if (this.mime && !match$1(this.mime, files[i].type)) {\n this.fail(this.msgInvalidMime.replace('%s', this.mime));\n return;\n }\n }\n\n if (!this.multiple) {\n files = [files[0]];\n }\n\n this.beforeAll(this, files);\n var chunks = chunk(files, this.concurrent);\n\n var upload = function upload(files) {\n var data = new FormData();\n files.forEach(function (file) {\n return data.append(this$1.name, file);\n });\n\n for (var key in this$1.params) {\n data.append(key, this$1.params[key]);\n }\n\n ajax(this$1.url, {\n data: data,\n method: this$1.method,\n responseType: this$1.type,\n beforeSend: function beforeSend(env) {\n var xhr = env.xhr;\n xhr.upload && on(xhr.upload, 'progress', this$1.progress);\n ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) {\n return on(xhr, type.toLowerCase(), this$1[type]);\n });\n return this$1.beforeSend(env);\n }\n }).then(function (xhr) {\n this$1.complete(xhr);\n\n if (chunks.length) {\n upload(chunks.shift());\n } else {\n this$1.completeAll(xhr);\n }\n }, function (e) {\n return this$1.error(e);\n });\n };\n\n upload(chunks.shift());\n }\n }\n };\n\n function match$1(pattern, path) {\n return path.match(new RegExp(\"^\" + pattern.replace(/\\//g, '\\\\/').replace(/\\*\\*/g, '(\\\\/[^\\\\/]+)*').replace(/\\*/g, '[^\\\\/]+').replace(/((?!\\\\))\\?/g, '$1.') + \"$\", 'i'));\n }\n\n function chunk(files, size) {\n var chunks = [];\n\n for (var i = 0; i < files.length; i += size) {\n var chunk = [];\n\n for (var j = 0; j < size; j++) {\n chunk.push(files[i + j]);\n }\n\n chunks.push(chunk);\n }\n\n return chunks;\n }\n\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n var components$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Countdown: countdown,\n Filter: filter$1,\n Lightbox: lightbox,\n LightboxPanel: LightboxPanel,\n Notification: notification,\n Parallax: parallax,\n Slider: slider,\n SliderParallax: sliderParallax,\n Slideshow: slideshow,\n SlideshowParallax: sliderParallax,\n Sortable: sortable,\n Tooltip: tooltip,\n Upload: upload\n });\n each(components$1, function (component, name) {\n return UIkit.component(name, component);\n });\n return UIkit;\n});"],"sourceRoot":""}