| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/framework7/node_modules/framework7/ |
Upload File : |
{"version":3,"file":"framework7-bundle.min.js","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","_len14","arguments","args","_key14","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","dom","j","_len10","els","_key10","toAdd","_len","classes","_key","classNames","map","c","classList","add","initialProps","initialParams","props","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","prop","replace","parseFloat","currentValue","time","startTime","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","animateInstance","fireCallBack","e","off","newChild","k","undefined","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","parentNode","removeChild","textContent","returnIndex","foundElements","found","_len4","_key4","className","contains","innerHeight","css","display","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","next","_len6","_key6","eventType","targetSelector","listener","capture","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","proxyListener","splice","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","_len5","_key5","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","_len2","_key2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","options","selected","val","innerWidth","methods","methodName","signum","num","lerp","start","amount","clampDouble","input","sanitizeDegreesDouble","degrees","matrixMultiply","row","matrix","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","delinearized","redFromArgb","argb","greenFromArgb","blueFromArgb","lstarFromArgb","labF","linearized","xyzFromArgb","yFromLstar","lstar","ft","ft3","labInvf","lstarFromY","y","rgbComponent","normalized","pow","round","t","ViewingConditions","make","whitePoint","adaptingLuminance","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","f","d","exp","nc","rgbD","k4","k4F","fl","cbrt","n","z","sqrt","nbb","ncb","rgbAFactors","rgbA","aw","fLRoot","DEFAULT","Cam16","hue","chroma","q","m","s","jstar","astar","bstar","distance","other","dJ","dA","dB","dEPrime","fromInt","fromIntInViewingConditions","viewingConditions","redL","greenL","blueL","x","rC","gC","bC","rD","gD","bD","rAF","abs","gAF","bAF","rA","gA","bA","b","u","p2","atanDegrees","atan2","hueRadians","ac","huePrime","alpha","mstar","log","sin","fromJch","h","fromJchInViewingConditions","fromUcs","fromUcsInViewingConditions","toInt","viewed","hRad","eHue","p1","hSin","hCos","gamma","rCBase","gCBase","bCBase","rF","gF","bF","linearR","linearG","linearB","argbFromXyz","fromXyzInViewingConditions","J","Q","C","M","xyzInViewingConditions","HctSolver","sanitizeRadians","angle","trueDelinearized","chromaticAdaptation","component","af","hueOf","scaledDiscount","SCALED_DISCOUNT_FROM_LINRGB","areInCyclicOrder","intercept","source","mid","lerpPoint","setCoordinate","coordinate","axis","isBounded","nthVertex","kR","Y_FROM_LINRGB","kG","kB","coordA","coordB","g","r","bisectToSegment","targetHue","right","leftHue","rightHue","initialized","uncut","midHue","midpoint","criticalPlaneBelow","floor","criticalPlaneAbove","ceil","bisectToLimit","segment","lPlane","rPlane","mPlane","midPlaneCoordinate","CRITICAL_PLANES","inverseChromaticAdaptation","adapted","adaptedAbs","base","findResultByJ","tInnerCoeff","iterationRound","jNormalized","LINRGB_FROM_SCALED_DISCOUNT","fnj","solveToInt","hueDegrees","argbFromLstar","exactAnswer","solveToCam","Hct","from","tone","internalHue","newHue","setInternalState","internalChroma","internalTone","newChroma","newTone","cam","inViewingConditions","vc","viewedInVc","recastInVc","Blend","harmonize","designColor","sourceColor","fromHct","toHct","differenceDegrees$1","rotationDegrees","outputHue","hctHue","to","ucs","cam16Ucs","ucsCam","fromCam","toCam","fromJ","fromA","fromB","Contrast","ratioOfTones","toneA","toneB","ratioOfYs","y1","y2","lighter","ratio","darkY","lightY","realContrast","delta","returnValue","darker","lighterUnsafe","lighterSafe","darkerUnsafe","darkerSafe","DislikeAnalyzer","isDisliked","hct","huePasses","chromaPasses","tonePasses","fixIfDisliked","DynamicColor","fromPalette","palette","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","hctCache","Map","Error","getArgb","scheme","getHct","cachedAnswer","getTone","answer","size","clear","decreasingContrast","contrastLevel","roleA","roleB","polarity","stayTogether","bgTone","aIsNearer","isDark","nearer","farther","amNearer","expansionDir","nContrast","getContrast","fContrast","nInitialTone","nTone","foregroundTone","fInitialTone","fTone","desiredRatio","bg1","bg2","bgTone1","bgTone2","upper","lower","lightOption","darkOption","availables","tonePrefersLightForeground","lighterTone","darkerTone","lighterRatio","darkerRatio","negligibleDifference","toneAllowsLightForeground","enableLightForeground","Variant","MONOCHROME","NEUTRAL","TONAL_SPOT","VIBRANT","EXPRESSIVE","FIDELITY","CONTENT","RAINBOW","FRUIT_SALAD","ContrastCurve","low","normal","medium","high","ToneDeltaPair","isFidelity","variant","isMonochrome","performAlbers","prealbers","albersd","viewingConditionsForAlbers","MaterialDynamicColors","highestSurface","surfaceBright","surfaceDim","contentAccentToneDelta","primaryPaletteKeyColor","primaryPalette","keyColor","secondaryPaletteKeyColor","secondaryPalette","tertiaryPaletteKeyColor","tertiaryPalette","neutralPaletteKeyColor","neutralPalette","neutralVariantPaletteKeyColor","neutralVariantPalette","onBackground","surface","surfaceContainerLowest","surfaceContainerLow","surfaceContainer","surfaceContainerHigh","surfaceContainerHighest","onSurface","surfaceVariant","onSurfaceVariant","inverseSurface","inverseOnSurface","outline","outlineVariant","shadow","scrim","surfaceTint","primary","primaryContainer","onPrimary","sourceColorHct","onPrimaryContainer","inversePrimary","secondary","secondaryContainer","onSecondary","initialTone","byDecreasingTone","closestToChroma","chromaPeak","potentialSolution","findDesiredChromaByTone","onSecondaryContainer","tertiary","tertiaryContainer","onTertiary","albersTone","proposedHct","onTertiaryContainer","error","errorPalette","errorContainer","onError","onErrorContainer","primaryFixed","primaryFixedDim","onPrimaryFixed","onPrimaryFixedVariant","secondaryFixed","secondaryFixedDim","onSecondaryFixed","onSecondaryFixedVariant","tertiaryFixed","tertiaryFixedDim","onTertiaryFixed","onTertiaryFixedVariant","TonalPalette","fromHueAndChroma","createKeyColor","cache","smallestDeltaHct","smallestDelta","hctAdd","hctAddDelta","hctSubtract","hctSubtractDelta","CorePalette","of","contentOf","fromColors","colors","createPaletteFromColors","contentFromColors","content","p","a2","a1","a3","neutral","n1","neutralVariant","n2","isContent","Scheme","light","lightFromCorePalette","dark","darkFromCorePalette","lightContent","darkContent","core","toJSON","hexFromArgb","outParts","toString","part","entries","join","argbFromHex","hex","isThree","isSix","isEight","parseIntHex","slice","repeat","parseInt","themeFromSourceColor","customColors","schemes","palettes","color","blend","tones","onColor","colorContainer","onColorContainer","customColor","toRGBA","l","rgba","String","materialColors","hexColor","theme","char","shouldSkip","v","includes","uniqueNum","mask","random","mdPreloaderContent","iosPreloaderContent","eventNameToColonCase","hasColon","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","query","param","urlToParse","paramsPart","decodeURIComponent","getTranslate","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","serializeObject","resultArray","newParents","varName","parentParts","encodeURIComponent","varValue","toPush","o","merge","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","deep","colorHexToRgb","result","exec","colorRgbToHex","colorRgbToHsl","colorHslToRgb","hp","rgb1","Number","isNaN","colorHsbToHsl","HSL","HSB","colorHslToHsb","getShadeTintColors","rgb","hsl","hslShade","hslTint","shade","tint","colorThemeCSSProperties","shadeTintIos","shadeTintMdLight","shadeTintMdDark","ios","md","bindMethods","instance","subKey","bind","flattenArray","arg","stringifyObject","colorVars","colorName","restVars","colorValue","rest","whiteColorVars","blackColorVars","lightString","darkString","support","deviceCalculated","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","intersectionObserver","calcSupport","IS_BROWSER","Boolean","width","getDevice","overrides","reset","_temp","platform","ua","device","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","electron","capacitor","Capacitor","nwjs","screenWidth","screenHeight","height","nw","process","versions","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","prefersColorScheme","calcDevice","EventsClass","eventsParents","eventsListeners","priority","self","method","once","f7proxy","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","useModuleParams","module","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","create","useModules","modulesParams","components","use","installModule","Class","static","install","ConstructorMethods","parameters","defaultSelector","Constructor","domProp","app","addMethods","$el","destroy","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","fetchedModules","$jsx","tag","attrsString","Framework7","passedParams","w","defaults","routes","lazyModulesPath","initOnDeviceReady","init","darkMode","iosTranslucentBars","iosTranslucentModals","componentUrl","pink","yellow","orange","purple","deeppurple","lightblue","teal","lime","deeporange","white","black","online","onLine","store","f7","initStore","setColorTheme","setColors","colorsStyleEl","head","utils","colorThemeCSSStyles","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","colorSchemeListener","_ref","media","__store","createStore","enableAutoDarkMode","disableAutoDarkMode","setDarkMode","mode","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","addClass","hasClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","fetch","then","scriptContent","callbackLoadName","scriptEl","catch","err","styleLoad","resolveStyle","styleContent","styleEl","all","DeviceModule","metaStatusbar","SupportModule","UtilsModule","ResizeModule","getSize","offset","orientationchange","TouchModule","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","move","end","useRipple","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","findActivableElement","activable","newActivable","preventPropagation","isInsideScrollableView","addActive","removeActive","createRipple","touchRipple","removeRipple","rippleTouchStart","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","isTrusted","targetTouches","touches","pageX","pageY","shouldRemoveActive","type","touchCurrentX","touchCurrentY","buttonEl","elementFromPoint","clientX","clientY","$activableEl","which","isNative","parse","str","tokens","count","pattern","TypeError","concat","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","reFlags","flags","encode","_b","validate","token","RegExp","optional","test","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","_e","_f","endsWith","endsWithRe","delimiterRe","route","_i","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","regexpToRegexp","paths","parts","arrayToRegexp","History","queue","clearQueue","currentQueue","routerQueue","clearRouterQueue","pop","stateUrl","action","browserHistoryAnimate","browserHistory","navigate","handle","blockPopstate","state","previousState","allowChange","views","view","viewState","allowPageChange","initViewState","viewId","newState","substr","readyState","SwipeBack","$navbarsEl","isTouched","touchesStart","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","transition","reflow","_clientLeft","classNameSet","styleProp","handleTouchStart","swipeBackEnabled","swipeout","masterDetailBreakpoint","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","find","notFromBorder","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","activeNavBackIconText","previousNavBackIconText","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","handleTouchEnd","$pages","timeDiff","pageChanged","removeAttr","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","transitionEnd","saveHistory","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","attachEvents","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","cause","asyncComponentResult","forward","forwardOptions","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","masterPageEl","otherDetailPageEl","modalType","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$viewEl","$newPage","reload","$oldPage","$newNavbarEl","$oldNavbarEl","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$pagesInView","pageInView","$navbarsInView","isDetail","isDetailRoot","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","propsHistory","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","paramName","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","abort","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","initialPreload","currentIsMaster","backIndex","masterRoute","force","$pageToRemove","$navbarToRemove","insertPage","$previousPages","pageToRemove","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialPages","initialNavbars","configurable","newRoute","tempDom","navbarsEl","animateIcon","newNavEls","oldNavEls","animatableNavEl","$navbarInner","needsOpacityTransition","$iconEl","isIconLabel","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","onCustomTransitionDone","animationEnd","routerTransitionClass","toDifferent","oldIsLarge","newIsLarge","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRouteUrl","$tabEl","tabId","foundTabRouteUrl","matchingRoute","pathsToMatch","matched","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","xhr","requestUrl","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","fetchRes","AbortController","signal","responseText","status","ariaHidden","toRemove","getPageData","pageFromEl","$pageEl","pageFrom","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","$pageContent","pageContentEl","f7PageInitialized","browserHistoryStoreHistory","localStorage","JSON","stringify","restoreHistory","clearHistory","updateCurrentUrl","newUrl","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","browserHistoryOnLoad","console","warn","substring","iosSwipeBack","mdSwipeBack","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","async","preloadMaster","masterLoaded","refreshPage","parentPageEl","browserHistoryTabs","$parentPageEl","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabComponentLoader","tabContent","hasContentLoadProp","tabLoadProp","hasTabComponentChild","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","foundLoadProp","navigateProps","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageObj","previousPageRoute","panel","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","transformCSSWidth","newV","$pageMasterEl","newWidth","handleResize","viewParams","message","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","initRouterOnTabShow","View","ClicksModule","clicks","externalLinks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","clickedEl","current","linksView","ViewClass","f7RouteProps","initClicks","RouterComponentLoaderModule","popup","loginScreen","popover","ctx","$h","$onMounted","$f7","side","effect","componentFunction","componentContext","f7route","f7router","componentProps","routeProps","componentRoot","createdComponent","cachedComponent","componentCache","cached","loadedComponent","parsedComponent","_temp2","_temp3","ignoreChildren","sel","elm","array","primitive","addNS","ns","childData","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","propsFromAttrs","word","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","getChildren","nodes","childNode","treeNodeToVNode","isTreeNode","getSlots","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","getData","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isText","isComment","isUndef","isDef","emptyNode","sameVnode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","updateAttrs","oldAttrs","cur","setAttributeNS","attributesModule","updateProps","oldProps","propsModule","raf","setNextFrame","updateStyle","oldStyle","oldHasDel","removeProperty","delayed","name2","styleModule","rm","applied","ev","updateEvents","oldOn","oldListener","oldElm","invokeHandler","patch","domApi","cbs","api","emptyNodeAt","createRmCb","childElm","listeners","parent_1","createElm","insertedVnodeQueue","hashIdx","dotIdx","dot","addVnodes","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","patchVnode","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","pre","isVnode","post","types","flat","swap","fromTo","_","sort","every","getPrototypeOf","Component","generateId","__updateQueue","__eventHandlers","__onceEventHandlers","__onBeforeMount","__onMounted","__onBeforeUpdate","__onUpdated","__onBeforeUnmount","__onUnmounted","createComponent","getComponentContext","componentResult","getRenderFuncion","renderFunction","getComponentRef","getComponentStore","_gettersPlain","dispatch","$store","getters","Proxy","onUpdated","getUseState","_this","reduce","_x","Symbol","iterator","includeHooks","$f7route","$f7router","$id","$f7ready","f7ready","$theme","$tick","tick","$update","$emit","$ref","$useState","$on","$once","$onBeforeMount","$onBeforeUpdate","$onUpdated","$onBeforeUnmount","$onUnmounted","_ref2","detachEvents","_ref3","_ref4","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","parseComponent","componentString","componentId","callbackCreateName","template","item","scripts","registerComponent","unregisterComponent","flatChildren","ComponentModule","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","addGetterDependencies","deps","dep","__callback","actionName","StoreModule","isCapacitor","StatusBar","Statusbar","hide","onClick","setTextColor","styleLightContent","styleDefault","setStyle","setBackgroundColor","backgroundColorByHexString","isVisible","getInfo","info","visible","overlaysWebView","overlays","setOverlaysWebView","overlay","statusbar","enabled","isCordova","isCap","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","Statusbar$1","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","Navbar","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","title","subnavbar","noLeft","noRight","leftWidth","outerWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","currLeft","diff","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","$bgEl","handleLargeNavbarCollapse","isHidden","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","$activeLink","highlightWidth","highlightTranslate","activeIndex","toolbar","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","ripple","center","diameter","isInset","insetElements","rippleTransform","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","TouchRipple","openedModals","dialogsQueue","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","backdrop","backdropUnique","forceBackdropUnique","$backdropEl","animateModal","queueDialogs","pushToQueue","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdropEl","clearDialogsQueue","destroyed","CustomModal","Modal","extendedParams","customModal","handleClick","dialog","buttons","verticalButtons","cssClass","destroyOnClose","addKeyboardHander","dialogClasses","buttonsHTML","button","strong","dialogHtml","buttonOnClick","onKeyDown","keyCode","keyCodes","setProgress","progressbar","setText","newText","$textEl","insertAfter","setTitle","newTitle","$titleEl","Dialog","buttonOk","buttonCancel","usernamePlaceholder","passwordPlaceholder","preloaderTitle","progressTitle","destroyPredefinedDialogs","keyboardActions","autoFocus","defaultDialogTitle","autoFocusHandler","isIosTheme","alert","callbackOk","prompt","callbackCancel","defaultValue","inputValue","confirm","login","username","password","preloader","preloaderInner","infinite","pushOffset","isPush","$target","Keyboard","plugins","needToClose","closeOnEscape","pushViewScale","startTouch","currentTouch","pageContentScrollTop","pageContentOffsetHeight","pageContentScrollHeight","popupHeight","$pushEl","allowSwipeToClose","swipeToClose","swipeHandler","pushProgress","hasPreviousPushPopup","updatePushOffset","wasPush","setPushOffset","Popup","parentSelector","LoginScreen","anotherPopoverEl","$arrowEl","f7PopoverRef","arrow","originalOpen","arrowEl","touchStartTarget","closeByOutsideClick","isAnotherPopoverBackdrop","isAnotherPopoverTarget","targetX","targetY","verticalPosition","arrowLeft","arrowTop","arrowSize","hasArrow","arrowMin","targetWidth","targetHeight","targetOffsetLeft","targetOffsetTop","safeAreaTop","safeAreaLeft","safeAreaRight","outerHeight","targetOffset","targetParentPage","forcedPosition","hPosition","Popover","popoverEl","$popoverEl","groups","convertToPopover","popoverHtml","renderPopover","actionsHtml","originalClose","$buttonEl","buttonIndex","groupIndex","forceToPopover","closed","grid","buttonClasses","label","bg","disabled","icon","itemClasses","Actions","useBreakpoints","breakpoints","isTopSheetModal","swipeStepTranslate","startTranslate","currentTranslate","sheetElOffsetHeight","minTranslate","maxTranslate","$pushViewEl","pushBorderRadius","sheetPageContentEl","sheetPageContentScrollTop","sheetPageContentScrollHeight","sheetPageContentOffsetHeight","currentBreakpointIndex","breakpointsTranslate","backdropBreakpointSet","swipeToStep","setBackdropBreakpoint","setPushBreakpoint","openDirection","closeDirection","absCurrentTranslate","absSwipeStepTranslate","setBreakpoint","allBreakpoints","closestTranslate","curr","closestIndex","stepOpened","breakpoint","pushBreakpoint","pushBreakpoints","pushTransparentBreakpoint","backdropBreakpoint","backdropBreakpoints","backdropTransparentBreakpoint","calcBreakpoints","fullSize","onResize","setSwipeStep","byResize","$swipeStepEl","scrollToEl","$scrollEl","paddingTop","paddingBottom","pageHeight","pageScrollHeight","pageScroll","newPaddingBottom","scrollElTop","scrollToElementOnOpen","stepOpen","stepClose","stepToggle","toggleClass","Sheet","sheetInstance","toast","closeButton","closeTimeout","timeoutId","toastHtml","openedEl","toastInstance","horizontalPosition","closeButtonColor","closeButtonText","Toast","Preloader","preloaders","showIn","hideIn","Preloader$1","photoBrowserOpen","pb","preloaderEl","tabMounted","Progressbar","progressNormalized","$progressbarEl","$progressbarLine","removeAfterHide","Progressbar$1","progressbarEl","Sortable","$sortingEl","$sortingItems","$sortableContainer","sortingElHeight","minTop","$insertAfterEl","$insertBeforeEl","indexFrom","pageOffset","sortingElOffsetLocal","sortingElOffsetTop","initialScrollTop","wasTapHold","isTapHold","$listGroup","allowOpen","allow","offsetTop","translateScrollOffset","translate","scrollAddition","scrollDiff","allowScroll","$currentEl","currentElOffset","currentElHeight","sortingElOffset","prevTranslate","f7Translate","indexTo","moveElements","sortableMoveElements","sortable","f7VirtualListIndex","virtualList","f7VirtualList","moveItem","pointerEvent","enable","disable","Sortable$1","Swipeout","$swipeoutEl","$swipeoutContent","$actionsRight","$actionsLeft","actionsLeftWidth","actionsRightWidth","openedActionsSide","$leftButtons","$rightButtons","$overswipeLeftButton","$overswipeRightButton","overswipeLeft","overswipeRight","noFollow","buttonOffset","buttonTranslate","overswipeRatio","f7SwipeoutButtonOffset","$actions","actionsWidth","$buttons","newTranslate","$swipeoutActions","swipeoutActionsWidth","onSwipeoutClose","delete","virtualIndex","deleteItem","Swipeout$1","actionsNoFold","confirmTitle","Accordion","toggleClicked","$accordionItemEl","$accordionContent","accordion","prevented","$list","$contentEl","$openedItem","Accordion$1","vl","defaultHeight","cols","dynamicHeightBufferSize","showFilteredItemsOnly","renderExternal","setListHeight","searchByItem","searchAll","ul","createUl","scrollableParentEl","renderItem","filteredItems","$scrollableParentEl","updatableScroll","$itemsWrapEl","$ul","itemsWrapEl","domCache","tempDomElement","lastRepaintY","fragment","createDocumentFragment","rowsPerScreen","rowsBefore","rowsAfter","rowsToRender","maxBufferHeight","listHeight","dynamicHeight","autoHeight","handleScrollBound","handleResizeBound","$panelEl","$popupEl","setListSize","autoHeightRerender","heights","itemHeight","heightsCalculated","renderedItems","itemIndex","renderedItem","forceScrollTop","fromIndex","toIndex","topPosition","heightBeforeFirstItem","heightBeforeLastItem","itemTop","renderExternalItems","itemEl","currentFromIndex","currentToIndex","emptyTemplate","filterItems","indexes","resetScrollTop","resetFilter","scrollToItem","listTop","getClientRects","appendItems","appendItem","replaceAllItems","replaceItem","prependItems","newCache","prependItem","cachedIndex","leftIndex","rightIndex","indexShift","insertItemBefore","deleteItems","prevIndex","deletedItem","deleteAllItems","clearCache","deleteCache","VirtualList","listEl","iosItemHeight","mdItemHeight","scrollList","itemContent","renderSkipPlaceholder","$listEl","f7ListIndex","calcSize","$clickedLi","skipRate","siblings","scrollListToIndex","topPoint","bottomPoint","$labelEl","previousIndex","$children","ulHeight","bubbleBottom","$scrollToEl","parentTop","scrollToElTop","navbarInnerEl","wasSkipped","itemHtml","maxItems","calcIndexes","elContent","ListIndex","listIndex","listIndexEl","tabBeforeRemove","Tab","tabLinkEl","animatedInit","f7TabRoute","newTabEl","$tabLinkEl","$tabsEl","tabsChangedCallbacks","tabsChanged","swiper","tabsTranslate","newTabIndex","slides","slideTo","tabLinkElement","$oldTabLinkEl","oldTabId","oldTabEl","Tabs","pageOrTabEl","animatedTabEl","resizablePanel","panelWidth","panelMinWidth","panelMaxWidth","visibleByBreakpoint","isPushingPanel","getViewEl","newPanelWidth","f7Panel","setStateClasses","panelInView","enableVisibleBreakpoint","visibleBreakpointDisabled","setVisibleBreakpoint","disableVisibleBreakpoint","toggleVisibleBreakpoint","emitEvents","visibleBreakpointResizeHandler","visibleBreakpoint","wasVisible","allowPanelOpen","enableCollapsedBreakpoint","collapsedBreakpointDisabled","setCollapsedBreakpoint","disableCollapsedBreakpoint","toggleCollapsedBreakpoint","collapsedBreakpointResizeHandler","collapsedBreakpoint","collapsed","enableResizable","disableResizable","enableSwipe","swipeInitialized","swipeable","otherPanel","isGestureStarted","isInterrupted","backdropOpacity","touchMoves","swipe","swipeOnlyClose","otherPanelOpened","swipeActiveArea","preventSwipePanel","threshold","swipeThreshold","insertToRoot","noFollowProgress","swipeNoFollow","viewTranslate","isGesture","removePanelInClass","visibility","handleGestureStart","handleGestureEnd","swipePanel","disableSwipe","modifyHtmlClasses","_openTransitionStarted","$panelParentEl","otherOpenedPanel","transitionEndTarget","transitionStart","panelTransitionEnd","Panel","panelEl","CardExpandable","cardEl","$cardEl","cardParams","card","hideNavbarOnOpen","hideToolbarOnOpen","currTransform","hasTransform","$cardContentEl","$cardSizeEl","statusbarHeight","cardWidth","cardHeight","pageWidth","maxHeight","hideStatusbarOnOpen","cardLeftOffset","cardTopOffset","scaleX","scaleY","transformValues","cardRightOffset","cardScrollTop","touchEndX","touchEndY","isV","isH","$cardScrollableEl","cardBottomOffset","translateX","translateY","onTouchStart","scrollableEl","onTouchMove","onTouchEnd","f7KeepNavbarOnClose","f7KeepToolbarOnClose","detachEventHandlers","animateWidth","Card","$openedCardEl","FormData","form","formId","$formEl","removeItem","FormStorage","formEl","initialData","getFormData","fillFromData","convertToData","storeFormData","formToData","skipTypes","skipNames","inputEl","$inputEl","checked","formFromData","formData","selectEl","checkboxEl","radioEl","initAjaxForm","fromData","contentType","headers","response","Form","removeFormData","storage","Input","ignoreTypes","createTextareaResizableShadow","$shadowEl","readonly","textareaResizableShadow","resizeTextarea","textareaEl","$textareaEl","styleValue","currentHeight","clientHeight","initialHeight","$itemInputEl","$inputWrapEl","setReadonly","f7ValidateReadonly","readOnly","validity","validationMessage","errorMessage","valid","$errorEl","validateInputs","checkEmptyState","hasAttribute","scrollIntoView","centered","$scrollableEl","contentHeight","contentScrollTop","contentPaddingTop","contentPaddingBottom","contentOffsetTop","inputOffsetTop","centeredPosition","previousValue","isContentEditable","scrollIntoViewOnFocus","scrollIntoViewDuration","scrollIntoViewCentered","scrollIntoViewAlways","Input$1","itemInputEl","f7Toggle","toggleWidth","touchStartChecked","changed","handleInputChange","Toggle","toggleEl","range","dual","step","draggableBar","vertical","verticalReversed","formatLabel","scaleSteps","scaleSubSteps","formatScaleLabel","limitKnobPosition","f7Range","valueLeft","valueRight","$barEl","$barActiveEl","knobHTML","knobs","$knobEl","labels","$scaleEl","renderScale","rangeOffset","rangeOffsetLeft","rangeOffsetTop","$touchedKnobEl","dualValueIndex","valueChangedByTouch","targetTouchIdentifier","parentModals","parentPanel","parentPage","onTouchChange","identifier","rangeHeight","rangeWidth","newValue","setValue","leftValue","rightValue","touchEnded","changedTouches","layout","knobHeight","knobWidth","knobSize","rangeSize","positionProperty","knobIndex","startPos","realStartPos","byTouchMove","valueChanged","oldValue","newValues","valueIndex","getValue","labelEl","scaleEl","scaleStepValue","scaleValue","subStepEl","subIndex","subStep","subProgress","updateScale","Range","rangeEl","stepper","valueEl","formatValue","watchInput","autorepeat","autorepeatDynamic","wraps","manualInputMode","decimalPoint","buttonsEndInputMode","f7Stepper","$valueEl","$buttonPlusEl","$buttonMinusEl","buttonPlusEl","buttonMinusEl","typeModeChanged","preventButtonClick","intervalId","autorepeatAction","autorepeatInAction","manualInput","dynamicRepeat","progressions","startsIn","progressionStep","repeatEvery","clearInterval","setInterval","onMinusClick","endTypeMode","decrement","onPlusClick","increment","onInputClick","selectionStart","selectionEnd","onInputKey","onInputBlur","onInput","typeValue","sentByF7Stepper","minus","plus","forceUpdate","withWraps","formattedValue","noBlur","inputTxt","lastIndexOf","powVal","toFixed","Stepper","stepperEl","defaultDiacriticsRemovalap","letters","diacriticsMap","removeDiacritics","ss","smartSelect","f7SmartSelect","$selectEl","setValueText","inputType","selectId","onChange","optionEl","displayAs","optionText","maxLength","checkMaxLength","optEl","formatValueTextContent","closeOnSelect","inputName","selectName","attachInputsEvents","detachInputsEvents","unsetValue","valueFormatted","formatValueText","textValue","valueArray","$optionEl","getItemsData","previousGroupEl","optionData","optionImage","optionIcon","optionIconIos","optionIconMd","optionInputIconPosition","inputIconPosition","optionHasMedia","optionColor","optionClassName","optionClass","optionGroupEl","optionGroupLabel","optionIsLabel","groupLabel","isLabel","groupEl","image","iconIos","iconMd","hasMedia","checkbox","radio","renderSearchbar","spellcheck","searchbarSpellcheck","placeholder","searchbarPlaceholder","searchbarDisableButton","searchbarDisableText","ssValue","hasIcon","iconContent","iconValue","iconClass","getIconClass","_checked","renderItems","itemsHtml","renderPage","pageTitle","$itemTitleEl","navbarColorTheme","pageBackLinkText","searchbar","formColorTheme","renderPopup","popupTabletFullscreen","popupCloseLinkText","renderSheet","toolbarColorTheme","sheetCloseLinkText","scrollToSelectedItem","selectedIndex","$selectedItemEl","openedIn","virtualListHeight","$searchbarEl","appendSearchbarNotFound","$notFoundEl","searchbarParams","searchContainer","searchIn","openPage","pageHtml","pageBeforeOut","pageAfterOut","openPopup","popupParams","popupPush","popupSwipeToClose","popupOpen","popupOpened","popupClose","popupClosed","routableModals","openSheet","sheetParams","sheetBackdrop","sheetPush","sheetSwipeToClose","sheetOpen","sheetOpened","sheetClose","sheetClosed","openPopover","popoverParams","popoverOpen","popoverOpened","popoverClose","popoverClosed","SmartSelect","smartSelectEl","calendar","isHorizontal","inline","allowTouchMove","hasTimePicker","timePicker","rangePicker","dayFormatter","date","Intl","DateTimeFormat","locale","day","format","monthFormatter","month","yearFormatter","year","timeSelectorFormatter","timePickerFormat","timeFormatCheckDate","is12HoursFormat","monthNames","monthNamesShort","dayNames","dayNamesShort","monthNamesIntl","monthNamesShortIntl","dayNamesIntl","dayNamesShortIntl","getIntlNames","onInputFocus","onInputClear","onHtmlClick","isPopover","closing","monthPickerPopover","yearPickerPopover","timePickerPopover","attachInputEvents","inputReadOnly","detachInputEvents","attachHtmlEvents","detachHtmlEvents","attachCalendarEvents","touchEndTime","wrapperWidth","wrapperHeight","allowItemClick","$wrapperEl","monthsTranslate","resetMonth","nextMonth","prevMonth","handleDayClick","$dayEl","dateYear","dateMonth","dateDay","valueToAdd","setHours","getHours","getMinutes","addValue","onNextMonthClick","onPrevMonthClick","onNextYearClick","nextYear","onPrevYearClick","prevYear","onMonthSelectorClick","openMonthPicker","onYearSelectorClick","openYearPicker","onTimeSelectorClick","openTimePicker","monthPicker","yearPicker","touchMove","detachCalendarEvents","formatterMonthNames","formatterMonthNamesShort","formatterDayNames","weekday","formatterDayNamesShort","yearStarted","yearEnded","setMonth","currentYear","weekDay","getDay","normalizeDate","getFullYear","getMonth","getDate","normalizeValues","initInput","formatDate","month1","dateFormat","twoDigits","number","yyyy","yy","mm","MM","dd","DD","D","hours","minutes","seconds","getSeconds","hours12","HH","H","hh","A","regexp","rangePickerMinDays","rangePickerMaxDays","inValuesIndex","updateValue","equal","onlyHeader","valueDate","leftDate","rightDate","timePickerPlaceholder","header","updateCurrentMonthYear","dir","$months","currentLocaleMonth","currentLocaleYear","currentMonth","currentDate","prevMonthHtml","renderMonth","currentMonthHtml","nextMonthHtml","setMonthsTranslate","monthEl","onMonthChangeStart","currentIndex","onMonthChangeEnd","rebuildBoth","prevMonthTranslate","currentMonthTranslate","nextMonthTranslate","nextDateTime","transitionEndCallback","maxDate","prevDateTime","minDate","setYearMonth","targetDate","newMonthHTML","monthTranslate","wrapperTranslate","dateInRange","dayDate","daysInMonth","renderMonths","localeMonth","localeYear","currentValues","today","daysInPrevMonth","minDayNumber","firstDay","hasEvents","monthHtml","dayIndex","firstDayOfMonthIndex","rowHtml","col","dayNumber","weekDayIndex","weekendDays","eventsHtml","eventDots","rangesClasses","dayYear","dayMonth","renderWeekHeader","weekDaysHtml","renderMonthSelector","renderYearSelector","renderTimeSelector","timeString","timePickerLabel","renderHeader","headerPlaceholder","renderFooter","toolbarCloseText","renderToolbar","monthSelector","yearSelector","renderInline","footer","weekHeader","renderCustomModal","closeMonthPicker","monthPickerInstance","displayValues","picker","monthPickerToolbar","rotateEffect","monthPickerCloseText","diffIndex","closeYearPicker","yearPickerInstance","yearMin","yearPickerMin","yearMax","yearPickerMax","years","yearPickerToolbar","yearPickerCloseText","hoursArr","minutesArr","hoursMax","closeTimePicker","timePickerInstance","timePickerToolbar","timePickerCloseText","divider","timePickerValue","period","opening","required","f7Calendar","scrollToInput","Calendar","hour","minute","pickerColumn","colEl","updateItems","$colEl","colIndex","colHeight","$itemsEl","replaceValues","renderColumn","hadPadding","valueCallbacks","newActiveIndex","newScrollTop","previousActiveIndex","selectedItem","$itemEl","itemsFit","displayValue","freeMode","resizeCols","needsOriginFix","htmlTouchStartTarget","onHtmlTouchStart","attachResizeEvent","detachResizeEvent","forceValues","newDisplayValue","column","noDividerColumns","initColumn","destroyColumn","onlyItems","colClasses","textAlign","columnHtml","columnItemsHtml","f7Picker","Picker","InfiniteScroll","virtualListContainer","onTop","scrollHandler","infiniteScroll","f7InfiniteScrollHandler","InfiniteScroll$1","$isEls","ptr","$preloaderEl","bottom","isMaterial","isIos","touchId","$transitionTarget","onTranstionEnd","refresh","mousewheel","wasScrolled","triggerDistance","dynamicTriggerDistance","pullStarted","maxScrollTop","useTranslate","forceUseTranslate","hasNavbar","pageNavbarEl","$pageNavbarEl","isTransparent","setPreloaderProgress","$bars","perBarProgress","barEl","barIndex","barProgress","unsetPreloaderProgress","targetIsScrollable","$ptrWatchScrollable","ptrScrollableEl","mousewheelTimeout","mousewheelMoved","mousewheelAllow","mousewheelTranslate","handleMouseWheelRelease","handleMouseWheel","deltaX","deltaY","f7PullToRefresh","PullToRefresh","$ptrEls","table","f7DataTable","collapsible","$headerEl","$headerSelectedEl","handleChange","handleSortableClick","sentByF7DataTable","columnIndex","checkedRows","totalRows","$headCheckboxEl","checkSelectedHeader","$cellEl","isActive","currentSort","newSort","setCollapsibleLabels","elIndex","collapsibleTitle","checkedItems","DataTable","dataTable","tableEl","Fab","morphOpen","fabEl","$fabEl","borderRadius","zIndex","fab","f7FabMorphData","diffX","diffY","f7FabMorphResizeHandler","diffXNew","diffYNew","scaleXNew","scaleYNew","morphClose","morphData","$buttonsEl","Fab$1","FrameworkClass","sb","inputEvents","disableButton","disableButtonEl","searchItem","searchGroup","searchGroupTitle","ignore","foundEl","notFoundEl","hideOnEnableEl","hideOnSearchEl","customSearch","hideGroupTitles","hideGroups","disableOnBackdropClick","expandable","f7Searchbar","$foundEl","$hideOnEnableEl","$hideOnSearchEl","$searchContainer","$disableButtonEl","preventSubmit","onInputChange","isVirtualList","disableOnClick","onPageBeforeOut","onPageBeforeIn","disableButtonHasMargin","previousQuery","setDisableButtonMargin","setFocus","backdropShow","needsFocus","titleLargeHeight","backdropHide","internal","vlQuery","foundItems","compareWithText","$searchIn","searchInEl","itemText","wordsMatch","titleEl","$nextElements","$nextEl","$groupEl","Searchbar","searchbarEl","autoLayout","messages","newMessagesFirst","scrollMessages","scrollMessagesOnEdge","firstMessageRule","lastMessageRule","tailMessageRule","sameNameMessageRule","sameHeaderMessageRule","sameFooterMessageRule","sameAvatarMessageRule","customClassMessageRule","renderMessage","f7Messages","getMessageData","messageEl","$messageEl","textHeader","textFooter","imageSrc","typing","avatar","getMessagesData","messageToRender","_extends","isTyping","renderMessages","messagesToRender","isFirstMessage","isLastMessage","isTailMessage","isSameNameMessage","isSameHeaderMessage","isSameFooterMessage","isSameAvatarMessage","isCustomClassMessage","previousMessage","nextMessage","customMessageClasses","customClass","removeMessage","messageToRemove","removeMessages","messagesToRemove","messagesToRemoveEls","messageToRemoveIndex","addMessage","messageToAdd","addMessages","setScrollData","scrollHeightBefore","heightBefore","scrollBefore","scrollData","messagesToAdd","messagesHTML","typingMessage","$messagesEls","scrollWithEdgeCheck","showTyping","hideTyping","typingMessageIndex","typingFound","$typingMessageEl","onEdge","currentScroll","Messages","messagesEl","messagebar","topOffset","bottomOffset","attachments","renderAttachments","renderAttachment","resizePage","f7Messagebar","$areaEl","$attachmentsEl","$sheetEl","onAppResize","onSubmit","onAttachmentClick","onTextareaChange","onTextareaFocus","sheetHide","onTextareaBlur","areaEl","attachmentsEl","attachmentsVisible","sheetEl","sheetVisible","setPlaceholder","elHeight","currentPaddingBottom","requiredPaddingBottom","currentPaddingTop","pageOffsetHeight","scrollOnBottom","attachmentsCreate","attachmentsShow","attachmentsHide","attachmentsToggle","attachment","sheetCreate","sheetShow","sheetToggle","Messagebar","messagebarEl","currentStyle","noExtend","HTMLElement","__swiper__","setCSSProperty","animateCSSModeScroll","targetPosition","startPosition","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","currentPosition","getSlideTransformEl","slideEl","shadowRoot","elementChildren","elementOffset","elementStyle","elementIndex","elementParents","parentElement","elementTransitionEnd","elementOuterSize","deviceCached","browser","smoothScroll","documentElement","getBrowser","needPerspectiveFix","isSafari","major","minor","isWebView","calcBrowser","eventsEmitter","__emitterProxy","onAny","eventsAnyListeners","offAny","processLazyPreloader","imageEl","slideClass","lazyEl","lazyPreloaderClass","unlazy","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","rows","activeColumn","preloadColumns","slideIndexLastInView","rewind","loop","realIndex","updateSize","clientWidth","isVertical","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","slidesEl","swiperSize","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","elementNextAll","prevSlide","elementPrevAll","emitSlidesClasses","updateActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","preventInteractionOnTransition","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","loopPreventsSliding","loopFix","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","slideRealIndex","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","recalcSlides","currentSlideTranslate","touchEventsData","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","evCache","simulateTouch","pointerType","originalEvent","touchEventsTarget","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","currentX","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","touchAngle","zoom","touchMoveStopPropagation","nested","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","preventClicks","preventClicksPropagation","onScroll","onLoad","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","updateOnWindowResize","isGridEnabled","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","points","point","minRatio","resizeObserver","createElements","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","auto","prototypes","transitionDelay","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","wasLocked","lastSlideRightEdge","addClasses","suffixes","resultClasses","prepareClasses","autoheight","removeClasses","extendedDefaults","Swiper","swipers","newParams","__modules__","extendParams","swiperParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","cls","getSlideClasses","updates","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mounted","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","eventTriggered","getSlide","createShadow","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","renderSlide","renderExternalUpdate","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","cachedEl","cachedElIndex","kc","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","timeout","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","releaseScroll","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","onPrevClick","onNextClick","initButton","destroyButton","pagination","clickable","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","newSlideIndex","currentSlideIndex","indexBeforeLoopFix","total","firstIndex","midIndex","classesToRemove","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","progressEl","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","dragTimeout","scrollbar","dragEl","newSize","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","rotate","currentOpacity","_swiper","parallaxEl","parallaxDuration","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","minX","minY","maxX","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","x2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","LinearSpline","binarySearch","maxIndex","minIndex","guess","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","notification","makeElFocusable","makeElNotFocusable","addElRole","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","sourceCapabilities","firesTouchEvents","randomChar","live","addElId","addElLive","updateNavigation","updatePagination","keepQuery","slugify","getPathValues","urlOverride","pathArray","setHistory","currentState","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","pause","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","velocityEvent","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","newSlideOrderIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","shadowAngle","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","coverflowEffect","stretch","depth","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","paramsList","attrToProp","modulesParamsList","getParams","propValue","localParamsList","allowedParams","attrsList","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","SwiperContainer","attachShadow","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","eventsPrefix","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","SwiperSlide","lazy","lazyDiv","initSwiper","$swiperEl","isTabs","isRoutableTabs","f7SwiperParams","tabRouteUrl","SwiperElementRegisterParams","customElements","define","pageMounted","photoBrowser","exposed","started","timeStart","onSlideChange","virtualSlides","photos","$activeSlideEl","$previousSlideEl","$totalEl","captions","captionIndex","$captionsContainerEl","previousSlideVideo","renderNavbar","iconsColor","renderNavbarCount","navbarShowCount","isPopup","navbarOfText","popupCloseLinkIcon","xmlns","viewBox","renderThumbs","thumb","renderThumb","renderCaption","caption","renderObject","photo","renderLazyPhoto","loading","renderPhoto","captionsTheme","renderStandalone","f7PhotoBrowser","$swiperContainerEl","$swiperWrapperEl","hasThumbs","preventThumbsSlide","preventMainSlide","exposition","expositionToggle","doubleClick","slideChange","slideChangeTransitionStart","slideChangeTransitionEnd","touchStart","touchMoveOpposite","touchEnd","openStandalone","expositionEnable","expositionHideCaptions","expositionDisable","PhotoBrowser","titleRightText","subtitle","closeOnClick","notificationHeight","notificationHtml","closeOnTimeout","notificationInstance","Notification","autocomplete","$openerEl","openerEl","f7Autocomplete","uniqueId","$dropdownEl","itemsHTML","limit","firstValue","firstItem","highlightMatches","itemValue","valueProperty","textProperty","dropdownPlaceholderText","typeahead","setSelectionRange","onPageInputChange","aValue","updateValues","onOpenerClick","positionDropdown","$selectedItemLabel","$selectedItem","$newItem","onDropdownClick","clickedItem","updateInputValueOnSelect","attachDropdownEvents","detachDropdownEvents","attachPageEvents","detachPageEvents","inputOffset","inputOffsetWidth","inputOffsetHeight","$listParent","parentEl","listOffset","listOffsetLeft","inputOffsetLeft","paddingProp","paddingValue","valuesHTML","preloaderHide","preloaderShow","renderPreloader","preloaderColor","inPopup","navbarLeft","navbarRight","renderDropdown","notFoundText","requestSourceOnOpen","openDropdown","dropdownContainerEl","Autocomplete","autocompleteEl","tooltip","delegated","f7Tooltip","handleClickOut","handleTransitionEnd","setTargetEl","hasContainerEl","tooltipOffset","boundaries","clientRect","aroundEl","$aroundEl","Tooltip","gauge","f7Gauge","calcRadius","borderWidth","calcBorderLength","radius","bgColor","borderBgColor","borderColor","valueText","valueTextColor","valueFontSize","valueFontWeight","labelText","labelTextColor","labelFontSize","labelFontWeight","semiCircle","stroke","cx","cy","dy","$svgEl","svgAttrs","backAttrs","frontAttrs","textAttrs","labelAttrs","svgEl","Gauge","moduleAlphaSlider","sliderLabel","sliderValue","sliderValueEditable","alphaLabelText","alphaRangeSlider","destroyAlphaSliderEvents","moduleCurrentColor","moduleHex","hexLabel","hexLabelText","hexValueEditable","destroyHexEvents","moduleHsbSliders","hueLabelText","saturationLabelText","brightnessLabelText","hsb","hueRangeSlider","saturationRangeSlider","brightnessRangeSlider","destroyHsbSlidersEvents","hslCurrent","hslLeft","hslRight","brightness","moduleHueSlider","moduleBrightnessSlider","modulePalette","handlePaletteClick","destroyPaletteEvents","moduleInitialCurrentColors","handleInitialColorClick","destroyInitialCurrentEvents","moduleRgbBars","barLabel","barValue","barValueEditable","redLabelText","greenLabelText","blueLabelText","redBar","greenBar","blueBar","destroyRgbBarsEvents","moduleRgbSliders","redRangeSlider","greenRangeSlider","blueRangeSlider","destroyRgbSlidersEvents","moduleSbSpectrum","specterRect","specterIsTouched","specterHandleIsTouched","setSBFromSpecterCoords","destroySpectrumEvents","specterWidth","specterHeight","moduleHsSpectrum","setHSFromSpecterCoords","hslBright","moduleWheel","circles","svgWheelCircles","wheelRect","wheelIsTouched","wheelHandleIsTouched","setHueFromWheelCoords","wheelCenterX","wheelCenterY","angleDeg","wheel","destroyWheelEvents","wheelSize","wheelHalfSize","angleRad","handleHalfSize","colorPicker","onTargetClick","$clickTargetEl","attachTargetEvents","detachTargetEvents","centerModules","getModalType","openInPhone","normalizeHsValues","updateModules","hsla","needChangeEvent","subV","fireEvents","targetElSetBackgroundColor","renderPicker","navbarTitleText","navbarBackLinkText","navbarCloseText","groupedModules","toolbarSheet","toolbarPopover","navbarPopup","f7ColorPicker","colorPickerContent","ColorPicker","sliderValueEdiable","barValueEdiable","Treeview","f7TreeviewChildrenLoaded","wasOpened","treeview","Treeview$1","$treeviewItemEl","textEditorButtonsMap","bold","italic","underline","strikeThrough","orderedList","unorderedList","link","paragraph","h1","h2","h3","alignLeft","alignCenter","alignRight","alignJustify","subscript","superscript","indent","outdent","textEditor","f7TextEditor","onButtonClick","onFocus","onBlur","onPaste","onSelectionChange","closeKeyboardToolbar","$keyboardToolbarEl","clearValue","insertPlaceholder","createLink","currentSelection","getSelection","selectedNodes","$selectedLinks","anchorNode","focusNode","selectedNodesLinks","$selectedNodes","linkNode","selection","createRange","selectNodeContents","removeAllRanges","addRange","execCommand","currentRange","getSelectionRange","linkUrlText","insertImage","imageUrlText","imageUrl","removePlaceholder","selectionIsInContent","selectionIsInPopover","closePopover","isCollapsed","rangeCount","rect","getRangeAt","openKeyboardToolbar","clearFormattingOnPaste","clipboardData","buttonData","customButtons","command","$anchorNode","select","renderButtons","renderButton","dividers","createToolbar","createKeyboardToolbar","createPopover","popoverTimeout","TextEditor","editorEl","pieChart","f7PieChart","showTooltip","hideTooltip","getSummValue","datasets","summ","getPaths","cumulativePercentage","getCoordinatesForPercentage","endX","endY","formatTooltipText","formatTooltip","setTooltip","setCurrentIndex","PieChart","areaChart","f7AreaChart","hiddenDatasets","linesOffsets","onMouseEnter","onMouseMove","onMouseLeave","onLegendClick","getVisibleLabels","maxAxisLabels","axisLabels","skipStep","filtered","getSummValues","summValues","getChartData","lineChart","lastValues","maxValue","datasetMaxValue","originalValue","reverse","getVerticalLines","lines","toggleDataset","toggleDatasets","$legendEl","formatAxisLabel","formatLegendLabel","calcLinesOffsets","formatTooltipTotal","formatTooltipAxisLabel","formatTooltipDataset","totalText","datasetsText","hasVisibleDataSets","distances","minDistance","legend","chartData","verticalLines","visibleLegends","LegendItemTag","preserveAspectRatio","line","_type","onlySvg","$axisEl","$rendered","AreaChart","Breadcrumbs","Breadcrumbs$1","breadrumbs"],"sources":["../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../src/core/shared/dom7.js","../../src/core/shared/material-color-utils.js","../../src/core/shared/material-colors.js","../../src/core/shared/utils.js","../../src/core/shared/get-support.js","../../src/core/shared/get-device.js","../../src/core/shared/events-class.js","../../src/core/shared/class.js","../../src/core/shared/constructor-methods.js","../../src/core/shared/modal-methods.js","../../src/core/components/app/load-module.js","../../src/core/shared/$jsx.js","../../src/core/components/app/app-class.js","../../src/core/modules/device/device.js","../../src/core/modules/support/support.js","../../src/core/modules/utils/utils.js","../../src/core/modules/resize/resize.js","../../src/core/modules/touch/touch.js","../../node_modules/path-to-regexp/dist.es2015/index.js","../../src/core/shared/history.js","../../src/core/modules/router/swipe-back.js","../../src/core/modules/router/redirect.js","../../src/core/modules/router/process-route-queue.js","../../src/core/modules/router/app-router-check.js","../../src/core/modules/router/async-component.js","../../src/core/modules/router/navigate.js","../../src/core/modules/router/back.js","../../src/core/modules/router/router-class.js","../../src/core/modules/router/tab.js","../../src/core/modules/router/modal.js","../../src/core/modules/router/clear-previous-history.js","../../src/core/modules/router/router.js","../../src/core/components/view/resizable-view.js","../../src/core/components/view/view-class.js","../../src/core/modules/clicks/clicks.js","../../src/core/modules/router/component-loader.js","../../node_modules/htm/dist/htm.mjs","../../src/core/modules/component/$h.js","../../src/core/modules/component/snabbdom/vnode.js","../../src/core/modules/component/snabbdom/is.js","../../src/core/modules/component/snabbdom/h.js","../../src/core/modules/component/custom-components.js","../../src/core/modules/component/vdom.js","../../src/core/modules/component/snabbdom/htmldomapi.js","../../src/core/modules/component/snabbdom/snabbdom.js","../../src/core/modules/component/snabbdom/modules/attributes.js","../../src/core/modules/component/snabbdom/modules/props.js","../../src/core/modules/component/snabbdom/modules/style.js","../../src/core/modules/component/eventslisteners.js","../../src/core/modules/component/patch.js","../../src/core/modules/component/$jsx.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/parse-component.js","../../src/core/modules/component/component.js","../../src/core/modules/history/history.js","../../src/core/modules/service-worker/service-worker.js","../../src/core/modules/store/create-store.js","../../src/core/modules/store/store.js","../../src/core/components/statusbar/statusbar.js","../../src/core/components/view/view.js","../../src/core/components/navbar/navbar.js","../../src/core/components/toolbar/toolbar.js","../../src/core/components/subnavbar/subnavbar.js","../../src/core/components/touch-ripple/touch-ripple-class.js","../../src/core/components/touch-ripple/touch-ripple.js","../../src/core/components/modal/modal-class.js","../../src/core/components/modal/custom-modal-class.js","../../src/core/components/modal/modal.js","../../src/core/components/dialog/dialog-class.js","../../src/core/components/dialog/dialog.js","../../src/core/components/popup/popup-class.js","../../src/core/components/popup/popup.js","../../src/core/components/login-screen/login-screen-class.js","../../src/core/components/login-screen/login-screen.js","../../src/core/components/popover/popover-class.js","../../src/core/components/popover/popover.js","../../src/core/components/actions/actions-class.js","../../src/core/components/actions/actions.js","../../src/core/components/sheet/sheet-class.js","../../src/core/components/sheet/sheet.js","../../src/core/components/toast/toast-class.js","../../src/core/components/toast/toast.js","../../src/core/components/preloader/preloader.js","../../src/core/components/progressbar/progressbar.js","../../src/core/components/sortable/sortable.js","../../src/core/components/swipeout/swipeout.js","../../src/core/components/accordion/accordion.js","../../src/core/components/virtual-list/virtual-list-class.js","../../src/core/components/virtual-list/virtual-list.js","../../src/core/components/list-index/list-index-class.js","../../src/core/components/list-index/list-index.js","../../src/core/components/tabs/tabs.js","../../src/core/components/panel/resizable-panel.js","../../src/core/components/panel/panel-class.js","../../src/core/components/panel/swipe-panel.js","../../src/core/components/panel/panel.js","../../src/core/components/card/card.js","../../src/core/components/form/form.js","../../src/core/components/input/input.js","../../src/core/components/toggle/toggle-class.js","../../src/core/components/toggle/toggle.js","../../src/core/components/range/range-class.js","../../src/core/components/range/range.js","../../src/core/components/stepper/stepper-class.js","../../src/core/components/stepper/stepper.js","../../src/core/components/searchbar/remove-diacritics.js","../../src/core/components/smart-select/smart-select-class.js","../../src/core/components/smart-select/smart-select.js","../../src/core/components/calendar/calendar-class.js","../../src/core/components/calendar/calendar.js","../../src/core/components/picker/picker-column.js","../../src/core/components/picker/picker-class.js","../../src/core/components/picker/picker.js","../../src/core/components/infinite-scroll/infinite-scroll.js","../../src/core/components/pull-to-refresh/pull-to-refresh-class.js","../../src/core/components/pull-to-refresh/pull-to-refresh.js","../../src/core/components/data-table/data-table-class.js","../../src/core/components/data-table/data-table.js","../../src/core/components/fab/fab.js","../../src/core/components/searchbar/searchbar-class.js","../../src/core/components/searchbar/searchbar.js","../../src/core/components/messages/messages-class.js","../../src/core/components/messages/messages.js","../../src/core/components/messagebar/messagebar-class.js","../../src/core/components/messagebar/messagebar.js","../../node_modules/swiper/shared/ssr-window.esm.mjs","../../node_modules/swiper/shared/utils.mjs","../../node_modules/swiper/shared/swiper-core.mjs","../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../node_modules/swiper/shared/classes-to-selector.mjs","../../node_modules/swiper/modules/manipulation.mjs","../../node_modules/swiper/shared/effect-init.mjs","../../node_modules/swiper/shared/effect-target.mjs","../../node_modules/swiper/shared/effect-virtual-transition-end.mjs","../../node_modules/swiper/shared/create-shadow.mjs","../../node_modules/swiper/swiper-bundle.mjs","../../node_modules/swiper/modules/virtual.mjs","../../node_modules/swiper/modules/keyboard.mjs","../../node_modules/swiper/modules/mousewheel.mjs","../../node_modules/swiper/modules/navigation.mjs","../../node_modules/swiper/modules/pagination.mjs","../../node_modules/swiper/modules/scrollbar.mjs","../../node_modules/swiper/modules/parallax.mjs","../../node_modules/swiper/modules/zoom.mjs","../../node_modules/swiper/modules/controller.mjs","../../node_modules/swiper/modules/a11y.mjs","../../node_modules/swiper/modules/history.mjs","../../node_modules/swiper/modules/hash-navigation.mjs","../../node_modules/swiper/modules/autoplay.mjs","../../node_modules/swiper/modules/thumbs.mjs","../../node_modules/swiper/modules/free-mode.mjs","../../node_modules/swiper/modules/grid.mjs","../../node_modules/swiper/modules/effect-fade.mjs","../../node_modules/swiper/modules/effect-cube.mjs","../../node_modules/swiper/modules/effect-flip.mjs","../../node_modules/swiper/modules/effect-coverflow.mjs","../../node_modules/swiper/modules/effect-creative.mjs","../../node_modules/swiper/modules/effect-cards.mjs","../../node_modules/swiper/shared/update-swiper.mjs","../../node_modules/swiper/shared/get-element-params.mjs","../../node_modules/swiper/swiper-element-bundle.mjs","../../src/core/components/swiper/swiper.js","../../src/core/components/photo-browser/photo-browser-class.js","../../src/core/components/photo-browser/photo-browser.js","../../src/core/components/notification/notification-class.js","../../src/core/components/notification/notification.js","../../src/core/components/autocomplete/autocomplete-class.js","../../src/core/components/autocomplete/autocomplete.js","../../src/core/components/tooltip/tooltip-class.js","../../src/core/components/tooltip/tooltip.js","../../src/core/components/gauge/gauge-class.js","../../src/core/components/gauge/gauge.js","../../src/core/components/color-picker/modules/alpha-slider.js","../../src/core/components/color-picker/modules/current-color.js","../../src/core/components/color-picker/modules/hex.js","../../src/core/components/color-picker/modules/hsb-sliders.js","../../src/core/components/color-picker/modules/hue-slider.js","../../src/core/components/color-picker/modules/brightness-slider.js","../../src/core/components/color-picker/modules/palette.js","../../src/core/components/color-picker/modules/initial-current-colors.js","../../src/core/components/color-picker/modules/rgb-bars.js","../../src/core/components/color-picker/modules/rgb-sliders.js","../../src/core/components/color-picker/modules/sb-spectrum.js","../../src/core/components/color-picker/modules/hs-spectrum.js","../../src/core/components/color-picker/modules/wheel.js","../../src/core/components/color-picker/color-picker-class.js","../../src/core/components/color-picker/color-picker.js","../../src/core/components/treeview/treeview.js","../../src/core/components/text-editor/text-editor-class.js","../../src/core/components/text-editor/text-editor.js","../../src/core/components/pie-chart/pie-chart-class.js","../../src/core/components/pie-chart/pie-chart.js","../../src/core/components/area-chart/area-chart-class.js","../../src/core/components/area-chart/area-chart.js","../../src/core/components/breadcrumbs/breadcrumbs.js","../../src/core/framework7.js","../../src/core/components/contacts-list/contacts-list.js","../../src/core/components/timeline/timeline.js","../../src/core/components/chip/chip.js","../../src/core/components/checkbox/checkbox.js","../../src/core/components/radio/radio.js","../../src/core/components/grid/grid.js","../../src/core/components/skeleton/skeleton.js","../../src/core/components/typography/typography.js"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\n\nObject.keys(methods).forEach((methodName) => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\n\nexport default methods.$;\n","/* eslint-disable */\nfunction signum(num) {\n return num < 0 ? -1 : 0 === num ? 0 : 1;\n}\n\nfunction lerp(start, stop, amount) {\n return (1 - amount) * start + amount * stop;\n}\n\nfunction clampInt(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\n\nfunction clampDouble(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\n\nfunction sanitizeDegreesDouble(degrees) {\n return (degrees %= 360) < 0 && (degrees += 360), degrees;\n}\n\nfunction rotationDirection(from, to) {\n return sanitizeDegreesDouble(to - from) <= 180 ? 1 : -1;\n}\n\nfunction differenceDegrees(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nfunction matrixMultiply(row, matrix) {\n return [ row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2], row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2], row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2] ];\n}\n\nconst SRGB_TO_XYZ = [ [ .41233895, .35762064, .18051042 ], [ .2126, .7152, .0722 ], [ .01932141, .11916382, .95034478 ] ], XYZ_TO_SRGB = [ [ 3.2413774792388685, -1.5376652402851851, -.49885366846268053 ], [ -.9691452513005321, 1.8758853451067872, .04156585616912061 ], [ .05562093689691305, -.20395524564742123, 1.0571799111220335 ] ], WHITE_POINT_D65 = [ 95.047, 100, 108.883 ];\n\nfunction argbFromRgb(red, green, blue) {\n return (255 << 24 | (255 & red) << 16 | (255 & green) << 8 | 255 & blue) >>> 0;\n}\n\nfunction argbFromLinrgb(linrgb) {\n return argbFromRgb(delinearized(linrgb[0]), delinearized(linrgb[1]), delinearized(linrgb[2]));\n}\n\nfunction redFromArgb(argb) {\n return argb >> 16 & 255;\n}\n\nfunction greenFromArgb(argb) {\n return argb >> 8 & 255;\n}\n\nfunction blueFromArgb(argb) {\n return 255 & argb;\n}\n\nfunction argbFromXyz(x, y, z) {\n const matrix = XYZ_TO_SRGB, linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z, linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z, linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n return argbFromRgb(delinearized(linearR), delinearized(linearG), delinearized(linearB));\n}\n\nfunction xyzFromArgb(argb) {\n return matrixMultiply([ linearized(redFromArgb(argb)), linearized(greenFromArgb(argb)), linearized(blueFromArgb(argb)) ], SRGB_TO_XYZ);\n}\n\nfunction argbFromLstar(lstar) {\n const component = delinearized(yFromLstar(lstar));\n return argbFromRgb(component, component, component);\n}\n\nfunction lstarFromArgb(argb) {\n return 116 * labF(xyzFromArgb(argb)[1] / 100) - 16;\n}\n\nfunction yFromLstar(lstar) {\n return 100 * labInvf((lstar + 16) / 116);\n}\n\nfunction lstarFromY(y) {\n return 116 * labF(y / 100) - 16;\n}\n\nfunction linearized(rgbComponent) {\n const normalized = rgbComponent / 255;\n return normalized <= .040449936 ? normalized / 12.92 * 100 : 100 * Math.pow((normalized + .055) / 1.055, 2.4);\n}\n\nfunction delinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, \n clampInt(0, 255, Math.round(255 * delinearized));\n}\n\nfunction whitePointD65() {\n return WHITE_POINT_D65;\n}\n\nfunction labF(t) {\n return t > 216 / 24389 ? Math.pow(t, 1 / 3) : (903.2962962962963 * t + 16) / 116;\n}\n\nfunction labInvf(ft) {\n const ft3 = ft * ft * ft;\n return ft3 > 216 / 24389 ? ft3 : (116 * ft - 16) / 903.2962962962963;\n}\n\nclass ViewingConditions {\n static make(whitePoint = whitePointD65(), adaptingLuminance = 200 / Math.PI * yFromLstar(50) / 100, backgroundLstar = 50, surround = 2, discountingIlluminant = !1) {\n const xyz = whitePoint, rW = .401288 * xyz[0] + .650173 * xyz[1] + -.051461 * xyz[2], gW = -.250268 * xyz[0] + 1.204414 * xyz[1] + .045854 * xyz[2], bW = -.002079 * xyz[0] + .048952 * xyz[1] + .953127 * xyz[2], f = .8 + surround / 10, c = f >= .9 ? lerp(.59, .69, 10 * (f - .9)) : lerp(.525, .59, 10 * (f - .8));\n let d = discountingIlluminant ? 1 : f * (1 - 1 / 3.6 * Math.exp((-adaptingLuminance - 42) / 92));\n d = d > 1 ? 1 : d < 0 ? 0 : d;\n const nc = f, rgbD = [ d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d ], k = 1 / (5 * adaptingLuminance + 1), k4 = k * k * k * k, k4F = 1 - k4, fl = k4 * adaptingLuminance + .1 * k4F * k4F * Math.cbrt(5 * adaptingLuminance), n = yFromLstar(backgroundLstar) / whitePoint[1], z = 1.48 + Math.sqrt(n), nbb = .725 / Math.pow(n, .2), ncb = nbb, rgbAFactors = [ Math.pow(fl * rgbD[0] * rW / 100, .42), Math.pow(fl * rgbD[1] * gW / 100, .42), Math.pow(fl * rgbD[2] * bW / 100, .42) ], rgbA = [ 400 * rgbAFactors[0] / (rgbAFactors[0] + 27.13), 400 * rgbAFactors[1] / (rgbAFactors[1] + 27.13), 400 * rgbAFactors[2] / (rgbAFactors[2] + 27.13) ];\n return new ViewingConditions(n, (2 * rgbA[0] + rgbA[1] + .05 * rgbA[2]) * nbb, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, .25), z);\n }\n constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, \n this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;\n }\n}\n\nViewingConditions.DEFAULT = ViewingConditions.make();\n\nclass Cam16 {\n constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n this.hue = hue, this.chroma = chroma, this.j = j, this.q = q, this.m = m, this.s = s, \n this.jstar = jstar, this.astar = astar, this.bstar = bstar;\n }\n distance(other) {\n const dJ = this.jstar - other.jstar, dA = this.astar - other.astar, dB = this.bstar - other.bstar, dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n return 1.41 * Math.pow(dEPrime, .63);\n }\n static fromInt(argb) {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n static fromIntInViewingConditions(argb, viewingConditions) {\n const green = (65280 & argb) >> 8, blue = 255 & argb, redL = linearized((16711680 & argb) >> 16), greenL = linearized(green), blueL = linearized(blue), x = .41233895 * redL + .35762064 * greenL + .18051042 * blueL, y = .2126 * redL + .7152 * greenL + .0722 * blueL, z = .01932141 * redL + .11916382 * greenL + .95034478 * blueL, rC = .401288 * x + .650173 * y - .051461 * z, gC = -.250268 * x + 1.204414 * y + .045854 * z, bC = -.002079 * x + .048952 * y + .953127 * z, rD = viewingConditions.rgbD[0] * rC, gD = viewingConditions.rgbD[1] * gC, bD = viewingConditions.rgbD[2] * bC, rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42), gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42), bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42), rA = 400 * signum(rD) * rAF / (rAF + 27.13), gA = 400 * signum(gD) * gAF / (gAF + 27.13), bA = 400 * signum(bD) * bAF / (bAF + 27.13), a = (11 * rA + -12 * gA + bA) / 11, b = (rA + gA - 2 * bA) / 9, u = (20 * rA + 20 * gA + 21 * bA) / 20, p2 = (40 * rA + 20 * gA + bA) / 20, atanDegrees = 180 * Math.atan2(b, a) / Math.PI, hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees, hueRadians = hue * Math.PI / 180, ac = p2 * viewingConditions.nbb, j = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z), q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot, huePrime = hue < 20.14 ? hue + 360 : hue, t = 5e4 / 13 * (.25 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305), alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), c = alpha * Math.sqrt(j / 100), m = c * viewingConditions.fLRoot, s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)), jstar = (1 + 100 * .007) * j / (1 + .007 * j), mstar = 1 / .0228 * Math.log(1 + .0228 * m), astar = mstar * Math.cos(hueRadians), bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromJch(j, c, h) {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n static fromJchInViewingConditions(j, c, h, viewingConditions) {\n const q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot, m = c * viewingConditions.fLRoot, alpha = c / Math.sqrt(j / 100), s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)), hueRadians = h * Math.PI / 180, jstar = (1 + 100 * .007) * j / (1 + .007 * j), mstar = 1 / .0228 * Math.log(1 + .0228 * m), astar = mstar * Math.cos(hueRadians), bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromUcs(jstar, astar, bstar) {\n return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n const a = astar, b = bstar, m = Math.sqrt(a * a + b * b), c = (Math.exp(.0228 * m) - 1) / .0228 / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180 / Math.PI);\n h < 0 && (h += 360);\n const j = jstar / (1 - .007 * (jstar - 100));\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n toInt() {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n viewed(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9), hRad = this.hue * Math.PI / 180, eHue = .25 * (Math.cos(hRad + 2) + 3.8), ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z), p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, p2 = ac / viewingConditions.nbb, hSin = Math.sin(hRad), hCos = Math.cos(hRad), gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin), a = gamma * hCos, b = gamma * hSin, rA = (460 * p2 + 451 * a + 288 * b) / 1403, gA = (460 * p2 - 891 * a - 261 * b) / 1403, bA = (460 * p2 - 220 * a - 6300 * b) / 1403, rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))), rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42), gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))), gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42), bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))), bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42), rF = rC / viewingConditions.rgbD[0], gF = gC / viewingConditions.rgbD[1], bF = bC / viewingConditions.rgbD[2];\n return argbFromXyz(1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF);\n }\n static fromXyzInViewingConditions(x, y, z, viewingConditions) {\n const rC = .401288 * x + .650173 * y - .051461 * z, gC = -.250268 * x + 1.204414 * y + .045854 * z, bC = -.002079 * x + .048952 * y + .953127 * z, rD = viewingConditions.rgbD[0] * rC, gD = viewingConditions.rgbD[1] * gC, bD = viewingConditions.rgbD[2] * bC, rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42), gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42), bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42), rA = 400 * signum(rD) * rAF / (rAF + 27.13), gA = 400 * signum(gD) * gAF / (gAF + 27.13), bA = 400 * signum(bD) * bAF / (bAF + 27.13), a = (11 * rA + -12 * gA + bA) / 11, b = (rA + gA - 2 * bA) / 9, u = (20 * rA + 20 * gA + 21 * bA) / 20, p2 = (40 * rA + 20 * gA + bA) / 20, atanDegrees = 180 * Math.atan2(b, a) / Math.PI, hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees, hueRadians = hue * Math.PI / 180, ac = p2 * viewingConditions.nbb, J = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z), Q = 4 / viewingConditions.c * Math.sqrt(J / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot, huePrime = hue < 20.14 ? hue + 360 : hue, t = 5e4 / 13 * (1 / 4 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305), alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), C = alpha * Math.sqrt(J / 100), M = C * viewingConditions.fLRoot, s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)), jstar = (1 + 100 * .007) * J / (1 + .007 * J), mstar = Math.log(1 + .0228 * M) / .0228, astar = mstar * Math.cos(hueRadians), bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n }\n xyzInViewingConditions(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9), hRad = this.hue * Math.PI / 180, eHue = .25 * (Math.cos(hRad + 2) + 3.8), ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z), p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, p2 = ac / viewingConditions.nbb, hSin = Math.sin(hRad), hCos = Math.cos(hRad), gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin), a = gamma * hCos, b = gamma * hSin, rA = (460 * p2 + 451 * a + 288 * b) / 1403, gA = (460 * p2 - 891 * a - 261 * b) / 1403, bA = (460 * p2 - 220 * a - 6300 * b) / 1403, rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))), rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42), gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))), gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42), bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))), bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42), rF = rC / viewingConditions.rgbD[0], gF = gC / viewingConditions.rgbD[1], bF = bC / viewingConditions.rgbD[2];\n return [ 1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF ];\n }\n}\n\nclass HctSolver {\n static sanitizeRadians(angle) {\n return (angle + 8 * Math.PI) % (2 * Math.PI);\n }\n static trueDelinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, \n 255 * delinearized;\n }\n static chromaticAdaptation(component) {\n const af = Math.pow(Math.abs(component), .42);\n return 400 * signum(component) * af / (af + 27.13);\n }\n static hueOf(linrgb) {\n const scaledDiscount = matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB), rA = HctSolver.chromaticAdaptation(scaledDiscount[0]), gA = HctSolver.chromaticAdaptation(scaledDiscount[1]), bA = HctSolver.chromaticAdaptation(scaledDiscount[2]), a = (11 * rA + -12 * gA + bA) / 11, b = (rA + gA - 2 * bA) / 9;\n return Math.atan2(b, a);\n }\n static areInCyclicOrder(a, b, c) {\n return HctSolver.sanitizeRadians(b - a) < HctSolver.sanitizeRadians(c - a);\n }\n static intercept(source, mid, target) {\n return (mid - source) / (target - source);\n }\n static lerpPoint(source, t, target) {\n return [ source[0] + (target[0] - source[0]) * t, source[1] + (target[1] - source[1]) * t, source[2] + (target[2] - source[2]) * t ];\n }\n static setCoordinate(source, coordinate, target, axis) {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n static isBounded(x) {\n return 0 <= x && x <= 100;\n }\n static nthVertex(y, n) {\n const kR = HctSolver.Y_FROM_LINRGB[0], kG = HctSolver.Y_FROM_LINRGB[1], kB = HctSolver.Y_FROM_LINRGB[2], coordA = n % 4 <= 1 ? 0 : 100, coordB = n % 2 == 0 ? 0 : 100;\n if (n < 4) {\n const g = coordA, b = coordB, r = (y - g * kG - b * kB) / kR;\n return HctSolver.isBounded(r) ? [ r, g, b ] : [ -1, -1, -1 ];\n }\n if (n < 8) {\n const b = coordA, r = coordB, g = (y - r * kR - b * kB) / kG;\n return HctSolver.isBounded(g) ? [ r, g, b ] : [ -1, -1, -1 ];\n }\n {\n const r = coordA, g = coordB, b = (y - r * kR - g * kG) / kB;\n return HctSolver.isBounded(b) ? [ r, g, b ] : [ -1, -1, -1 ];\n }\n }\n static bisectToSegment(y, targetHue) {\n let left = [ -1, -1, -1 ], right = left, leftHue = 0, rightHue = 0, initialized = !1, uncut = !0;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) continue;\n const midHue = HctSolver.hueOf(mid);\n initialized ? (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) && (uncut = !1, \n HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rightHue = midHue) : (left = mid, \n leftHue = midHue)) : (left = mid, right = mid, leftHue = midHue, rightHue = midHue, \n initialized = !0);\n }\n return [ left, right ];\n }\n static midpoint(a, b) {\n return [ (a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2 ];\n }\n static criticalPlaneBelow(x) {\n return Math.floor(x - .5);\n }\n static criticalPlaneAbove(x) {\n return Math.ceil(x - .5);\n }\n static bisectToLimit(y, targetHue) {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0], leftHue = HctSolver.hueOf(left), right = segment[1];\n for (let axis = 0; axis < 3; axis++) if (left[axis] !== right[axis]) {\n let lPlane = -1, rPlane = 255;\n left[axis] < right[axis] ? (lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis])), \n rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]))) : (lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis])), \n rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis])));\n for (let i = 0; i < 8 && !(Math.abs(rPlane - lPlane) <= 1); i++) {\n const mPlane = Math.floor((lPlane + rPlane) / 2), midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane], mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis), midHue = HctSolver.hueOf(mid);\n HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rPlane = mPlane) : (left = mid, \n leftHue = midHue, lPlane = mPlane);\n }\n }\n return HctSolver.midpoint(left, right);\n }\n static inverseChromaticAdaptation(adapted) {\n const adaptedAbs = Math.abs(adapted), base = Math.max(0, 27.13 * adaptedAbs / (400 - adaptedAbs));\n return signum(adapted) * Math.pow(base, 1 / .42);\n }\n static findResultByJ(hueRadians, chroma, y) {\n let j = 11 * Math.sqrt(y);\n const viewingConditions = ViewingConditions.DEFAULT, tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), p1 = .25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, hSin = Math.sin(hueRadians), hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n const jNormalized = j / 100, alpha = 0 === chroma || 0 === j ? 0 : chroma / Math.sqrt(jNormalized), t = Math.pow(alpha * tInnerCoeff, 1 / .9), p2 = viewingConditions.aw * Math.pow(jNormalized, 1 / viewingConditions.c / viewingConditions.z) / viewingConditions.nbb, gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin), a = gamma * hCos, b = gamma * hSin, rA = (460 * p2 + 451 * a + 288 * b) / 1403, gA = (460 * p2 - 891 * a - 261 * b) / 1403, bA = (460 * p2 - 220 * a - 6300 * b) / 1403, linrgb = matrixMultiply([ HctSolver.inverseChromaticAdaptation(rA), HctSolver.inverseChromaticAdaptation(gA), HctSolver.inverseChromaticAdaptation(bA) ], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) return 0;\n const kR = HctSolver.Y_FROM_LINRGB[0], kG = HctSolver.Y_FROM_LINRGB[1], kB = HctSolver.Y_FROM_LINRGB[2], fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) return 0;\n if (4 === iterationRound || Math.abs(fnj - y) < .002) return linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01 ? 0 : argbFromLinrgb(linrgb);\n j -= (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n static solveToInt(hueDegrees, chroma, lstar) {\n if (chroma < 1e-4 || lstar < 1e-4 || lstar > 99.9999) return argbFromLstar(lstar);\n const hueRadians = (hueDegrees = sanitizeDegreesDouble(hueDegrees)) / 180 * Math.PI, y = yFromLstar(lstar), exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (0 !== exactAnswer) return exactAnswer;\n return argbFromLinrgb(HctSolver.bisectToLimit(y, hueRadians));\n }\n static solveToCam(hueDegrees, chroma, lstar) {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\n\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [ [ .001200833568784504, .002389694492170889, .0002795742885861124 ], [ .0005891086651375999, .0029785502573438758, .0003270666104008398 ], [ .00010146692491640572, .0005364214359186694, .0032979401770712076 ] ], \nHctSolver.LINRGB_FROM_SCALED_DISCOUNT = [ [ 1373.2198709594231, -1100.4251190754821, -7.278681089101213 ], [ -271.815969077903, 559.6580465940733, -32.46047482791194 ], [ 1.9622899599665666, -57.173814538844006, 308.7233197812385 ] ], \nHctSolver.Y_FROM_LINRGB = [ .2126, .7152, .0722 ], HctSolver.CRITICAL_PLANES = [ .015176349177441876, .045529047532325624, .07588174588720938, .10623444424209313, .13658714259697685, .16693984095186062, .19729253930674434, .2276452376616281, .2579979360165119, .28835063437139563, .3188300904430532, .350925934958123, .3848314933096426, .42057480301049466, .458183274052838, .4976837250274023, .5391024159806381, .5824650784040898, .6277969426914107, .6751227633498623, .7244668422128921, .775853049866786, .829304845476233, .8848452951698498, .942497089126609, 1.0022825574869039, 1.0642236851973577, 1.1283421258858297, 1.1946592148522128, 1.2631959812511864, 1.3339731595349034, 1.407011200216447, 1.4823302800086415, 1.5599503113873272, 1.6398909516233677, 1.7221716113234105, 1.8068114625156377, 1.8938294463134073, 1.9832442801866852, 2.075074464868551, 2.1693382909216234, 2.2660538449872063, 2.36523901573795, 2.4669114995532007, 2.5710888059345764, 2.6777882626779785, 2.7870270208169257, 2.898822059350997, 3.0131901897720907, 3.1301480604002863, 3.2497121605402226, 3.3718988244681087, 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158, 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092, 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488, 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294, 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924, 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143, 7.323895587840543, 7.5195704746346665, 7.7182615035334345, 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703, 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839, 9.644347703669503, 9.873909240696694, 10.106627003236781, 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364, 11.317986476196008, 11.569896988756009, 11.825048221409341, 12.083451977536606, 12.345119996613247, 12.610063955123938, 12.878295467455942, 13.149826086772048, 13.42466730586372, 13.702830557985108, 13.984327217668513, 14.269168601521828, 14.55736596900856, 14.848930523210871, 15.143873411576273, 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634, 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625, 17.95219714852476, 18.281524751807332, 18.614349837764564, 18.95068293910138, 19.290534541298456, 19.633915083172692, 19.98083495742689, 20.331304511189067, 20.685334046541502, 21.042933821039977, 21.404114048223256, 21.76888489811322, 22.137256497705877, 22.50923893145328, 22.884842241736916, 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083, 24.817520537484558, 25.21505769858089, 25.61628489293138, 26.021211842414342, 26.429848230738664, 26.842203703840827, 27.258287870275353, 27.678110301598522, 28.10168053274597, 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845, 30.276079891419332, 30.722335150426627, 31.172403958865512, 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665, 33.4802739966603, 33.953417292456834, 34.430438229418264, 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349, 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926, 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545, 40.98864111053629, 41.520882981230194, 42.05713473317016, 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697, 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552, 47.065252796817916, 47.64207110610409, 48.22299226451468, 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984, 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392, 53.637271562750364, 54.259673423945976, 54.88626804504493, 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916, 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251, 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159, 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529, 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222, 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104, 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733, 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393, 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869, 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706, 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343, 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655, 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066, 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159, 97.78421388448044, 98.6670533535366, 99.55452497210776 ];\n\nclass Hct {\n static from(hue, chroma, tone) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n static fromInt(argb) {\n return new Hct(argb);\n }\n toInt() {\n return this.argb;\n }\n get hue() {\n return this.internalHue;\n }\n set hue(newHue) {\n this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n }\n get chroma() {\n return this.internalChroma;\n }\n set chroma(newChroma) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n }\n get tone() {\n return this.internalTone;\n }\n set tone(newTone) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n }\n constructor(argb) {\n this.argb = argb;\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), \n this.argb = argb;\n }\n setInternalState(argb) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), \n this.argb = argb;\n }\n inViewingConditions(vc) {\n const viewedInVc = Cam16.fromInt(this.toInt()).xyzInViewingConditions(vc), recastInVc = Cam16.fromXyzInViewingConditions(viewedInVc[0], viewedInVc[1], viewedInVc[2], ViewingConditions.make());\n return Hct.from(recastInVc.hue, recastInVc.chroma, lstarFromY(viewedInVc[1]));\n }\n}\n\nclass Blend {\n static harmonize(designColor, sourceColor) {\n const fromHct = Hct.fromInt(designColor), toHct = Hct.fromInt(sourceColor), differenceDegrees$1 = differenceDegrees(fromHct.hue, toHct.hue), rotationDegrees = Math.min(.5 * differenceDegrees$1, 15), outputHue = sanitizeDegreesDouble(fromHct.hue + rotationDegrees * rotationDirection(fromHct.hue, toHct.hue));\n return Hct.from(outputHue, fromHct.chroma, fromHct.tone).toInt();\n }\n static hctHue(from, to, amount) {\n const ucs = Blend.cam16Ucs(from, to, amount), ucsCam = Cam16.fromInt(ucs), fromCam = Cam16.fromInt(from);\n return Hct.from(ucsCam.hue, fromCam.chroma, lstarFromArgb(from)).toInt();\n }\n static cam16Ucs(from, to, amount) {\n const fromCam = Cam16.fromInt(from), toCam = Cam16.fromInt(to), fromJ = fromCam.jstar, fromA = fromCam.astar, fromB = fromCam.bstar, jstar = fromJ + (toCam.jstar - fromJ) * amount, astar = fromA + (toCam.astar - fromA) * amount, bstar = fromB + (toCam.bstar - fromB) * amount;\n return Cam16.fromUcs(jstar, astar, bstar).toInt();\n }\n}\n\nclass Contrast {\n static ratioOfTones(toneA, toneB) {\n return toneA = clampDouble(0, 100, toneA), toneB = clampDouble(0, 100, toneB), Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));\n }\n static ratioOfYs(y1, y2) {\n const lighter = y1 > y2 ? y1 : y2;\n return (lighter + 5) / ((lighter === y2 ? y1 : y2) + 5);\n }\n static lighter(tone, ratio) {\n if (tone < 0 || tone > 100) return -1;\n const darkY = yFromLstar(tone), lightY = ratio * (darkY + 5) - 5, realContrast = Contrast.ratioOfYs(lightY, darkY), delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > .04) return -1;\n const returnValue = lstarFromY(lightY) + .4;\n return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n }\n static darker(tone, ratio) {\n if (tone < 0 || tone > 100) return -1;\n const lightY = yFromLstar(tone), darkY = (lightY + 5) / ratio - 5, realContrast = Contrast.ratioOfYs(lightY, darkY), delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > .04) return -1;\n const returnValue = lstarFromY(darkY) - .4;\n return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n }\n static lighterUnsafe(tone, ratio) {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return lighterSafe < 0 ? 100 : lighterSafe;\n }\n static darkerUnsafe(tone, ratio) {\n const darkerSafe = Contrast.darker(tone, ratio);\n return darkerSafe < 0 ? 0 : darkerSafe;\n }\n}\n\nclass DislikeAnalyzer {\n static isDisliked(hct) {\n const huePasses = Math.round(hct.hue) >= 90 && Math.round(hct.hue) <= 111, chromaPasses = Math.round(hct.chroma) > 16, tonePasses = Math.round(hct.tone) < 65;\n return huePasses && chromaPasses && tonePasses;\n }\n static fixIfDisliked(hct) {\n return DislikeAnalyzer.isDisliked(hct) ? Hct.from(hct.hue, hct.chroma, 70) : hct;\n }\n}\n\nclass DynamicColor {\n static fromPalette(args) {\n return new DynamicColor(args.name ?? \"\", args.palette, args.tone, args.isBackground ?? !1, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);\n }\n constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {\n if (this.name = name, this.palette = palette, this.tone = tone, this.isBackground = isBackground, \n this.background = background, this.secondBackground = secondBackground, this.contrastCurve = contrastCurve, \n this.toneDeltaPair = toneDeltaPair, this.hctCache = new Map, !background && secondBackground) throw new Error(`Color ${name} has secondBackgrounddefined, but background is not defined.`);\n if (!background && contrastCurve) throw new Error(`Color ${name} has contrastCurvedefined, but background is not defined.`);\n if (background && !contrastCurve) throw new Error(`Color ${name} has backgrounddefined, but contrastCurve is not defined.`);\n }\n getArgb(scheme) {\n return this.getHct(scheme).toInt();\n }\n getHct(scheme) {\n const cachedAnswer = this.hctCache.get(scheme);\n if (null != cachedAnswer) return cachedAnswer;\n const tone = this.getTone(scheme), answer = this.palette(scheme).getHct(tone);\n return this.hctCache.size > 4 && this.hctCache.clear(), this.hctCache.set(scheme, answer), \n answer;\n }\n getTone(scheme) {\n const decreasingContrast = scheme.contrastLevel < 0;\n if (this.toneDeltaPair) {\n const toneDeltaPair = this.toneDeltaPair(scheme), roleA = toneDeltaPair.roleA, roleB = toneDeltaPair.roleB, delta = toneDeltaPair.delta, polarity = toneDeltaPair.polarity, stayTogether = toneDeltaPair.stayTogether, bgTone = this.background(scheme).getTone(scheme), aIsNearer = \"nearer\" === polarity || \"lighter\" === polarity && !scheme.isDark || \"darker\" === polarity && scheme.isDark, nearer = aIsNearer ? roleA : roleB, farther = aIsNearer ? roleB : roleA, amNearer = this.name === nearer.name, expansionDir = scheme.isDark ? 1 : -1, nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel), fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel), nInitialTone = nearer.tone(scheme);\n let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ? nInitialTone : DynamicColor.foregroundTone(bgTone, nContrast);\n const fInitialTone = farther.tone(scheme);\n let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ? fInitialTone : DynamicColor.foregroundTone(bgTone, fContrast);\n return decreasingContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast), \n fTone = DynamicColor.foregroundTone(bgTone, fContrast)), (fTone - nTone) * expansionDir >= delta || (fTone = clampDouble(0, 100, nTone + delta * expansionDir), \n (fTone - nTone) * expansionDir >= delta || (nTone = clampDouble(0, 100, fTone - delta * expansionDir))), \n 50 <= nTone && nTone < 60 ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, \n fTone = Math.min(fTone, nTone + delta * expansionDir)) : 50 <= fTone && fTone < 60 && (stayTogether ? expansionDir > 0 ? (nTone = 60, \n fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : fTone = expansionDir > 0 ? 60 : 49), \n amNearer ? nTone : fTone;\n }\n {\n let answer = this.tone(scheme);\n if (null == this.background) return answer;\n const bgTone = this.background(scheme).getTone(scheme), desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio || (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), \n decreasingContrast && (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), \n this.isBackground && 50 <= answer && answer < 60 && (answer = Contrast.ratioOfTones(49, bgTone) >= desiredRatio ? 49 : 60), \n this.secondBackground) {\n const [bg1, bg2] = [ this.background, this.secondBackground ], [bgTone1, bgTone2] = [ bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme) ], [upper, lower] = [ Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2) ];\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;\n const lightOption = Contrast.lighter(upper, desiredRatio), darkOption = Contrast.darker(lower, desiredRatio), availables = [];\n -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);\n return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;\n }\n return answer;\n }\n }\n static foregroundTone(bgTone, ratio) {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio), darkerTone = Contrast.darkerUnsafe(bgTone, ratio), lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone), darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n if (DynamicColor.tonePrefersLightForeground(bgTone)) {\n const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < .1 && lighterRatio < ratio && darkerRatio < ratio;\n return lighterRatio >= ratio || lighterRatio >= darkerRatio || negligibleDifference ? lighterTone : darkerTone;\n }\n return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone : lighterTone;\n }\n static tonePrefersLightForeground(tone) {\n return Math.round(tone) < 60;\n }\n static toneAllowsLightForeground(tone) {\n return Math.round(tone) <= 49;\n }\n static enableLightForeground(tone) {\n return DynamicColor.tonePrefersLightForeground(tone) && !DynamicColor.toneAllowsLightForeground(tone) ? 49 : tone;\n }\n}\n\nvar Variant;\n\n!function(Variant) {\n Variant[Variant.MONOCHROME = 0] = \"MONOCHROME\", Variant[Variant.NEUTRAL = 1] = \"NEUTRAL\", \n Variant[Variant.TONAL_SPOT = 2] = \"TONAL_SPOT\", Variant[Variant.VIBRANT = 3] = \"VIBRANT\", \n Variant[Variant.EXPRESSIVE = 4] = \"EXPRESSIVE\", Variant[Variant.FIDELITY = 5] = \"FIDELITY\", \n Variant[Variant.CONTENT = 6] = \"CONTENT\", Variant[Variant.RAINBOW = 7] = \"RAINBOW\", \n Variant[Variant.FRUIT_SALAD = 8] = \"FRUIT_SALAD\";\n}(Variant || (Variant = {}));\n\nclass ContrastCurve {\n constructor(low, normal, medium, high) {\n this.low = low, this.normal = normal, this.medium = medium, this.high = high;\n }\n getContrast(contrastLevel) {\n return contrastLevel <= -1 ? this.low : contrastLevel < 0 ? lerp(this.low, this.normal, (contrastLevel - -1) / 1) : contrastLevel < .5 ? lerp(this.normal, this.medium, (contrastLevel - 0) / .5) : contrastLevel < 1 ? lerp(this.medium, this.high, (contrastLevel - .5) / .5) : this.high;\n }\n}\n\nclass ToneDeltaPair {\n constructor(roleA, roleB, delta, polarity, stayTogether) {\n this.roleA = roleA, this.roleB = roleB, this.delta = delta, this.polarity = polarity, \n this.stayTogether = stayTogether;\n }\n}\n\nfunction isFidelity(scheme) {\n return scheme.variant === Variant.FIDELITY || scheme.variant === Variant.CONTENT;\n}\n\nfunction isMonochrome(scheme) {\n return scheme.variant === Variant.MONOCHROME;\n}\n\nfunction findDesiredChromaByTone(hue, chroma, tone, byDecreasingTone) {\n let answer = tone, closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n for (;closestToChroma.chroma < chroma; ) {\n answer += byDecreasingTone ? -1 : 1;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) break;\n if (Math.abs(potentialSolution.chroma - chroma) < .4) break;\n Math.abs(potentialSolution.chroma - chroma) < Math.abs(closestToChroma.chroma - chroma) && (closestToChroma = potentialSolution), \n chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n return answer;\n}\n\nfunction viewingConditionsForAlbers(scheme) {\n return ViewingConditions.make(void 0, void 0, scheme.isDark ? 30 : 80, void 0, void 0);\n}\n\nfunction performAlbers(prealbers, scheme) {\n const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));\n return DynamicColor.tonePrefersLightForeground(prealbers.tone) && !DynamicColor.toneAllowsLightForeground(albersd.tone) ? DynamicColor.enableLightForeground(prealbers.tone) : DynamicColor.enableLightForeground(albersd.tone);\n}\n\nclass MaterialDynamicColors {\n static highestSurface(s) {\n return s.isDark ? MaterialDynamicColors.surfaceBright : MaterialDynamicColors.surfaceDim;\n }\n}\n\nMaterialDynamicColors.contentAccentToneDelta = 15, MaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"primary_palette_key_color\",\n palette: s => s.primaryPalette,\n tone: s => s.primaryPalette.keyColor.tone\n}), MaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"secondary_palette_key_color\",\n palette: s => s.secondaryPalette,\n tone: s => s.secondaryPalette.keyColor.tone\n}), MaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"tertiary_palette_key_color\",\n palette: s => s.tertiaryPalette,\n tone: s => s.tertiaryPalette.keyColor.tone\n}), MaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({\n name: \"neutral_palette_key_color\",\n palette: s => s.neutralPalette,\n tone: s => s.neutralPalette.keyColor.tone\n}), MaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({\n name: \"neutral_variant_palette_key_color\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.neutralVariantPalette.keyColor.tone\n}), MaterialDynamicColors.background = DynamicColor.fromPalette({\n name: \"background\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 98,\n isBackground: !0\n}), MaterialDynamicColors.onBackground = DynamicColor.fromPalette({\n name: \"on_background\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.background,\n contrastCurve: new ContrastCurve(3, 3, 4.5, 7)\n}), MaterialDynamicColors.surface = DynamicColor.fromPalette({\n name: \"surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 98,\n isBackground: !0\n}), MaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({\n name: \"surface_dim\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 87,\n isBackground: !0\n}), MaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({\n name: \"surface_bright\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 24 : 98,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({\n name: \"surface_container_lowest\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 4 : 100,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({\n name: \"surface_container_low\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 10 : 96,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({\n name: \"surface_container\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 12 : 94,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({\n name: \"surface_container_high\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 17 : 92,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({\n name: \"surface_container_highest\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 22 : 90,\n isBackground: !0\n}), MaterialDynamicColors.onSurface = DynamicColor.fromPalette({\n name: \"on_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({\n name: \"surface_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 30 : 90,\n isBackground: !0\n}), MaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({\n name: \"on_surface_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 80 : 30,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({\n name: \"inverse_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 20\n}), MaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({\n name: \"inverse_on_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 20 : 95,\n background: s => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.outline = DynamicColor.fromPalette({\n name: \"outline\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 60 : 50,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7)\n}), MaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({\n name: \"outline_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 30 : 80,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7)\n}), MaterialDynamicColors.shadow = DynamicColor.fromPalette({\n name: \"shadow\",\n palette: s => s.neutralPalette,\n tone: s => 0\n}), MaterialDynamicColors.scrim = DynamicColor.fromPalette({\n name: \"scrim\",\n palette: s => s.neutralPalette,\n tone: s => 0\n}), MaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({\n name: \"surface_tint\",\n palette: s => s.primaryPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0\n}), MaterialDynamicColors.primary = DynamicColor.fromPalette({\n name: \"primary\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 100 : 0 : s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimary = DynamicColor.fromPalette({\n name: \"on_primary\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.primary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({\n name: \"primary_container\",\n palette: s => s.primaryPalette,\n tone: s => isFidelity(s) ? performAlbers(s.sourceColorHct, s) : isMonochrome(s) ? s.isDark ? 85 : 25 : s.isDark ? 30 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({\n name: \"on_primary_container\",\n palette: s => s.primaryPalette,\n tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5) : isMonochrome(s) ? s.isDark ? 0 : 100 : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.primaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({\n name: \"inverse_primary\",\n palette: s => s.primaryPalette,\n tone: s => s.isDark ? 40 : 80,\n background: s => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondary = DynamicColor.fromPalette({\n name: \"secondary\",\n palette: s => s.secondaryPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondary = DynamicColor.fromPalette({\n name: \"on_secondary\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 100 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.secondary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({\n name: \"secondary_container\",\n palette: s => s.secondaryPalette,\n tone: s => {\n const initialTone = s.isDark ? 30 : 90;\n if (isMonochrome(s)) return s.isDark ? 30 : 85;\n if (!isFidelity(s)) return initialTone;\n let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, !s.isDark);\n return answer = performAlbers(s.secondaryPalette.getHct(answer), s), answer;\n },\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({\n name: \"on_secondary_container\",\n palette: s => s.secondaryPalette,\n tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.secondaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiary = DynamicColor.fromPalette({\n name: \"tertiary\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 90 : 25 : s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiary = DynamicColor.fromPalette({\n name: \"on_tertiary\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.tertiary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({\n name: \"tertiary_container\",\n palette: s => s.tertiaryPalette,\n tone: s => {\n if (isMonochrome(s)) return s.isDark ? 60 : 49;\n if (!isFidelity(s)) return s.isDark ? 30 : 90;\n const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s), proposedHct = s.tertiaryPalette.getHct(albersTone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({\n name: \"on_tertiary_container\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 0 : 100 : isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.tertiaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.error = DynamicColor.fromPalette({\n name: \"error\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onError = DynamicColor.fromPalette({\n name: \"on_error\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.error,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.errorContainer = DynamicColor.fromPalette({\n name: \"error_container\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 30 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({\n name: \"on_error_container\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.errorContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({\n name: \"primary_fixed\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 40 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({\n name: \"primary_fixed_dim\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 30 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({\n name: \"on_primary_fixed\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 100 : 10,\n background: s => MaterialDynamicColors.primaryFixedDim,\n secondBackground: s => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_primary_fixed_variant\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 90 : 30,\n background: s => MaterialDynamicColors.primaryFixedDim,\n secondBackground: s => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({\n name: \"secondary_fixed\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 80 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({\n name: \"secondary_fixed_dim\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 70 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({\n name: \"on_secondary_fixed\",\n palette: s => s.secondaryPalette,\n tone: s => 10,\n background: s => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: s => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_secondary_fixed_variant\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 25 : 30,\n background: s => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: s => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({\n name: \"tertiary_fixed\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 40 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({\n name: \"tertiary_fixed_dim\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 30 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({\n name: \"on_tertiary_fixed\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 100 : 10,\n background: s => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_tertiary_fixed_variant\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 90 : 30,\n background: s => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n});\n\nclass TonalPalette {\n static fromInt(argb) {\n const hct = Hct.fromInt(argb);\n return TonalPalette.fromHct(hct);\n }\n static fromHct(hct) {\n return new TonalPalette(hct.hue, hct.chroma, hct);\n }\n static fromHueAndChroma(hue, chroma) {\n return new TonalPalette(hue, chroma, TonalPalette.createKeyColor(hue, chroma));\n }\n constructor(hue, chroma, keyColor) {\n this.hue = hue, this.chroma = chroma, this.keyColor = keyColor, this.cache = new Map;\n }\n static createKeyColor(hue, chroma) {\n let smallestDeltaHct = Hct.from(hue, chroma, 50), smallestDelta = Math.abs(smallestDeltaHct.chroma - chroma);\n for (let delta = 1; delta < 50; delta += 1) {\n if (Math.round(chroma) === Math.round(smallestDeltaHct.chroma)) return smallestDeltaHct;\n const hctAdd = Hct.from(hue, chroma, 50 + delta), hctAddDelta = Math.abs(hctAdd.chroma - chroma);\n hctAddDelta < smallestDelta && (smallestDelta = hctAddDelta, smallestDeltaHct = hctAdd);\n const hctSubtract = Hct.from(hue, chroma, 50 - delta), hctSubtractDelta = Math.abs(hctSubtract.chroma - chroma);\n hctSubtractDelta < smallestDelta && (smallestDelta = hctSubtractDelta, smallestDeltaHct = hctSubtract);\n }\n return smallestDeltaHct;\n }\n tone(tone) {\n let argb = this.cache.get(tone);\n return void 0 === argb && (argb = Hct.from(this.hue, this.chroma, tone).toInt(), \n this.cache.set(tone, argb)), argb;\n }\n getHct(tone) {\n return Hct.fromInt(this.tone(tone));\n }\n}\n\nclass CorePalette {\n static of(argb) {\n return new CorePalette(argb, !1);\n }\n static contentOf(argb) {\n return new CorePalette(argb, !0);\n }\n static fromColors(colors) {\n return CorePalette.createPaletteFromColors(!1, colors);\n }\n static contentFromColors(colors) {\n return CorePalette.createPaletteFromColors(!0, colors);\n }\n static createPaletteFromColors(content, colors) {\n const palette = new CorePalette(colors.primary, content);\n if (colors.secondary) {\n const p = new CorePalette(colors.secondary, content);\n palette.a2 = p.a1;\n }\n if (colors.tertiary) {\n const p = new CorePalette(colors.tertiary, content);\n palette.a3 = p.a1;\n }\n if (colors.error) {\n const p = new CorePalette(colors.error, content);\n palette.error = p.a1;\n }\n if (colors.neutral) {\n const p = new CorePalette(colors.neutral, content);\n palette.n1 = p.n1;\n }\n if (colors.neutralVariant) {\n const p = new CorePalette(colors.neutralVariant, content);\n palette.n2 = p.n2;\n }\n return palette;\n }\n constructor(argb, isContent) {\n const hct = Hct.fromInt(argb), hue = hct.hue, chroma = hct.chroma;\n isContent ? (this.a1 = TonalPalette.fromHueAndChroma(hue, chroma), this.a2 = TonalPalette.fromHueAndChroma(hue, chroma / 3), \n this.a3 = TonalPalette.fromHueAndChroma(hue + 60, chroma / 2), this.n1 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 12, 4)), \n this.n2 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 6, 8))) : (this.a1 = TonalPalette.fromHueAndChroma(hue, Math.max(48, chroma)), \n this.a2 = TonalPalette.fromHueAndChroma(hue, 16), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, 24), \n this.n1 = TonalPalette.fromHueAndChroma(hue, 4), this.n2 = TonalPalette.fromHueAndChroma(hue, 8)), \n this.error = TonalPalette.fromHueAndChroma(25, 84);\n }\n}\n\nclass Scheme {\n get primary() {\n return this.props.primary;\n }\n get onPrimary() {\n return this.props.onPrimary;\n }\n get primaryContainer() {\n return this.props.primaryContainer;\n }\n get onPrimaryContainer() {\n return this.props.onPrimaryContainer;\n }\n get secondary() {\n return this.props.secondary;\n }\n get onSecondary() {\n return this.props.onSecondary;\n }\n get secondaryContainer() {\n return this.props.secondaryContainer;\n }\n get onSecondaryContainer() {\n return this.props.onSecondaryContainer;\n }\n get tertiary() {\n return this.props.tertiary;\n }\n get onTertiary() {\n return this.props.onTertiary;\n }\n get tertiaryContainer() {\n return this.props.tertiaryContainer;\n }\n get onTertiaryContainer() {\n return this.props.onTertiaryContainer;\n }\n get error() {\n return this.props.error;\n }\n get onError() {\n return this.props.onError;\n }\n get errorContainer() {\n return this.props.errorContainer;\n }\n get onErrorContainer() {\n return this.props.onErrorContainer;\n }\n get background() {\n return this.props.background;\n }\n get onBackground() {\n return this.props.onBackground;\n }\n get surface() {\n return this.props.surface;\n }\n get onSurface() {\n return this.props.onSurface;\n }\n get surfaceVariant() {\n return this.props.surfaceVariant;\n }\n get onSurfaceVariant() {\n return this.props.onSurfaceVariant;\n }\n get outline() {\n return this.props.outline;\n }\n get outlineVariant() {\n return this.props.outlineVariant;\n }\n get shadow() {\n return this.props.shadow;\n }\n get scrim() {\n return this.props.scrim;\n }\n get inverseSurface() {\n return this.props.inverseSurface;\n }\n get inverseOnSurface() {\n return this.props.inverseOnSurface;\n }\n get inversePrimary() {\n return this.props.inversePrimary;\n }\n static light(argb) {\n return Scheme.lightFromCorePalette(CorePalette.of(argb));\n }\n static dark(argb) {\n return Scheme.darkFromCorePalette(CorePalette.of(argb));\n }\n static lightContent(argb) {\n return Scheme.lightFromCorePalette(CorePalette.contentOf(argb));\n }\n static darkContent(argb) {\n return Scheme.darkFromCorePalette(CorePalette.contentOf(argb));\n }\n static lightFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(40),\n onPrimary: core.a1.tone(100),\n primaryContainer: core.a1.tone(90),\n onPrimaryContainer: core.a1.tone(10),\n secondary: core.a2.tone(40),\n onSecondary: core.a2.tone(100),\n secondaryContainer: core.a2.tone(90),\n onSecondaryContainer: core.a2.tone(10),\n tertiary: core.a3.tone(40),\n onTertiary: core.a3.tone(100),\n tertiaryContainer: core.a3.tone(90),\n onTertiaryContainer: core.a3.tone(10),\n error: core.error.tone(40),\n onError: core.error.tone(100),\n errorContainer: core.error.tone(90),\n onErrorContainer: core.error.tone(10),\n background: core.n1.tone(99),\n onBackground: core.n1.tone(10),\n surface: core.n1.tone(99),\n onSurface: core.n1.tone(10),\n surfaceVariant: core.n2.tone(90),\n onSurfaceVariant: core.n2.tone(30),\n outline: core.n2.tone(50),\n outlineVariant: core.n2.tone(80),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(20),\n inverseOnSurface: core.n1.tone(95),\n inversePrimary: core.a1.tone(80)\n });\n }\n static darkFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(80),\n onPrimary: core.a1.tone(20),\n primaryContainer: core.a1.tone(30),\n onPrimaryContainer: core.a1.tone(90),\n secondary: core.a2.tone(80),\n onSecondary: core.a2.tone(20),\n secondaryContainer: core.a2.tone(30),\n onSecondaryContainer: core.a2.tone(90),\n tertiary: core.a3.tone(80),\n onTertiary: core.a3.tone(20),\n tertiaryContainer: core.a3.tone(30),\n onTertiaryContainer: core.a3.tone(90),\n error: core.error.tone(80),\n onError: core.error.tone(20),\n errorContainer: core.error.tone(30),\n onErrorContainer: core.error.tone(80),\n background: core.n1.tone(10),\n onBackground: core.n1.tone(90),\n surface: core.n1.tone(10),\n onSurface: core.n1.tone(90),\n surfaceVariant: core.n2.tone(30),\n onSurfaceVariant: core.n2.tone(80),\n outline: core.n2.tone(60),\n outlineVariant: core.n2.tone(30),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(90),\n inverseOnSurface: core.n1.tone(20),\n inversePrimary: core.a1.tone(40)\n });\n }\n constructor(props) {\n this.props = props;\n }\n toJSON() {\n return {\n ...this.props\n };\n }\n}\n\nfunction hexFromArgb(argb) {\n const r = redFromArgb(argb), g = greenFromArgb(argb), b = blueFromArgb(argb), outParts = [ r.toString(16), g.toString(16), b.toString(16) ];\n for (const [i, part] of outParts.entries()) 1 === part.length && (outParts[i] = \"0\" + part);\n return \"#\" + outParts.join(\"\");\n}\n\nfunction argbFromHex(hex) {\n const isThree = 3 === (hex = hex.replace(\"#\", \"\")).length, isSix = 6 === hex.length, isEight = 8 === hex.length;\n if (!isThree && !isSix && !isEight) throw new Error(\"unexpected hex \" + hex);\n let r = 0, g = 0, b = 0;\n return isThree ? (r = parseIntHex(hex.slice(0, 1).repeat(2)), g = parseIntHex(hex.slice(1, 2).repeat(2)), \n b = parseIntHex(hex.slice(2, 3).repeat(2))) : isSix ? (r = parseIntHex(hex.slice(0, 2)), \n g = parseIntHex(hex.slice(2, 4)), b = parseIntHex(hex.slice(4, 6))) : isEight && (r = parseIntHex(hex.slice(2, 4)), \n g = parseIntHex(hex.slice(4, 6)), b = parseIntHex(hex.slice(6, 8))), (255 << 24 | (255 & r) << 16 | (255 & g) << 8 | 255 & b) >>> 0;\n}\n\nfunction parseIntHex(value) {\n return parseInt(value, 16);\n}\n\nfunction themeFromSourceColor(source, customColors = []) {\n const palette = CorePalette.of(source);\n return {\n source: source,\n schemes: {\n light: Scheme.light(source),\n dark: Scheme.dark(source)\n },\n palettes: {\n primary: palette.a1,\n secondary: palette.a2,\n tertiary: palette.a3,\n neutral: palette.n1,\n neutralVariant: palette.n2,\n error: palette.error\n },\n customColors: customColors.map((c => customColor(source, c)))\n };\n}\n\nfunction customColor(source, color) {\n let value = color.value;\n const from = value, to = source;\n color.blend && (value = Blend.harmonize(from, to));\n const tones = CorePalette.of(value).a1;\n return {\n color: color,\n value: value,\n light: {\n color: tones.tone(40),\n onColor: tones.tone(100),\n colorContainer: tones.tone(90),\n onColorContainer: tones.tone(10)\n },\n dark: {\n color: tones.tone(80),\n onColor: tones.tone(20),\n colorContainer: tones.tone(30),\n onColorContainer: tones.tone(90)\n }\n };\n}\n\nexport { argbFromHex, hexFromArgb, themeFromSourceColor };","// eslint-disable-next-line\nimport { argbFromHex, hexFromArgb, themeFromSourceColor } from './material-color-utils.js';\n\n/* eslint-disable */\n// prettier-ignore\nfunction toRGBA(d) {\n const r = Math.round;\n const l = d.length;\n\tconst rgba = {};\n\tif (d.slice(0, 3).toLowerCase() === 'rgb') {\n\t\td = d.replace(' ', '').split(',');\n\t\trgba[0] = parseInt(d[0].slice(d[3].toLowerCase() === 'a' ? 5 : 4), 10);\n\t\trgba[1] = parseInt(d[1], 10);\n\t\trgba[2] = parseInt(d[2], 10);\n\t\trgba[3] = d[3] ? parseFloat(d[3]) : -1;\n\t} else {\n\t\tif (l < 6) d = parseInt(String(d[1]) + d[1] + d[2] + d[2] + d[3] + d[3] + (l > 4 ? String(d[4]) + d[4] : ''), 16);\n\t\telse d = parseInt(d.slice(1), 16);\n\t\trgba[0] = (d >> 16) & 255;\n\t\trgba[1] = (d >> 8) & 255;\n\t\trgba[2] = d & 255;\n\t\trgba[3] = l === 9 || l === 5 ? r((((d >> 24) & 255) / 255) * 10000) / 10000 : -1;\n\t}\n\treturn rgba;\n}\n\n// prettier-ignore\nfunction blend(from, to, p = 0.5) {\n const r = Math.round;\n from = from.trim();\n\tto = to.trim();\n\tconst b = p < 0;\n\tp = b ? p * -1 : p;\n\tconst f = toRGBA(from);\n\tconst t = toRGBA(to);\n\tif (to[0] === 'r') {\n\t\treturn 'rgb' + (to[3] === 'a' ? 'a(' : '(') +\n\t\t\tr(((t[0] - f[0]) * p) + f[0]) + ',' +\n\t\t\tr(((t[1] - f[1]) * p) + f[1]) + ',' +\n\t\t\tr(((t[2] - f[2]) * p) + f[2]) + (\n\t\t\t\tf[3] < 0 && t[3] < 0 ? '' : ',' + (\n\t\t\t\t\tf[3] > -1 && t[3] > -1\n\t\t\t\t\t\t? r((((t[3] - f[3]) * p) + f[3]) * 10000) / 10000\n\t\t\t\t\t\t: t[3] < 0 ? f[3] : t[3]\n\t\t\t\t)\n\t\t\t) + ')';\n\t}\n\n\treturn '#' + (0x100000000 + ((\n\t\tf[3] > -1 && t[3] > -1\n\t\t\t? r((((t[3] - f[3]) * p) + f[3]) * 255)\n\t\t\t: t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255\n\t\t) * 0x1000000) +\n\t\t(r(((t[0] - f[0]) * p) + f[0]) * 0x10000) +\n\t\t(r(((t[1] - f[1]) * p) + f[1]) * 0x100) +\n\t\tr(((t[2] - f[2]) * p) + f[2])\n\t).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n}\n/* eslint-enable */\n\nexport const materialColors = (hexColor = '') => {\n const theme = themeFromSourceColor(argbFromHex(`#${hexColor.replace('#', '')}`));\n [0.05, 0.08, 0.11, 0.12, 0.14].forEach((amount, index) => {\n theme.schemes.light.props[`surface${index + 1}`] = argbFromHex(\n blend(\n hexFromArgb(theme.schemes.light.props.surface),\n hexFromArgb(theme.schemes.light.props.primary),\n amount,\n ),\n );\n theme.schemes.dark.props[`surface${index + 1}`] = argbFromHex(\n blend(\n hexFromArgb(theme.schemes.dark.props.surface),\n hexFromArgb(theme.schemes.dark.props.primary),\n amount,\n ),\n );\n });\n\n const name = (n) => {\n return n\n .split('')\n .map((char) =>\n char.toUpperCase() === char && char !== '-' && char !== '7'\n ? `-${char.toLowerCase()}`\n : char,\n )\n .join('');\n };\n\n const shouldSkip = (prop) => {\n const skip = ['tertiary', 'shadow', 'scrim', 'error', 'background'];\n return skip.filter((v) => prop.toLowerCase().includes(v)).length > 0;\n };\n\n const light = {};\n const dark = {};\n Object.keys(theme.schemes.light.props).forEach((prop) => {\n if (shouldSkip(prop)) return;\n light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.light.props[prop]);\n });\n Object.keys(theme.schemes.dark.props).forEach((prop) => {\n if (shouldSkip(prop)) return;\n dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.dark.props[prop]);\n });\n\n return { light, dark };\n};\n","import { getWindow } from 'ssr-window';\nimport { materialColors } from './material-colors.js';\n\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n uniqueNum += 1;\n return uniqueNum;\n}\nexport function id(mask = 'xxxxxxxxxx', map = '0123456789abcdef') {\n const length = map.length;\n return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n <span class=\"preloader-inner\">\n <svg viewBox=\"0 0 36 36\">\n <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n </svg>\n </span>\n`.trim();\n\nexport const iosPreloaderContent = `\n <span class=\"preloader-inner\">\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n </span>\n`.trim();\n\nexport function eventNameToColonCase(eventName) {\n let hasColon;\n return eventName\n .split('')\n .map((char, index) => {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return `:${char.toLowerCase()}`;\n }\n return char.toLowerCase();\n })\n .join('');\n}\nexport function deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nexport function requestAnimationFrame(callback) {\n const window = getWindow();\n return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n const window = getWindow();\n return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n return requestAnimationFrame(() => {\n requestAnimationFrame(callback);\n });\n}\nexport function now() {\n return Date.now();\n}\n\nexport function parseUrlQuery(url) {\n const window = getWindow();\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] =\n typeof param[1] === 'undefined'\n ? undefined\n : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n}\nexport function getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nexport function serializeObject(obj, parents = []) {\n if (typeof obj === 'string') return obj;\n const resultArray = [];\n const separator = '&';\n let newParents;\n function varName(name) {\n if (parents.length > 0) {\n let parentParts = '';\n for (let j = 0; j < parents.length; j += 1) {\n if (j === 0) parentParts += parents[j];\n else parentParts += `[${encodeURIComponent(parents[j])}]`;\n }\n return `${parentParts}[${encodeURIComponent(name)}]`;\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach((prop) => {\n let toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (let i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n }\n }\n if (toPush.length > 0) resultArray.push(toPush.join(separator));\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(`${varName(prop)}=`);\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = serializeObject(obj[prop], newParents);\n if (toPush !== '') resultArray.push(toPush);\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n } else if (obj[prop] === '') resultArray.push(varName(prop)); // eslint-disable-line\n });\n return resultArray.join(separator);\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge(...args) {\n const to = args[0];\n args.splice(0, 1);\n const from = args;\n\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nexport function extend(...args) {\n let deep = true;\n let to;\n let from;\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function colorHexToRgb(hex) {\n const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n return result ? result.slice(1).map((n) => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n const result = [r, g, b]\n .map((n) => {\n const hex = n.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n })\n .join('');\n return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n r /= 255; // eslint-disable-line\n g /= 255; // eslint-disable-line\n b /= 255; // eslint-disable-line\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n let h;\n if (d === 0) h = 0;\n else if (max === r) h = ((g - b) / d) % 6;\n else if (max === g) h = (b - r) / d + 2;\n else if (max === b) h = (r - g) / d + 4;\n const l = (min + max) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n if (h < 0) h = 360 / 60 + h;\n return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs((hp % 2) - 1));\n let rgb1;\n if (Number.isNaN(h) || typeof h === 'undefined') {\n rgb1 = [0, 0, 0];\n } else if (hp <= 1) rgb1 = [c, x, 0];\n else if (hp <= 2) rgb1 = [x, c, 0];\n else if (hp <= 3) rgb1 = [0, c, x];\n else if (hp <= 4) rgb1 = [0, x, c];\n else if (hp <= 5) rgb1 = [x, 0, c];\n else if (hp <= 6) rgb1 = [c, 0, x];\n const m = l - c / 2;\n return rgb1.map((n) => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n const HSL = {\n h,\n s: 0,\n l: 0,\n };\n const HSB = { h, s, b };\n\n HSL.l = ((2 - HSB.s) * HSB.b) / 2;\n HSL.s = HSL.l && HSL.l < 1 ? (HSB.s * HSB.b) / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n\n return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n const HSB = {\n h,\n s: 0,\n b: 0,\n };\n const HSL = { h, s, l };\n\n const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n HSB.b = HSL.l + t;\n HSB.s = HSL.l > 0 ? (2 * t) / HSB.b : HSB.s;\n\n return [HSB.h, HSB.s, HSB.b];\n}\n\nconst getShadeTintColors = (rgb) => {\n const hsl = colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n return { shade, tint };\n};\nexport function colorThemeCSSProperties(...args) {\n let hex;\n let rgb;\n if (args.length === 1) {\n hex = args[0];\n rgb = colorHexToRgb(hex);\n } else if (args.length === 3) {\n rgb = args;\n hex = colorRgbToHex(...rgb);\n }\n if (!rgb) return {};\n const { light, dark } = materialColors(hex);\n const shadeTintIos = getShadeTintColors(rgb);\n const shadeTintMdLight = getShadeTintColors(colorHexToRgb(light['--f7-md-primary']));\n const shadeTintMdDark = getShadeTintColors(colorHexToRgb(dark['--f7-md-primary']));\n Object.keys(light).forEach((key) => {\n if (key.includes('surface-')) {\n light[`${key}-rgb`] = colorHexToRgb(light[key]);\n }\n });\n Object.keys(dark).forEach((key) => {\n if (key.includes('surface-')) {\n dark[`${key}-rgb`] = colorHexToRgb(dark[key]);\n }\n });\n return {\n ios: {\n '--f7-theme-color': 'var(--f7-ios-primary)',\n '--f7-theme-color-rgb': 'var(--f7-ios-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-ios-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-ios-primary-tint)',\n },\n md: {\n '--f7-theme-color': 'var(--f7-md-primary)',\n '--f7-theme-color-rgb': 'var(--f7-md-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-md-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-md-primary-tint)',\n },\n light: {\n '--f7-ios-primary': hex,\n '--f7-ios-primary-shade': shadeTintIos.shade,\n '--f7-ios-primary-tint': shadeTintIos.tint,\n '--f7-ios-primary-rgb': rgb.join(', '),\n '--f7-md-primary-shade': shadeTintMdLight.shade,\n '--f7-md-primary-tint': shadeTintMdLight.tint,\n '--f7-md-primary-rgb': colorHexToRgb(light['--f7-md-primary']).join(', '),\n ...light,\n },\n dark: {\n '--f7-md-primary-shade': shadeTintMdDark.shade,\n '--f7-md-primary-tint': shadeTintMdDark.tint,\n '--f7-md-primary-rgb': colorHexToRgb(dark['--f7-md-primary']).join(', '),\n ...dark,\n },\n };\n}\n\nexport function bindMethods(instance, obj) {\n Object.keys(obj).forEach((key) => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach((subKey) => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\n\nexport function flattenArray(...args) {\n const arr = [];\n args.forEach((arg) => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));\n else arr.push(arg);\n });\n return arr;\n}\n\nexport function colorThemeCSSStyles(colors = {}) {\n const stringifyObject = (obj) => {\n let res = '';\n Object.keys(obj).forEach((key) => {\n res += `${key}:${obj[key]};`;\n });\n return res;\n };\n const colorVars = colorThemeCSSProperties(colors.primary);\n\n const primary = [\n `:root{`,\n stringifyObject(colorVars.light),\n `--swiper-theme-color:var(--f7-theme-color);`,\n ...Object.keys(colors).map((colorName) => `--f7-color-${colorName}: ${colors[colorName]};`),\n `}`,\n `.dark{`,\n stringifyObject(colorVars.dark),\n `}`,\n `.ios, .ios .dark{`,\n stringifyObject(colorVars.ios),\n '}',\n `.md, .md .dark{`,\n stringifyObject(colorVars.md),\n '}',\n ].join('');\n\n const restVars = {};\n\n Object.keys(colors).forEach((colorName) => {\n const colorValue = colors[colorName];\n restVars[colorName] = colorThemeCSSProperties(colorValue);\n });\n\n // rest\n let rest = '';\n\n Object.keys(colors).forEach((colorName) => {\n const { light, dark, ios, md } = restVars[colorName];\n\n const whiteColorVars = `\n --f7-ios-primary: #ffffff;\n --f7-ios-primary-shade: #ebebeb;\n --f7-ios-primary-tint: #ffffff;\n --f7-ios-primary-rgb: 255, 255, 255;\n --f7-md-primary-shade: #eee;\n --f7-md-primary-tint: #fff;\n --f7-md-primary-rgb: 255, 255, 255;\n --f7-md-primary: #fff;\n --f7-md-on-primary: #000;\n --f7-md-primary-container: #fff;\n --f7-md-on-primary-container: #000;\n --f7-md-secondary: #fff;\n --f7-md-on-secondary: #000;\n --f7-md-secondary-container: #555;\n --f7-md-on-secondary-container: #fff;\n --f7-md-surface: #fff;\n --f7-md-on-surface: #000;\n --f7-md-surface-variant: #333;\n --f7-md-on-surface-variant: #fff;\n --f7-md-outline: #fff;\n --f7-md-outline-variant: #fff;\n --f7-md-inverse-surface: #000;\n --f7-md-inverse-on-surface: #fff;\n --f7-md-inverse-primary: #000;\n --f7-md-surface-1: #f8f8f8;\n --f7-md-surface-2: #f1f1f1;\n --f7-md-surface-3: #e7e7e7;\n --f7-md-surface-4: #e1e1e1;\n --f7-md-surface-5: #d7d7d7;\n --f7-md-surface-variant-rgb: 51, 51, 51;\n --f7-md-on-surface-variant-rgb: 255, 255, 255;\n --f7-md-surface-1-rgb: 248, 248, 248;\n --f7-md-surface-2-rgb: 241, 241, 241;\n --f7-md-surface-3-rgb: 231, 231, 231;\n --f7-md-surface-4-rgb: 225, 225, 225;\n --f7-md-surface-5-rgb: 215, 215, 215;\n `;\n const blackColorVars = `\n --f7-ios-primary: #000;\n --f7-ios-primary-shade: #000;\n --f7-ios-primary-tint: #232323;\n --f7-ios-primary-rgb: 0, 0, 0;\n --f7-md-primary-shade: #000;\n --f7-md-primary-tint: #232323;\n --f7-md-primary-rgb: 0, 0, 0;\n --f7-md-primary: #000;\n --f7-md-on-primary: #fff;\n --f7-md-primary-container: #000;\n --f7-md-on-primary-container: #fff;\n --f7-md-secondary: #000;\n --f7-md-on-secondary: #fff;\n --f7-md-secondary-container: #aaa;\n --f7-md-on-secondary-container: #000;\n --f7-md-surface: #000;\n --f7-md-on-surface: #fff;\n --f7-md-surface-variant: #ccc;\n --f7-md-on-surface-variant: #000;\n --f7-md-outline: #000;\n --f7-md-outline-variant: #000;\n --f7-md-inverse-surface: #fff;\n --f7-md-inverse-on-surface: #000;\n --f7-md-inverse-primary: #fff;\n --f7-md-surface-1: #070707;\n --f7-md-surface-2: #161616;\n --f7-md-surface-3: #232323;\n --f7-md-surface-4: #303030;\n --f7-md-surface-5: #373737;\n --f7-md-surface-variant-rgb: 204, 204, 204;\n --f7-md-on-surface-variant-rgb: 0, 0, 0;\n --f7-md-surface-1-rgb: 7, 7, 7;\n --f7-md-surface-2-rgb: 22, 22, 22;\n --f7-md-surface-3-rgb: 35, 35, 35;\n --f7-md-surface-4-rgb: 48, 48, 48;\n --f7-md-surface-5-rgb: 55, 55, 55;\n `;\n /* eslint-disable */\n const lightString =\n colorName === 'white'\n ? whiteColorVars\n : colorName === 'black'\n ? blackColorVars\n : stringifyObject(light);\n const darkString =\n colorName === 'white'\n ? whiteColorVars\n : colorName === 'black'\n ? blackColorVars\n : stringifyObject(dark);\n /* eslint-enable */\n rest += [\n `.color-${colorName} {`,\n lightString,\n `--swiper-theme-color: var(--f7-theme-color);`,\n `}`,\n `.color-${colorName}.dark, .color-${colorName} .dark, .dark .color-${colorName} {`,\n darkString,\n `--swiper-theme-color: var(--f7-theme-color);`,\n `}`,\n `.ios .color-${colorName}, .ios.color-${colorName}, .ios .dark .color-${colorName}, .ios .dark.color-${colorName} {`,\n stringifyObject(ios),\n `}`,\n `.md .color-${colorName}, .md.color-${colorName}, .md .dark .color-${colorName}, .md .dark.color-${colorName} {`,\n stringifyObject(md),\n `}`,\n\n // text color\n `.text-color-${colorName} {`,\n `--f7-theme-color-text-color: ${colors[colorName]};`,\n `}`,\n\n // bg color\n `.bg-color-${colorName} {`,\n `--f7-theme-color-bg-color: ${colors[colorName]};`,\n `}`,\n\n // border color\n `.border-color-${colorName} {`,\n `--f7-theme-color-border-color: ${colors[colorName]};`,\n `}`,\n\n // ripple color\n `.ripple-color-${colorName} {`,\n `--f7-theme-color-ripple-color: rgba(${light['--f7-ios-primary-rgb']}, 0.3);`,\n `}`,\n ].join('');\n });\n\n return `${primary}${rest}`;\n}\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n pointerEvents:\n !!window.PointerEvent &&\n 'maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints >= 0,\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n intersectionObserver: (function checkObserver() {\n return 'IntersectionObserver' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCalculated;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!window.cordova,\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs =\n typeof nw !== 'undefined' &&\n typeof process !== 'undefined' &&\n typeof process.versions !== 'undefined' &&\n typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView =\n !!(\n (iphone || ipad || ipod) &&\n (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)\n ) ||\n (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\n\nconst IS_BROWSER = (() => {\n const document = getDocument();\n try {\n // eslint-disable-next-line no-restricted-globals\n return Boolean(\n document &&\n document.body &&\n document.body.getBoundingClientRect &&\n document.body.getBoundingClientRect().width > 0,\n );\n } catch (e) {\n return false;\n }\n})();\n\nfunction getDevice(overrides = {}, reset = IS_BROWSER) {\n if (!deviceCalculated || reset) {\n deviceCalculated = calcDevice(overrides);\n }\n return deviceCalculated;\n}\n\nexport { getDevice };\n","class EventsClass {\n constructor(parents = []) {\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.f7proxy && eventHandler.f7proxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map((eventName) => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter((eventName) => eventName.indexOf('local::') < 0);\n\n localEvents.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach((eventsParent) => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\n\nexport default EventsClass;\n","import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\n\nclass Framework7Class extends EventsClass {\n constructor(params = {}, parents = []) {\n super(parents);\n const self = this;\n self.params = params;\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach((paramKey) => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach((paramKey) => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n\n useModule(moduleName = '', moduleParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach((vnodeId) => {\n Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default Framework7Class;\n","import $ from './dom7.js';\n\nexport default function ConstructorMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, domProp, app, addMethods } = parameters;\n const methods = {\n create(...args) {\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el = defaultSelector) {\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach((methodName) => {\n methods[methodName] = (el = defaultSelector, ...args) => {\n const instance = methods.get(el);\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}\n","import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\n\nexport default function ModalMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, app } = parameters;\n const methods = extend(\n ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal',\n }),\n {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each((modalEl) => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.open(animate);\n },\n close(el = defaultSelector, animate, targetEl) {\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.close(animate);\n },\n },\n );\n return methods;\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n\n function install(module) {\n Framework7.use(module);\n\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (\n moduleToLoad.indexOf('.') < 0 &&\n matchNamePattern &&\n matchNamePattern[0].length === moduleToLoad.length\n ) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(\n new Error(\n 'Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name',\n ),\n );\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(\n new Error(\"Framework7: Can't find Framework7 component in specified component function\"),\n );\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n fetch(modulePath)\n .then((res) => res.text())\n .then((scriptContent) => {\n const callbackId = id();\n const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n\n const module = componentLoader(Framework7, false);\n\n if (!module) {\n rejectScript(\n new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`),\n );\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n\n resolveScript();\n })\n .catch((err) => {\n rejectScript(err);\n });\n });\n const styleLoad = new Promise((resolveStyle) => {\n fetch(\n modulePath\n .replace('.lazy.js', app.rtl ? '.rtl.css' : '.css')\n .replace('.js', app.rtl ? '.rtl.css' : '.css'),\n )\n .then((res) => res.text())\n .then((styleContent) => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n })\n .catch(() => {\n resolveStyle();\n });\n });\n\n Promise.all([scriptLoad, styleLoad])\n .then(() => {\n resolve();\n })\n .catch((err) => {\n reject(err);\n });\n }\n });\n}\n\nexport default loadModule;\n","/* eslint-disable prefer-rest-params */\nconst $jsx = (tag, props, ...args) => {\n const attrs = props || {};\n const children = args || [];\n\n const attrsString = Object.keys(attrs)\n .map((attr) => {\n if (attr[0] === '_') {\n if (attrs[attr]) return attr.replace('_', '');\n return '';\n }\n return `${attr}=\"${attrs[attr]}\"`;\n })\n .filter((attr) => !!attr)\n .join(' ');\n\n if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n return `<${tag} ${attrsString} />`.trim();\n }\n const childrenContent = children\n .filter((c) => !!c)\n .map((c) => (Array.isArray(c) ? c.join('') : c))\n .join('');\n return `<${tag} ${attrsString}>${childrenContent}</${tag}>`.trim();\n};\n\nexport default $jsx;\n","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\nimport $jsx from '../../shared/$jsx.js';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n el: 'body',\n theme: 'auto',\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n darkMode: undefined,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n colors: {\n primary: '#007aff',\n red: '#ff3b30',\n green: '#4cd964',\n blue: '#2196f3',\n pink: '#ff2d55',\n yellow: '#ffcc00',\n orange: '#ff9500',\n purple: '#9c27b0',\n deeppurple: '#673ab7',\n lightblue: '#5ac8fa',\n teal: '#009688',\n lime: '#cddc39',\n deeporange: '#ff6b22',\n white: '#ffffff',\n black: '#000000',\n },\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n\n extend(app, {\n // App Name\n name: app.params.name,\n // Routes\n routes: app.params.routes,\n\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n return 'md';\n }\n return app.params.theme;\n })(),\n\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n colors: app.params.colors,\n darkMode: app.params.darkMode,\n });\n\n if (params.store) app.params.store = params.store;\n\n // Save Root\n if (app.$el && app.$el[0]) {\n app.$el[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Store\n app.initStore();\n\n // Init\n if (app.params.init) {\n if (device.cordova && app.params.initOnDeviceReady) {\n $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n\n setColorTheme(color) {\n if (!color) return;\n const app = this;\n app.colors.primary = color;\n app.setColors();\n }\n\n setColors() {\n const app = this;\n const document = getDocument();\n if (!app.colorsStyleEl) {\n app.colorsStyleEl = document.createElement('style');\n document.head.prepend(app.colorsStyleEl);\n }\n\n app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors);\n }\n\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addEventListener('change', app.colorSchemeListener);\n app.mq.light.addEventListener('change', app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeEventListener('change', app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeEventListener('change', app.colorSchemeListener);\n }\n\n setDarkMode(mode) {\n const app = this;\n if (mode === 'auto') {\n app.enableAutoDarkMode();\n } else {\n app.disableAutoDarkMode();\n $('html')[mode ? 'addClass' : 'removeClass']('dark');\n app.darkMode = mode;\n }\n }\n\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(\n app.params.component,\n app.params.componentUrl,\n { componentOptions: { el: app.$el[0] } },\n (el) => {\n app.$el = $(el);\n app.$el[0].f7 = app;\n app.$elComponent = el.f7Component;\n app.el = app.$el[0];\n if (callback) callback();\n },\n () => {},\n );\n }\n\n init(rootEl) {\n const app = this;\n\n app.setColors();\n app.mount(rootEl);\n\n const init = () => {\n if (app.initialized) return;\n\n app.$el.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Mode\n if (typeof app.params.darkMode === 'undefined') {\n app.darkMode = $('html').hasClass('dark');\n } else {\n app.setDarkMode(app.params.darkMode);\n }\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md').addClass(app.theme);\n\n // iOS Translucent\n if (app.params.iosTranslucentBars && app.theme === 'ios') {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios') {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n nextFrame(() => {\n app.$el.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n };\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n init();\n });\n } else {\n init();\n }\n return app;\n }\n\n // eslint-disable-next-line\n loadModule(...args) {\n return Framework7.loadModule(...args);\n }\n\n // eslint-disable-next-line\n loadModules(...args) {\n return Framework7.loadModules(...args);\n }\n\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n\n static get Dom7() {\n return $;\n }\n\n static get $() {\n return $;\n }\n\n static get device() {\n return getDevice();\n }\n\n static get support() {\n return getSupport();\n }\n\n static get Class() {\n return Framework7Class;\n }\n\n static get Events() {\n return EventsClass;\n }\n}\n\nFramework7.$jsx = $jsx;\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map((module) => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'device',\n static: {\n getDevice,\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n if (!html) return;\n if (\n device.standalone &&\n device.ios &&\n metaStatusbar &&\n metaStatusbar.content === 'black-translucent'\n ) {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach((className) => {\n html.classList.add(className);\n });\n },\n },\n};\n","import { getSupport } from '../../shared/get-support.js';\n\nexport default {\n name: 'support',\n static: {\n getSupport,\n },\n};\n","import * as utils from '../../shared/utils.js';\n\nexport default {\n name: 'utils',\n proto: {\n utils,\n },\n static: {\n utils,\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return { width: 0, height: 0, left: 0, top: 0 };\n const offset = app.$el.offset();\n const [width, height, left, top] = [\n app.el.offsetWidth,\n app.el.offsetHeight,\n offset.left,\n offset.top,\n ];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width, height, left, top };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener(\n 'resize',\n () => {\n app.emit('resize');\n },\n false,\n );\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n },\n },\n};\n","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\n\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n\n let activableElement;\n let activeTimeout;\n\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (\n activable.eq(i).hasClass('prevent-active-state-propagation') ||\n activable.eq(i).hasClass('no-active-state-propagation')\n ) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n\n function handleTouchStart(e) {\n if (!e.isTrusted) return true;\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest(\n '.segmented-strong .button-active, .segmented-strong .tab-link-active',\n );\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n if (!e.isTrusted) return;\n let touch;\n let distance;\n let shouldRemoveActive = true;\n\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n );\n }\n\n if (isTouchMoveActivable || (!isScrolling && isSegmentedStrong && segmentedStrongEl)) {\n if (e.cancelable) e.preventDefault();\n }\n\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n const buttonEl = elementFromPoint.closest(\n '.segmented-strong .button:not(.button-active):not(.tab-link-active)',\n );\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (\n touchmoveActivableEl &&\n activableElement &&\n activableElement[0] === touchmoveActivableEl\n ) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return true;\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(\n () => {\n tapHoldFired = false;\n },\n device.ios || device.androidChrome ? 100 : 400,\n );\n }\n preventClick = false;\n targetElement = null;\n\n return !localPreventClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n\n const passiveListener = support.passiveListener ? { passive: true } : false;\n const passiveListenerCapture = support.passiveListener ? { passive: true, capture: true } : true;\n const activeListener = support.passiveListener ? { passive: false } : false;\n const activeListenerCapture = support.passiveListener ? { passive: false, capture: true } : true;\n\n document.addEventListener('click', appClick, true);\n\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(\n app.touchEvents.start,\n (e) => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n },\n true,\n );\n document.addEventListener(\n app.touchEvents.move,\n (e) => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n },\n false,\n );\n document.addEventListener(\n app.touchEvents.end,\n (e) => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n },\n false,\n );\n }\n\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n }\n document.addEventListener('contextmenu', (e) => {\n if (\n params.disableContextMenu &&\n (device.ios ||\n device.android ||\n device.cordova ||\n (window.Capacitor && window.Capacitor.isNative))\n ) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\n\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements:\n 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n touchRippleElements:\n '.ripple, .link, .item-link, .list label.item-content, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .list.accordion-list .accordion-item-toggle',\n touchRippleInsetElements:\n '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back',\n },\n },\n create() {\n const app = this;\n const support = getSupport();\n extend(app, {\n touchEvents: {\n start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup',\n },\n });\n },\n on: {\n init: initTouch,\n },\n};\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n }\n else {\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (\n !allowViewTouchMove ||\n !swipeBackEnabled ||\n isTouched ||\n (app.swipeout && app.swipeout.el) ||\n !router.allowPageChange\n )\n return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if (\n $(e.target).closest('.page-master, .page-master-detail').length > 0 &&\n params.masterDetailBreakpoint > 0 &&\n app.width >= params.masterDetailBreakpoint\n )\n return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!e.isTrusted) return;\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling =\n !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) ||\n (pageX < touchesStart.x && !app.rtl) ||\n (pageX > touchesStart.x && app.rtl);\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n\n $currentPageEl = target.closest('.page');\n if (\n $currentPageEl.hasClass('no-swipeback') ||\n target.closest('.no-swipeback, .card-opened').length > 0\n )\n cancel = true;\n $previousPageEl = $el.find('.page-previous');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder =\n touchesStart.x <\n $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('<div class=\"page-shadow-effect\"></div>');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n\n setAnimatableNavElements({ progress: percentage });\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n $pages.removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $pages.transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true });\n }\n return;\n }\n const timeDiff = now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (\n (timeDiff < 300 && touchesDiff > 10) ||\n (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n ) {\n $currentPageEl\n .removeClass('page-current')\n .addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl\n .removeClass('page-previous')\n .addClass('page-current')\n .removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $pages.addClass('page-transitioning page-transitioning-swipeback');\n if (device.ios) {\n // eslint-disable-next-line\n $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n }\n $pages.transform('');\n\n if (dynamicNavbar) {\n setAnimatableNavElements({\n progress: pageChanged ? 1 : 0,\n transition: true,\n reflow: !!device.ios,\n });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback(\n 'beforeIn',\n $previousPageEl,\n $previousNavbarEl,\n 'previous',\n 'current',\n { route: $previousPageEl[0].f7Page.route, swipeBack: true },\n $currentPageEl[0],\n );\n\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n\n $currentPageEl.transitionEnd(() => {\n $pages.removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true, transition: false });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.browserHistory) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true,\n });\n\n // Remove Old Page\n\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n swipeBack: true,\n });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n\n function attachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n attachEvents();\n\n router.on('routerDestroy', detachEvents);\n}\n\nexport default SwipeBack;\n","import { extend } from '../../shared/utils.js';\n\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions = {}) {\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app,\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app,\n });\n }\n next();\n}\n\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n () => {\n router.allowPageChange = true;\n resolve();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n () => {\n router.allowPageChange = true;\n enterNextRoute();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}\n","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(\n `Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`,\n );\n }\n}\n","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise\n .then((c) => {\n // eslint-disable-next-line\n resolve({ component: c.default || c._default || c });\n })\n .catch((err) => {\n reject();\n throw new Error(err, { cause: err });\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({ component: asyncComponentResult });\n }\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction refreshPage(props = {}) {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n props,\n });\n}\n\nfunction forward(router, el, forwardOptions = {}) {\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {},\n },\n forwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route[modalLoadProp]\n ) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl.children('.page').filter((pageInView) => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl\n .children('.navbar')\n .filter((navbarInView) => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n isDetail = !isMaster && masterPageEl;\n\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n reloadDetail =\n isDetail &&\n options.reloadDetail &&\n app.width >= router.params.masterDetailBreakpoint &&\n masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage\n .removeClass('page-previous page-current page-next')\n .addClass(\n `page-${newPagePosition}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .trigger('page:unstack')\n .trigger('page:position', { position: newPagePosition });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl\n .removeClass('navbar-previous navbar-current navbar-next')\n .addClass(\n `navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n );\n $newNavbarEl.trigger('navbar:position', { position: newPagePosition });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n if (reloadDetail) {\n $oldPage = $pagesInView.filter((pageEl) => !pageEl.classList.contains('page-master'));\n if (dynamicNavbar) {\n $oldNavbarEl = $($oldPage.map((pageEl) => app.navbar.getElByPage(pageEl)));\n }\n if ($oldPage.length > 1 && masterPageEl) {\n detailsInBetweenRemoved = $oldPage.length - 1;\n $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', masterPageEl);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n }\n }\n } else {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter((pageEl) => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter((navbarEl) => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl && $pagesInView[i] === masterPageEl) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback(\n 'beforeRemove',\n $pagesInView[i],\n $navbarsInView && $navbarsInView[i],\n 'previous',\n undefined,\n options,\n );\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n $oldPage = $viewEl\n .children('.page')\n .filter((pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl\n .children('.navbar')\n .filter(\n (navbarEl) =>\n navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0,\n );\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter((pageEl) => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter(\n (navbarEl) => !navbarEl.classList.contains('navbar-master'),\n );\n }\n }\n\n // Push State\n if (\n router.params.browserHistory &&\n (options.browserHistory || options.replaceState) &&\n !options.reloadPrevious\n ) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History[\n options.reloadCurrent ||\n (reloadDetail && otherDetailPageEl) ||\n options.reloadAll ||\n options.replaceState\n ? 'replace'\n : 'push'\n ](\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n }\n\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n if (options.history) {\n if (\n ((options.reloadCurrent || (reloadDetail && otherDetailPageEl)) && router.history.length) >\n 0 ||\n options.replaceState\n ) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n router.propsHistory = router.propsHistory.slice(\n 0,\n router.propsHistory.length - detailsInBetweenRemoved,\n );\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n router.propsHistory[router.propsHistory.length - (options.reloadPrevious ? 2 : 1)] =\n options.props || {};\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else if (options.reloadAll) {\n router.history = [url];\n router.propsHistory = [options.props || {}];\n } else {\n router.history.push(url);\n router.propsHistory.push(options.props || {});\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback(\n 'beforeRemove',\n $oldPageEl,\n $oldNavbarEl && $oldNavbarEl.eq(index),\n 'previous',\n undefined,\n options,\n );\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n });\n } else if (options.reloadPrevious) {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback(\n 'init',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n let keepOldPage =\n (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if (\n $newPage.hasClass('smart-select-page') ||\n $newPage.hasClass('photo-browser-page') ||\n $newPage.hasClass('autocomplete-page') ||\n $newPage.hasClass('color-picker-page')\n ) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate(\n $oldPage,\n $newPage,\n $oldNavbarEl,\n $newNavbarEl,\n 'forward',\n transition,\n () => {\n afterAnimation();\n },\n );\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(router, loadParams = {}, loadOptions = {}, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n !options.reloadCurrent &&\n options.route &&\n options.route.route &&\n options.route.route.parentPath &&\n router.currentRoute.route &&\n router.currentRoute.route.parentPath === options.route.route.parentPath\n ) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams =\n Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach((paramName) => {\n if (\n !(paramName in router.currentRoute.params) ||\n router.currentRoute.params[paramName] !== options.route.params[paramName]\n ) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (\n !sameParams &&\n options.route.route.tab &&\n router.currentRoute.route.tab &&\n router.currentRoute.parentPath === options.route.parentPath\n ) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n\n if (\n options.route &&\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n extend(options.route, { route: { url, path: url } });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return forward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n forward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n forward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n forward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\n\nfunction navigate(navigateParams, navigateOptions = {}) {\n const router = this;\n\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({ path, name, params, query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(\n `Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`,\n );\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n\n if (\n options.openIn &&\n (!router.params.ignoreOpenIn || (router.params.ignoreOpenIn && router.history.length > 0))\n ) {\n return router.openIn(router, navigateUrl, options);\n }\n\n options.route = route;\n\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, { el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, { [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if (\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n (router.currentRoute.route === route.route.masterRoute ||\n router.currentRoute.route.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n }\n if (\n router.currentRoute.route.masterRoute &&\n (router.currentRoute.route.masterRoute === route.route.masterRoute ||\n router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n router.navigate(\n { path: route.route.masterRoute.path, params: route.params || {} },\n {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(\n navigateParams,\n extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial,\n }),\n );\n },\n },\n },\n );\n return router;\n }\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'forward',\n );\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n },\n backwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n let masterPageEl;\n let masterPageRemoved;\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || ($oldPage.length === 0 && !options.preload)) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el\n .children('.page')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail =\n !isMaster &&\n masterPageEl &&\n router.history.indexOf(options.route.url) >\n router.history.indexOf(masterPageEl.f7Page.route.url);\n\n if (\n !isDetail &&\n !isMaster &&\n masterPageEl &&\n masterPageEl.f7Page &&\n options.route.route.masterRoute\n ) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot =\n router.history.indexOf(options.route.url) -\n router.history.indexOf(masterPageEl.f7Page.route.url) ===\n 1;\n }\n\n // New Page\n $newPage\n .addClass(\n `page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeAttr('aria-hidden')\n .trigger('page:unstack')\n .trigger('page:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl\n .addClass(\n `navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if ($oldPage.prev('.page-previous').length >= 0) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n router.propsHistory = router.propsHistory.slice(\n 0,\n router.history.indexOf(options.route.url) + 2,\n );\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n\n const $pageToRemove = $oldPage.prev('.page-previous');\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove.length > 0) {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n\n function insertPage() {\n if (initialPreload) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n router.$el.append(componentEl);\n });\n } else {\n router.$el.append($newPage);\n }\n }\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n }\n }\n\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n preload: true,\n }),\n );\n }\n if (isMaster) {\n $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n if (initialPreload) {\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n }\n const $previousPages = $newPage.prevAll('.page-previous:not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || (device.firefox && !device.ios))) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n router.propsHistory[router.propsHistory.length - 1] = options.props || {};\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n router.history.pop();\n router.propsHistory.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || (device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], {\n preload: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {},\n });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (\n !transition &&\n router.previousRoute &&\n router.previousRoute.route &&\n router.previousRoute.route.options\n ) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n backward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back(...args) {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let navigateProps;\n let route;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n const { name, params, query } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({ name, params, query });\n if (navigateUrl) {\n return router.back(\n navigateUrl,\n extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null,\n }),\n );\n }\n return router;\n }\n\n const app = router.app;\n appRouterCheck(router, 'back');\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || (device.firefox && !device.ios);\n const needHistoryBack =\n router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory =\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route.options &&\n router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.propsHistory.pop();\n router.saveHistory();\n\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n }\n return router;\n }\n let $previousPage = router.$el\n .children('.page-current')\n .prevAll('.page-previous:not(.page-master)')\n .eq(0);\n\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each((pageEl) => {\n classes.push(pageEl.className);\n });\n\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (\n expectedPreviousPageRoute &&\n $previousMaster[0].f7Page &&\n expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route\n ) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n const previousPageObj = $previousPage[0].f7Page;\n if (\n router.params.browserHistory &&\n previousPageObj &&\n router.history[router.history.length - 2] !== previousPageObj.route.url\n ) {\n router.back(\n router.history[router.history.length - 2],\n extend(navigateOptions, {\n force: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {},\n }),\n );\n return router;\n }\n if (previousPageObj) {\n const previousPageRoute = previousPageObj.route;\n\n processRouteQueue.call(\n router,\n previousPageRoute,\n router.currentRoute,\n () => {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n },\n () => {},\n 'backward',\n );\n\n return router;\n }\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n navigateProps = router.propsHistory[router.propsHistory.length - 2] || {};\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(\n router.history[router.history.length - 3],\n extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n props: router.propsHistory[router.propsHistory.length - 3] || {},\n }),\n );\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl,\n },\n };\n }\n }\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions, { props: navigateProps || {} });\n } else {\n extend(options, navigateOptions, { props: navigateProps || {} });\n }\n options.route = route;\n\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n loadBack(router, { el: route.route.keepAliveData.pageEl }, options);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n loadBack(router, { [pageLoadProp]: route.route[pageLoadProp] }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n loadBack(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'backward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'backward',\n );\n }\n\n // Return Router\n return router;\n}\nexport { back };\n","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.js';\nimport Framework7Class from '../../shared/class.js';\nimport {\n extend,\n nextFrame,\n parseUrlQuery,\n serializeObject,\n now,\n eventNameToColonCase,\n} from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\n\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\n\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n propsHistory: [],\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: [],\n });\n }\n\n // Install Modules\n router.useModules();\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute = {}) {\n previousRoute = extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n },\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n },\n });\n\n return router;\n }\n\n mount() {\n const router = this;\n const view = router.view;\n const document = getDocument();\n\n extend(false, router, {\n tempDom: document.createElement('div'),\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl,\n });\n\n router.emit('local::mount routerMount', router);\n }\n\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (\n isSliding &&\n animateIcon &&\n $el.hasClass('left') &&\n $iconEl.length > 0 &&\n $iconEl.next('span').length\n ) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition,\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (\n !(\n $oldNavbarEl.hasClass('navbar-master') &&\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint\n )\n ) {\n $oldNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach((navEls) => {\n navEls.forEach((navEl) => {\n const n = navEl;\n const { isSliding, $el } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach((otherNavEl) => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n }\n });\n });\n });\n }\n\n return { newNavEls, oldNavEls };\n }\n\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [\n $oldPageEl,\n $newPageEl,\n $oldNavbarEl,\n $newNavbarEl,\n direction,\n callback,\n ]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n\n let newNavEls;\n let oldNavEls;\n\n let fromLarge;\n let toLarge;\n let toDifferent;\n\n let oldIsLarge;\n let newIsLarge;\n\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail =\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint &&\n (($oldNavbarEl.hasClass('navbar-master') &&\n $newNavbarEl.hasClass('navbar-master-detail')) ||\n ($oldNavbarEl.hasClass('navbar-master-detail') &&\n $newNavbarEl.hasClass('navbar-master')));\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n toDifferent = (fromLarge && !toLarge) || (toLarge && !fromLarge);\n }\n const navEls = router.animatableNavElements(\n $newNavbarEl,\n $oldNavbarEl,\n toLarge,\n fromLarge,\n direction,\n );\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n // prettier-ignore\n $el[0].style.setProperty(\n 'transform',\n `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n 'important',\n );\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(\n `translate3d(${\n offset * progress\n }px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n );\n } else {\n $el.transform(`translate3d(${offset * progress}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n }\n if (\n $newNavbarEl.hasClass('sliding') ||\n $newNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if (\n $oldNavbarEl.hasClass('sliding') ||\n $oldNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n // eslint-disable-next-line\n (direction === 'forward' ? $newPageEl : ios ? $oldPageEl : $newPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n nextFrame(() => {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n if (toDifferent) {\n // eslint-disable-next-line\n router.el._clientLeft = router.el.clientLeft;\n }\n animateNavbars(1);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n\n removeModal(modalEl) {\n const router = this;\n router.removeEl(modalEl);\n }\n // eslint-disable-next-line\n removeTabContent(tabEl) {\n const $tabEl = $(tabEl);\n $tabEl.html('');\n }\n\n removeNavbar(el) {\n const router = this;\n router.removeEl(el);\n }\n\n removePage(el) {\n const $el = $(el);\n const f7Page = $el && $el[0] && $el[0].f7Page;\n const router = this;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n $el.remove();\n return;\n }\n router.removeEl(el);\n }\n\n removeEl(el) {\n if (!el) return;\n const router = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.find('.tab').each((tabEl) => {\n $(tabEl)\n .children()\n .each((tabChild) => {\n if (tabChild.f7Component) {\n $(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.destroy();\n }\n });\n });\n if ($el[0].f7Component && $el[0].f7Component.destroy) {\n $el[0].f7Component.destroy();\n }\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n }\n\n getPageEl(content) {\n const router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $(router.tempDom).append(content);\n }\n\n return router.findElement('.page', router.tempDom);\n }\n\n findElement(stringSelector, container) {\n const router = this;\n const view = router.view;\n const app = router.app;\n\n // Modals Selector\n const modalsSelector =\n '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n const $container = $(container);\n const selector = stringSelector;\n\n let found = $container\n .find(selector)\n .filter((el) => $(el).parents(modalsSelector).length === 0);\n\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(`${view.selector} ${selector}`);\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n }\n }\n if (found.length === 1) return found;\n\n found = router.findElement(selector, $container);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n\n flattenRoutes(routes = this.routes) {\n const router = this;\n let flattenedRoutes = [];\n routes.forEach((route) => {\n let hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n const mergedPathsRoutes = route.tabs.map((tabRoute) => {\n const tRoute = extend({}, route, {\n path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute,\n });\n delete tRoute.tabs;\n delete tRoute.routes;\n return tRoute;\n });\n hasTabRoutes = true;\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n }\n if ('detailRoutes' in route) {\n const mergedPathsRoutes = route.detailRoutes.map((detailRoute) => {\n const dRoute = extend({}, detailRoute);\n dRoute.masterRoute = route;\n dRoute.masterRoutePath = route.path;\n return dRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n const mergedPathsRoutes = route.routes.map((childRoute) => {\n const cRoute = extend({}, childRoute);\n cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n }\n\n // eslint-disable-next-line\n parseRouteUrl(url) {\n if (!url) return {};\n const query = parseUrlQuery(url);\n const hash = url.split('#')[1];\n const params = {};\n const path = url.split('#')[0].split('?')[0];\n return {\n query,\n hash,\n params,\n url,\n path,\n };\n }\n\n generateUrl(parameters = {}) {\n if (typeof parameters === 'string') {\n return parameters;\n }\n const { name, path, params, query } = parameters;\n if (!name && !path) {\n throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n }\n const router = this;\n const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n\n if (!route) {\n if (name) {\n throw new Error(`Framework7: route with name \"${name}\" not found`);\n } else {\n throw new Error(`Framework7: route with path \"${path}\" not found`);\n }\n }\n const url = router.constructRouteUrl(route, { params, query });\n\n if (url === '') {\n return '/';\n }\n\n if (!url) {\n throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n }\n return url;\n }\n\n // eslint-disable-next-line\n constructRouteUrl(route, { params, query } = {}) {\n const { path } = route;\n const toUrl = compile(path);\n let url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error(\n `Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`,\n );\n }\n\n if (query) {\n if (typeof query === 'string') url += `?${query}`;\n else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n\n return url;\n }\n\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach((route) => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query,\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const { path, query, hash, params } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n const keys = [];\n\n const pathsToMatch = [route.path || '/'];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);\n else if (Array.isArray(route.alias)) {\n route.alias.forEach((aliasPath) => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n let matched;\n pathsToMatch.forEach((pathToMatch) => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path || '/');\n });\n\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n\n let parentPath;\n if (route.parentPath) {\n parentPath = (path || '/')\n .split('/')\n .slice(0, route.parentPath.split('/').length - 1)\n .join('/');\n }\n\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path: path || '/',\n parentPath,\n route,\n name: route.name,\n };\n }\n });\n return matchingRoute;\n }\n\n // eslint-disable-next-line\n replaceRequestUrlParams(url = '', options = {}) {\n let compiledUrl = url;\n if (\n typeof compiledUrl === 'string' &&\n compiledUrl.indexOf('{{') >= 0 &&\n options &&\n options.route &&\n options.route.params &&\n Object.keys(options.route.params).length\n ) {\n Object.keys(options.route.params).forEach((paramName) => {\n const regExp = new RegExp(`{{${paramName}}}`, 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n }\n\n removeFromXhrCache(url) {\n const router = this;\n const xhrCache = router.cache.xhr;\n let index = false;\n for (let i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) index = i;\n }\n if (index !== false) xhrCache.splice(index, 1);\n }\n\n xhrRequest(requestUrl, options) {\n const router = this;\n const params = router.params;\n const { ignoreCache } = options;\n let url = requestUrl;\n\n let hasQuery = url.indexOf('?') >= 0;\n if (\n params.passRouteQueryToRequest &&\n options &&\n options.route &&\n options.route.query &&\n Object.keys(options.route.query).length\n ) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n hasQuery = true;\n }\n\n if (\n params.passRouteParamsToRequest &&\n options &&\n options.route &&\n options.route.params &&\n Object.keys(options.route.params).length\n ) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n hasQuery = true;\n }\n\n if (url.indexOf('{{') >= 0) {\n url = router.replaceRequestUrlParams(url, options);\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return new Promise((resolve, reject) => {\n if (\n params.xhrCache &&\n !ignoreCache &&\n url.indexOf('nocache') < 0 &&\n params.xhrCacheIgnore.indexOf(url) < 0\n ) {\n for (let i = 0; i < router.cache.xhr.length; i += 1) {\n const cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhrAbortController = new AbortController();\n let fetchRes;\n fetch(url, { signal: router.xhrAbortController.signal, method: 'GET' })\n .then((res) => {\n fetchRes = res;\n return res.text();\n })\n .then((responseText) => {\n const { status } = fetchRes;\n router.emit('routerAjaxComplete', fetchRes);\n if (\n (status !== 'error' && status !== 'timeout' && status >= 200 && status < 300) ||\n status === 0\n ) {\n if (params.xhrCache && responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: responseText,\n });\n }\n router.emit('routerAjaxSuccess', fetchRes, options);\n resolve(responseText);\n } else {\n router.emit('routerAjaxError', fetchRes, options);\n reject(fetchRes);\n }\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n setNavbarPosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('navbar-previous navbar-current navbar-next');\n if (position) {\n $el.addClass(`navbar-${position}`);\n }\n\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('navbar:position', { position });\n router.emit('navbarPosition', $el[0], position);\n }\n\n setPagePosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('page-previous page-current page-next');\n $el.addClass(`page-${position}`);\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('page:position', { position });\n router.emit('pagePosition', $el[0], position);\n }\n\n // Remove theme elements\n removeThemeElements(el) {\n const router = this;\n const theme = router.app.theme;\n let toRemove;\n if (theme === 'ios') {\n toRemove = '.md-only, .if-md, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .if-ios, .if-not-md, .not-md';\n }\n $(el).find(toRemove).remove();\n }\n\n getPageData(pageEl, navbarEl, from, to, route = {}, pageFromEl) {\n const router = this;\n const $pageEl = $(pageEl).eq(0);\n const $navbarEl = $(navbarEl).eq(0);\n const currentPage = $pageEl[0].f7Page || {};\n let direction;\n let pageFrom;\n if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous'))\n direction = 'forward';\n if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current'))\n direction = 'backward';\n if (currentPage && !currentPage.fromPage) {\n const $pageFromEl = $(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n const page = {\n app: router.app,\n view: router.view,\n router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl,\n pageEl: $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from,\n to,\n direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom,\n };\n\n $pageEl[0].f7Page = page;\n return page;\n }\n\n // Callbacks\n pageCallback(callback, pageEl, navbarEl, from, to, options = {}, pageFromEl) {\n if (!pageEl) return;\n const router = this;\n const $pageEl = $(pageEl);\n if (!$pageEl.length) return;\n const $navbarEl = $(navbarEl);\n const { route } = options;\n const restoreScrollTopOnBack =\n router.params.restoreScrollTopOnBack &&\n !(\n router.params.masterDetailBreakpoint > 0 &&\n $pageEl.hasClass('page-master') &&\n router.app.width >= router.params.masterDetailBreakpoint\n );\n const keepAlive =\n $pageEl[0].f7Page &&\n $pageEl[0].f7Page.route &&\n $pageEl[0].f7Page.route.route &&\n $pageEl[0].f7Page.route.route.keepAlive;\n\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n const colonName = `page:${callback.toLowerCase()}`;\n\n let page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = extend($pageEl[0].f7Page, { from, to, position: from });\n } else {\n page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n\n const { on = {}, once = {} } = options.route ? options.route.route : {};\n if (options.on) {\n extend(on, options.on);\n }\n if (options.once) {\n extend(once, options.once);\n }\n\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) return;\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach((eventName) => {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach((eventName) => {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) return;\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach((eventName) => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach((eventName) => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (\n restoreScrollTopOnBack &&\n (from === 'previous' || !from) &&\n to === 'current' &&\n router.scrollHistory[page.route.url] &&\n !$pageEl.hasClass('no-restore-scroll')\n ) {\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (\n restoreScrollTopOnBack &&\n callback === 'beforeOut' &&\n from === 'current' &&\n to === 'previous'\n ) {\n // Save scroll position\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n\n if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n detachEvents();\n if (!keepAlive) {\n if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n delete $pageEl[0].f7Page.navbarEl.f7Page;\n }\n $pageEl[0].f7Page = null;\n }\n }\n }\n\n saveHistory() {\n const router = this;\n const window = getWindow();\n router.view.history = router.history;\n if (\n router.params.browserHistory &&\n router.params.browserHistoryStoreHistory &&\n window.localStorage\n ) {\n window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n }\n }\n\n restoreHistory() {\n const router = this;\n const window = getWindow();\n if (\n router.params.browserHistory &&\n router.params.browserHistoryStoreHistory &&\n window.localStorage &&\n window.localStorage[`f7router-${router.view.id}-history`]\n ) {\n router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n router.view.history = router.history;\n }\n }\n\n clearHistory() {\n const router = this;\n router.history = [];\n if (router.view) router.view.history = [];\n router.saveHistory();\n }\n\n updateCurrentUrl(newUrl) {\n const router = this;\n appRouterCheck(router, 'updateCurrentUrl');\n // Update history\n if (router.history.length) {\n router.history[router.history.length - 1] = newUrl;\n } else {\n router.history.push(newUrl);\n }\n\n // Update current route params\n const { query, hash, params, url, path } = router.parseRouteUrl(newUrl);\n if (router.currentRoute) {\n extend(router.currentRoute, {\n query,\n hash,\n params,\n url,\n path,\n });\n }\n\n if (router.params.browserHistory) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n router.view.id,\n {\n url: newUrl,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + newUrl,\n );\n }\n\n // Save History\n router.saveHistory();\n\n router.emit('routeUrlUpdate', router.currentRoute, router);\n }\n\n getInitialUrl() {\n const router = this;\n if (router.initialUrl) {\n return {\n initialUrl: router.initialUrl,\n historyRestored: router.historyRestored,\n };\n }\n const { app, view } = router;\n const document = getDocument();\n const window = getWindow();\n\n const location =\n app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined'\n ? new URL(app.params.url)\n : document.location;\n\n let initialUrl = router.params.url;\n let documentUrl = location.href.split(location.origin)[1];\n\n let historyRestored;\n const { browserHistory, browserHistoryOnLoad, browserHistorySeparator } = router.params;\n let { browserHistoryRoot } = router.params;\n if (\n (window.cordova || (window.Capacitor && window.Capacitor.isNative)) &&\n browserHistory &&\n !browserHistorySeparator &&\n !browserHistoryRoot &&\n location.pathname.indexOf('index.html')\n ) {\n // eslint-disable-next-line\n console.warn(\n 'Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot',\n );\n browserHistoryRoot = location.pathname.split('index.html')[0];\n }\n if (!browserHistory || !browserHistoryOnLoad) {\n if (!initialUrl) {\n initialUrl = documentUrl;\n }\n if (location.search && initialUrl.indexOf('?') < 0) {\n initialUrl += location.search;\n }\n if (location.hash && initialUrl.indexOf('#') < 0) {\n initialUrl += location.hash;\n }\n } else {\n if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n documentUrl = documentUrl.substring(\n documentUrl.indexOf(browserHistoryRoot) + browserHistoryRoot.length,\n );\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.substring(\n documentUrl.indexOf(browserHistorySeparator) + browserHistorySeparator.length,\n );\n } else {\n initialUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initialUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n } else if (router.params.url === initialUrl) {\n router.history = [initialUrl];\n } else if (\n History.state &&\n History.state[view.id] &&\n History.state[view.id].url === router.history[router.history.length - 1]\n ) {\n initialUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n\n router.initialUrl = initialUrl;\n router.historyRestored = historyRestored;\n return { initialUrl, historyRestored };\n }\n\n init() {\n const router = this;\n const { app, view } = router;\n const document = getDocument();\n\n router.mount();\n\n const { initialUrl, historyRestored } = router.getInitialUrl();\n\n // Init Swipeback\n if (\n (view && router.params.iosSwipeBack && app.theme === 'ios') ||\n (view && router.params.mdSwipeBack && app.theme === 'md')\n ) {\n SwipeBack(router);\n }\n\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistoryAnimateOnLoad,\n browserHistoryInitialMatch,\n } = router.params;\n\n let currentRoute;\n if (router.history.length > 1) {\n // Will load page\n const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0],\n },\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initialUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initialUrl), {\n route: {\n url: initialUrl,\n path: initialUrl.split('?')[0],\n },\n });\n }\n }\n\n if (router.$el.children('.page').length === 0 && initialUrl && router.params.loadInitialPage) {\n // No pages presented in DOM, reload new page\n router.navigate(initialUrl, {\n initial: true,\n reloadCurrent: true,\n browserHistory: false,\n animate: false,\n once: {\n modalOpen() {\n if (!historyRestored) return;\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n },\n pageAfterIn() {\n if (!historyRestored) return;\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n },\n },\n });\n } else if (router.$el.children('.page').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page').each((pageEl) => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n router.params.masterDetailBreakpoint > 0\n ) {\n $pageEl.addClass('page-master');\n $pageEl.trigger('page:role', { role: 'master' });\n if ($navbarEl && $navbarEl.length) {\n $navbarEl.addClass('navbar-master');\n }\n view.checkMasterDetailBreakpoint();\n }\n const initOptions = {\n route: router.currentRoute,\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarEl.length) {\n router.currentNavbarEl = $navbarEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarEl.length) {\n router.removeThemeElements($navbarEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n if (browserHistoryInitialMatch) {\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n } else {\n router.navigate(initialUrl, {\n initial: true,\n browserHistory: false,\n history: false,\n animate: browserHistoryAnimateOnLoad,\n once: {\n pageAfterIn() {\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 2) {\n router.back({ preload: true });\n }\n },\n },\n });\n }\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initialUrl);\n router.saveHistory();\n }\n }\n if (\n initialUrl &&\n browserHistory &&\n browserHistoryOnLoad &&\n (!History.state || !History.state[view.id])\n ) {\n History.initViewState(view.id, {\n url: initialUrl,\n });\n }\n router.emit('local::init routerInit', router);\n }\n\n destroy() {\n let router = this;\n\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach((routerProp) => {\n router[routerProp] = null;\n delete router[routerProp];\n });\n\n router = null;\n }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\n\nexport default Router;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction tabLoad(tabRoute, loadOptions = {}) {\n const router = this;\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n },\n loadOptions,\n );\n\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History[router.params.browserHistoryTabs](\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const { url, content, el, component, componentUrl } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadTabOptions)\n .then((tabContent) => {\n resolve(tabContent);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach((tabLoadProp) => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app,\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each((tabChild) => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction modalLoad(modalType, route, loadOptions = {}, direction) {\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {},\n },\n loadOptions,\n );\n\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n\n const routeCallback = (modal, name) => {\n const { on, once } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n const hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(\n `${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`,\n modal.el,\n route,\n modal,\n );\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (\n modalComponent ||\n modalParams.component ||\n modalParams.asyncComponent ||\n modalParams.async\n ) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, { modal });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const { url, content, component, componentUrl } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadModalOptions)\n .then((modalContent) => {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach((modalLoadProp) => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({ [modalLoadProp]: modalParams[modalLoadProp] }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app,\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, { closeByRouter: true });\n modal.close();\n}\n\nexport { modalLoad, modalRemove };\n","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\n\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n\n const $pagesToRemove = router.$el.children('.page').filter((pageInView) => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel))\n return true;\n return pageInView !== router.currentPageEl;\n });\n\n $pagesToRemove.each((pageEl) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n });\n}\n\nfunction clearPreviousHistory() {\n const router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n const url = router.history[router.history.length - 1];\n\n clearPreviousPages(router);\n\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n}\n\nexport { clearPreviousHistory }; // eslint-disable-line\n","import Router from './router-class.js';\n\nexport default {\n name: 'router',\n static: {\n Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el } = view;\n if (!$el) return;\n\n let $resizeHandlerEl;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n\n let minWidth;\n let maxWidth;\n\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return (parseInt(v, 10) / 100) * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('<div class=\"view-resize-handler\"></div>');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? { passive: true } : false;\n\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizableView;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\n\nclass View extends Framework7Class {\n constructor(app, el, viewParams = {}) {\n super(viewParams, [app]);\n\n const view = this;\n\n const ssr = view.params.routerId;\n\n const defaults = {\n routes: [],\n routesAdd: [],\n };\n\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message +=\n typeof el === 'string'\n ? `the selector \"${el}\" didn't match any element`\n : 'el must be an HTMLElement or Dom7 object';\n\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({ el }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {},\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n\n return view;\n }\n\n destroy() {\n let view = this;\n const app = view.app;\n\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n app.off('resize', view.checkMasterDetailBreakpoint);\n\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach((viewProp) => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n }\n\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail =\n app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if ((typeof force === 'undefined' && isMasterDetail) || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;\n else {\n // Supposed to be HTMLElement or Dom7\n selector =\n ($el.attr('id') ? `#${$el.attr('id')}` : '') +\n ($el.attr('class')\n ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}`\n : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('<div class=\"navbars\"></div>');\n }\n }\n\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector,\n });\n\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n\n view.emit('local::mount viewMount', view);\n }\n\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n if (\n view.params.initRouterOnTabShow &&\n view.$el.hasClass('tab') &&\n !view.$el.hasClass('tab-active')\n ) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\n\nexport default View;\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\n\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if (\n $clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n (url && url.indexOf('javascript:') >= 0)\n ) {\n const target = $clickedLinkEl.attr('target');\n if (\n url &&\n window.cordova &&\n window.cordova.InAppBrowser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (\n url &&\n window.Capacitor &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.Browser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({ url });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach((moduleName) => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach((clickSelector) => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(\n app,\n matchingClickedElement,\n matchingClickedElement.dataset(),\n e,\n );\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent'))\n return;\n\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (\n view &&\n view.params.linksView &&\n (!$clickedLinkEl.hasClass('back') ||\n ($clickedLinkEl.hasClass('back') && view.router.history.length === 1))\n ) {\n if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;\n else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n }\n }\n if (!view) {\n if (app.views.main) view = app.views.main;\n }\n if (!view || !view.router) return;\n if ($clickedLinkEl[0].f7RouteProps) {\n clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n }\n if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);\n else view.router.navigate(url, clickedLinkData);\n }\n }\n\n app.on('click', handleClicks);\n}\nexport default {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external',\n },\n },\n on: {\n init() {\n const app = this;\n initClicks(app);\n },\n },\n};\n","import { merge } from '../../shared/utils.js';\n\nexport default {\n name: 'routerComponentLoader',\n proto: {\n openIn(router, url, options) {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined,\n },\n },\n };\n const params = {\n ...options,\n };\n\n const component = (props, ctx) => {\n const { $h, $onMounted, $el, $f7 } = ctx;\n $onMounted(() => {\n const viewEl = $el.value.find('.view');\n const view = $f7.view.create(viewEl, {\n linksView: router.view.selector,\n ignoreOpenIn: true,\n loadInitialPage: false,\n });\n view.router.navigate(url, { props: options.props, reloadAll: true });\n });\n // eslint-disable-next-line\n return () => {\n if (options.openIn === 'popup') {\n return $h`<div class=\"popup popup-router-open-in\" data-url=\"${url}\"><div class=\"view\"></div></div>`;\n }\n if (options.openIn === 'loginScreen') {\n return $h`<div class=\"login-screen login-screen-router-open-in\" data-url=\"${url}\"><div class=\"view\"></div></div>`;\n }\n if (options.openIn === 'sheet') {\n return $h`<div class=\"sheet-modal sheet-modal-router-open-in\" data-url=\"${url}\"><div class=\"sheet-modal-inner\"><div class=\"view\"></div></div></div>`;\n }\n if (options.openIn === 'popover') {\n return $h`<div class=\"popover popover-router-open-in\" data-url=\"${url}\"><div class=\"popover-inner\"><div class=\"view\"></div></div></div>`;\n }\n if (options.openIn.indexOf('panel') >= 0) {\n const parts = options.openIn.split(':');\n const side = parts[1] || 'left';\n const effect = parts[2] || 'cover';\n\n return $h`<div class=\"panel panel-router-open-in panel-${side} panel-${effect}\" data-url=\"${url}\"><div class=\"view\"></div></div>`;\n }\n };\n };\n if (options.openIn === 'popup') {\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n navigateOptions.route.popover = params;\n }\n if (options.openIn.indexOf('panel') >= 0) {\n params.targetEl = options.clickedEl || options.targetEl;\n navigateOptions.route.panel = params;\n }\n params.component = component;\n\n return router.navigate(navigateOptions);\n },\n componentLoader(component, componentUrl, options = {}, resolve, reject) {\n const router = this;\n const { app } = router;\n const url = typeof component === 'string' ? component : componentUrl;\n const compiledUrl = router.replaceRequestUrlParams(url, options);\n function compile(componentFunction) {\n let context = options.context || {};\n if (typeof context === 'function') context = context.call(router);\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject(err);\n throw err;\n }\n }\n const componentContext = merge({}, context, {\n f7route: options.route,\n f7router: router,\n });\n const componentProps = merge(\n options.route ? options.route.params || {} : {},\n options.props || {},\n options.routeProps || {},\n );\n let componentEl;\n let componentRoot;\n if (options.componentOptions && options.componentOptions.el) {\n componentEl = options.componentOptions.el;\n }\n if (options.componentOptions && options.componentOptions.root) {\n componentRoot = options.componentOptions.root;\n }\n app.component\n .create(componentFunction, componentProps, {\n context: componentContext,\n el: componentEl,\n root: componentRoot,\n })\n .then((createdComponent) => {\n resolve(createdComponent.el);\n })\n .catch((err) => {\n reject(err);\n throw new Error(err, { cause: err });\n });\n }\n let cachedComponent;\n if (compiledUrl && router.params.componentCache) {\n router.cache.components.forEach((cached) => {\n if (cached.url === compiledUrl) cachedComponent = cached.component;\n });\n }\n if (compiledUrl && cachedComponent) {\n compile(cachedComponent);\n } else if (compiledUrl && !cachedComponent) {\n // Load via XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((loadedComponent) => {\n const parsedComponent = app.component.parse(loadedComponent);\n if (router.params.componentCache) {\n router.cache.components.push({\n url: compiledUrl,\n component: parsedComponent,\n });\n }\n compile(parsedComponent);\n })\n .catch((err) => {\n reject();\n throw err;\n });\n } else {\n compile(component);\n }\n },\n\n modalComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n tabComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n pageComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el, newOptions = {}) => {\n resolve(el, newOptions);\n },\n reject,\n );\n },\n },\n};\n","var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n","import htm from 'htm';\nimport { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst h = (type, props, ...children) => {\n return {\n type,\n props: props || {},\n children: flattenArray(children.filter((child) => ignoreChildren.indexOf(child) < 0)),\n };\n};\n\nconst $h = htm.bind(h);\n\nexport default $h;\n","export function vnode(sel, data, children, text, elm) {\n var key = data === undefined ? undefined : data.key;\n return { sel: sel, data: data, children: children,\n text: text, elm: elm, key: key };\n}\nexport default vnode;\n//# sourceMappingURL=vnode.js.map","export var array = Array.isArray;\nexport function primitive(s) {\n return typeof s === 'string' || typeof s === 'number';\n}\n//# sourceMappingURL=is.js.map","import { vnode } from './vnode.js';\nimport * as is from './is.js';\nfunction addNS(data, children, sel) {\n data.ns = 'http://www.w3.org/2000/svg';\n if (sel !== 'foreignObject' && children !== undefined) {\n for (var i = 0; i < children.length; ++i) {\n var childData = children[i].data;\n if (childData !== undefined) {\n addNS(childData, children[i].children, children[i].sel);\n }\n }\n }\n}\nexport function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (is.array(c)) {\n children = c;\n }\n else if (is.primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (is.array(b)) {\n children = b;\n }\n else if (is.primitive(b)) {\n text = b;\n }\n else if (b && b.sel) {\n children = [b];\n }\n else {\n data = b;\n }\n }\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (is.primitive(children[i]))\n children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n }\n }\n if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n addNS(data, children, sel);\n }\n return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map\n","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h.js';\nimport customComponents from './custom-components.js';\nimport { isObject, eventNameToColonCase } from '../../shared/utils.js';\n\nconst SELF_CLOSING =\n 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n ' ',\n );\nconst PROPS_ATTRS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(\n ' ',\n );\nconst BOOLEAN_PROPS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(\n ' ',\n );\n\nconst getTagName = (treeNode) => {\n return typeof treeNode.type === 'function'\n ? treeNode.type.name || 'CustomComponent'\n : treeNode.type;\n};\n\nconst toCamelCase = (name) => {\n return name\n .split('-')\n .map((word, index) => {\n if (index === 0) return word.toLowerCase();\n return word[0].toUpperCase() + word.substr(1);\n })\n .join('');\n};\nconst propsFromAttrs = (...args) => {\n const context = {};\n args.forEach((obj = {}) => {\n Object.keys(obj).forEach((key) => {\n context[toCamelCase(key)] = obj[key];\n });\n });\n\n return context;\n};\n\nconst createCustomComponent = ({ f7, treeNode, vnode, data }) => {\n const component =\n typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];\n f7.component\n .create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {\n el: vnode.elm,\n children: treeNode.children,\n })\n .then((c) => {\n if (vnode.data && vnode.data.on && c && c.$el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n c.$el.on(eventName, vnode.data.on[eventName]);\n });\n }\n // eslint-disable-next-line\n vnode.elm.__component__ = c;\n });\n};\nconst updateCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n if (!component) return;\n const newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n component.children = vnode.data.treeNode.children;\n Object.assign(component.props, newProps);\n component.update();\n};\nconst destroyCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n\n if (component) {\n const { el, $el } = component;\n if (vnode.data && vnode.data.on && $el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n $el.off(eventName, vnode.data.on[eventName]);\n });\n }\n if (component.destroy) component.destroy();\n if (el && el.parentNode) el.parentNode.removeChild(el);\n delete vnode.elm.__component__; // eslint-disable-line\n }\n};\n\nconst isCustomComponent = (treeNodeType) => {\n return (\n typeof treeNodeType === 'function' ||\n (treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType])\n );\n};\n\nfunction getHooks(treeNode, data, f7, initial, isRoot) {\n const hooks = {};\n const insert = [];\n const destroy = [];\n const update = [];\n const postpatch = [];\n let isFakeElement = false;\n let tagName = getTagName(treeNode);\n if (data && data.attrs && data.attrs.component) {\n tagName = data.attrs.component;\n delete data.attrs.component;\n isFakeElement = true;\n }\n\n const isCustom = isCustomComponent(treeNode.type);\n\n if (isCustom) {\n insert.push((vnode) => {\n if (vnode.sel !== tagName && !isFakeElement) return;\n createCustomComponent({ f7, treeNode, vnode, data });\n });\n destroy.push((vnode) => {\n destroyCustomComponent(vnode);\n });\n update.push((oldVnode, vnode) => {\n updateCustomComponent(vnode);\n });\n }\n\n if (!isCustom) {\n if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n const classNames = data.attrs.class;\n classNames.split(' ').forEach((className) => {\n if (!initial) {\n insert.push(...f7.getVnodeHooks('insert', className));\n }\n destroy.push(...f7.getVnodeHooks('destroy', className));\n update.push(...f7.getVnodeHooks('update', className));\n postpatch.push(...f7.getVnodeHooks('postpatch', className));\n });\n }\n\n if (isRoot && !initial) {\n postpatch.push((oldVnode, vnode) => {\n const vn = vnode || oldVnode;\n if (!vn) return;\n if (vn.data && vn.data.component) {\n vn.data.component.hook('onUpdated');\n }\n });\n }\n if (\n insert.length === 0 &&\n destroy.length === 0 &&\n update.length === 0 &&\n postpatch.length === 0\n ) {\n return hooks;\n }\n\n if (insert.length) {\n hooks.insert = (vnode) => {\n insert.forEach((f) => f(vnode));\n };\n }\n if (destroy.length) {\n hooks.destroy = (vnode) => {\n destroy.forEach((f) => f(vnode));\n };\n }\n if (update.length) {\n hooks.update = (oldVnode, vnode) => {\n update.forEach((f) => f(oldVnode, vnode));\n };\n }\n if (postpatch.length) {\n hooks.postpatch = (oldVnode, vnode) => {\n postpatch.forEach((f) => f(oldVnode, vnode));\n };\n }\n\n return hooks;\n}\nconst getEventHandler = (eventHandler, { stop, prevent, once } = {}) => {\n let fired = false;\n\n function handler(...args) {\n const e = args[0];\n if (once && fired) return;\n if (stop) e.stopPropagation();\n if (prevent) e.preventDefault();\n fired = true;\n\n eventHandler(...args);\n }\n\n return handler;\n};\n\nconst getData = (treeNode, component, f7, initial, isRoot) => {\n const data = { component, treeNode };\n const tagName = getTagName(treeNode);\n Object.keys(treeNode.props).forEach((attrName) => {\n const attrValue = treeNode.props[attrName];\n if (typeof attrValue === 'undefined') return;\n if (PROPS_ATTRS.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) data.props = {};\n if (attrName === 'readonly') {\n // eslint-disable-next-line\n attrName = 'readOnly';\n }\n if (attrName === 'routeProps') {\n // eslint-disable-next-line\n attrName = 'f7RouteProps';\n }\n if (tagName === 'option' && attrName === 'value') {\n if (!data.attrs) data.attrs = {};\n data.attrs.value = attrValue;\n }\n if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {\n // eslint-disable-next-line\n data.props[attrName] = attrValue === false ? false : true;\n } else {\n data.props[attrName] = attrValue;\n }\n } else if (attrName === 'key') {\n // Key\n data.key = attrValue;\n } else if (\n attrName.indexOf('@') === 0 ||\n (attrName.indexOf('on') === 0 && attrName.length > 2)\n ) {\n // Events\n if (!data.on) data.on = {};\n let eventName =\n attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));\n let stop = false;\n let prevent = false;\n let once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n if (eventNameIndex === 0) eventName = eventNamePart;\n else {\n if (eventNamePart === 'stop') stop = true;\n if (eventNamePart === 'prevent') prevent = true;\n if (eventNamePart === 'once') once = true;\n }\n });\n }\n data.on[eventName] = getEventHandler(attrValue, { stop, prevent, once });\n } else if (attrName === 'style') {\n // Style\n if (typeof attrValue !== 'string') {\n data.style = attrValue;\n } else {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n // Rest of attribures\n if (!data.attrs) data.attrs = {};\n data.attrs[attrName] = attrValue;\n\n // ID -> Key\n if (attrName === 'id' && !data.key && !isRoot) {\n data.key = attrValue;\n }\n }\n });\n\n const hooks = getHooks(treeNode, data, f7, initial, isRoot);\n\n hooks.prepatch = (oldVnode, vnode) => {\n if (!oldVnode || !vnode) return;\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach((key) => {\n if (BOOLEAN_PROPS.indexOf(key) < 0) return;\n if (!vnode.data) vnode.data = {};\n if (!vnode.data.props) vnode.data.props = {};\n if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n vnode.data.props[key] = false;\n }\n });\n }\n };\n\n data.hook = hooks;\n\n return data;\n};\n\nconst getChildren = (treeNode, component, f7, initial) => {\n if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {\n return [];\n }\n const children = [];\n const nodes = treeNode.children;\n for (let i = 0; i < nodes.length; i += 1) {\n const childNode = nodes[i];\n const child = treeNodeToVNode(childNode, component, f7, initial, false);\n if (Array.isArray(child)) {\n children.push(...child);\n } else if (child) {\n children.push(child);\n }\n }\n return children;\n};\n\nconst getSlots = (treeNode, component, f7, initial) => {\n const slotName = treeNode.props.name || 'default';\n const slotNodes = (component.children || []).filter((childTreeNode) => {\n let childSlotName = 'default';\n if (childTreeNode.props) {\n childSlotName = childTreeNode.props.slot || 'default';\n }\n return childSlotName === slotName;\n });\n if (slotNodes.length === 0) {\n return getChildren(treeNode, component, f7, initial);\n }\n return slotNodes.map((subTreeNode) => treeNodeToVNode(subTreeNode, component, f7, initial));\n};\n\nconst isTreeNode = (treeNode) => {\n return isObject(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;\n};\n\nconst treeNodeToVNode = (treeNode, component, f7, initial, isRoot) => {\n if (!isTreeNode(treeNode)) {\n return String(treeNode);\n }\n if (treeNode.type === 'slot') {\n return getSlots(treeNode, component, f7, initial);\n }\n const data = getData(treeNode, component, f7, initial, isRoot);\n const children = isCustomComponent(treeNode.type)\n ? []\n : getChildren(treeNode, component, f7, initial);\n\n return h(getTagName(treeNode), data, children);\n};\n\nexport default function vdom(tree = {}, component, initial) {\n return treeNodeToVNode(tree, component, component.f7, initial, true);\n}\n","function createElement(tagName) {\n return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n if (referenceNode && referenceNode.parentNode !== parentNode) {\n if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n }\n parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n if (!node) return;\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\nfunction parentNode(node) {\n return node.parentNode;\n}\nfunction nextSibling(node) {\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n getTextContent: getTextContent,\n isElement: isElement,\n isText: isText,\n isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode.js';\nimport * as is from './is.js';\nimport htmlDomApi from './htmldomapi.js';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, map = {}, key, ch;\n for (i = beginIdx; i <= endIdx; ++i) {\n ch = children[i];\n if (ch != null) {\n key = ch.key;\n if (key !== undefined)\n map[key] = i;\n }\n }\n return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h.js';\nexport { thunk } from './thunk.js';\nexport function init(modules, domApi) {\n var i, j, cbs = {};\n var api = domApi !== undefined ? domApi : htmlDomApi;\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n var hook = modules[j][hooks[i]];\n if (hook !== undefined) {\n cbs[hooks[i]].push(hook);\n }\n }\n }\n function emptyNodeAt(elm) {\n var id = elm.id ? '#' + elm.id : '';\n var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';\n return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);\n }\n function createRmCb(childElm, listeners) {\n return function rmCb() {\n if (--listeners === 0) {\n var parent_1 = api.parentNode(childElm);\n api.removeChild(parent_1, childElm);\n }\n };\n }\n function createElm(vnode, insertedVnodeQueue) {\n var i, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode);\n data = vnode.data;\n }\n }\n var children = vnode.children, sel = vnode.sel;\n if (sel === '!') {\n if (isUndef(vnode.text)) {\n vnode.text = '';\n }\n vnode.elm = api.createComment(vnode.text);\n }\n else if (sel !== undefined) {\n // Parse selector\n var hashIdx = sel.indexOf('#');\n var dotIdx = sel.indexOf('.', hashIdx);\n var hash = hashIdx > 0 ? hashIdx : sel.length;\n var dot = dotIdx > 0 ? dotIdx : sel.length;\n var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag)\n : api.createElement(tag);\n if (hash < dot)\n elm.setAttribute('id', sel.slice(hash + 1, dot));\n if (dotIdx > 0)\n elm.setAttribute('class', sel.slice(dot + 1).replace(/\\./g, ' '));\n for (i = 0; i < cbs.create.length; ++i)\n cbs.create[i](emptyNode, vnode);\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch, insertedVnodeQueue));\n }\n }\n }\n else if (is.primitive(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create)\n i.create(emptyNode, vnode);\n if (i.insert)\n insertedVnodeQueue.push(vnode);\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n }\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);\n }\n }\n }\n function invokeDestroyHook(vnode) {\n var i, j, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.destroy))\n i(vnode);\n for (i = 0; i < cbs.destroy.length; ++i)\n cbs.destroy[i](vnode);\n if (vnode.children !== undefined) {\n for (j = 0; j < vnode.children.length; ++j) {\n i = vnode.children[j];\n if (i != null && typeof i !== \"string\") {\n invokeDestroyHook(i);\n }\n }\n }\n }\n }\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var i_1 = void 0, listeners = void 0, rm = void 0, ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.sel)) {\n invokeDestroyHook(ch);\n listeners = cbs.remove.length + 1;\n rm = createRmCb(ch.elm, listeners);\n for (i_1 = 0; i_1 < cbs.remove.length; ++i_1)\n cbs.remove[i_1](ch, rm);\n if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {\n i_1(ch, rm);\n }\n else {\n rm();\n }\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n var oldStartIdx = 0, newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (oldKeyToIdx === undefined) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.sel !== newStartVnode.sel) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n }\n function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n var i, hook;\n if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode);\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode)\n return;\n if (vnode.data !== undefined) {\n for (i = 0; i < cbs.update.length; ++i)\n cbs.update[i](oldVnode, vnode);\n i = vnode.data.hook;\n if (isDef(i) && isDef(i = i.update))\n i(oldVnode, vnode);\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch)\n updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text))\n api.setTextContent(elm, '');\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n api.setTextContent(elm, vnode.text);\n }\n if (isDef(hook) && isDef(i = hook.postpatch)) {\n i(oldVnode, vnode);\n }\n }\n return function patch(oldVnode, vnode) {\n var i, elm, parent;\n var insertedVnodeQueue = [];\n for (i = 0; i < cbs.pre.length; ++i)\n cbs.pre[i]();\n if (!isVnode(oldVnode)) {\n oldVnode = emptyNodeAt(oldVnode);\n }\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode, insertedVnodeQueue);\n }\n else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode, insertedVnodeQueue);\n if (parent !== null) {\n api.insertBefore(parent, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n }\n }\n for (i = 0; i < insertedVnodeQueue.length; ++i) {\n insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);\n }\n for (i = 0; i < cbs.post.length; ++i)\n cbs.post[i]();\n return vnode;\n };\n}\n//# sourceMappingURL=snabbdom.js.map\n","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n // update modified attributes, add new attributes\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n // Assume xml namespace\n elm.setAttributeNS(xmlNS, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n // Assume xlink namespace\n elm.setAttributeNS(xlinkNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n // remove removed attributes\n // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n // the other option is to remove all attributes with value == undefined\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in oldProps) {\n if (!props[key]) {\n delete elm[key];\n }\n }\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n var oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n }\n else {\n elm.style[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (var name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n }\n else if (name !== 'remove' && cur !== oldStyle[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n }\n else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction applyDestroyStyle(vnode) {\n var style, name, elm = vnode.elm, s = vnode.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode, rm) {\n var s = vnode.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n compStyle = getComputedStyle(elm);\n var props = compStyle['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener('transitionend', function (ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n });\n}\nexport var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from '../../shared/dom7.js';\n\nfunction invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler(event, ...args);\n }\n}\nfunction handleEvent(event, args, vnode) {\n const name = event.type;\n const on = vnode.data.on;\n // call event handler(s) if exists\n if (on && on[name]) {\n invokeHandler(on[name], event, args, vnode);\n }\n}\nfunction createListener() {\n return function handler(event, ...args) {\n handleEvent(event, args, handler.vnode);\n };\n}\nfunction updateEvents(oldVnode, vnode) {\n const oldOn = oldVnode.data.on;\n const oldListener = oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = vnode && vnode.data.on;\n const elm = vnode && vnode.elm;\n // optimization for reused immutable handlers\n if (oldOn === on) {\n return;\n }\n // remove existing listeners which no longer used\n if (oldOn && oldListener) {\n // if element changed or deleted we remove all existing listeners unconditionally\n if (!on) {\n Object.keys(oldOn).forEach((name) => {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach((name) => {\n if (!on[name]) {\n $(oldElm).off(name, oldListener);\n }\n });\n }\n }\n // add new listeners which has not already attached\n if (on) {\n // reuse existing listener or create new\n const listener = oldVnode.listener || createListener();\n vnode.listener = listener;\n // update vnode for listener\n listener.vnode = vnode;\n // if element changed or added we add all needed listeners unconditionally\n if (!oldOn) {\n Object.keys(on).forEach((name) => {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach((name) => {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n}\n\nexport default {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom.js';\nimport attributesModule from './snabbdom/modules/attributes.js';\nimport propsModule from './snabbdom/modules/props.js';\nimport styleModule from './snabbdom/modules/style.js';\nimport eventListenersModule from './eventslisteners.js';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","import { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst $jsx = (type, props, ...children) => {\n const flatChildren = flattenArray(\n (children || []).filter((child) => ignoreChildren.indexOf(child) < 0),\n );\n if (type === 'Fragment') {\n return flatChildren;\n }\n return {\n type,\n props: props || {},\n children: flatChildren,\n };\n};\n\nexport default $jsx;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport $h from './$h.js';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils.js';\nimport vdom from './vdom.js';\nimport patch from './patch.js';\nimport $jsx from './$jsx.js';\n\n/* eslint-disable no-shadow */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-sequences */\nconst types = [\n {\n name: 'array',\n init: (i) => i,\n type: (i) => [i].find(Array.isArray),\n update: (i, o) => [o].filter(Array.isArray).find(() => ((i.length = 0), i.push(...o))),\n insert: (i, x, o = []) => i.splice(Math.max(x, 0), 0, ...[o].flat()),\n replace: (i, x, o = []) => i.splice(Math.max(x, 0), Math.min(++x, 1), ...[o].flat()),\n append: (i, o = []) => i.push(...[o].flat()),\n prepend: (i, o = []) => i.unshift(...[o].flat()),\n swap: (i, a, b) => {\n [i[a], i[b]] = [i[b], i[a]];\n },\n fromTo: (i, a, b = a) => i.splice(Math.max(b, 0), 0, ...i.splice(Math.max(a, 0), 1)),\n remove: (i, o, a = i.map((_, x) => x)) =>\n [o]\n .flat()\n .filter((i) => a.includes(i))\n .sort((a, b) => b - a)\n .forEach((x) => i.splice(x, 1)),\n clear: (i) => (i.length = 0),\n },\n {\n name: 'object',\n init: (i) => i,\n type: (i) =>\n [i]\n .filter((i) => [i !== null, i !== undefined].every((i) => i))\n .find((i) => Object.getPrototypeOf(i) === Object.prototype),\n update: (i, o) => Object.assign(i, o),\n insert: () => {},\n replace: () => {},\n append: () => {},\n prepend: () => {},\n swap: () => ({}), // N/A\n fromTo: () => ({}), // N/A\n remove: (i, o) => [o].flat().forEach((k) => delete i[k]),\n clear: (i) => Object.keys(i).forEach((k) => delete i[k]),\n },\n {\n name: 'atoms',\n type: () => true,\n init: (i, o = {}) => (\n Object.defineProperty(o, 'value', {\n get: () => i,\n set: (v) => {\n // eslint-disable-next-line\n i = v;\n },\n }),\n o\n ),\n update: (i, v = i.value) => {\n i.value = v;\n },\n insert: () => ({}), // N/A\n replace: () => ({}), // N/A\n append: () => ({}), // N/A\n prepend: () => ({}), // N/A\n swap: () => ({}), // N/A\n fromTo: () => ({}), // N/A\n remove: () => ({}), // N/A\n clear: (i) => {\n i.value = undefined;\n },\n },\n];\n\n/* eslint-enable no-shadow */\n/* eslint-enable no-return-assign */\n/* eslint-enable no-plusplus */\n/* eslint-enable no-param-reassign */\n/* eslint-enable no-sequences */\n\nclass Component {\n constructor(app, component, props = {}, { el, context, children } = {}) {\n const document = getDocument();\n merge(this, {\n f7: app,\n props: props || {},\n context: context || {},\n id: component.id || generateId(),\n children: children || [],\n theme: {\n ios: app.theme === 'ios',\n md: app.theme === 'md',\n },\n style: component.style,\n __updateQueue: [],\n __eventHandlers: [],\n __onceEventHandlers: [],\n __onBeforeMount: [],\n __onMounted: [],\n __onBeforeUpdate: [],\n __onUpdated: [],\n __onBeforeUnmount: [],\n __onUnmounted: [],\n });\n\n const createComponent = () => {\n return component(this.props, this.getComponentContext(true));\n };\n\n const getRenderFuncion = (componentResult) =>\n new Promise((resolve, reject) => {\n if (typeof componentResult === 'function') {\n resolve(componentResult);\n } else if (componentResult instanceof Promise) {\n componentResult\n .then((render) => {\n resolve(render);\n })\n .catch((err) => {\n reject(err);\n });\n } else {\n reject(\n new Error(\n 'Framework7: Component render function is not a \"function\" type. Didn\\'t you forget to \"return $render\"?',\n ),\n );\n }\n });\n\n return new Promise((resolve, reject) => {\n const componentResult = createComponent();\n getRenderFuncion(componentResult)\n .then((render) => {\n this.renderFunction = render;\n\n const tree = this.render();\n\n if (el) {\n this.vnode = vdom(tree, this, true);\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n this.el = el;\n patch(this.el, this.vnode);\n this.el = this.vnode.elm;\n this.$el = $(this.el);\n\n this.attachEvents();\n this.el.f7Component = this;\n this.mount();\n resolve(this);\n return;\n }\n // Make Dom\n if (tree) {\n this.vnode = vdom(tree, this, true);\n this.el = document.createElement(this.vnode.sel || 'div');\n patch(this.el, this.vnode);\n this.$el = $(this.el);\n }\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n\n this.attachEvents();\n\n if (this.el) {\n this.el.f7Component = this;\n }\n\n resolve(this);\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n on(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__eventHandlers.push({ eventName, handler });\n }\n\n once(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__onceEventHandlers.push({ eventName, handler });\n }\n\n getComponentRef() {\n const self = this;\n return (initialValue) => {\n let value = initialValue;\n const obj = {};\n Object.defineProperty(obj, 'value', {\n get() {\n return value;\n },\n set(v) {\n value = v;\n self.update();\n },\n });\n return obj;\n };\n }\n\n getComponentStore() {\n const { state, _gettersPlain, dispatch } = this.f7.store;\n const $store = {\n state,\n dispatch,\n };\n $store.getters = new Proxy(_gettersPlain, {\n get: (target, prop) => {\n const obj = target[prop];\n const callback = (v) => {\n obj.value = v;\n this.update();\n };\n obj.onUpdated(callback);\n return obj;\n },\n });\n\n return $store;\n }\n\n /* eslint-disable no-sequences */\n getUseState() {\n return (o) => {\n const obj = [o].reduce(\n (t, _i, _x, _a, i = t.init(_i)) => ({\n state: i,\n update: (v) => (t.update(i, v), this.update()),\n remove: (v) => (t.remove(i, v), this.update()),\n clear: () => (t.clear(i), this.update()),\n insert: (x, v) => (t.insert(i, x, v), this.update()),\n replace: (x, v) => (t.replace(i, x, v), this.update()),\n append: (v) => (t.append(i, v), this.update()),\n prepend: (v) => (t.prepend(i, v), this.update()),\n swap: (a, b) => (t.swap(i, a, b), this.update()),\n fromTo: (a, b) => (t.fromTo(i, a, b), this.update()),\n method: (f = () => ({})) => (f(i), this.update()),\n async: (f = () => Promise.reject(i)) => f(i).then(() => this.update()),\n }),\n types.find((i) => i.type(o)),\n );\n obj.length = 12;\n obj[Symbol.iterator] = function Iterate() {\n const values = Object.values(this);\n values.splice(values.indexOf(12), 1);\n let index = 0;\n return {\n next() {\n if (index < values.length) {\n const val = values[index];\n index += 1;\n return { value: val, done: false };\n }\n return { done: true };\n },\n };\n };\n return obj;\n };\n }\n /* eslint-enable no-sequences */\n\n getComponentContext(includeHooks) {\n const ctx = {\n $f7route: this.context.f7route,\n $f7router: this.context.f7router,\n $h,\n $,\n $id: this.id,\n $f7: this.f7,\n $f7ready: this.f7ready.bind(this),\n $theme: this.theme,\n $tick: this.tick.bind(this),\n $update: this.update.bind(this),\n $emit: this.emit.bind(this),\n $store: this.getComponentStore(),\n $ref: this.getComponentRef(),\n $el: {},\n $useState: this.getUseState(),\n };\n Object.defineProperty(ctx.$el, 'value', {\n get: () => {\n return this.$el;\n },\n });\n if (includeHooks)\n Object.assign(ctx, {\n $on: this.on.bind(this),\n $once: this.once.bind(this),\n $onBeforeMount: (handler) => this.__onBeforeMount.push(handler),\n $onMounted: (handler) => this.__onMounted.push(handler),\n $onBeforeUpdate: (handler) => this.__onBeforeUpdate.push(handler),\n $onUpdated: (handler) => this.__onUpdated.push(handler),\n $onBeforeUnmount: (handler) => this.__onBeforeUnmount.push(handler),\n $onUnmounted: (handler) => this.__onUnmounted.push(handler),\n });\n\n return ctx;\n }\n\n render() {\n return this.renderFunction(this.getComponentContext());\n }\n\n emit(name, data) {\n if (!this.el) return;\n this.$el.trigger(name, data);\n }\n\n attachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n detachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n startUpdateQueue() {\n const window = getWindow();\n if (this.__requestAnimationFrameId) return;\n const update = () => {\n this.hook('onBeforeUpdate');\n const tree = this.render();\n\n // Make Dom\n if (tree) {\n const newVNode = vdom(tree, this, false);\n this.vnode = patch(this.vnode, newVNode);\n }\n };\n this.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n if (this.__updateIsPending) update();\n let resolvers = [...this.__updateQueue];\n this.__updateQueue = [];\n this.__updateIsPending = false;\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n delete this.__requestAnimationFrameId;\n delete this.__updateIsPending;\n resolvers.forEach((resolver) => resolver());\n resolvers = [];\n });\n }\n\n tick(callback) {\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n }\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n update(callback) {\n if (this.__destroyed) return new Promise(() => {});\n return new Promise((resolve) => {\n const resolver = () => {\n resolve();\n if (callback) callback();\n };\n this.__updateIsPending = true;\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n setState(callback) {\n return this.update(callback);\n }\n\n f7ready(callback) {\n if (this.f7.initialized) {\n callback(this.f7);\n return;\n }\n this.f7.once('init', () => {\n callback(this.f7);\n });\n }\n\n mount(mountMethod) {\n this.hook('onBeforeMount', this.$el);\n if (this.styleEl) $('head').append(this.styleEl);\n if (mountMethod) mountMethod(this.el);\n this.hook('onMounted', this.$el);\n }\n\n destroy() {\n if (this.__destroyed) return;\n const window = getWindow();\n this.hook('onBeforeUnmount');\n\n if (this.styleEl) $(this.styleEl).remove();\n\n this.detachEvents();\n this.hook('onUnmounted');\n // Delete component instance\n if (this.el && this.el.f7Component) {\n this.el.f7Component = null;\n delete this.el.f7Component;\n }\n // Patch with empty node\n if (this.vnode) {\n this.vnode = patch(this.vnode, { sel: this.vnode.sel, data: {} });\n }\n // Clear update queue\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n this.__updateQueue = [];\n this.__eventHandlers = [];\n this.__onceEventHandlers = [];\n this.__onBeforeMount = [];\n this.__onMounted = [];\n this.__onBeforeUpdate = [];\n this.__onUpdated = [];\n this.__onBeforeUnmount = [];\n this.__onUnmounted = [];\n // Delete all props\n deleteProps(this);\n this.__destroyed = true;\n }\n\n hook(name, ...args) {\n if (this.__destroyed) return;\n this[`__${name}`].forEach((handler) => {\n handler(...args);\n });\n }\n}\n\nComponent.$jsx = $jsx;\n\nexport default Component;\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { id } from '../../shared/utils.js';\n\nfunction parseComponent(componentString) {\n const window = getWindow();\n const document = getDocument();\n const componentId = id();\n const callbackCreateName = `f7_component_create_callback_${componentId}`;\n\n // Template\n let template;\n const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter((item, index) => index > 0)\n .join('<template>')\n .split('</template>')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('</template>')\n .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Parse Styles\n let style = null;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n }\n if (componentString.indexOf('<style scoped>') >= 0) {\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n }\n\n // Parse Script\n let scriptContent;\n if (componentString.indexOf('<script>') >= 0) {\n const scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return () => {return $render}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';\n\n // Parse Template\n if (template) {\n scriptContent = scriptContent\n .replace(\n '$render',\n `function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n var $ref = $$ctx.$ref;\n var $useState = $$ctx.$useState;\n\n return $h\\`${template}\\`\n }\n `,\n )\n .replace(/export default/g, 'return');\n }\n\n // Execute Script\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Style\n if (style) {\n component.style = style;\n }\n\n // Component ID\n component.id = componentId;\n return component;\n}\n\nexport default parseComponent;\n","import Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n parseComponent,\n registerComponent,\n unregisterComponent,\n },\n create() {\n const app = this;\n app.component = {\n registerComponent,\n unregisterComponent,\n parse(componentString) {\n return parseComponent(componentString);\n },\n create(component, props, { root, el, context, children }) {\n return new Component(app, component, props, { root, el, context, children });\n },\n };\n },\n};\n","import History from '../../shared/history.js';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each((viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Navbar = {\n size(el) {\n const app = this;\n\n let $el = $(el);\n\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n\n const needCenterTitle =\n $innerEl.hasClass('navbar-inner-centered-title') ||\n app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n if (!needCenterTitle && !needLeftTitle) return;\n\n if (\n $el.parents('.tab:not(.tab-active)').length > 0 ||\n $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth =\n navbarWidth -\n parseInt(navbarStyles.paddingLeft, 10) -\n parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n\n let router;\n let dynamicNavbar;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el\n .parent()\n .find('.navbar-current')\n .children('.left.sliding')\n .find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (\n router &&\n router.params.iosAnimateNavbarBackIcon &&\n left.find('.back .icon').length > 0\n ) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset =\n rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl\n ? subnavbar[0].offsetWidth\n : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({ left: `${titleLeft}px` });\n }\n },\n hide(el, animate = true, hideStatusbar = false, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic\n ? $el.find('.navbar-current .title-large').length\n : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el = '.navbar-hidden', animate = true, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl\n .parents('.view')\n .find('.page')\n .each((el) => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl\n .eq(0)\n .removeClass('page-with-navbar-large-collapsed')\n .trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n\n let navbarOffsetHeight;\n\n if (needCollapse || (needHide && isLarge)) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n }\n }\n\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each((pageContentEl) => {\n pageContentEl.f7ScrollableDistance =\n pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (\n currentScrollTop >= navbarTitleLargeHeight / 2 &&\n currentScrollTop < navbarTitleLargeHeight\n ) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function handleNavbarTransparent() {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n\n if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent =\n $navbarEl.hasClass('navbar-large-transparent') ||\n ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent'));\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(\n navbarTitleLargeHeight,\n pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight,\n );\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle =\n previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n const $bgEl = $navbarEl.find('.navbar-bg');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\n (collapseProgress === 0 && navbarCollapsed) ||\n (collapseProgress === 0 && previousCollapseWasInMiddle) ||\n (collapseProgress === 1 && !navbarCollapsed) ||\n (collapseProgress === 1 && previousCollapseWasInMiddle)\n ) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n $navbarEl.find('.title-large-text').css('opacity', '');\n if (isLargeTransparent) {\n $bgEl.css('opacity', '');\n }\n $bgEl.css('transform', '');\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', -0.5 + collapseProgress * 1.5);\n $navbarEl\n .find('.title-large-text, .subnavbar')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n $navbarEl.find('.title-large-text').css('opacity', 1 - collapseProgress * 2);\n\n if (isLargeTransparent) {\n $bgEl.css('opacity', collapseProgress);\n }\n $bgEl.css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n }\n\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each((pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n },\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar,\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true,\n },\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint':\n function onPanelResize() {\n const app = this;\n $('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (\n app.params.navbar.hideOnPageScroll ||\n page.$el.find('.hide-navbar-on-scroll').length ||\n page.$el.hasClass('hide-navbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length ||\n page.$el.hasClass('keep-navbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(\n page.el,\n $navbarEl[0],\n needHideOnScrollHandler,\n needCollapseOnScrollHandler,\n needTransparentOnScroll,\n );\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous)').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl)\n .find('.navbar:not(.navbar-previous)')\n .each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarsEl.nextAll('.page-current').find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\n\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n\n if (\n $tabbarEl.length === 0 ||\n !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-icons'))\n )\n return;\n\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate = true) {\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate = true) {\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-icons');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar,\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-icons');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-icons').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll ||\n page.$el.find('.hide-toolbar-on-scroll').length ||\n page.$el.hasClass('hide-toolbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length ||\n page.$el.hasClass('keep-toolbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-icons').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter((subnavbarEl) => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n\n if (!$el) return undefined;\n\n const { left, top, width, height } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top,\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter =\n ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale * 2})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n\n ripple.$rippleWaveEl = $(\n `<div class=\"ripple-wave${\n isInset ? ' ripple-wave-inset' : ''\n }\" style=\"width: ${diameter}px; height: ${diameter}px; margin-top:-${\n diameter / 2\n }px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${\n center.y\n }px; --f7-ripple-transform: ${ripple.rippleTransform}\"></div>`,\n );\n\n $el.prepend(ripple.$rippleWaveEl);\n\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n\n return ripple;\n }\n\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach((key) => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n\n out() {\n const ripple = this;\n const { $rippleWaveEl } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}\n","import TouchRipple from './touch-ripple-class.js';\n\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple,\n },\n create() {\n const app = this;\n app.touchRipple = {\n create(...args) {\n return new TouchRipple(...args);\n },\n };\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const modal = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = extend(defaults, params);\n modal.opened = false;\n\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.remove();\n }\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n\n open(animateModal, force) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n if (!force) return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach((openedModal) => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.insertBefore($el);\n }\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el\n .prevAll('.popup.modal-in')\n .add(modal.$el.nextAll('.popup.modal-in'))\n .each((popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick &&\n popupInstance.params.backdrop &&\n popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n },\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n queueDialogs: true,\n },\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Dialog extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n title: app.params.dialog.title,\n text: undefined,\n content: '',\n buttons: [],\n verticalButtons: false,\n onClick: undefined,\n cssClass: undefined,\n destroyOnClose: false,\n on: {},\n },\n params,\n );\n if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n }\n if (typeof extendedParams.backdrop === 'undefined') {\n extendedParams.backdrop = app.params.dialog.backdrop;\n }\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const dialog = this;\n\n const device = getDevice();\n const document = getDocument();\n\n const { title, text, content, buttons, verticalButtons, cssClass, backdrop } = extendedParams;\n\n dialog.params = extendedParams;\n\n // Find Element\n let $el;\n if (!dialog.params.el) {\n const dialogClasses = ['dialog'];\n if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n if (cssClass) dialogClasses.push(cssClass);\n\n let buttonsHTML = '';\n if (buttons.length > 0) {\n buttonsHTML = (\n <div class=\"dialog-buttons\">\n {buttons.map((button) => (\n <span\n class={`dialog-button${button.strong ? ' dialog-button-strong' : ''}${\n button.color ? ` color-${button.color}` : ''\n }${button.cssClass ? ` ${button.cssClass}` : ''}`}\n >\n {button.text}\n </span>\n ))}\n </div>\n );\n }\n\n const dialogHtml = (\n <div class={dialogClasses.join(' ')}>\n <div class=\"dialog-inner\">\n {title && <div class=\"dialog-title\">{title}</div>}\n {text && <div class=\"dialog-text\">{text}</div>}\n {content}\n </div>\n {buttonsHTML}\n </div>\n );\n $el = $(dialogHtml);\n } else {\n $el = $(dialog.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return dialog.destroy();\n }\n\n let $backdropEl;\n if (backdrop) {\n $backdropEl = app.$el.children('.dialog-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"dialog-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n // Assign events\n function buttonOnClick(e) {\n const buttonEl = this;\n const index = $(buttonEl).index();\n const button = buttons[index];\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n let addKeyboardHander;\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n buttons.forEach((button, index) => {\n if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n if (document.activeElement) document.activeElement.blur();\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n });\n }\n if (buttons && buttons.length > 0) {\n dialog.on('open', () => {\n $el.find('.dialog-button').each((buttonEl, index) => {\n const button = buttons[index];\n if (button.keyCodes) addKeyboardHander = true;\n $(buttonEl).on('click', buttonOnClick);\n });\n if (\n addKeyboardHander &&\n !device.ios &&\n !device.android &&\n !device.cordova &&\n !device.capacitor\n ) {\n $(document).on('keydown', onKeyDown);\n }\n });\n dialog.on('close', () => {\n $el.find('.dialog-button').each((buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n if (\n addKeyboardHander &&\n !device.ios &&\n !device.android &&\n !device.cordova &&\n !device.capacitor\n ) {\n $(document).off('keydown', onKeyDown);\n }\n addKeyboardHander = false;\n });\n }\n extend(dialog, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'dialog',\n setProgress(progress, duration) {\n app.progressbar.set($el.find('.progressbar'), progress, duration);\n return dialog;\n },\n setText(newText) {\n let $textEl = $el.find('.dialog-text');\n if ($textEl.length === 0) {\n $textEl = $('<div class=\"dialog-text\"></div>');\n if (typeof title !== 'undefined') {\n $textEl.insertAfter($el.find('.dialog-title'));\n } else {\n $el.find('.dialog-inner').prepend($textEl);\n }\n }\n $textEl.html(newText);\n dialog.params.text = newText;\n return dialog;\n },\n setTitle(newTitle) {\n let $titleEl = $el.find('.dialog-title');\n if ($titleEl.length === 0) {\n $titleEl = $('<div class=\"dialog-title\"></div>');\n $el.find('.dialog-inner').prepend($titleEl);\n }\n $titleEl.html(newTitle);\n dialog.params.title = newTitle;\n return dialog;\n },\n });\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n if ($target.closest(dialog.el).length === 0) {\n if (\n dialog.params.closeByBackdropClick &&\n dialog.backdropEl &&\n dialog.backdropEl === target\n ) {\n dialog.close();\n }\n }\n }\n\n dialog.on('opened', () => {\n if (dialog.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n dialog.on('close', () => {\n if (dialog.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = dialog;\n\n if (dialog.params.destroyOnClose) {\n dialog.once('closed', () => {\n setTimeout(() => {\n dialog.destroy();\n }, 0);\n });\n }\n\n return dialog;\n }\n}\nexport default Dialog;\n","import { extend, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport Dialog from './dialog-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n name: 'dialog',\n params: {\n dialog: {\n title: undefined,\n buttonOk: 'OK',\n buttonCancel: 'Cancel',\n usernamePlaceholder: 'Username',\n passwordPlaceholder: 'Password',\n preloaderTitle: 'Loading... ',\n progressTitle: 'Loading... ',\n backdrop: true,\n closeByBackdropClick: false,\n destroyPredefinedDialogs: true,\n keyboardActions: true,\n autoFocus: true,\n },\n },\n static: {\n Dialog,\n },\n create() {\n const app = this;\n function defaultDialogTitle() {\n return app.params.dialog.title || app.name;\n }\n const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n const keyboardActions = app.params.dialog.keyboardActions;\n const autoFocus = app.params.dialog.autoFocus;\n const autoFocusHandler = autoFocus\n ? {\n on: {\n opened(dialog) {\n dialog.$el.find('input').eq(0).focus();\n },\n },\n }\n : {};\n const isIosTheme = app.theme === 'ios';\n\n app.dialog = extend(\n ModalMethods({\n app,\n constructor: Dialog,\n defaultSelector: '.dialog.modal-in',\n }),\n {\n // Shortcuts\n alert(...args) {\n let [text, title, callbackOk] = args;\n if (args.length === 2 && typeof args[1] === 'function') {\n [text, callbackOk, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [\n {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13, 27] : null,\n },\n ],\n destroyOnClose,\n }).open();\n },\n prompt(...args) {\n let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, defaultValue, title] = args;\n }\n defaultValue =\n typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `<div class=\"dialog-input-field input\"><input type=\"text\" class=\"dialog-input\" value=\"${defaultValue}\"></div>`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null,\n },\n {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const inputValue = dialog.$el.find('.dialog-input').val();\n if (index === 0 && callbackCancel) callbackCancel(inputValue);\n if (index === 1 && callbackOk) callbackOk(inputValue);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n confirm(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n onClick: callbackCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null,\n },\n {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n destroyOnClose,\n }).open();\n },\n login(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n <div class=\"dialog-input-field dialog-input-double input\">\n <input type=\"text\" name=\"dialog-username\" placeholder=\"${app.params.dialog.usernamePlaceholder}\" class=\"dialog-input\">\n </div>\n <div class=\"dialog-input-field dialog-input-double input\">\n <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n </div>`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null,\n },\n {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(username, password);\n if (index === 1 && callbackOk) callbackOk(username, password);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n password(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n <div class=\"dialog-input-field input\">\n <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n </div>`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null,\n },\n {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(password);\n if (index === 1 && callbackOk) callbackOk(password);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n preloader(title, color) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent,\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n return new Dialog(app, {\n title:\n typeof title === 'undefined' || title === null\n ? app.params.dialog.preloaderTitle\n : title,\n // prettier-ignore\n content: `<div class=\"preloader${color ? ` color-${color}` : ''}\">${preloaderInner}</div>`,\n cssClass: 'dialog-preloader',\n destroyOnClose,\n }).open();\n },\n progress(...args) {\n let [title, progress, color] = args;\n if (args.length === 2) {\n if (typeof args[0] === 'number') {\n [progress, color, title] = args;\n } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n [title, color, progress] = args;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n [progress, title, color] = args;\n }\n }\n const infinite = typeof progress === 'undefined';\n const dialog = new Dialog(app, {\n title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n cssClass: 'dialog-progress',\n // prettier-ignore\n content: `\n <div class=\"progressbar${infinite ? '-infinite' : ''}${color ? ` color-${color}` : ''}\">\n ${!infinite ? '<span></span>' : ''}\n </div>\n `,\n destroyOnClose,\n });\n if (!infinite) dialog.setProgress(progress);\n return dialog.open();\n },\n },\n );\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n\nclass Popup extends Modal {\n constructor(app, params) {\n const extendedParams = extend({ on: {} }, app.params.popup, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const popup = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n\n popup.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popup.params.el) {\n $el = $(popup.params.content)\n .filter((node) => node.nodeType === 1)\n .eq(0);\n } else {\n $el = $(popup.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return popup.destroy();\n }\n\n let $backdropEl;\n if (popup.params.backdrop && popup.params.backdropEl) {\n $backdropEl = $(popup.params.backdropEl);\n } else if (popup.params.backdrop) {\n if (popup.params.backdropUnique) {\n $backdropEl = $('<div class=\"popup-backdrop popup-backdrop-unique\"></div>');\n popup.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popup.$containerEl.children('.popup-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"popup-backdrop\"></div>');\n popup.$containerEl.append($backdropEl);\n }\n }\n\n extend(popup, {\n app,\n push: $el.hasClass('popup-push') || popup.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popup',\n $htmlEl: $('html'),\n });\n\n if (popup.params.push) {\n $el.addClass('popup-push');\n }\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened =\n !device.desktop &&\n device.cordova &&\n ((window.Keyboard && window.Keyboard.isVisible) ||\n (window.cordova.plugins &&\n window.cordova.plugins.Keyboard &&\n window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(popup.el).length === 0) {\n if (\n popup.params &&\n popup.params.closeByBackdropClick &&\n popup.params.backdrop &&\n popup.backdropEl &&\n popup.backdropEl === target\n ) {\n let needToClose = true;\n popup.$el.nextAll('.popup.modal-in').each((popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick &&\n popupInstance.params.backdrop &&\n popupInstance.backdropEl === popup.backdropEl\n ) {\n needToClose = false;\n }\n });\n if (needToClose) {\n popup.close();\n }\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popup.params.closeOnEscape) {\n popup.close();\n }\n }\n\n let pushOffset;\n let isPush;\n\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n\n let allowSwipeToClose = true;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let pageContentEl;\n let pageContentScrollTop;\n let pageContentOffsetHeight;\n let pageContentScrollHeight;\n let popupHeight;\n let $pushEl;\n\n function handleTouchStart(e) {\n if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose || !e.isTrusted) return;\n if (\n popup.params.swipeHandler &&\n $(e.target).closest(popup.params.swipeHandler).length === 0\n ) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY,\n };\n touchStartTime = now();\n isScrolling = undefined;\n if (!popup.params.swipeHandler && e.type === 'touchstart') {\n pageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY,\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling ||\n Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y)\n );\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n touchesDiff = startTouch.y - currentTouch.y;\n if (isPush && pushOffset && touchesDiff > 0) {\n touchesDiff = 0;\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n $el.transition(0);\n\n if (\n typeof popup.params.swipeToClose === 'string' &&\n direction !== popup.params.swipeToClose\n ) {\n $el.transform('');\n $el.transition('');\n return;\n }\n\n if (!isMoved) {\n if (isPush && pushOffset) {\n popupHeight = $el[0].offsetHeight;\n $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n if ($pushEl.length === 0) {\n $pushEl = app.$el.children('.view, .views');\n }\n }\n if (pageContentEl) {\n pageContentScrollTop = pageContentEl.scrollTop;\n pageContentScrollHeight = pageContentEl.scrollHeight;\n pageContentOffsetHeight = pageContentEl.offsetHeight;\n if (\n !(pageContentScrollHeight === pageContentOffsetHeight) &&\n !(direction === 'to-bottom' && pageContentScrollTop === 0) &&\n !(\n direction === 'to-top' &&\n pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight\n )\n ) {\n $el.transform('');\n $el.transition('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n isMoved = true;\n popup.emit('local::swipeStart popupSwipeStart', popup);\n popup.$el.trigger('popup:swipestart');\n } else {\n popup.emit('local::swipeMove popupSwipeMove', popup);\n popup.$el.trigger('popup:swipemove');\n }\n\n e.preventDefault();\n if (isPush && pushOffset) {\n const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n if ($pushEl.hasClass('popup')) {\n if ($pushEl.hasClass('popup-push')) {\n $pushEl.transition(0).forEach((el) => {\n el.style.setProperty(\n 'transform',\n `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`,\n 'important',\n );\n });\n } else {\n $pushEl.transition(0).forEach((el) => {\n el.style.setProperty(\n 'transform',\n `translate3d(0, 0px , 0px) scale(${scale})`,\n 'important',\n );\n });\n }\n } else {\n $pushEl.transition(0).forEach((el) => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n }\n }\n $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n isTouched = false;\n if (!isMoved) {\n return;\n }\n popup.emit('local::swipeEnd popupSwipeEnd', popup);\n popup.$el.trigger('popup:swipeend');\n isMoved = false;\n allowSwipeToClose = false;\n $el.transition('');\n if (isPush && pushOffset) {\n $pushEl.transition('').transform('');\n }\n const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n if (\n typeof popup.params.swipeToClose === 'string' &&\n direction !== popup.params.swipeToClose\n ) {\n $el.transform('');\n allowSwipeToClose = true;\n return;\n }\n const diff = Math.abs(touchesDiff);\n const timeDiff = new Date().getTime() - touchStartTime;\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n nextTick(() => {\n if (direction === 'to-bottom') {\n $el.addClass('swipe-close-to-bottom');\n } else {\n $el.addClass('swipe-close-to-top');\n }\n $el.transform('');\n popup.emit('local::swipeclose popupSwipeClose', popup);\n popup.$el.trigger('popup:swipeclose');\n popup.close();\n allowSwipeToClose = true;\n });\n return;\n }\n allowSwipeToClose = true;\n $el.transform('');\n }\n\n const passive = support.passiveListener ? { passive: true } : false;\n if (popup.params.swipeToClose) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n popup.once('popupDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n\n let hasPreviousPushPopup;\n\n const updatePushOffset = () => {\n const wasPush = isPush;\n if (popup.push) {\n isPush =\n popup.push &&\n (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush && !wasPush) {\n // eslint-disable-next-line\n setPushOffset();\n } else if (isPush && wasPush) {\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n } else if (!isPush && wasPush) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n }\n };\n\n const setPushOffset = () => {\n app.off('resize', updatePushOffset);\n if (popup.push) {\n isPush =\n popup.push &&\n (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush) {\n pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n if (Number.isNaN(pushOffset)) {\n pushOffset = 0;\n }\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-offset', `${pushOffset}px`);\n $el.addClass('popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push');\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n }\n app.on('resize', updatePushOffset);\n };\n\n popup.on('open', () => {\n hasPreviousPushPopup = false;\n if (popup.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n setPushOffset();\n });\n popup.on('opened', () => {\n $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n if (popup.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popup.on('close', () => {\n hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n if (popup.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (popup.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push-closing');\n }\n app.off('resize', updatePushOffset);\n });\n popup.on('closed', () => {\n $el.removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-offset');\n }\n });\n\n $el[0].f7Modal = popup;\n\n return popup;\n }\n}\nexport default Popup;\n","import Popup from './popup-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n name: 'popup',\n params: {\n popup: {\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeOnEscape: false,\n swipeToClose: false,\n swipeHandler: null,\n push: false,\n containerEl: null,\n },\n },\n static: {\n Popup,\n },\n create() {\n const app = this;\n app.popup = ModalMethods({\n app,\n constructor: Popup,\n defaultSelector: '.popup.modal-in',\n parentSelector: '.popup',\n });\n },\n clicks: {\n '.popup-open': function openPopup($clickedEl, data = {}) {\n const app = this;\n app.popup.open(data.popup, data.animate, $clickedEl);\n },\n '.popup-close': function closePopup($clickedEl, data = {}) {\n const app = this;\n app.popup.close(data.popup, data.animate, $clickedEl);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n\nclass LoginScreen extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n on: {},\n },\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const loginScreen = this;\n\n loginScreen.params = extendedParams;\n\n // Find Element\n let $el;\n if (!loginScreen.params.el) {\n $el = $(loginScreen.params.content)\n .filter((node) => node.nodeType === 1)\n .eq(0);\n } else {\n $el = $(loginScreen.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return loginScreen.destroy();\n }\n\n extend(loginScreen, {\n app,\n $el,\n el: $el[0],\n type: 'loginScreen',\n });\n\n $el[0].f7Modal = loginScreen;\n\n return loginScreen;\n }\n}\nexport default LoginScreen;\n","import LoginScreen from './login-screen-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n name: 'loginScreen',\n static: {\n LoginScreen,\n },\n create() {\n const app = this;\n app.loginScreen = ModalMethods({\n app,\n constructor: LoginScreen,\n defaultSelector: '.login-screen.modal-in',\n });\n },\n clicks: {\n '.login-screen-open': function openLoginScreen($clickedEl, data = {}) {\n const app = this;\n app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n },\n '.login-screen-close': function closeLoginScreen($clickedEl, data = {}) {\n const app = this;\n app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n\nclass Popover extends Modal {\n constructor(app, params) {\n const extendedParams = extend({ on: {} }, app.params.popover, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const popover = this;\n\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n\n popover.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popover.params.el) {\n $el = $(popover.params.content)\n .filter((node) => node.nodeType === 1)\n .eq(0);\n } else {\n $el = $(popover.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n // Find Target\n const $targetEl = $(popover.params.targetEl).eq(0);\n\n if ($el.length === 0) {\n return popover.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n const forceBackdropUnique =\n popover.params.backdrop &&\n app.$el.find('.popover.modal-in').filter((anotherPopoverEl) => anotherPopoverEl !== $el[0])\n .length > 0;\n if (popover.params.backdrop && popover.params.backdropEl) {\n $backdropEl = $(popover.params.backdropEl);\n } else if (popover.params.backdrop) {\n if (popover.params.backdropUnique || forceBackdropUnique) {\n $backdropEl = $('<div class=\"popover-backdrop popover-backdrop-unique\"></div>');\n $backdropEl[0].f7PopoverRef = popover;\n popover.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popover.$containerEl.children('.popover-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"popover-backdrop\"></div>');\n popover.$containerEl.append($backdropEl);\n }\n }\n\n // Find Arrow\n let $arrowEl;\n if ($el.find('.popover-arrow').length === 0 && popover.params.arrow) {\n $arrowEl = $('<div class=\"popover-arrow\"></div>');\n $el.prepend($arrowEl);\n } else {\n $arrowEl = $el.find('.popover-arrow');\n }\n\n // Open\n const originalOpen = popover.open;\n\n extend(popover, {\n app,\n $el,\n el: $el[0],\n $targetEl,\n targetEl: $targetEl[0],\n $arrowEl,\n arrowEl: $arrowEl[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popover',\n forceBackdropUnique,\n open(...args) {\n let [targetEl, animate] = args;\n if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n if (targetEl) {\n popover.$targetEl = $(targetEl);\n popover.targetEl = popover.$targetEl[0];\n }\n return originalOpen.call(popover, animate);\n },\n });\n\n function handleResize() {\n popover.resize();\n }\n popover.on('popoverOpen', () => {\n popover.resize();\n app.on('resize', handleResize);\n $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n popover.on('popoverClose popoverBeforeDestroy', () => {\n app.off('resize', handleResize);\n $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n });\n });\n\n let touchStartTarget = null;\n function handleTouchStart(e) {\n touchStartTarget = e.target;\n }\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened =\n !device.desktop &&\n device.cordova &&\n ((window.Keyboard && window.Keyboard.isVisible) ||\n (window.cordova.plugins &&\n window.cordova.plugins.Keyboard &&\n window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(popover.el).length === 0) {\n if (\n popover.params.closeByBackdropClick &&\n popover.params.backdrop &&\n popover.backdropEl &&\n popover.backdropEl === target &&\n touchStartTarget === target\n ) {\n popover.close();\n } else if (popover.params.closeByOutsideClick && touchStartTarget === target) {\n const isAnotherPopoverBackdrop =\n ($target.hasClass('popover-backdrop-unique') && target.f7PopoverRef !== popover) ||\n ($target.hasClass('popover-backdrop') && target !== popover.backdropEl);\n const isAnotherPopoverTarget =\n target.closest('.popover') && target.closest('.popover') !== popover.$el[0];\n if (!isAnotherPopoverBackdrop && !isAnotherPopoverTarget) {\n popover.close();\n }\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popover.params.closeOnEscape) {\n popover.close();\n }\n }\n\n if (popover.params.closeOnEscape) {\n popover.on('popoverOpen', () => {\n $(document).on('keydown', onKeyDown);\n });\n popover.on('popoverClose', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n\n popover.on('popoverOpened', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.on('touchstart', handleTouchStart);\n app.on('click', handleClick);\n }\n });\n popover.on('popoverClose', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.off('touchstart', handleTouchStart);\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = popover;\n\n return popover;\n }\n\n resize() {\n const popover = this;\n const { app, $el, $targetEl, $arrowEl } = popover;\n const { targetX, targetY, verticalPosition } = popover.params;\n $el.css({ left: '', top: '' });\n const [width, height] = [$el.width(), $el.height()];\n let arrowSize = 0;\n let arrowLeft;\n let arrowTop;\n const hasArrow = $arrowEl.length > 0;\n const arrowMin = app.theme === 'ios' ? 13 : 24;\n if (hasArrow) {\n $arrowEl.removeClass('on-left on-right on-top on-bottom').css({ left: '', top: '' });\n arrowSize = $arrowEl.width() / 2;\n }\n $el\n .removeClass(\n 'popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle',\n )\n .css({ left: '', top: '' });\n\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10);\n let safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n targetOffsetLeft = targetX;\n targetOffsetTop = targetY;\n targetWidth = popover.params.targetWidth || 0;\n targetHeight = popover.params.targetHeight || 0;\n }\n\n let [left, top, diff] = [0, 0, 0];\n // Top Position\n const forcedPosition = verticalPosition === 'auto' ? false : verticalPosition;\n let position = forcedPosition || 'top';\n\n if (\n forcedPosition === 'top' ||\n (!forcedPosition && height + arrowSize < targetOffsetTop - safeAreaTop)\n ) {\n // On top\n top = targetOffsetTop - height - arrowSize;\n } else if (\n forcedPosition === 'bottom' ||\n (!forcedPosition && height + arrowSize < app.height - targetOffsetTop - targetHeight)\n ) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + arrowSize;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n diff = top;\n top = Math.max(5, Math.min(top, app.height - height - 5));\n diff -= top;\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n diff = left;\n left = Math.max(5, Math.min(left, app.width - width - 5));\n if (safeAreaLeft) {\n left = Math.max(left, safeAreaLeft);\n }\n if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {\n left = app.width - 5 - safeAreaRight - width;\n }\n\n diff -= left;\n if (hasArrow) {\n if (position === 'top') {\n $arrowEl.addClass('on-bottom');\n }\n if (position === 'bottom') {\n $arrowEl.addClass('on-top');\n }\n arrowLeft = width / 2 - arrowSize + diff;\n arrowLeft = Math.max(Math.min(arrowLeft, width - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({ left: `${arrowLeft}px` });\n }\n } else if (position === 'middle') {\n left = targetOffsetLeft - width - arrowSize;\n if (hasArrow) $arrowEl.addClass('on-right');\n if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {\n if (left < 5) left = targetOffsetLeft + targetWidth + arrowSize;\n if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;\n if (left < safeAreaLeft) left = safeAreaLeft;\n if (hasArrow) $arrowEl.removeClass('on-right').addClass('on-left');\n }\n if (hasArrow) {\n arrowTop = height / 2 - arrowSize + diff;\n arrowTop = Math.max(Math.min(arrowTop, height - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({ top: `${arrowTop}px` });\n }\n }\n\n // Horizontal Position\n let hPosition;\n if (targetOffsetLeft < app.width / 2) {\n hPosition = 'right';\n } else {\n hPosition = 'left';\n }\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n // Apply Styles\n $el.css({ top: `${top}px`, left: `${left}px` });\n }\n}\n\nexport default Popover;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Popover from './popover-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n name: 'popover',\n params: {\n popover: {\n verticalPosition: 'auto',\n arrow: true,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: true,\n closeOnEscape: false,\n containerEl: null,\n },\n },\n static: {\n Popover,\n },\n create() {\n const app = this;\n app.popover = extend(\n ModalMethods({\n app,\n constructor: Popover,\n defaultSelector: '.popover.modal-in',\n }),\n {\n open(popoverEl, targetEl, animate) {\n let $popoverEl = $(popoverEl);\n if ($popoverEl.length > 1) {\n // check if same popover in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $popoverEl.each((el) => {\n const $el = $(el);\n if ($el.parents($targetPage)[0] === $targetPage[0]) {\n $popoverEl = $el;\n }\n });\n }\n }\n if ($popoverEl.length > 1) {\n $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n }\n let popover = $popoverEl[0].f7Modal;\n const data = $popoverEl.dataset();\n if (!popover) {\n popover = new Popover(\n app,\n Object.assign(\n {\n el: $popoverEl,\n targetEl,\n },\n data,\n ),\n );\n }\n return popover.open(targetEl, animate);\n },\n },\n );\n },\n clicks: {\n '.popover-open': function openPopover($clickedEl, data = {}) {\n const app = this;\n app.popover.open(data.popover, $clickedEl, data.animate);\n },\n '.popover-close': function closePopover($clickedEl, data = {}) {\n const app = this;\n app.popover.close(data.popover, data.animate, $clickedEl);\n },\n },\n};\n","/* eslint indent: [\"off\"] */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nimport $ from '../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Actions extends Modal {\n constructor(app, params) {\n const extendedParams = extend({ on: {} }, app.params.actions, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const actions = this;\n\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n\n actions.params = extendedParams;\n\n // Buttons\n let groups;\n if (actions.params.buttons) {\n groups = actions.params.buttons;\n if (!Array.isArray(groups[0])) groups = [groups];\n }\n actions.groups = groups;\n\n // Find Element\n let $el;\n if (actions.params.el) {\n $el = $(actions.params.el).eq(0);\n } else if (actions.params.content) {\n $el = $(actions.params.content)\n .filter((node) => node.nodeType === 1)\n .eq(0);\n } else if (actions.params.buttons) {\n if (actions.params.convertToPopover) {\n actions.popoverHtml = actions.renderPopover();\n }\n actions.actionsHtml = actions.render();\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n return actions.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (actions.params.backdrop && actions.params.backdropEl) {\n $backdropEl = $(actions.params.backdropEl);\n } else if (actions.params.backdrop) {\n if (actions.params.backdropUnique) {\n $backdropEl = $('<div class=\"popup-backdrop popup-backdrop-unique\"></div>');\n actions.$containerEl.append($backdropEl);\n } else {\n $backdropEl = actions.$containerEl.children('.actions-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"actions-backdrop\"></div>');\n actions.$containerEl.append($backdropEl);\n }\n }\n\n const originalOpen = actions.open;\n const originalClose = actions.close;\n\n let popover;\n function buttonOnClick(e) {\n const $buttonEl = $(this);\n let buttonIndex;\n let groupIndex;\n if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n buttonIndex = $buttonEl.parents('li').index();\n groupIndex = $buttonEl.parents('.list').index();\n } else {\n buttonIndex = $buttonEl.index();\n groupIndex = $buttonEl.parents('.actions-group').index();\n }\n if (typeof groups !== 'undefined') {\n const button = groups[groupIndex][buttonIndex];\n if (button.onClick) button.onClick(actions, e);\n if (actions.params.onClick) actions.params.onClick(actions, e);\n if (button.close !== false) actions.close();\n }\n }\n actions.open = function open(animate) {\n let convertToPopover = false;\n const { targetEl, targetX, targetY, targetWidth, targetHeight } = actions.params;\n if (\n actions.params.convertToPopover &&\n (targetEl || (targetX !== undefined && targetY !== undefined))\n ) {\n // Popover\n if (\n actions.params.forceToPopover ||\n (device.ios && device.ipad) ||\n app.width >= 768 ||\n device.desktop\n ) {\n convertToPopover = true;\n }\n }\n if (convertToPopover && actions.popoverHtml) {\n popover = app.popover.create({\n containerEl: actions.params.containerEl,\n content: actions.popoverHtml,\n backdrop: actions.params.backdrop,\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n on: {\n open() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n },\n opened() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n },\n close() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n },\n closed() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n },\n },\n });\n popover.open(animate);\n popover.once('popoverOpened', () => {\n popover.$el.find('.list-button, .item-link').each((buttonEl) => {\n $(buttonEl).on('click', buttonOnClick);\n });\n });\n popover.once('popoverClosed', () => {\n popover.$el.find('.list-button, .item-link').each((buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n nextTick(() => {\n popover.destroy();\n popover = undefined;\n });\n });\n } else {\n actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n actions.$el[0].f7Modal = actions;\n if (actions.groups) {\n actions.$el.find('.actions-button').each((buttonEl) => {\n $(buttonEl).on('click', buttonOnClick);\n });\n actions.once('actionsClosed', () => {\n actions.$el.find('.actions-button').each((buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n });\n }\n actions.el = actions.$el[0];\n originalOpen.call(actions, animate);\n }\n return actions;\n };\n\n actions.close = function close(animate) {\n if (popover) {\n popover.close(animate);\n } else {\n originalClose.call(actions, animate);\n }\n return actions;\n };\n\n extend(actions, {\n app,\n $el,\n el: $el ? $el[0] : undefined,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'actions',\n });\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened =\n !device.desktop &&\n device.cordova &&\n ((window.Keyboard && window.Keyboard.isVisible) ||\n (window.cordova.plugins &&\n window.cordova.plugins.Keyboard &&\n window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(actions.el).length === 0) {\n if (\n actions.params.closeByBackdropClick &&\n actions.params.backdrop &&\n actions.backdropEl &&\n actions.backdropEl === target\n ) {\n actions.close();\n } else if (actions.params.closeByOutsideClick) {\n actions.close();\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && actions.params.closeOnEscape) {\n actions.close();\n }\n }\n\n if (actions.params.closeOnEscape) {\n actions.on('open', () => {\n $(document).on('keydown', onKeyDown);\n });\n actions.on('close', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n\n actions.on('opened', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.on('click', handleClick);\n }\n });\n actions.on('close', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.off('click', handleClick);\n }\n });\n\n if ($el) {\n $el[0].f7Modal = actions;\n }\n\n return actions;\n }\n\n render() {\n const actions = this;\n if (actions.params.render) return actions.params.render.call(actions, actions);\n const { groups } = actions;\n const cssClass = actions.params.cssClass;\n return (\n <div class={`actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}`}>\n {groups.map((group) => (\n <div class=\"actions-group\">\n {group.map((button) => {\n const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n const { color, bg, strong, disabled, label, text, icon } = button;\n if (color) buttonClasses.push(`color-${color}`);\n if (bg) buttonClasses.push(`bg-color-${bg}`);\n if (strong) buttonClasses.push('actions-button-strong');\n if (disabled) buttonClasses.push('disabled');\n if (label) {\n return <div class={buttonClasses.join(' ')}>{text}</div>;\n }\n return (\n <div class={buttonClasses.join(' ')}>\n {icon && <div class=\"actions-button-media\">{icon}</div>}\n <div class=\"actions-button-text\">{text}</div>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n );\n }\n\n renderPopover() {\n const actions = this;\n if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n const { groups } = actions;\n const cssClass = actions.params.cssClass;\n return (\n <div class={`popover popover-from-actions ${cssClass || ''}`}>\n <div class=\"popover-inner\">\n {groups.map((group) => (\n <div class=\"list\">\n <ul>\n {group.map((button) => {\n const itemClasses = [];\n const { color, bg, strong, disabled, label, text, icon } = button;\n if (color) itemClasses.push(`color-${color}`);\n if (bg) itemClasses.push(`bg-color-${bg}`);\n if (strong) itemClasses.push('popover-from-actions-strong');\n if (disabled) itemClasses.push('disabled');\n if (label) {\n itemClasses.push('popover-from-actions-label');\n return `<li class=\"${itemClasses.join(' ')}\">${text}</li>`;\n }\n if (icon) {\n itemClasses.push('item-link item-content');\n return (\n <li>\n <a class={itemClasses.join(' ')}>\n <div class=\"item-media\">{icon}</div>\n <div class=\"item-inner\">\n <div class=\"item-title\">{text}</div>\n </div>\n </a>\n </li>\n );\n }\n itemClasses.push('list-button');\n return (\n <li>\n <a class={itemClasses.join(' ')}>{text}</a>\n </li>\n );\n })}\n </ul>\n </div>\n ))}\n </div>\n </div>\n );\n }\n}\n\nexport default Actions;\n","import Actions from './actions-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n name: 'actions',\n params: {\n actions: {\n convertToPopover: true,\n forceToPopover: false,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n cssClass: null,\n closeByBackdropClick: true,\n closeOnEscape: false,\n render: null,\n renderPopover: null,\n containerEl: null,\n },\n },\n static: {\n Actions,\n },\n create() {\n const app = this;\n app.actions = ModalMethods({\n app,\n constructor: Actions,\n defaultSelector: '.actions-modal.modal-in',\n });\n },\n clicks: {\n '.actions-open': function openActions($clickedEl, data = {}) {\n const app = this;\n app.actions.open(data.actions, data.animate, $clickedEl);\n },\n '.actions-close': function closeActions($clickedEl, data = {}) {\n const app = this;\n app.actions.close(data.actions, data.animate, $clickedEl);\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, getTranslate } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n\nclass Sheet extends Modal {\n constructor(app, params) {\n const extendedParams = extend({ on: {} }, app.params.sheet, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const sheet = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n\n sheet.params = extendedParams;\n if (typeof sheet.params.backdrop === 'undefined') {\n sheet.params.backdrop = app.theme !== 'ios';\n }\n\n // Find Element\n let $el;\n if (!sheet.params.el) {\n $el = $(sheet.params.content)\n .filter((node) => node.nodeType === 1)\n .eq(0);\n } else {\n $el = $(sheet.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return sheet.destroy();\n }\n let $backdropEl;\n\n if (sheet.params.backdrop && sheet.params.backdropEl) {\n $backdropEl = $(sheet.params.backdropEl);\n } else if (sheet.params.backdrop) {\n if (sheet.params.backdropUnique) {\n $backdropEl = $('<div class=\"sheet-backdrop sheet-backdrop-unique\"></div>');\n sheet.$containerEl.append($backdropEl);\n } else {\n $backdropEl = sheet.$containerEl.children('.sheet-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"sheet-backdrop\"></div>');\n sheet.$containerEl.append($backdropEl);\n }\n }\n\n extend(sheet, {\n app,\n push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'sheet',\n $htmlEl: $('html'),\n });\n\n if (sheet.params.push) {\n $el.addClass('sheet-modal-push');\n }\n\n let $pageContentEl;\n function scrollToElementOnOpen() {\n const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n if ($scrollEl.length === 0) return;\n $pageContentEl = $scrollEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n const pageScroll = $pageContentEl.scrollTop();\n\n let newPaddingBottom;\n\n const scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;\n if (scrollElTop > pageHeight) {\n const scrollTop = pageScroll + scrollElTop - pageHeight;\n if (scrollTop + pageHeight > pageScrollHeight) {\n newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;\n if (pageHeight === pageScrollHeight) {\n newPaddingBottom = $el.height();\n }\n $pageContentEl.css({\n 'padding-bottom': `${newPaddingBottom}px`,\n });\n }\n $pageContentEl.scrollTop(scrollTop, 300);\n }\n }\n\n function scrollToElementOnClose() {\n if ($pageContentEl && $pageContentEl.length > 0) {\n $pageContentEl.css({\n 'padding-bottom': '',\n });\n }\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened =\n !device.desktop &&\n device.cordova &&\n ((window.Keyboard && window.Keyboard.isVisible) ||\n (window.cordova.plugins &&\n window.cordova.plugins.Keyboard &&\n window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(sheet.el).length === 0) {\n if (\n sheet.params.closeByBackdropClick &&\n sheet.params.backdrop &&\n sheet.backdropEl &&\n sheet.backdropEl === target\n ) {\n sheet.close();\n } else if (sheet.params.closeByOutsideClick) {\n sheet.close();\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && sheet.params.closeOnEscape) {\n sheet.close();\n }\n }\n\n let pushOffset;\n\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n\n const useBreakpoints = sheet.params.breakpoints && sheet.params.breakpoints.length > 0;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let isTopSheetModal;\n let swipeStepTranslate;\n let startTranslate;\n let currentTranslate;\n let sheetElOffsetHeight;\n let minTranslate;\n let maxTranslate;\n let $pushViewEl;\n let pushBorderRadius;\n let sheetPageContentEl;\n let sheetPageContentScrollTop;\n let sheetPageContentScrollHeight;\n let sheetPageContentOffsetHeight;\n let breakpointsTranslate = [];\n let currentBreakpointIndex;\n let backdropBreakpointSet = true;\n\n function handleTouchStart(e) {\n if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep) || !e.isTrusted)\n return;\n if (\n sheet.params.swipeHandler &&\n $(e.target).closest(sheet.params.swipeHandler).length === 0\n ) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY,\n };\n touchStartTime = now();\n isScrolling = undefined;\n isTopSheetModal = $el.hasClass('sheet-modal-top');\n if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n sheetPageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY,\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling ||\n Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y)\n );\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n touchesDiff = startTouch.y - currentTouch.y;\n\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n\n if (!isMoved) {\n if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n if (\n !(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) &&\n !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) &&\n !(\n direction === 'to-top' &&\n sheetPageContentScrollTop ===\n sheetPageContentScrollHeight - sheetPageContentOffsetHeight\n )\n ) {\n $el.transform('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n if (sheet.push && pushOffset) {\n $pushViewEl = app.$el.children('.view, .views');\n }\n sheetElOffsetHeight = $el[0].offsetHeight;\n startTranslate = getTranslate($el[0], 'y');\n if (isTopSheetModal) {\n minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n maxTranslate = 0;\n } else {\n minTranslate = 0;\n maxTranslate = sheet.params.swipeToClose\n ? sheetElOffsetHeight\n : useBreakpoints\n ? breakpointsTranslate[0]\n : swipeStepTranslate;\n }\n isMoved = true;\n }\n currentTranslate = startTranslate - touchesDiff;\n currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n e.preventDefault();\n if (useBreakpoints) {\n let progress = isTopSheetModal\n ? 1 + currentTranslate / sheetElOffsetHeight\n : 1 - currentTranslate / sheetElOffsetHeight;\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n // eslint-disable-next-line\n setBackdropBreakpoint(progress);\n // eslint-disable-next-line\n setPushBreakpoint(progress);\n }\n if (sheet.push && pushOffset && !useBreakpoints) {\n let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n if (sheet.params.swipeToStep) {\n if (isTopSheetModal) {\n progress = currentTranslate / swipeStepTranslate;\n } else {\n progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n }\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n const pushProgress = 1 - progress;\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n $pushViewEl.transition(0).forEach((el) => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n if (sheet.params.swipeToStep) {\n $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n }\n }\n $el.transition(0).transform(`translate3d(0,${currentTranslate}px,0)`);\n if (sheet.params.swipeToStep) {\n let progress;\n if (isTopSheetModal) {\n progress = 1 - currentTranslate / swipeStepTranslate;\n } else {\n progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n progress = Math.min(Math.max(progress, 0), 1);\n $el.trigger('sheet:stepprogress', progress);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n }\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n isMoved = false;\n $el.transform('').transition('');\n if (sheet.push && pushOffset) {\n $pushViewEl.transition('');\n if (!useBreakpoints) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n\n const diff = Math.abs(touchesDiff);\n if (diff === 0 || currentTranslate === startTranslate) return;\n\n const timeDiff = new Date().getTime() - touchStartTime;\n\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n return;\n }\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > sheetElOffsetHeight / 2)) {\n sheet.close();\n }\n return;\n }\n\n const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n const absCurrentTranslate = Math.abs(currentTranslate);\n const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n if (timeDiff < 300 && diff > 10 && useBreakpoints) {\n // SHORT SWIPES BREAKPOINTS\n if (direction === openDirection && typeof currentBreakpointIndex !== 'undefined') {\n if (currentBreakpointIndex === params.breakpoints.length - 1) {\n // open\n sheet.setBreakpoint(1);\n } else {\n // move to next breakpoint\n currentBreakpointIndex = Math.min(\n breakpointsTranslate.length - 1,\n currentBreakpointIndex + 1,\n );\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n if (direction === closeDirection) {\n if (currentBreakpointIndex === 0) {\n // close\n sheet.close();\n } else {\n // move to prev breakpoint\n if (typeof currentBreakpointIndex === 'undefined') {\n currentBreakpointIndex = params.breakpoints.length - 1;\n } else {\n currentBreakpointIndex = Math.max(0, currentBreakpointIndex - 1);\n }\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n } else if (timeDiff < 300 && diff > 10) {\n // SHORT SWIPES SWIPE STEP\n if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n }\n if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n // close sheet\n if (sheet.params.swipeToClose) {\n sheet.close();\n } else {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n return;\n }\n if (timeDiff >= 300 && useBreakpoints) {\n // LONG SWIPES BREAKPOINTS\n const allBreakpoints = [sheetElOffsetHeight, ...breakpointsTranslate, 0];\n const closestTranslate = allBreakpoints.reduce((prev, curr) => {\n return Math.abs(curr - currentTranslate) < Math.abs(prev - currentTranslate)\n ? curr\n : prev;\n });\n const closestIndex = allBreakpoints.indexOf(closestTranslate);\n if (closestTranslate === 0) {\n // open\n sheet.setBreakpoint(1);\n } else if (closestIndex === 0) {\n // close\n sheet.close();\n } else {\n // set bp\n currentBreakpointIndex = closestIndex - 1;\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n } else if (timeDiff >= 300) {\n // LONG SWIPES SWIPE STEP\n const stepOpened = !$el.hasClass('modal-in-swipe-step');\n if (!stepOpened) {\n if (absCurrentTranslate < absSwipeStepTranslate / 2) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty(\n '--f7-sheet-push-scale',\n pushViewScale(pushOffset),\n );\n $pushViewEl.css('border-radius', '');\n }\n } else if (\n absCurrentTranslate - absSwipeStepTranslate >\n (sheetElOffsetHeight - absSwipeStepTranslate) / 2\n ) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n }\n } else if (stepOpened) {\n if (\n absCurrentTranslate >\n absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2\n ) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n }\n }\n\n const setPushBreakpoint = (breakpoint) => {\n const { pushBreakpoint } = params;\n if (\n pushBreakpoint === null ||\n typeof pushBreakpoint === 'undefined' ||\n !sheet.push ||\n !pushOffset\n )\n return;\n if (breakpoint >= pushBreakpoint) {\n sheet.$htmlEl\n .addClass('with-modal-sheet-push')\n .removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition('').forEach((el) => {\n el.style.setProperty(\n 'transform',\n `translate3d(0,0,0) scale(${pushViewScale(pushOffset)})`,\n 'important',\n );\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * 1}px`);\n } else {\n const pushBreakpoints = [0, ...params.breakpoints, 1];\n const pushTransparentBreakpoint =\n pushBreakpoints[pushBreakpoints.indexOf(pushBreakpoint) - 1];\n if (breakpoint <= pushTransparentBreakpoint) {\n $pushViewEl.transition('').css('transform', '');\n $pushViewEl.css('border-radius', '');\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n if (breakpoint === pushTransparentBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n }\n } else {\n const progress =\n (breakpoint - pushTransparentBreakpoint) / (pushBreakpoint - pushTransparentBreakpoint);\n sheet.$htmlEl\n .addClass('with-modal-sheet-push')\n .removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition(0).forEach((el) => {\n el.style.setProperty(\n 'transform',\n `translate3d(0,0,0) scale(${1 - (1 - pushViewScale(pushOffset)) * progress})`,\n 'important',\n );\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * progress}px`);\n }\n }\n };\n const setBackdropBreakpoint = (breakpoint) => {\n const { backdrop, backdropBreakpoint } = params;\n if (!backdropBreakpoint || !backdrop || !$backdropEl.length) return;\n\n if (breakpoint >= backdropBreakpoint) {\n if (!backdropBreakpointSet) {\n $backdropEl.transition('').css({ opacity: '', pointerEvents: '' });\n }\n backdropBreakpointSet = true;\n } else {\n const backdropBreakpoints = [0, ...params.breakpoints, 1];\n const backdropTransparentBreakpoint =\n backdropBreakpoints[backdropBreakpoints.indexOf(backdropBreakpoint) - 1];\n if (breakpoint <= backdropTransparentBreakpoint) {\n if (backdropBreakpointSet) {\n $backdropEl.transition('').css({ opacity: 0, pointerEvents: 'none' });\n }\n backdropBreakpointSet = false;\n } else {\n const progress =\n (breakpoint - backdropTransparentBreakpoint) /\n (backdropBreakpoint - backdropTransparentBreakpoint);\n $backdropEl.transition(0).css({ opacity: progress, pointerEvents: 'auto' });\n }\n }\n };\n\n sheet.calcBreakpoints = () => {\n if (!useBreakpoints) {\n return;\n }\n const fullSize = $el[0].offsetHeight;\n // eslint-disable-next-line\n const isTopSheetModal = $el.hasClass('sheet-modal-top');\n breakpointsTranslate = [];\n sheet.params.breakpoints.forEach((ratio) => {\n breakpointsTranslate.push((fullSize - fullSize * ratio) * (isTopSheetModal ? -1 : 1));\n });\n };\n\n sheet.setBreakpoint = (value) => {\n if (!useBreakpoints) {\n return sheet;\n }\n if (value === 1) {\n // open\n if (!sheet.opened) {\n sheet.open();\n }\n $el.removeClass('modal-in-breakpoint');\n currentBreakpointIndex = undefined;\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n } else if (value === 0) {\n // close\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n sheet.close();\n } else {\n const index = params.breakpoints.indexOf(value);\n if (index < 0) return sheet;\n if (!sheet.opened) {\n sheet.open();\n }\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n currentBreakpointIndex = index;\n $el[0].style.setProperty('--f7-sheet-breakpoint', `${breakpointsTranslate[index]}px`);\n $el.addClass('modal-in-breakpoint');\n }\n return sheet;\n };\n\n const setBreakpointsOnResize = () => {\n sheet.calcBreakpoints();\n if (typeof currentBreakpointIndex !== 'undefined') {\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n };\n\n sheet.setSwipeStep = function setSwipeStep(byResize = true) {\n const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n if (!$swipeStepEl.length) return;\n\n // eslint-disable-next-line\n if ($el.hasClass('sheet-modal-top')) {\n swipeStepTranslate = -(\n $swipeStepEl.offset().top -\n $el.offset().top +\n $swipeStepEl[0].offsetHeight\n );\n } else {\n swipeStepTranslate =\n $el[0].offsetHeight -\n ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n }\n $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n if (!byResize) {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n }\n };\n\n function onResize() {\n if (useBreakpoints) {\n setBreakpointsOnResize();\n } else {\n sheet.setSwipeStep(true);\n }\n }\n\n const passive = support.passiveListener ? { passive: true } : false;\n if (sheet.params.swipeToClose || sheet.params.swipeToStep || useBreakpoints) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n sheet.once('sheetDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n\n sheet.on('open', () => {\n if (sheet.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n app.on('resize', onResize);\n if (sheet.params.scrollToEl) {\n scrollToElementOnOpen();\n }\n\n if (sheet.push) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-offset', `${pushOffset}px`);\n $el.addClass('sheet-modal-push');\n if (!useBreakpoints) {\n sheet.$htmlEl.addClass('with-modal-sheet-push');\n }\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n } else {\n $pushViewEl = app.$el.children('.view, .views');\n pushBorderRadius = app.theme === 'ios' ? 10 : 16;\n $pushViewEl.css('border-radius', '0px');\n }\n }\n\n if (useBreakpoints) {\n sheet.calcBreakpoints();\n sheet.setBreakpoint(params.breakpoints[0]);\n } else if (sheet.params.swipeToStep) {\n sheet.setSwipeStep(false);\n }\n });\n sheet.on('opened', () => {\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n sheet.on('close', () => {\n currentBreakpointIndex = undefined;\n if (sheet.params.swipeToStep || useBreakpoints) {\n $el.removeClass('modal-in-swipe-step modal-in-breakpoint');\n sheet.emit('local::_swipeStep', false);\n }\n app.off('resize', onResize);\n if (sheet.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnClose();\n }\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n if ($pushViewEl) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n });\n sheet.on('closed', () => {\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-offset');\n }\n });\n\n sheet.stepOpen = function stepOpen() {\n $el.removeClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', false);\n if (sheet.push) {\n if (!pushOffset) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n }\n if (pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n }\n }\n };\n sheet.stepClose = function stepClose() {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n if (sheet.push) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n };\n sheet.stepToggle = function stepToggle() {\n $el.toggleClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', $el.hasClass('modal-in-swipe-step'));\n };\n\n $el[0].f7Modal = sheet;\n\n return sheet;\n }\n}\nexport default Sheet;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Sheet from './sheet-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n name: 'sheet',\n params: {\n sheet: {\n push: false,\n backdrop: undefined,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n closeOnEscape: false,\n swipeToClose: false,\n swipeToStep: false,\n breakpoints: [],\n backdropBreakpoint: 0,\n pushBreakpoint: 0,\n swipeHandler: null,\n containerEl: null,\n },\n },\n static: {\n Sheet,\n },\n create() {\n const app = this;\n app.sheet = extend(\n {},\n ModalMethods({\n app,\n constructor: Sheet,\n defaultSelector: '.sheet-modal.modal-in',\n }),\n {\n stepOpen(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n return undefined;\n },\n stepClose(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n return undefined;\n },\n stepToggle(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n return undefined;\n },\n setBreakpoint(sheet, breakpoint) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.setBreakpoint)\n return sheetInstance.setBreakpoint(breakpoint);\n return undefined;\n },\n },\n );\n },\n clicks: {\n '.sheet-open': function openSheet($clickedEl, data = {}) {\n const app = this;\n if (\n $('.sheet-modal.modal-in').length > 0 &&\n data.sheet &&\n $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]\n ) {\n app.sheet.close('.sheet-modal.modal-in');\n }\n app.sheet.open(data.sheet, data.animate, $clickedEl);\n },\n '.sheet-close': function closeSheet($clickedEl, data = {}) {\n const app = this;\n app.sheet.close(data.sheet, data.animate, $clickedEl);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Toast extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n on: {},\n },\n app.params.toast,\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const toast = this;\n const window = getWindow();\n\n toast.app = app;\n\n toast.params = extendedParams;\n\n const { closeButton, closeTimeout } = toast.params;\n\n let $el;\n if (!toast.params.el) {\n // Find Element\n const toastHtml = toast.render();\n\n $el = $(toastHtml);\n } else {\n $el = $(toast.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return toast.destroy();\n }\n\n extend(toast, {\n $el,\n el: $el[0],\n type: 'toast',\n });\n\n $el[0].f7Modal = toast;\n\n if (closeButton) {\n $el.find('.toast-button').on('click', () => {\n toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n toast.close();\n });\n\n toast.on('beforeDestroy', () => {\n $el.find('.toast-button').off('click');\n });\n }\n\n let timeoutId;\n toast.on('open', () => {\n $('.toast.modal-in').each((openedEl) => {\n const toastInstance = app.toast.get(openedEl);\n if (openedEl !== toast.el && toastInstance) {\n toastInstance.close();\n }\n });\n if (closeTimeout) {\n timeoutId = nextTick(() => {\n toast.close();\n }, closeTimeout);\n }\n });\n toast.on('close', () => {\n window.clearTimeout(timeoutId);\n });\n\n if (toast.params.destroyOnClose) {\n toast.once('closed', () => {\n setTimeout(() => {\n toast.destroy();\n }, 0);\n });\n }\n\n return toast;\n }\n\n render() {\n const toast = this;\n if (toast.params.render) return toast.params.render.call(toast, toast);\n const {\n position,\n horizontalPosition,\n cssClass,\n icon,\n text,\n closeButton,\n closeButtonColor,\n closeButtonText,\n } = toast.params;\n const horizontalClass =\n position === 'top' || position === 'bottom' ? `toast-horizontal-${horizontalPosition}` : '';\n return (\n <div\n class={`toast toast-${position} ${horizontalClass} ${cssClass || ''} ${\n icon ? 'toast-with-icon' : ''\n }`}\n >\n <div class=\"toast-content\">\n {icon && <div class=\"toast-icon\">{icon}</div>}\n <div class=\"toast-text\">{text}</div>\n {closeButton && !icon && (\n <a class={`toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}`}>\n {closeButtonText}\n </a>\n )}\n </div>\n </div>\n );\n }\n}\nexport default Toast;\n","import { extend } from '../../shared/utils.js';\nimport Toast from './toast-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n name: 'toast',\n static: {\n Toast,\n },\n create() {\n const app = this;\n app.toast = extend(\n {},\n ModalMethods({\n app,\n constructor: Toast,\n defaultSelector: '.toast.modal-in',\n }),\n {\n // Shortcuts\n show(params) {\n extend(params, {\n destroyOnClose: true,\n });\n return new Toast(app, params).open();\n },\n },\n );\n },\n params: {\n toast: {\n icon: null,\n text: null,\n position: 'bottom',\n horizontalPosition: 'left',\n closeButton: false,\n closeButtonColor: null,\n closeButtonText: 'Ok',\n closeTimeout: null,\n cssClass: null,\n render: null,\n containerEl: null,\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\n\nconst Preloader = {\n init(el) {\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent,\n };\n const $el = $(el);\n if (\n $el.length === 0 ||\n $el.children('.preloader-inner').length > 0 ||\n $el.children('.preloader-inner-line').length > 0\n )\n return;\n $el.append(preloaders[`${app.theme}PreloaderContent`]);\n },\n // Modal\n visible: false,\n show(color = 'white') {\n const app = this;\n if (Preloader.visible) return;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent,\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $('html').addClass('with-modal-preloader');\n // prettier-ignore\n app.$el.append(`\n <div class=\"preloader-backdrop\"></div>\n <div class=\"preloader-modal\">\n <div class=\"preloader color-${color}\">${preloaderInner}</div>\n </div>\n `);\n Preloader.visible = true;\n },\n showIn(el, color = 'white') {\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent,\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $(el || 'html').addClass('with-modal-preloader');\n // prettier-ignore\n $(el || app.$el).append(`\n <div class=\"preloader-backdrop\"></div>\n <div class=\"preloader-modal\">\n <div class=\"preloader color-${color}\">${preloaderInner}</div>\n </div>\n `);\n },\n hide() {\n const app = this;\n if (!Preloader.visible) return;\n $('html').removeClass('with-modal-preloader');\n app.$el.find('.preloader-backdrop, .preloader-modal').remove();\n Preloader.visible = false;\n },\n hideIn(el) {\n const app = this;\n $(el || 'html').removeClass('with-modal-preloader');\n $(el || app.$el)\n .find('.preloader-backdrop, .preloader-modal')\n .remove();\n },\n};\nexport default {\n name: 'preloader',\n create() {\n const app = this;\n bindMethods(app, {\n preloader: Preloader,\n });\n },\n on: {\n photoBrowserOpen(pb) {\n const app = this;\n pb.$el.find('.preloader').each((preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.preloader')\n .each((preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.preloader').each((preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n },\n vnode: {\n preloader: {\n insert(vnode) {\n const app = this;\n const preloaderEl = vnode.elm;\n app.preloader.init(preloaderEl);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\n\nconst Progressbar = {\n set(...args) {\n const app = this;\n let [el, progress, duration] = args;\n if (typeof args[0] === 'number') {\n [progress, duration] = args;\n el = app.$el;\n }\n if (typeof progress === 'undefined' || progress === null) return el;\n if (!progress) progress = 0;\n\n const $el = $(el || app.$el);\n if ($el.length === 0) {\n return el;\n }\n const progressNormalized = Math.min(Math.max(progress, 0), 100);\n let $progressbarEl;\n if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);\n else {\n $progressbarEl = $el.children('.progressbar');\n }\n if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n return $progressbarEl;\n }\n let $progressbarLine = $progressbarEl.children('span');\n if ($progressbarLine.length === 0) {\n $progressbarLine = $('<span></span>');\n $progressbarEl.append($progressbarLine);\n }\n $progressbarLine\n .transition(typeof duration !== 'undefined' ? duration : '')\n .transform(`translate3d(${(-100 + progressNormalized) * (app.rtl ? -1 : 1)}%,0,0)`);\n\n return $progressbarEl[0];\n },\n show(...args) {\n const app = this;\n\n // '.page', 50, 'multi'\n let [el, progress, color] = args;\n let type = 'determined';\n\n if (args.length === 2) {\n if (\n (typeof args[0] === 'string' || typeof args[0] === 'object') &&\n typeof args[1] === 'string'\n ) {\n // '.page', 'multi'\n [el, color, progress] = args;\n type = 'infinite';\n } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n // 50, 'multi'\n [progress, color] = args;\n el = app.$el;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n el = app.$el;\n progress = args[0];\n } else if (typeof args[0] === 'string') {\n type = 'infinite';\n el = app.$el;\n color = args[0];\n }\n } else if (args.length === 0) {\n type = 'infinite';\n el = app.$el;\n }\n\n const $el = $(el);\n if ($el.length === 0) return undefined;\n\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children(\n '.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)',\n );\n if ($progressbarEl.length === 0) {\n $progressbarEl = $(`\n <span class=\"progressbar${type === 'infinite' ? '-infinite' : ''}${\n color ? ` color-${color}` : ''\n } progressbar-in\">\n ${type === 'infinite' ? '' : '<span></span>'}\n </span>`);\n $el.append($progressbarEl);\n }\n }\n\n if (typeof progress !== 'undefined') {\n app.progressbar.set($progressbarEl, progress);\n }\n\n return $progressbarEl[0];\n },\n hide(el, removeAfterHide = true) {\n const app = this;\n const $el = $(el || app.$el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n }\n if (\n $progressbarEl.length === 0 ||\n !$progressbarEl.hasClass('progressbar-in') ||\n $progressbarEl.hasClass('progressbar-out')\n ) {\n return $progressbarEl;\n }\n $progressbarEl\n .removeClass('progressbar-in')\n .addClass('progressbar-out')\n .animationEnd(() => {\n if (removeAfterHide) {\n $progressbarEl.remove();\n }\n });\n return $progressbarEl;\n },\n};\n\nexport default {\n name: 'progressbar',\n create() {\n const app = this;\n bindMethods(app, {\n progressbar: Progressbar,\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.progressbar')\n .each((progressbarEl) => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.progressbar').each((progressbarEl) => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n },\n vnode: {\n progressbar: {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n update(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n },\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Sortable = {\n init() {\n const app = this;\n const document = getDocument();\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchesDiff;\n let $sortingEl;\n let $sortingItems;\n let $sortableContainer;\n let sortingElHeight;\n let minTop;\n let maxTop;\n let $insertAfterEl;\n let $insertBeforeEl;\n let indexFrom;\n let $pageEl;\n let $pageContentEl;\n let pageHeight;\n let pageOffset;\n let sortingElOffsetLocal;\n let sortingElOffsetTop;\n let initialScrollTop;\n let wasTapHold;\n\n function handleTouchStart(e, isTapHold) {\n isMoved = false;\n isTouched = true;\n wasTapHold = false;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n $sortingEl = $(e.target).closest('li').eq(0);\n indexFrom = $sortingEl.index();\n $sortableContainer = $sortingEl.parents('.sortable');\n const $listGroup = $sortingEl.parents('.list-group');\n if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n $sortableContainer = $listGroup;\n }\n $sortingItems = $sortableContainer\n .children('ul')\n .children('li:not(.disallow-sorting):not(.no-sorting)');\n if (app.panel) app.panel.allowOpen = false;\n if (app.swipeout) app.swipeout.allow = false;\n if (isTapHold) {\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n wasTapHold = true;\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !$sortingEl) return;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n $pageEl = $sortingEl.parents('.page');\n $pageContentEl = $sortingEl.parents('.page-content');\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n initialScrollTop = $pageContentEl[0].scrollTop;\n pageOffset = $pageEl.offset().top + paddingTop;\n pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n sortingElOffsetLocal = $sortingEl[0].offsetTop;\n minTop = $sortingEl[0].offsetTop;\n maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n sortingElHeight = $sortingEl[0].offsetHeight;\n sortingElOffsetTop = $sortingEl.offset().top;\n }\n isMoved = true;\n\n e.preventDefault();\n e.f7PreventSwipePanel = true;\n\n touchesDiff = pageY - touchStartY;\n\n const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n\n const scrollAddition = 44;\n let allowScroll = true;\n if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {\n allowScroll = false;\n }\n if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {\n allowScroll = false;\n }\n\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n\n let scrollDiff;\n if (allowScroll) {\n if (\n sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition >\n pageOffset + pageHeight\n ) {\n // To Bottom\n scrollDiff =\n sortingElOffsetTop +\n touchesDiff +\n sortingElHeight +\n scrollAddition -\n (pageOffset + pageHeight);\n }\n if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n // To Top\n scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;\n }\n if (scrollDiff) {\n $pageContentEl[0].scrollTop += scrollDiff;\n }\n }\n\n $sortingItems.each((el) => {\n const $currentEl = $(el);\n if ($currentEl[0] === $sortingEl[0]) return;\n const currentElOffset = $currentEl[0].offsetTop;\n const currentElHeight = $currentEl.height();\n const sortingElOffset = sortingElOffsetLocal + translate;\n\n let currentTranslate;\n const prevTranslate = $currentEl[0].f7Translate;\n\n if (\n sortingElOffset >= currentElOffset - currentElHeight / 2 &&\n $sortingEl.index() < $currentEl.index()\n ) {\n currentTranslate = -sortingElHeight;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = $currentEl;\n $insertBeforeEl = undefined;\n } else if (\n sortingElOffset <= currentElOffset + currentElHeight / 2 &&\n $sortingEl.index() > $currentEl.index()\n ) {\n currentTranslate = sortingElHeight;\n $currentEl[0].f7Translate = currentTranslate;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = undefined;\n if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n } else {\n currentTranslate = undefined;\n $currentEl.transform('translate3d(0, 0%,0)');\n }\n\n if (prevTranslate !== currentTranslate) {\n $currentEl.trigger('sortable:move');\n app.emit('sortableMove', $currentEl[0], $sortableContainer[0]);\n }\n\n $currentEl[0].f7Translate = currentTranslate;\n });\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n if (isTouched && !isMoved) {\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n if (wasTapHold) {\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n\n $sortingItems.transform('');\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n\n let indexTo;\n if ($insertAfterEl) indexTo = $insertAfterEl.index();\n else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n\n let moveElements = $sortableContainer.dataset().sortableMoveElements;\n if (typeof moveElements === 'undefined') {\n moveElements = app.params.sortable.moveElements;\n }\n\n if (moveElements) {\n if ($insertAfterEl) {\n $sortingEl.insertAfter($insertAfterEl);\n }\n if ($insertBeforeEl) {\n $sortingEl.insertBefore($insertBeforeEl);\n }\n }\n\n if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {\n indexFrom = $sortingEl[0].f7VirtualListIndex;\n if (typeof indexFrom === 'undefined')\n indexFrom = $sortingEl.attr('data-virtual-list-index');\n if ($insertBeforeEl) {\n indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined')\n indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n } else {\n indexTo = $insertAfterEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined')\n indexTo = $insertAfterEl.attr('data-virtual-list-index');\n }\n if (indexTo !== null) indexTo = parseInt(indexTo, 10);\n else indexTo = undefined;\n\n const virtualList = $sortableContainer[0].f7VirtualList;\n\n if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n if (indexTo) indexTo = parseInt(indexTo, 10);\n if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n }\n if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n $sortingEl.trigger('sortable:sort', { from: indexFrom, to: indexTo });\n app.emit(\n 'sortableSort',\n $sortingEl[0],\n { from: indexFrom, to: indexTo, el: $sortingEl[0] },\n $sortableContainer[0],\n );\n }\n\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n isTouched = false;\n isMoved = false;\n }\n\n const activeListener = getSupport().passiveListener\n ? { passive: false, capture: false }\n : false;\n\n $(document).on(\n app.touchEvents.start,\n '.list.sortable .sortable-handler',\n handleTouchStart,\n activeListener,\n );\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n\n $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n handleTouchStart(pointerEvent, true);\n });\n },\n enable(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.addClass('sortable-enabled');\n $el.trigger('sortable:enable');\n app.emit('sortableEnable', $el[0]);\n },\n disable(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.removeClass('sortable-enabled');\n $el.trigger('sortable:disable');\n app.emit('sortableDisable', $el[0]);\n },\n toggle(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('sortable-enabled')) {\n app.sortable.disable($el);\n } else {\n app.sortable.enable($el);\n }\n },\n};\nexport default {\n name: 'sortable',\n params: {\n sortable: {\n moveElements: true,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n sortable: Sortable,\n });\n },\n on: {\n init() {\n const app = this;\n if (!app.params.sortable) return;\n app.sortable.init();\n },\n },\n clicks: {\n '.sortable-enable': function enable($clickedEl, data = {}) {\n const app = this;\n app.sortable.enable(data.sortable);\n },\n '.sortable-disable': function disable($clickedEl, data = {}) {\n const app = this;\n app.sortable.disable(data.sortable);\n },\n '.sortable-toggle': function toggle($clickedEl, data = {}) {\n const app = this;\n app.sortable.toggle(data.sortable);\n },\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Swipeout = {\n init() {\n const app = this;\n const document = getDocument();\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let $swipeoutEl;\n let $swipeoutContent;\n let $actionsRight;\n let $actionsLeft;\n let actionsLeftWidth;\n let actionsRightWidth;\n let translate;\n let opened;\n let openedActionsSide;\n let $leftButtons;\n let $rightButtons;\n let direction;\n let $overswipeLeftButton;\n let $overswipeRightButton;\n let overswipeLeft;\n let overswipeRight;\n\n function handleTouchStart(e) {\n if (!app.swipeout.allow) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = new Date().getTime();\n $swipeoutEl = $(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n );\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n\n if (!isMoved) {\n if ($('.list.sortable-opened').length > 0) return;\n $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n actionsLeftWidth = null;\n actionsRightWidth = null;\n $leftButtons = null;\n $rightButtons = null;\n $overswipeRightButton = null;\n $overswipeLeftButton = null;\n if ($actionsLeft.length > 0) {\n actionsLeftWidth = $actionsLeft.outerWidth();\n $leftButtons = $actionsLeft.children('a');\n $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n }\n if ($actionsRight.length > 0) {\n actionsRightWidth = $actionsRight.outerWidth();\n $rightButtons = $actionsRight.children('a');\n $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n }\n opened = $swipeoutEl.hasClass('swipeout-opened');\n if (opened) {\n openedActionsSide =\n $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0\n ? 'left'\n : 'right';\n }\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (!app.params.swipeout.noFollow) {\n $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n $swipeoutEl.removeClass('swipeout-opened');\n }\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n\n touchesDiff = pageX - touchesStart.x;\n translate = touchesDiff;\n\n if (opened) {\n if (openedActionsSide === 'right') translate -= actionsRightWidth;\n else translate += actionsLeftWidth;\n }\n\n if (\n (translate > 0 && $actionsLeft.length === 0) ||\n (translate < 0 && $actionsRight.length === 0)\n ) {\n if (!opened) {\n isTouched = false;\n isMoved = false;\n $swipeoutContent.transform('');\n if ($rightButtons && $rightButtons.length > 0) {\n $rightButtons.transform('');\n }\n if ($leftButtons && $leftButtons.length > 0) {\n $leftButtons.transform('');\n }\n return;\n }\n translate = 0;\n }\n\n if (translate < 0) direction = 'to-left';\n else if (translate > 0) direction = 'to-right';\n else if (!direction) direction = 'to-left';\n\n let buttonOffset;\n let progress;\n\n e.f7PreventSwipePanel = true;\n if (app.params.swipeout.noFollow) {\n if (opened) {\n if (openedActionsSide === 'right' && touchesDiff > 0) {\n app.swipeout.close($swipeoutEl);\n }\n if (openedActionsSide === 'left' && touchesDiff < 0) {\n app.swipeout.close($swipeoutEl);\n }\n } else {\n if (touchesDiff < 0 && $actionsRight.length > 0) {\n app.swipeout.open($swipeoutEl, 'right');\n }\n if (touchesDiff > 0 && $actionsLeft.length > 0) {\n app.swipeout.open($swipeoutEl, 'left');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n overswipeLeft = false;\n overswipeRight = false;\n if ($actionsRight.length > 0) {\n // Show right actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsRightWidth;\n if (buttonTranslate < -actionsRightWidth) {\n const ratio = buttonTranslate / -actionsRightWidth;\n buttonTranslate = -actionsRightWidth - (-buttonTranslate - actionsRightWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeRight = true;\n }\n }\n if (direction !== 'to-left') {\n progress = 0;\n buttonTranslate = 0;\n }\n $rightButtons.each((buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (\n $overswipeRightButton.length > 0 &&\n $buttonEl.hasClass('swipeout-overswipe') &&\n direction === 'to-left'\n ) {\n $buttonEl.css({ left: `${overswipeRight ? -buttonOffset : 0}px` });\n if (overswipeRight) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n $buttonEl.transform(\n `translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`,\n );\n });\n }\n if ($actionsLeft.length > 0) {\n // Show left actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsLeftWidth;\n if (buttonTranslate > actionsLeftWidth) {\n const ratio = buttonTranslate / actionsRightWidth;\n buttonTranslate = actionsLeftWidth + (buttonTranslate - actionsLeftWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeLeftButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeLeft = true;\n }\n }\n if (direction !== 'to-right') {\n buttonTranslate = 0;\n progress = 0;\n }\n $leftButtons.each((buttonEl, index) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset =\n actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (\n $overswipeLeftButton.length > 0 &&\n $buttonEl.hasClass('swipeout-overswipe') &&\n direction === 'to-right'\n ) {\n $buttonEl.css({ left: `${overswipeLeft ? buttonOffset : 0}px` });\n if (overswipeLeft) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n if ($leftButtons.length > 1) {\n $buttonEl.css('z-index', $leftButtons.length - index);\n }\n $buttonEl.transform(\n `translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`,\n );\n });\n }\n $swipeoutEl.trigger('swipeout', progress);\n app.emit('swipeout', $swipeoutEl[0], progress);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n let action;\n let $buttons;\n let i;\n\n if (\n (timeDiff < 300 &&\n ((touchesDiff < -10 && direction === 'to-left') ||\n (touchesDiff > 10 && direction === 'to-right'))) ||\n (timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2)\n ) {\n action = 'open';\n } else {\n action = 'close';\n }\n if (timeDiff < 300) {\n if (Math.abs(translate) === 0) action = 'close';\n if (Math.abs(translate) === actionsWidth) action = 'open';\n }\n\n if (action === 'open') {\n Swipeout.el = $swipeoutEl[0];\n $swipeoutEl.trigger('swipeout:open');\n app.emit('swipeoutOpen', $swipeoutEl[0]);\n $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n $actions.addClass('swipeout-actions-opened');\n $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n if ($buttons) {\n for (i = 0; i < $buttons.length; i += 1) {\n $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n }\n }\n if (overswipeRight) {\n $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n if (overswipeLeft) {\n $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n } else {\n $swipeoutEl.trigger('swipeout:close');\n app.emit('swipeoutClose', $swipeoutEl[0]);\n Swipeout.el = undefined;\n $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n $swipeoutContent.transform('');\n $actions.removeClass('swipeout-actions-opened');\n }\n\n let buttonOffset;\n if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n $leftButtons.each((buttonEl) => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset =\n actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n });\n }\n if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n $rightButtons.each((buttonEl) => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n });\n }\n $swipeoutContent.transitionEnd(() => {\n if ((opened && action === 'open') || (!opened && action === 'close')) return;\n $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (opened && action === 'close') {\n if ($actionsRight.length > 0) {\n $rightButtons.transform('');\n }\n if ($actionsLeft.length > 0) {\n $leftButtons.transform('');\n }\n }\n });\n }\n\n const passiveListener = getSupport().passiveListener ? { passive: true } : false;\n\n app.on('touchstart', (e) => {\n if (Swipeout.el) {\n const $targetEl = $(e.target);\n if (\n !(\n $(Swipeout.el).is($targetEl[0]) ||\n $targetEl.parents('.swipeout').is(Swipeout.el) ||\n $targetEl.hasClass('modal-in') ||\n ($targetEl.attr('class') || '').indexOf('-backdrop') > 0 ||\n $targetEl.hasClass('actions-modal') ||\n $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0\n )\n ) {\n app.swipeout.close(Swipeout.el);\n }\n }\n });\n $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n allow: true,\n el: undefined,\n open(...args) {\n const app = this;\n let [el, side, callback] = args;\n if (typeof args[1] === 'function') {\n [el, callback, side] = args;\n }\n const $el = $(el).eq(0);\n\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n if (!side) {\n if ($el.find('.swipeout-actions-right').length > 0) side = 'right';\n else side = 'left';\n }\n const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n const $swipeoutContent = $el.find('.swipeout-content');\n if ($swipeoutActions.length === 0) return;\n $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n app.emit('swipeoutOpen', $el[0]);\n $swipeoutActions.addClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n if ($buttons.length > 1) {\n $buttons.each((buttonEl, buttonIndex) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl\n .css('z-index', $buttons.length - buttonIndex)\n .transform(\n `translate3d(${\n swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft\n }px,0,0)`,\n );\n }\n });\n }\n $el.addClass('swipeout-transitioning');\n $swipeoutContent.transitionEnd(() => {\n $el.trigger('swipeout:opened');\n app.emit('swipeoutOpened', $el[0]);\n if (callback) callback.call($el[0]);\n });\n nextFrame(() => {\n $buttons.transform(`translate3d(${translate}px,0,0)`);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n });\n Swipeout.el = $el[0];\n },\n close(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout-opened')) return;\n const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right')\n ? 'right'\n : 'left';\n const $swipeoutActions = $el\n .find('.swipeout-actions-opened')\n .removeClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n app.swipeout.allow = false;\n $el.trigger('swipeout:close');\n app.emit('swipeoutClose', $el[0]);\n $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n\n let closeTimeout;\n function onSwipeoutClose() {\n app.swipeout.allow = true;\n if ($el.hasClass('swipeout-opened')) return;\n $el.removeClass('swipeout-transitioning');\n $buttons.transform('');\n $el.trigger('swipeout:closed');\n app.emit('swipeoutClosed', $el[0]);\n if (callback) callback.call($el[0]);\n if (closeTimeout) clearTimeout(closeTimeout);\n }\n $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n closeTimeout = setTimeout(onSwipeoutClose, 500);\n\n $buttons.each((buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.transform(\n `translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`,\n );\n }\n $buttonEl.css({ left: '0px' }).removeClass('swipeout-overswipe-active');\n });\n if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n },\n delete(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n Swipeout.el = undefined;\n $el.trigger('swipeout:delete');\n app.emit('swipeoutDelete', $el[0]);\n $el.css({ height: `${$el.outerHeight()}px` });\n $el.transitionEnd(() => {\n $el.trigger('swipeout:deleted');\n app.emit('swipeoutDeleted', $el[0]);\n if (callback) callback.call($el[0]);\n if ($el.parents('.virtual-list').length > 0) {\n const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n const virtualIndex = $el[0].f7VirtualListIndex;\n if (virtualList && typeof virtualIndex !== 'undefined')\n virtualList.deleteItem(virtualIndex);\n } else if (app.params.swipeout.removeElements) {\n if (app.params.swipeout.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, app.params.swipeout.removeElementsTimeout);\n } else {\n $el.remove();\n }\n } else {\n $el.removeClass('swipeout-deleting swipeout-transitioning');\n }\n });\n // eslint-disable-next-line\n // $el[0]._clientLeft = $el[0].clientLeft;\n nextFrame(() => {\n $el\n .addClass('swipeout-deleting swipeout-transitioning')\n .css({ height: '0px' })\n .find('.swipeout-content')\n .transform('translate3d(-100%,0,0)');\n });\n },\n};\nexport default {\n name: 'swipeout',\n params: {\n swipeout: {\n actionsNoFold: false,\n noFollow: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n overswipeRatio: 1.2,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n swipeout: Swipeout,\n });\n },\n clicks: {\n '.swipeout-open': function openSwipeout($clickedEl, data = {}) {\n const app = this;\n app.swipeout.open(data.swipeout, data.side);\n },\n '.swipeout-close': function closeSwipeout($clickedEl) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n app.swipeout.close($swipeoutEl);\n },\n '.swipeout-delete': function deleteSwipeout($clickedEl, data = {}) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n const { confirm, confirmTitle } = data;\n if (data.confirm) {\n app.dialog.confirm(confirm, confirmTitle, () => {\n app.swipeout.delete($swipeoutEl);\n });\n } else {\n app.swipeout.delete($swipeoutEl);\n }\n },\n },\n on: {\n init() {\n const app = this;\n if (!app.params.swipeout) return;\n app.swipeout.init();\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\n\nconst Accordion = {\n toggleClicked($clickedEl) {\n const app = this;\n let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n\n const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n if ($accordionContent.length) {\n if ($accordionContent.parents($accordionItemEl).length) return;\n }\n\n if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0])\n return;\n app.accordion.toggle($accordionItemEl);\n },\n open(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeopen', { prevent }, prevent);\n app.emit('accordionBeforeOpen', $el[0], prevent);\n if (prevented) return;\n const $list = $el.parents('.accordion-list').eq(0);\n let $contentEl = $el.children('.accordion-item-content');\n $contentEl.removeAttr('aria-hidden');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n if ($contentEl.length === 0) return;\n const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n if ($openedItem.length > 0) {\n app.accordion.close($openedItem);\n }\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n $el.trigger('accordion:open');\n $el.addClass('accordion-item-opened');\n app.emit('accordionOpen', $el[0]);\n },\n close(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeclose', { prevent }, prevent);\n app.emit('accordionBeforeClose', $el[0], prevent);\n if (prevented) return;\n let $contentEl = $el.children('.accordion-item-content');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n $el.removeClass('accordion-item-opened');\n $contentEl.attr('aria-hidden', true);\n $contentEl.transition(0);\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n // Close\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n nextFrame(() => {\n $contentEl.transition('');\n $contentEl.css('height', '');\n $el.trigger('accordion:close');\n app.emit('accordionClose', $el[0]);\n });\n },\n toggle(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);\n else app.accordion.open(el);\n },\n};\n\nexport default {\n name: 'accordion',\n create() {\n const app = this;\n bindMethods(app, {\n accordion: Accordion,\n });\n },\n clicks: {\n '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a':\n function open($clickedEl) {\n const app = this;\n Accordion.toggleClicked.call(app, $clickedEl);\n },\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nclass VirtualList extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const vl = this;\n const device = getDevice();\n const document = getDocument();\n\n let defaultHeight;\n if (app.theme === 'md') {\n defaultHeight = 48;\n } else if (app.theme === 'ios') {\n defaultHeight = 44;\n }\n\n const defaults = {\n cols: 1,\n height: defaultHeight,\n cache: true,\n dynamicHeightBufferSize: 1,\n showFilteredItemsOnly: false,\n renderExternal: undefined,\n setListHeight: true,\n searchByItem: undefined,\n searchAll: undefined,\n ul: null,\n createUl: true,\n scrollableParentEl: undefined,\n renderItem(item) {\n return `\n <li>\n <div class=\"item-content\">\n <div class=\"item-inner\">\n <div class=\"item-title\">${item}</div>\n </div>\n </div>\n </li>\n `.trim();\n },\n on: {},\n };\n\n // Extend defaults with modules params\n vl.useModulesParams(defaults);\n\n vl.params = extend(defaults, params);\n if (vl.params.height === undefined || !vl.params.height) {\n vl.params.height = defaultHeight;\n }\n\n vl.$el = $(params.el);\n vl.el = vl.$el[0];\n\n if (vl.$el.length === 0) return undefined;\n vl.$el[0].f7VirtualList = vl;\n\n vl.items = vl.params.items;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n }\n if (vl.params.renderItem) {\n vl.renderItem = vl.params.renderItem;\n }\n vl.$pageContentEl = vl.$el.parents('.page-content');\n vl.pageContentEl = vl.$pageContentEl[0];\n\n vl.$scrollableParentEl = vl.params.scrollableParentEl\n ? $(vl.params.scrollableParentEl).eq(0)\n : vl.$pageContentEl;\n if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n vl.$scrollableParentEl = vl.$pageContentEl;\n }\n vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n // Bad scroll\n if (typeof vl.params.updatableScroll !== 'undefined') {\n vl.updatableScroll = vl.params.updatableScroll;\n } else {\n vl.updatableScroll = true;\n if (device.ios && device.osVersion.split('.')[0] < 8) {\n vl.updatableScroll = false;\n }\n }\n\n // Append <ul>\n const ul = vl.params.ul;\n vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n if (vl.$ul.length === 0 && vl.params.createUl) {\n vl.$el.append('<ul></ul>');\n vl.$ul = vl.$el.children('ul');\n }\n vl.ul = vl.$ul[0];\n\n let $itemsWrapEl;\n if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;\n else $itemsWrapEl = vl.$ul;\n\n extend(vl, {\n $itemsWrapEl,\n itemsWrapEl: $itemsWrapEl[0],\n // DOM cached items\n domCache: {},\n // Temporary DOM Element\n tempDomElement: document.createElement('ul'),\n // Last repain position\n lastRepaintY: null,\n // Fragment\n fragment: document.createDocumentFragment(),\n // Props\n pageHeight: undefined,\n rowsPerScreen: undefined,\n rowsBefore: undefined,\n rowsAfter: undefined,\n rowsToRender: undefined,\n maxBufferHeight: 0,\n listHeight: undefined,\n dynamicHeight: typeof vl.params.height === 'function',\n autoHeight: vl.params.height === 'auto',\n });\n\n // Install Modules\n vl.useModules();\n\n // Attach events\n const handleScrollBound = vl.handleScroll.bind(vl);\n const handleResizeBound = vl.handleResize.bind(vl);\n let $pageEl;\n let $tabEl;\n let $panelEl;\n let $popupEl;\n vl.attachEvents = function attachEvents() {\n $pageEl = vl.$el.parents('.page').eq(0);\n $tabEl = vl.$el\n .parents('.tab')\n .filter((tabEl) => {\n return (\n $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length ===\n 0\n );\n })\n .eq(0);\n $panelEl = vl.$el.parents('.panel').eq(0);\n $popupEl = vl.$el.parents('.popup').eq(0);\n\n vl.$scrollableParentEl.on('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);\n app.on('resize', handleResizeBound);\n };\n vl.detachEvents = function attachEvents() {\n vl.$scrollableParentEl.off('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);\n app.off('resize', handleResizeBound);\n };\n // Init\n vl.init();\n\n return vl;\n }\n\n setListSize(autoHeightRerender) {\n const vl = this;\n const items = vl.filteredItems || vl.items;\n if (!autoHeightRerender) {\n vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n }\n if (vl.dynamicHeight) {\n vl.listHeight = 0;\n vl.heights = [];\n for (let i = 0; i < items.length; i += 1) {\n const itemHeight = vl.params.height(items[i]);\n vl.listHeight += itemHeight;\n vl.heights.push(itemHeight);\n }\n } else if (vl.autoHeight) {\n vl.listHeight = 0;\n if (!vl.heights) vl.heights = [];\n if (!vl.heightsCalculated) vl.heightsCalculated = [];\n const renderedItems = {};\n vl.$itemsWrapEl.find(`[data-virtual-list-index]`).forEach((el) => {\n renderedItems[parseInt(el.getAttribute('data-virtual-list-index'), 10)] = el;\n });\n for (let i = 0; i < items.length; i += 1) {\n const itemIndex = vl.items.indexOf(items[i]);\n const renderedItem = renderedItems[itemIndex];\n if (renderedItem) {\n if (!vl.heightsCalculated.includes(itemIndex)) {\n vl.heights[itemIndex] = renderedItem.offsetHeight;\n vl.heightsCalculated.push(itemIndex);\n }\n }\n if (typeof vl.heights[i] === 'undefined') {\n vl.heights[itemIndex] = 40;\n }\n vl.listHeight += vl.heights[itemIndex];\n }\n } else {\n vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;\n vl.maxBufferHeight = (vl.rowsBefore / 2) * vl.params.height;\n }\n\n if (vl.updatableScroll || vl.params.setListHeight) {\n vl.$itemsWrapEl.css({ height: `${vl.listHeight}px` });\n }\n }\n\n render(force, forceScrollTop) {\n const vl = this;\n if (force) vl.lastRepaintY = null;\n\n let scrollTop = -(\n vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top\n );\n\n if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n if (\n vl.lastRepaintY === null ||\n Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight ||\n (!vl.updatableScroll &&\n vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >=\n vl.$scrollableParentEl[0].scrollHeight)\n ) {\n vl.lastRepaintY = scrollTop;\n } else {\n return;\n }\n\n const items = vl.filteredItems || vl.items;\n let fromIndex;\n let toIndex;\n let heightBeforeFirstItem = 0;\n let heightBeforeLastItem = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n let itemTop = 0;\n let itemHeight;\n vl.maxBufferHeight = vl.pageHeight;\n\n for (let j = 0; j < vl.heights.length; j += 1) {\n itemHeight = vl.heights[j];\n if (typeof fromIndex === 'undefined') {\n if (\n itemTop + itemHeight >=\n scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize\n )\n fromIndex = j;\n else heightBeforeFirstItem += itemHeight;\n }\n\n if (typeof toIndex === 'undefined') {\n if (\n itemTop + itemHeight >=\n scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize ||\n j === vl.heights.length - 1\n )\n toIndex = j + 1;\n heightBeforeLastItem += itemHeight;\n }\n itemTop += itemHeight;\n }\n toIndex = Math.min(toIndex, items.length);\n } else {\n fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);\n }\n\n let topPosition;\n const renderExternalItems = [];\n vl.reachEnd = false;\n let i;\n for (i = fromIndex; i < toIndex; i += 1) {\n let itemEl;\n // Define real item index\n const index = vl.items.indexOf(items[i]);\n\n if (i === fromIndex) vl.currentFromIndex = index;\n if (i === toIndex - 1) vl.currentToIndex = index;\n if (vl.filteredItems) {\n if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n // Find items\n if (vl.params.renderExternal) {\n renderExternalItems.push(items[i]);\n } else if (vl.domCache[index]) {\n itemEl = vl.domCache[index];\n itemEl.f7VirtualListIndex = index;\n } else {\n if (vl.renderItem) {\n vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n } else {\n vl.tempDomElement.innerHTML = items[i].toString().trim();\n }\n itemEl = vl.tempDomElement.childNodes[0];\n if (vl.params.cache) vl.domCache[index] = itemEl;\n itemEl.f7VirtualListIndex = index;\n }\n\n // Set item top position\n if (i === fromIndex) {\n if (vl.dynamicHeight || vl.autoHeight) {\n topPosition = heightBeforeFirstItem;\n } else {\n topPosition = (i * vl.params.height) / vl.params.cols;\n }\n }\n if (!vl.params.renderExternal) {\n itemEl.style.top = `${topPosition}px`;\n\n // Before item insert\n vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n // Append item to fragment\n vl.fragment.appendChild(itemEl);\n }\n }\n\n // Update list height with not updatable scroll\n if (!vl.updatableScroll) {\n if (vl.dynamicHeight || vl.autoHeight) {\n vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n } else {\n vl.itemsWrapEl.style.height = `${(i * vl.params.height) / vl.params.cols}px`;\n }\n }\n\n // Update list html\n if (vl.params.renderExternal) {\n if (items && items.length === 0) {\n vl.reachEnd = true;\n }\n } else {\n vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n vl.itemsWrapEl.innerHTML = '';\n\n vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n\n if (items && items.length === 0) {\n vl.reachEnd = true;\n if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n } else {\n vl.itemsWrapEl.appendChild(vl.fragment);\n }\n\n vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n }\n\n if (typeof forceScrollTop !== 'undefined' && force) {\n vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n }\n if (vl.params.renderExternal) {\n vl.params.renderExternal(vl, {\n fromIndex,\n toIndex,\n listHeight: vl.listHeight,\n topPosition,\n items: renderExternalItems,\n });\n }\n if (vl.autoHeight) {\n requestAnimationFrame(() => {\n vl.setListSize(true);\n });\n }\n }\n\n // Filter\n filterItems(indexes, resetScrollTop = true) {\n const vl = this;\n vl.filteredItems = [];\n for (let i = 0; i < indexes.length; i += 1) {\n vl.filteredItems.push(vl.items[indexes[i]]);\n }\n if (resetScrollTop) {\n vl.$scrollableParentEl[0].scrollTop = 0;\n }\n vl.update();\n }\n\n resetFilter() {\n const vl = this;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n } else {\n vl.filteredItems = null;\n delete vl.filteredItems;\n }\n vl.update();\n }\n\n scrollToItem(index) {\n const vl = this;\n if (index > vl.items.length) return false;\n let itemTop = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n for (let i = 0; i < index; i += 1) {\n itemTop += vl.heights[i];\n }\n } else {\n itemTop = index * vl.params.height;\n }\n const listTop = vl.$el[0].offsetTop;\n vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n return true;\n }\n\n handleScroll() {\n const vl = this;\n vl.render();\n }\n\n // Handle resize event\n isVisible() {\n const vl = this;\n return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n }\n\n handleResize() {\n const vl = this;\n if (vl.isVisible()) {\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n }\n\n // Append\n appendItems(items) {\n const vl = this;\n for (let i = 0; i < items.length; i += 1) {\n vl.items.push(items[i]);\n }\n vl.update();\n }\n\n appendItem(item) {\n const vl = this;\n vl.appendItems([item]);\n }\n\n // Replace\n replaceAllItems(items) {\n const vl = this;\n vl.items = items;\n delete vl.filteredItems;\n vl.domCache = {};\n vl.update();\n }\n\n replaceItem(index, item) {\n const vl = this;\n vl.items[index] = item;\n if (vl.params.cache) delete vl.domCache[index];\n vl.update();\n }\n\n // Prepend\n prependItems(items) {\n const vl = this;\n for (let i = items.length - 1; i >= 0; i -= 1) {\n vl.items.unshift(items[i]);\n }\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n prependItem(item) {\n const vl = this;\n vl.prependItems([item]);\n }\n\n // Move\n moveItem(from, to) {\n const vl = this;\n const fromIndex = from;\n let toIndex = to;\n if (fromIndex === toIndex) return;\n // remove item from array\n const item = vl.items.splice(fromIndex, 1)[0];\n if (toIndex >= vl.items.length) {\n // Add item to the end\n vl.items.push(item);\n toIndex = vl.items.length - 1;\n } else {\n // Add item to new index\n vl.items.splice(toIndex, 0, item);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n const indexShift = fromIndex < toIndex ? -1 : 1;\n if (cachedIndex < leftIndex || cachedIndex > rightIndex)\n newCache[cachedIndex] = vl.domCache[cachedIndex];\n if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n if (cachedIndex > leftIndex && cachedIndex <= rightIndex)\n newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Insert before\n insertItemBefore(index, item) {\n const vl = this;\n if (index === 0) {\n vl.prependItem(item);\n return;\n }\n if (index >= vl.items.length) {\n vl.appendItem(item);\n return;\n }\n vl.items.splice(index, 0, item);\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex >= index) {\n newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n }\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Delete\n deleteItems(indexes) {\n const vl = this;\n let prevIndex;\n let indexShift = 0;\n for (let i = 0; i < indexes.length; i += 1) {\n let index = indexes[i];\n if (typeof prevIndex !== 'undefined') {\n if (index > prevIndex) {\n indexShift = -i;\n }\n }\n index += indexShift;\n prevIndex = indexes[i];\n // Delete item\n const deletedItem = vl.items.splice(index, 1)[0];\n\n // Delete from filtered\n if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex === index) {\n delete vl.domCache[index];\n } else if (parseInt(cached, 10) > index) {\n newCache[cachedIndex - 1] = vl.domCache[cached];\n } else {\n newCache[cachedIndex] = vl.domCache[cached];\n }\n });\n vl.domCache = newCache;\n }\n }\n vl.update();\n }\n\n deleteAllItems() {\n const vl = this;\n vl.items = [];\n delete vl.filteredItems;\n if (vl.params.cache) vl.domCache = {};\n vl.update();\n }\n\n deleteItem(index) {\n const vl = this;\n vl.deleteItems([index]);\n }\n\n // Clear cache\n clearCache() {\n const vl = this;\n vl.domCache = {};\n }\n\n // Update Virtual List\n update(deleteCache) {\n const vl = this;\n if (deleteCache && vl.params.cache) {\n vl.domCache = {};\n }\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n\n init() {\n const vl = this;\n vl.attachEvents();\n vl.setListSize();\n vl.render();\n }\n\n destroy() {\n let vl = this;\n vl.detachEvents();\n vl.$el[0].f7VirtualList = null;\n delete vl.$el[0].f7VirtualList;\n deleteProps(vl);\n vl = null;\n }\n}\n\nexport default VirtualList;\n","import VirtualList from './virtual-list-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'virtualList',\n static: {\n VirtualList,\n },\n create() {\n const app = this;\n app.virtualList = ConstructorMethods({\n defaultSelector: '.virtual-list',\n constructor: VirtualList,\n app,\n domProp: 'f7VirtualList',\n });\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nclass ListIndex extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const index = this;\n\n const defaults = {\n el: null, // where to render indexes\n listEl: null, // list el to generate indexes\n indexes: 'auto', // or array of indexes\n iosItemHeight: 14,\n mdItemHeight: 14,\n scrollList: true,\n label: false,\n // eslint-disable-next-line\n renderItem(itemContent, itemIndex) {\n return `\n <li>${itemContent}</li>\n `.trim();\n },\n renderSkipPlaceholder() {\n return '<li class=\"list-index-skip-placeholder\"></li>';\n },\n on: {},\n };\n\n // Extend defaults with modules params\n index.useModulesParams(defaults);\n\n index.params = extend(defaults, params);\n\n let $el;\n let $listEl;\n let $pageContentEl;\n let $ul;\n\n if (index.params.el) {\n $el = $(index.params.el);\n } else {\n return index;\n }\n\n if ($el[0].f7ListIndex) {\n return $el[0].f7ListIndex;\n }\n\n $ul = $el.find('ul');\n if ($ul.length === 0) {\n $ul = $('<ul></ul>');\n $el.append($ul);\n }\n\n if (index.params.listEl) {\n $listEl = $(index.params.listEl);\n }\n\n if (index.params.indexes === 'auto' && !$listEl) {\n return index;\n }\n\n if ($listEl) {\n $pageContentEl = $listEl.parents('.page-content').eq(0);\n } else {\n $pageContentEl = $el.siblings('.page-content').eq(0);\n if ($pageContentEl.length === 0) {\n $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n }\n }\n\n $el[0].f7ListIndex = index;\n\n extend(index, {\n app,\n $el,\n el: $el && $el[0],\n $ul,\n ul: $ul && $ul[0],\n $listEl,\n listEl: $listEl && $listEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl && $pageContentEl[0],\n indexes: params.indexes,\n height: 0,\n skipRate: 0,\n });\n\n // Install Modules\n index.useModules();\n\n // Attach events\n function handleResize() {\n const height = { index };\n index.calcSize();\n if (height !== index.height) {\n index.render();\n }\n }\n\n function handleClick(e) {\n const $clickedLi = $(e.target).closest('li');\n if (!$clickedLi.length) return;\n\n let itemIndex = $clickedLi.index();\n if (index.skipRate > 0) {\n const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n itemIndex = Math.round((index.indexes.length - 1) * percentage);\n }\n const itemContent = index.indexes[itemIndex];\n\n index.$el.trigger('listindex:click', { content: itemContent, index: itemIndex });\n index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n index.$el.trigger('listindex:select', { content: itemContent, index: itemIndex });\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let topPoint;\n let bottomPoint;\n let $labelEl;\n let previousIndex = null;\n function handleTouchStart(e) {\n const $children = $ul.children();\n if (!$children.length) return;\n topPoint = $children[0].getBoundingClientRect().top;\n bottomPoint =\n $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isMoved = false;\n previousIndex = null;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n if (!isMoved && index.params.label) {\n $labelEl = $('<span class=\"list-index-label\"></span>');\n $el.append($labelEl);\n }\n isMoved = true;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n\n let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n percentage = Math.min(Math.max(percentage, 0), 1);\n\n const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n const itemContent = index.indexes[itemIndex];\n\n const ulHeight = bottomPoint - topPoint;\n const bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;\n\n if (itemIndex !== previousIndex) {\n if (index.params.label) {\n $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n }\n\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n\n previousIndex = itemIndex;\n\n index.$el.trigger('listindex:select');\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n isMoved = false;\n if (index.params.label) {\n if ($labelEl) $labelEl.remove();\n $labelEl = undefined;\n }\n }\n const passiveListener = getSupport().passiveListener ? { passive: true } : false;\n index.attachEvents = function attachEvents() {\n $el.parents('.tab').on('tab:show', handleResize);\n $el.parents('.page').on('page:reinit', handleResize);\n $el.parents('.panel').on('panel:open', handleResize);\n $el\n .parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast')\n .on('modal:open', handleResize);\n app.on('resize', handleResize);\n\n $el.on('click', handleClick);\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n };\n index.detachEvents = function attachEvents() {\n $el.parents('.tab').off('tab:show', handleResize);\n $el.parents('.page').off('page:reinit', handleResize);\n $el.parents('.panel').off('panel:open', handleResize);\n $el\n .parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast')\n .off('modal:open', handleResize);\n app.off('resize', handleResize);\n\n $el.off('click', handleClick);\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n };\n // Init\n index.init();\n\n return index;\n }\n // eslint-disable-next-line\n scrollListToIndex(itemContent, itemIndex) {\n const index = this;\n const { $listEl, $pageContentEl, app } = index;\n if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n\n let $scrollToEl;\n $listEl.find('.list-group-title').each((el) => {\n if ($scrollToEl) return;\n const $el = $(el);\n if ($el.text() === itemContent) {\n $scrollToEl = $el;\n }\n });\n if (!$scrollToEl || $scrollToEl.length === 0) return index;\n\n const parentTop = $scrollToEl.parent().offset().top;\n let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const scrollTop = $pageContentEl[0].scrollTop;\n const scrollToElTop = $scrollToEl.offset().top;\n if ($pageContentEl.parents('.page-with-navbar-large').length) {\n const navbarInnerEl = app.navbar.getElByPage(\n $pageContentEl.parents('.page-with-navbar-large').eq(0),\n );\n const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n if ($titleLargeEl.length) {\n paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n }\n }\n\n if (parentTop <= paddingTop) {\n $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);\n } else {\n $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);\n }\n return index;\n }\n\n renderSkipPlaceholder() {\n const index = this;\n return index.params.renderSkipPlaceholder.call(index);\n }\n\n renderItem(itemContent, itemIndex) {\n const index = this;\n return index.params.renderItem.call(index, itemContent, itemIndex);\n }\n\n render() {\n const index = this;\n const { $ul, indexes, skipRate } = index;\n let wasSkipped;\n\n const html = indexes\n .map((itemContent, itemIndex) => {\n if (itemIndex % skipRate !== 0 && skipRate > 0) {\n wasSkipped = true;\n return '';\n }\n let itemHtml = index.renderItem(itemContent, itemIndex);\n if (wasSkipped) {\n itemHtml = index.renderSkipPlaceholder() + itemHtml;\n }\n wasSkipped = false;\n return itemHtml;\n })\n .join('');\n\n $ul.html(html);\n\n return index;\n }\n\n calcSize() {\n const index = this;\n const { app, params, el, indexes } = index;\n const height = el.offsetHeight;\n const itemHeight = params[`${app.theme}ItemHeight`];\n const maxItems = Math.floor(height / itemHeight);\n const items = indexes.length;\n let skipRate = 0;\n if (items > maxItems) {\n skipRate = Math.ceil((items * 2 - 1) / maxItems);\n }\n\n index.height = height;\n index.skipRate = skipRate;\n\n return index;\n }\n\n calcIndexes() {\n const index = this;\n if (index.params.indexes === 'auto') {\n index.indexes = [];\n\n index.$listEl.find('.list-group-title').each((el) => {\n const elContent = $(el).text();\n if (index.indexes.indexOf(elContent) < 0) {\n index.indexes.push(elContent);\n }\n });\n } else {\n index.indexes = index.params.indexes;\n }\n return index;\n }\n\n update() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n\n return index;\n }\n\n init() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n index.attachEvents();\n }\n\n destroy() {\n let index = this;\n index.$el.trigger('listindex:beforedestroy', index);\n index.emit('local::beforeDestroy listIndexBeforeDestroy');\n index.detachEvents();\n if (index.$el[0]) {\n index.$el[0].f7ListIndex = null;\n delete index.$el[0].f7ListIndex;\n }\n deleteProps(index);\n index = null;\n }\n}\n\nexport default ListIndex;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport ListIndex from './list-index-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'listIndex',\n static: {\n ListIndex,\n },\n create() {\n const app = this;\n app.listIndex = ConstructorMethods({\n defaultSelector: '.list-index',\n constructor: ListIndex,\n app,\n domProp: 'f7ListIndex',\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.list-index-init')\n .each((listIndexEl) => {\n const params = extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.list-index-init')\n .each((listIndexEl) => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.list-index-init').each((listIndexEl) => {\n const params = extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.list-index-init').each((listIndexEl) => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n },\n vnode: {\n 'list-index-init': {\n insert(vnode) {\n const app = this;\n const listIndexEl = vnode.elm;\n const params = extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n },\n destroy(vnode) {\n const listIndexEl = vnode.elm;\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\n\nconst Tab = {\n show(...args) {\n const app = this;\n\n let tabEl;\n let tabLinkEl;\n let animate;\n let tabRoute;\n let animatedInit;\n if (args.length === 1 && args[0] && args[0].constructor === Object) {\n tabEl = args[0].tabEl;\n tabLinkEl = args[0].tabLinkEl;\n animate = args[0].animate;\n tabRoute = args[0].tabRoute;\n animatedInit = args[0].animatedInit;\n } else {\n [tabEl, tabLinkEl, animate, tabRoute] = args;\n if (typeof args[1] === 'boolean') {\n [tabEl, animate, tabLinkEl, tabRoute] = args;\n if (args.length > 2 && tabLinkEl.constructor === Object) {\n [tabEl, animate, tabRoute, tabLinkEl] = args;\n }\n }\n }\n if (typeof animate === 'undefined') animate = true;\n\n const $newTabEl = $(tabEl);\n if (tabRoute && $newTabEl[0]) {\n $newTabEl[0].f7TabRoute = tabRoute;\n }\n\n if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n };\n }\n\n let $tabLinkEl;\n if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n\n const $tabsEl = $newTabEl.parent('.tabs');\n if ($tabsEl.length === 0) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n };\n }\n\n // Release swipeouts in hidden tabs\n if (app.swipeout) app.swipeout.allowOpen = true;\n\n // Animated tabs\n const tabsChangedCallbacks = [];\n\n function onTabsChanged(callback) {\n tabsChangedCallbacks.push(callback);\n }\n function tabsChanged() {\n tabsChangedCallbacks.forEach((callback) => {\n callback();\n });\n }\n\n let animated = false;\n\n if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n\n const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n if (animate && transitionDuration) {\n $tabsEl.transitionEnd(tabsChanged);\n animated = true;\n }\n\n const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n }\n\n // Swipeable tabs\n let swiper;\n if ($tabsEl[0].nodeName.toLowerCase() === 'swiper-container' && app.swiper) {\n swiper = $tabsEl[0].swiper;\n const newTabIndex = swiper.slides.indexOf($newTabEl[0]);\n if (swiper && swiper.activeIndex !== newTabIndex) {\n animated = true;\n swiper\n .once('slideChangeTransitionEnd', () => {\n tabsChanged();\n })\n .slideTo(newTabIndex, animate ? undefined : 0);\n } else if (swiper && swiper.animating) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n });\n }\n }\n\n // Remove active class from old tabs\n const $oldTabEl = $tabsEl.children('.tab-active');\n $oldTabEl.removeClass('tab-active');\n if (!animatedInit && (!swiper || (swiper && !swiper.animating) || (swiper && tabRoute))) {\n if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n $oldTabEl.children('.page').each((pageEl) => {\n $(pageEl).trigger('page:tabhide');\n app.emit('pageTabHide', pageEl);\n });\n }\n $oldTabEl.trigger('tab:hide');\n app.emit('tabHide', $oldTabEl[0]);\n }\n\n // Trigger 'show' event on new tab\n $newTabEl.addClass('tab-active');\n if (!animatedInit && (!swiper || (swiper && !swiper.animating) || (swiper && tabRoute))) {\n if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n $newTabEl.children('.page').each((pageEl) => {\n $(pageEl).trigger('page:tabshow');\n app.emit('pageTabShow', pageEl);\n });\n }\n $newTabEl.trigger('tab:show');\n app.emit('tabShow', $newTabEl[0]);\n }\n\n // Find related link for new tab\n if (!$tabLinkEl) {\n // Search by id\n if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);\n else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n // Search by data-tab\n if (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0)) {\n $('[data-tab]').each((el) => {\n if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n });\n }\n if (tabRoute && (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0))) {\n $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $tabLinkEl = $tabLinkEl.filter((tabLinkElement) => {\n return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n });\n if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n const $pageEl = $newTabEl.parents('.page');\n const $navbarEl = $(app.navbar.getElByPage($pageEl));\n $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n }\n }\n if ($tabLinkEl.length > 0) {\n // Find related link for old tab\n let $oldTabLinkEl;\n if ($oldTabEl && $oldTabEl.length > 0) {\n // Search by id\n const oldTabId = $oldTabEl.attr('id');\n if (oldTabId) {\n $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n // Search by data-route-tab-id\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n }\n }\n // Search by data-tab\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $('[data-tab]').each((tabLinkElement) => {\n if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n });\n }\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n } else if (tabRoute) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n\n if (\n $oldTabLinkEl &&\n $oldTabLinkEl.length > 1 &&\n $oldTabEl &&\n $oldTabEl.parents('.page').length\n ) {\n // eslint-disable-next-line\n $oldTabLinkEl = $oldTabLinkEl.filter((tabLinkElement) => {\n return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n });\n }\n\n if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n // Update links' classes\n if ($tabLinkEl && $tabLinkEl.length > 0) {\n $tabLinkEl.addClass('tab-link-active');\n // Material Highlight\n const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-icons');\n const hasHighlight =\n app.toolbar &&\n $tabbarEl.length > 0 &&\n ($tabbarEl.hasClass('tabbar-highlight') || app.theme !== 'ios');\n if (hasHighlight) {\n app.toolbar.setHighlight($tabbarEl);\n }\n }\n }\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n $oldTabEl,\n oldTabEl: $oldTabEl[0],\n onTabsChanged,\n animated,\n };\n },\n};\nexport default {\n name: 'tabs',\n create() {\n const app = this;\n extend(app, {\n tab: {\n show: Tab.show.bind(app),\n },\n });\n },\n on: {\n 'pageInit tabMounted': function onInit(pageOrTabEl) {\n const $el = $(pageOrTabEl.el || pageOrTabEl);\n const animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];\n if (!animatedTabEl) return;\n const app = this;\n app.tab.show({ tabEl: animatedTabEl, animatedInit: true, animate: false });\n },\n },\n clicks: {\n '.tab-link': function tabLinkClick($clickedEl, data = {}) {\n if (\n ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0) ||\n $clickedEl.attr('data-tab')\n ) {\n const app = this;\n app.tab.show({\n tabEl: data.tab || $clickedEl.attr('href'),\n tabLinkEl: $clickedEl,\n animate: data.animate,\n });\n }\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nfunction resizablePanel(panel) {\n const app = panel.app;\n const support = getSupport();\n if (panel.resizableInitialized) return;\n extend(panel, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el, $backdropEl, side, effect } = panel;\n if (!$el) return;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let panelWidth;\n\n let $viewEl;\n\n let panelMinWidth;\n let panelMaxWidth;\n let visibleByBreakpoint;\n\n const isPushingPanel = effect !== 'cover' && effect !== 'floating';\n\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return (parseInt(v, 10) / 100) * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n\n function isResizable() {\n return panel.resizable && $el.hasClass('panel-resizable');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n panelWidth = $el[0].offsetWidth;\n $el.transition(0);\n $el.addClass('panel-resizing');\n $htmlEl.css('cursor', 'col-resize');\n if (isPushingPanel || visibleByBreakpoint) {\n $viewEl = $(panel.getViewEl());\n if (panel.$containerEl && panel.$containerEl.hasClass('page')) {\n $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));\n }\n }\n if (isPushingPanel && !visibleByBreakpoint) {\n $backdropEl.transition(0);\n $viewEl.transition(0);\n }\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n }\n newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n\n panel.resizableWidth = newPanelWidth;\n $el[0].style.width = `${newPanelWidth}px`;\n if (isPushingPanel && !visibleByBreakpoint) {\n if ($viewEl) {\n $viewEl.transform(\n `translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`,\n );\n }\n if ($backdropEl) {\n $backdropEl.transform(\n `translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`,\n );\n }\n } else if (visibleByBreakpoint && $viewEl) {\n $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n }\n\n $el.trigger('panel:resize', newPanelWidth);\n panel.emit('local::resize panelResize', panel, newPanelWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n $el[0].style.width = '';\n if (isPushingPanel && !visibleByBreakpoint) {\n $viewEl.transform('');\n $backdropEl.transform('');\n }\n $el.removeClass('panel-resizing');\n nextFrame(() => {\n $el.transition('');\n if (isPushingPanel) {\n $backdropEl.transition('');\n if ($viewEl) $viewEl.transition('');\n }\n });\n }\n\n function handleResize() {\n if (!panel.opened || !panel.resizableWidth) return;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n\n if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n }\n panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n }\n\n if (panel.$el.find('.panel-resize-handler').length === 0) {\n panel.$el.append('<div class=\"panel-resize-handler\"></div>');\n }\n panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n\n $el.addClass('panel-resizable');\n\n // Add Events\n const passive = support.passiveListener ? { passive: true } : false;\n\n panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n panel.on('beforeOpen', handleResize);\n\n panel.once('panelDestroy', () => {\n $el.removeClass('panel-resizable');\n panel.$resizeHandlerEl.remove();\n panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n panel.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizablePanel;\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport swipePanel from './swipe-panel.js';\nimport resizablePanel from './resizable-panel.js';\n\nclass Panel extends Framework7Class {\n constructor(app, params = {}) {\n const extendedParams = extend({ on: {} }, app.params.panel, params);\n super(extendedParams, [app]);\n\n const panel = this;\n\n panel.params = extendedParams;\n panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.$el;\n panel.containerEl = panel.$containerEl[0];\n if (!panel.containerEl) {\n panel.$containerEl = app.$el;\n panel.containerEl = app.$el[0];\n }\n\n let $el;\n if (panel.params.el) {\n $el = $(panel.params.el).eq(0);\n } else if (panel.params.content) {\n $el = $(panel.params.content)\n .filter((node) => node.nodeType === 1)\n .eq(0);\n }\n\n if ($el.length === 0) return panel;\n if ($el[0].f7Panel) return $el[0].f7Panel;\n\n $el[0].f7Panel = panel;\n\n let { side, effect, resizable } = panel.params;\n if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n if (typeof effect === 'undefined')\n // eslint-disable-next-line\n effect = $el.hasClass('panel-cover')\n ? 'cover'\n : $el.hasClass('panel-push')\n ? 'push'\n : $el.hasClass('panel-floating')\n ? 'floating'\n : 'reveal';\n if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n\n let $backdropEl;\n if (panel.params.backdrop && panel.params.backdropEl) {\n $backdropEl = $(panel.params.backdropEl);\n } else if (panel.params.backdrop) {\n $backdropEl = panel.$containerEl.children('.panel-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"panel-backdrop\"></div>');\n panel.$containerEl.prepend($backdropEl);\n }\n }\n\n extend(panel, {\n app,\n side,\n effect,\n resizable,\n $el,\n el: $el[0],\n opened: false,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n });\n\n // Install Modules\n panel.useModules();\n\n // Init\n panel.init();\n\n return panel;\n }\n\n getViewEl() {\n const panel = this;\n let viewEl;\n if (panel.$containerEl.children('.views').length > 0) {\n viewEl = panel.$containerEl.children('.views')[0];\n } else {\n viewEl = panel.$containerEl.children('.view')[0];\n }\n return viewEl;\n }\n\n setStateClasses(state) {\n const panel = this;\n const { side, el, effect } = panel;\n\n const viewEl = panel.getViewEl();\n const panelInView = viewEl && viewEl.contains(el);\n const $targetEl = !viewEl || panelInView ? panel.$containerEl : $('html');\n if (state === 'open') {\n $targetEl.addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'before-closing') {\n $targetEl.addClass('with-panel-closing');\n }\n if (state === 'closing') {\n $targetEl.addClass('with-panel-closing');\n $targetEl.removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'after-closing') {\n $targetEl.removeClass('with-panel-closing');\n }\n if (state === 'closed') {\n $targetEl.removeClass(`with-panel-${side}-${effect}`);\n }\n }\n\n enableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = false;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n disableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = true;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n toggleVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n setVisibleBreakpoint(emitEvents = true) {\n const panel = this;\n const app = panel.app;\n if (!panel.visibleBreakpointResizeHandler) {\n panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n panel.setVisibleBreakpoint();\n };\n app.on('resize', panel.visibleBreakpointResizeHandler);\n }\n const { side, $el, $containerEl, params, visibleBreakpointDisabled } = panel;\n const breakpoint = params.visibleBreakpoint;\n const $viewEl = $(panel.getViewEl());\n const wasVisible = $el.hasClass('panel-in-breakpoint');\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));\n }\n\n if (\n app.width >= breakpoint &&\n typeof breakpoint !== 'undefined' &&\n breakpoint !== null &&\n !visibleBreakpointDisabled\n ) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n panel.onOpen(false);\n panel.onOpened();\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`,\n });\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n } else {\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`,\n });\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-breakpoint panel-in');\n panel.onClose();\n panel.onClosed();\n $viewEl.css({\n [`margin-${side}`]: '',\n });\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n }\n }\n\n enableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = false;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n disableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = true;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n toggleCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n setCollapsedBreakpoint(emitEvents = true) {\n const panel = this;\n const app = panel.app;\n if (!panel.collapsedBreakpointResizeHandler) {\n panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n panel.setCollapsedBreakpoint();\n };\n app.on('resize', panel.collapsedBreakpointResizeHandler);\n }\n const { $el, params, collapsedBreakpointDisabled } = panel;\n if ($el.hasClass('panel-in-breakpoint')) return;\n const breakpoint = params.collapsedBreakpoint;\n const wasVisible = $el.hasClass('panel-in-collapsed');\n\n if (\n app.width >= breakpoint &&\n typeof breakpoint !== 'undefined' &&\n breakpoint !== null &&\n !collapsedBreakpointDisabled\n ) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-collapsed').removeClass('panel-in');\n panel.collapsed = true;\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-collapsed panel-in');\n panel.collapsed = false;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n }\n\n enableResizable() {\n const panel = this;\n if (panel.resizableInitialized) {\n panel.resizable = true;\n panel.$el.addClass('panel-resizable');\n } else {\n resizablePanel(panel);\n }\n return panel;\n }\n\n disableResizable() {\n const panel = this;\n panel.resizable = false;\n panel.$el.removeClass('panel-resizable');\n return panel;\n }\n\n enableSwipe() {\n const panel = this;\n if (panel.swipeInitialized) {\n panel.swipeable = true;\n } else {\n swipePanel(panel);\n }\n return panel;\n }\n\n disableSwipe() {\n const panel = this;\n panel.swipeable = false;\n return panel;\n }\n\n onOpen(modifyHtmlClasses = true) {\n const panel = this;\n // eslint-disable-next-line\n panel._openTransitionStarted = false;\n const app = panel.app;\n\n panel.opened = true;\n app.panel.allowOpen = false;\n\n panel.$el.trigger('panel:beforeopen');\n panel.emit('local::beforeOpen panelBeforeOpen', panel);\n\n if (modifyHtmlClasses) {\n panel.setStateClasses('open');\n }\n\n panel.$el.trigger('panel:open');\n panel.emit('local::open panelOpen', panel);\n }\n\n onOpened() {\n const panel = this;\n const app = panel.app;\n\n app.panel.allowOpen = true;\n\n panel.$el.trigger('panel:opened');\n panel.emit('local::opened panelOpened', panel);\n }\n\n onClose() {\n const panel = this;\n const app = panel.app;\n\n panel.opened = false;\n app.panel.allowOpen = false;\n\n panel.$el.trigger('panel:beforeclose');\n panel.emit('local::beforeClose panelBeforeClose', panel);\n\n panel.setStateClasses('closing');\n\n panel.$el.trigger('panel:close');\n panel.emit('local::close panelClose', panel);\n }\n\n onClosed() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.setStateClasses('after-closing');\n panel.$el.removeClass('panel-out');\n if (panel.$backdropEl) {\n const otherPanel = app.panel.get('.panel-in');\n const shouldHideBackdrop = !otherPanel || (otherPanel && !otherPanel.$backdropEl);\n if (shouldHideBackdrop) {\n panel.$backdropEl.removeClass('panel-backdrop-in');\n }\n }\n panel.$el.trigger('panel:closed');\n panel.emit('local::closed panelClosed', panel);\n }\n\n toggle(animate = true) {\n const panel = this;\n const breakpoint = panel.params.visibleBreakpoint;\n const app = panel.app;\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n return panel.toggleVisibleBreakpoint();\n }\n if (panel.opened) panel.close(animate);\n else panel.open(animate);\n return panel;\n }\n\n insertToRoot() {\n const panel = this;\n const document = getDocument();\n const { $el, $backdropEl, $containerEl } = panel;\n const $panelParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n\n if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {\n const $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);\n const $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);\n\n if ($insertBeforeEl.length) {\n $el.insertBefore($insertBeforeEl);\n } else if ($insertAfterEl) {\n $el.insertBefore($insertAfterEl);\n } else {\n $containerEl.prepend($el);\n }\n\n if (\n $backdropEl &&\n $backdropEl.length &&\n ((!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0) ||\n ($backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0))\n ) {\n $backdropEl.insertBefore($el);\n }\n\n panel.once('panelClosed', () => {\n if (wasInDom) {\n $panelParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n }\n\n open(animate = true) {\n const panel = this;\n const app = panel.app;\n\n if (!app.panel.allowOpen) return false;\n\n const { effect, $el, $backdropEl, opened, $containerEl } = panel;\n\n if (!$el || $el.hasClass('panel-in')) {\n return panel;\n }\n\n panel.insertToRoot();\n\n // Ignore if opened\n if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n // Close if some panel is opened\n const otherOpenedPanel = app.panel.get('.panel-in');\n if (otherOpenedPanel && otherOpenedPanel !== panel) {\n otherOpenedPanel.close(animate);\n }\n\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n $el.addClass('panel-in');\n\n if ($backdropEl) {\n $backdropEl.addClass('panel-backdrop-in');\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n\n if (['cover', 'push', 'floating'].includes(panel.effect)) {\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n panel._clientLeft = $el[0].clientLeft;\n }\n\n // Transitionend\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n\n function panelTransitionStart() {\n transitionEndTarget.transitionStart(() => {\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n });\n }\n\n function panelTransitionEnd() {\n transitionEndTarget.transitionEnd((e) => {\n if ($(e.target).is(transitionEndTarget)) {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else {\n panel.onOpened();\n }\n } else panelTransitionEnd();\n });\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n }\n panelTransitionStart();\n panelTransitionEnd();\n $el.removeClass('panel-out not-animated').addClass('panel-in');\n panel.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('not-animated');\n }\n $el.removeClass('panel-out').addClass('panel-in not-animated');\n panel.onOpen();\n panel.onOpened();\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n }\n\n return true;\n }\n\n close(animate = true) {\n const panel = this;\n const { effect, $el, $backdropEl, opened, $containerEl } = panel;\n if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n if ($backdropEl) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n // eslint-disable-next-line\n if (!panel._openTransitionStarted) {\n // eslint-disable-next-line\n animate = false;\n }\n\n function transitionEnd() {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else if ($el.hasClass('panel-in')) {\n panel.onOpened();\n }\n panel.setStateClasses('after-closing');\n }\n if (animate) {\n transitionEndTarget.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n } else {\n $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n panel.onClosed();\n }\n\n return panel;\n }\n\n init() {\n const panel = this;\n // const app = panel.app;\n if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n panel.setVisibleBreakpoint();\n }\n if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n panel.setCollapsedBreakpoint();\n }\n if (panel.params.swipe) {\n panel.enableSwipe();\n }\n if (panel.resizable) {\n panel.enableResizable();\n }\n }\n\n destroy() {\n let panel = this;\n const app = panel.app;\n const { $containerEl } = panel;\n\n if (!panel.$el) {\n // Panel already destroyed\n return;\n }\n\n panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n panel.$el.trigger('panel:beforedestroy');\n\n if (panel.visibleBreakpointResizeHandler) {\n app.off('resize', panel.visibleBreakpointResizeHandler);\n }\n if (panel.collapsedBreakpointResizeHandler) {\n app.off('resize', panel.collapsedBreakpointResizeHandler);\n }\n if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n $viewEl.css({\n [`margin-${panel.side}`]: '',\n });\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n\n panel.$el.trigger('panel:destroy');\n panel.emit('local::destroy panelDestroy', panel);\n if (panel.el) {\n panel.el.f7Panel = null;\n delete panel.el.f7Panel;\n }\n deleteProps(panel);\n\n panel = null;\n }\n}\n\nexport default Panel;\n","import $ from '../../shared/dom7.js';\nimport { extend, now, nextFrame } from '../../shared/utils.js';\n\nfunction swipePanel(panel) {\n const app = panel.app;\n if (panel.swipeInitialized) {\n return;\n }\n extend(panel, {\n swipeable: true,\n swipeInitialized: true,\n });\n const params = panel.params;\n const { $el, $backdropEl, side, effect } = panel;\n let otherPanel;\n\n let isTouched;\n let isGestureStarted;\n let isMoved;\n let isScrolling;\n let isInterrupted;\n const touchesStart = {};\n let touchStartTime;\n let touchesDiff;\n let translate;\n let backdropOpacity;\n let panelWidth;\n let direction;\n\n let $viewEl;\n\n let touchMoves = 0;\n function handleTouchStart(e) {\n if (!panel.swipeable || isGestureStarted) return;\n if (!app.panel.allowOpen || (!params.swipe && !params.swipeOnlyClose) || isTouched) return;\n if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n const otherPanelOpened =\n otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n if (!panel.opened && otherPanelOpened) {\n return;\n }\n if (!params.swipeOnlyClose) {\n if (otherPanelOpened) return;\n }\n if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range')\n return;\n if (\n $(e.target).closest(\n '.range-slider, swiper-container.tabs, .calendar-months, .no-swipe-panel, .card-opened',\n ).length > 0\n )\n return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (params.swipeOnlyClose && !panel.opened) {\n return;\n }\n if (params.swipeActiveArea && !panel.opened) {\n if (side === 'left') {\n if (touchesStart.x > params.swipeActiveArea) return;\n }\n if (side === 'right') {\n if (touchesStart.x < app.width - params.swipeActiveArea) return;\n }\n }\n touchMoves = 0;\n $viewEl = $(panel.getViewEl());\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n isInterrupted = false;\n\n touchStartTime = now();\n direction = undefined;\n }\n function handleTouchMove(e) {\n if (!isTouched || isGestureStarted || isInterrupted) return;\n touchMoves += 1;\n if (touchMoves < 2) return;\n if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n isTouched = false;\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n );\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!direction) {\n if (pageX > touchesStart.x) {\n direction = 'to-right';\n } else {\n direction = 'to-left';\n }\n\n if (params.swipeActiveArea > 0 && !panel.opened) {\n if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n }\n if ($el.hasClass('panel-in-breakpoint')) {\n isTouched = false;\n return;\n }\n\n if (\n (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in')) ||\n (side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in'))\n ) {\n isTouched = false;\n return;\n }\n }\n\n let threshold = panel.opened ? 0 : -params.swipeThreshold;\n if (side === 'right') threshold = -threshold;\n\n if (!isMoved) {\n if (!panel.opened) {\n panel.insertToRoot();\n $el.addClass('panel-in-swipe');\n if ($backdropEl) $backdropEl.css('visibility', 'visible');\n $el.trigger('panel:swipeopen');\n panel.emit('local::swipeOpen panelSwipeOpen', panel);\n }\n panelWidth = $el[0].offsetWidth;\n if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n }\n $el.transition(0);\n }\n\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n\n touchesDiff = pageX - touchesStart.x + threshold;\n\n const startTranslate = effect === 'floating' ? 8 : 0;\n if (side === 'right') {\n if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n translate = touchesDiff + (panel.opened ? startTranslate : panelWidth);\n if (translate < 0 - startTranslate) translate = -startTranslate;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n } else {\n translate = touchesDiff - (panel.opened ? panelWidth : 0);\n if (translate > 0) translate = 0;\n if (translate < -panelWidth) {\n translate = -panelWidth;\n }\n }\n } else {\n translate = touchesDiff + (panel.opened ? panelWidth : startTranslate);\n if (translate < 0) translate = 0;\n if (translate > panelWidth + startTranslate) {\n translate = panelWidth + startTranslate;\n }\n }\n const noFollowProgress = Math.abs(translate / panelWidth);\n if (effect === 'reveal') {\n if (!params.swipeNoFollow) {\n $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if ($backdropEl) $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n }\n\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n } else {\n if (side === 'left') translate -= panelWidth;\n if (!params.swipeNoFollow) {\n backdropOpacity = 1 - Math.abs(translate / panelWidth);\n if ($backdropEl) {\n $backdropEl.transition(0);\n $backdropEl.css({ opacity: backdropOpacity });\n }\n\n $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if (effect === 'push') {\n const viewTranslate = side === 'left' ? translate + panelWidth : translate - panelWidth;\n $viewEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n }\n }\n }\n\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n }\n\n if (params.swipeNoFollow) {\n const stateChanged =\n (panel.opened && noFollowProgress === 0) || (!panel.opened && noFollowProgress === 1);\n if (stateChanged) {\n isInterrupted = true;\n // eslint-disable-next-line\n handleTouchEnd(e);\n }\n }\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n const isGesture = e.type === 'gesturestart' || isGestureStarted;\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n let action;\n const startTranslate = effect === 'floating' ? (side === 'left' ? 8 : -8) : 0;\n const edge =\n (translate === startTranslate || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n const threshold = params.swipeThreshold || 0;\n if (isGesture) {\n action = 'reset';\n } else if (!panel.opened) {\n if (Math.abs(touchesDiff) < threshold) {\n action = 'reset';\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0 + startTranslate) {\n action = 'swap'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'swap'; // open\n } else {\n action = 'reset'; // close\n }\n } else if (translate === 0) {\n action = 'reset';\n } else if (\n (timeDiff < 300 && Math.abs(translate) > 0) ||\n (timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2)\n ) {\n action = 'swap';\n } else {\n action = 'reset';\n }\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0) {\n action = 'reset'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'reset'; // open\n } else {\n action = 'swap'; // close\n }\n } else if (translate === -panelWidth) {\n action = 'reset';\n } else if (\n (timeDiff < 300 && Math.abs(translate) >= 0) ||\n (timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2)\n ) {\n if (side === 'left' && translate === panelWidth) action = 'reset';\n else action = 'swap';\n } else {\n action = 'reset';\n }\n if (action === 'swap') {\n if (panel.opened) {\n panel.close(!edge);\n } else {\n panel.open(!edge);\n }\n }\n let removePanelInClass = true;\n if (action === 'reset') {\n if (!panel.opened) {\n if (edge) {\n // edge position\n $el.removeClass('panel-in-swipe');\n } else {\n removePanelInClass = false;\n const target = effect === 'reveal' ? $viewEl : $el;\n panel.setStateClasses('before-closing');\n target.transitionEnd(() => {\n if ($el.hasClass('panel-in')) return;\n $el.removeClass('panel-in-swipe');\n panel.setStateClasses('after-closing');\n });\n }\n }\n }\n if (effect === 'reveal' || effect === 'push') {\n nextFrame(() => {\n $viewEl.transition('');\n $viewEl.transform('');\n });\n }\n if (removePanelInClass) {\n $el.removeClass('panel-in-swipe');\n }\n $el.transition('').transform('');\n if ($backdropEl) {\n $backdropEl.transform('').transition('').css({ opacity: '', visibility: '' });\n }\n }\n function handleGestureStart(e) {\n isGestureStarted = true;\n handleTouchEnd(e);\n }\n function handleGestureEnd() {\n isGestureStarted = false;\n }\n\n // Add Events\n app.on('touchstart:passive', handleTouchStart);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('gesturestart', handleGestureStart);\n app.on('gestureend', handleGestureEnd);\n panel.on('panelDestroy', () => {\n app.off('touchstart:passive', handleTouchStart);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('gesturestart', handleGestureStart);\n app.off('gestureend', handleGestureEnd);\n });\n}\n\nexport default swipePanel;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Panel from './panel-class.js';\n\nexport default {\n name: 'panel',\n params: {\n panel: {\n opened: undefined, // default based on panel-in class\n side: undefined, // default based on panel class\n effect: undefined, // default based on panel class\n resizable: undefined, // default based on panel-resizable class\n backdrop: true,\n backdropEl: undefined,\n visibleBreakpoint: undefined,\n collapsedBreakpoint: undefined,\n swipe: false, // or true\n swipeNoFollow: false, // or true\n swipeOnlyClose: false,\n swipeActiveArea: 0,\n swipeThreshold: 0,\n closeByBackdropClick: true,\n containerEl: undefined,\n },\n },\n static: {\n Panel,\n },\n create() {\n const app = this;\n extend(app, {\n panel: {\n allowOpen: true,\n create(params) {\n return new Panel(app, params);\n },\n get(el = '.panel') {\n if (el instanceof Panel) return el;\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n const $el = $(el);\n if ($el.length === 0 || $el.length > 1) return undefined;\n return $el[0].f7Panel;\n },\n destroy(el = '.panel') {\n const panel = app.panel.get(el);\n if (panel && panel.destroy) return panel.destroy();\n return undefined;\n },\n open(el = '.panel', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.open(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.open(animate);\n }\n return undefined;\n },\n close(el = '.panel-in', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.close(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.close(animate);\n }\n return undefined;\n },\n toggle(el = '.panel', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.toggle) return panel.toggle(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.toggle(animate);\n }\n return undefined;\n },\n },\n });\n },\n on: {\n init() {\n const app = this;\n $('.panel-init').each((panelEl) => {\n const params = Object.assign({ el: panelEl }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.panel-init').each((panelEl) => {\n const params = Object.assign({ el: panelEl }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.panel-init').each((panelEl) => {\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n });\n },\n },\n vnode: {\n 'panel-init': {\n insert(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const params = Object.assign({ el: panelEl }, $(panelEl).dataset() || {});\n app.panel.create(params);\n },\n destroy(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n },\n },\n },\n clicks: {\n '.panel-open': function open(clickedEl, data = {}) {\n const app = this;\n app.panel.open(data.panel, data.animate);\n },\n '.panel-close': function close(clickedEl, data = {}) {\n const app = this;\n app.panel.close(data.panel, data.animate);\n },\n '.panel-toggle': function close(clickedEl, data = {}) {\n const app = this;\n app.panel.toggle(data.panel, data.animate);\n },\n '.panel-backdrop': function close() {\n const app = this;\n const $panelEl = $('.panel-in:not(.panel-out)');\n if (!$panelEl.length) return;\n const instance = $panelEl[0] && $panelEl[0].f7Panel;\n $panelEl.trigger('panel:backdrop-click');\n if (instance) {\n instance.emit('backdropClick', instance);\n }\n app.emit('panelBackdropClick', instance || $panelEl[0]);\n if (instance && instance.params.closeByBackdropClick === false) return;\n if (app.params.panel.closeByBackdropClick) app.panel.close();\n },\n },\n};\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport $ from '../../shared/dom7.js';\n\nconst CardExpandable = {\n open(cardEl = '.card-expandable', animate = true) {\n const app = this;\n const device = getDevice();\n const document = getDocument();\n const support = getSupport();\n\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if (\n $cardEl.hasClass('card-opened') ||\n $cardEl.hasClass('card-opening') ||\n $cardEl.hasClass('card-closing')\n )\n return;\n\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n\n if ($pageEl.find('.card-opened').length) {\n return;\n }\n\n let prevented;\n\n function prevent() {\n prevented = true;\n }\n\n $cardEl.trigger('card:beforeopen', { prevent });\n app.emit('cardBeforeOpen', $cardEl[0], prevent);\n\n if (prevented) return;\n\n const cardParams = Object.assign({ animate }, app.params.card, $cardEl.dataset());\n\n const $pageContentEl = $cardEl.parents('.page-content');\n\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (!$backdropEl && cardParams.backdrop) {\n $backdropEl = $pageContentEl.find('.card-backdrop');\n if (!$backdropEl.length) {\n $backdropEl = $('<div class=\"card-backdrop\"></div>');\n $pageContentEl.append($backdropEl);\n }\n }\n\n let $navbarEl;\n let $toolbarEl;\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n }\n\n const currTransform = $cardEl.css('transform');\n let hasTransform;\n if (currTransform && currTransform.match(/[2-9]/)) {\n hasTransform = true;\n }\n const $cardContentEl = $cardEl.children('.card-content');\n\n const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n $cardEl.append($cardSizeEl);\n\n let cardWidth = $cardEl[0].offsetWidth;\n let cardHeight = $cardEl[0].offsetHeight;\n let pageWidth = $pageEl[0].offsetWidth;\n let pageHeight = $pageEl[0].offsetHeight;\n\n let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n\n let statusbarHeight;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n\n let scaleX = maxWidth / cardWidth;\n let scaleY = maxHeight / cardHeight;\n\n let offset = $cardEl.offset();\n let pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n\n let cardLeftOffset;\n let cardTopOffset;\n\n if (hasTransform) {\n const transformValues = currTransform\n .replace(/matrix\\(|\\)/g, '')\n .split(',')\n .map((el) => el.trim());\n if (transformValues && transformValues.length > 1) {\n const scale = parseFloat(transformValues[0]);\n cardLeftOffset = offset.left - (cardWidth * (1 - scale)) / 2;\n cardTopOffset = offset.top - pageOffset.top - (cardHeight * (1 - scale)) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n } else {\n cardLeftOffset = $cardEl[0].offsetLeft;\n cardTopOffset =\n $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n }\n } else {\n cardLeftOffset = offset.left;\n cardTopOffset = offset.top - pageOffset.top;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n }\n\n cardLeftOffset -= (pageWidth - maxWidth) / 2;\n cardTopOffset -= (pageHeight - maxHeight) / 2;\n\n let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n let translateX = (cardRightOffset - cardLeftOffset) / 2;\n let translateY = (cardBottomOffset - cardTopOffset) / 2;\n if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n if ($navbarEl.closest('.navbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepNavbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepNavbarOnClose;\n app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);\n }\n }\n if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n if ($toolbarEl.closest('.toolbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepToolbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepToolbarOnClose;\n app.toolbar.hide($toolbarEl, cardParams.animate);\n }\n }\n if ($backdropEl) {\n $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n }\n $cardEl.removeClass('card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-opening');\n }\n $cardEl.trigger('card:open');\n app.emit('cardOpen', $cardEl[0]);\n function transitionEnd() {\n $pageEl.addClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n $cardEl.addClass('card-opened');\n $cardEl.removeClass('card-opening');\n $cardEl.trigger('card:opened');\n app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n }\n $cardContentEl\n .css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`,\n })\n .transform(\n `translate3d(${\n app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX\n }px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`,\n );\n\n $cardEl.transform(\n `translate3d(${\n app.rtl ? -translateX : translateX\n }px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`,\n );\n if (cardParams.animate) {\n $cardEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n\n function onResize() {\n $cardEl.removeClass('card-transitioning');\n cardWidth = $cardEl[0].offsetWidth;\n cardHeight = $cardEl[0].offsetHeight;\n pageWidth = $pageEl[0].offsetWidth;\n pageHeight = $pageEl[0].offsetHeight;\n maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n\n statusbarHeight = 0;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n\n scaleX = maxWidth / cardWidth;\n scaleY = maxHeight / cardHeight;\n\n $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n offset = $cardEl.offset();\n pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n offset.top -= pageOffset.top;\n\n cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n\n cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n translateX = (cardRightOffset - cardLeftOffset) / 2;\n translateY = (cardBottomOffset - cardTopOffset) / 2;\n\n $cardEl.transform(\n `translate3d(${\n app.rtl ? -translateX : translateX\n }px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`,\n );\n $cardContentEl\n .css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`,\n })\n .transform(\n `translate3d(${\n app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX\n }px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`,\n );\n }\n\n let cardScrollTop;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchEndX;\n let touchEndY;\n let isScrolling;\n let progress;\n let isV;\n let isH;\n let $cardScrollableEl;\n function onTouchStart(e) {\n if (!$(e.target).closest($cardEl).length || !e.isTrusted) return;\n if (!$cardEl.hasClass('card-opened')) return;\n $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n\n if (\n $cardScrollableEl[0] &&\n $cardScrollableEl[0] !== $cardContentEl[0] &&\n !$cardScrollableEl[0].contains(e.target)\n ) {\n cardScrollTop = 0;\n } else {\n cardScrollTop = $cardScrollableEl.scrollTop();\n }\n isTouched = true;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isScrolling = undefined;\n isV = false;\n isH = false;\n }\n function onTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n touchEndX = e.targetTouches[0].pageX;\n touchEndY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX)\n );\n }\n if (!isH && !isV) {\n if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n isH = true;\n } else {\n isV = true;\n }\n }\n\n if (!(isH || isV) || (isV && cardScrollTop !== 0)) {\n isTouched = true;\n isMoved = true;\n return;\n }\n if (!isMoved) {\n $cardEl.removeClass('card-transitioning');\n }\n\n isMoved = true;\n progress = isV\n ? Math.max((touchEndY - touchStartY) / 150, 0)\n : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n if ((progress > 0 && isV) || isH) {\n if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n $cardScrollableEl.scrollTop(0);\n }\n e.preventDefault();\n }\n\n if (progress > 1) progress **= 0.3;\n if (progress > (isV ? 1.3 : 1.1)) {\n isTouched = false;\n isMoved = false;\n app.card.close($cardEl);\n } else {\n $cardEl.transform(\n `translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${\n scaleX * (1 - progress * 0.2)\n }, ${scaleY * (1 - progress * 0.2)})`,\n );\n }\n }\n function onTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) return;\n isTouched = false;\n isMoved = false;\n if (device.ios) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n }\n if (progress >= 0.8) {\n app.card.close($cardEl);\n } else {\n $cardEl\n .addClass('card-transitioning')\n .transform(\n `translate3d(${\n app.rtl ? -translateX : translateX\n }px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`,\n );\n }\n }\n\n $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n app.off('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.off('touchstart:passive', onTouchStart);\n app.off('touchmove:active', onTouchMove);\n app.off('touchend:passive', onTouchEnd);\n }\n };\n\n app.on('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n },\n close(cardEl = '.card-expandable.card-opened', animate = true) {\n const app = this;\n const device = getDevice();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if (\n !$cardEl.hasClass('card-opened') ||\n $cardEl.hasClass('card-opening') ||\n $cardEl.hasClass('card-closing')\n )\n return;\n\n const $cardContentEl = $cardEl.children('.card-content');\n const $pageContentEl = $cardEl.parents('.page-content');\n\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n\n const cardParams = Object.assign({ animate }, app.params.card, $cardEl.dataset());\n const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n\n let $navbarEl;\n let $toolbarEl;\n\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (cardParams.backdrop) {\n $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n }\n\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n app.navbar.show($navbarEl, cardParams.animate, true);\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n app.toolbar.show($toolbarEl, cardParams.animate);\n }\n }\n\n $pageEl.removeClass('page-with-card-opened');\n\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n }\n\n $cardEl.removeClass('card-opened card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-closing');\n } else {\n $cardEl.addClass('card-no-transition');\n }\n $cardEl.transform('');\n $cardEl.trigger('card:close');\n app.emit('cardClose', $cardEl[0], $pageEl[0]);\n\n const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n\n function transitionEnd() {\n if (!animateWidth) {\n $cardContentEl.css({\n width: '',\n height: '',\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n }\n $cardEl.removeClass('card-closing card-no-transition');\n $cardEl.trigger('card:closed');\n $cardEl.find('.card-expandable-size').remove();\n app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n }\n if (animateWidth) {\n $cardContentEl.css({\n width: '',\n height: '',\n });\n }\n\n $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);\n if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n }\n if (animate) {\n $cardContentEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n\n if ($cardEl[0].detachEventHandlers) {\n $cardEl[0].detachEventHandlers();\n delete $cardEl[0].detachEventHandlers;\n }\n },\n toggle(cardEl = '.card-expandable', animate) {\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl.length) return;\n if ($cardEl.hasClass('card-opened')) {\n app.card.close($cardEl, animate);\n } else {\n app.card.open($cardEl, animate);\n }\n },\n};\n\nexport default {\n name: 'card',\n params: {\n card: {\n hideNavbarOnOpen: true,\n hideStatusbarOnOpen: true,\n hideToolbarOnOpen: true,\n scrollableEl: '.card-content',\n swipeToClose: true,\n closeByBackdropClick: true,\n backdrop: true,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n card: CardExpandable,\n });\n },\n on: {\n pageBeforeIn(page) {\n const app = this;\n if (\n app.params.card.hideNavbarOnOpen &&\n page.navbarEl &&\n page.$el.find('.card-opened.card-expandable').length\n ) {\n app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);\n }\n\n if (\n app.params.card.hideToolbarOnOpen &&\n page.$el.find('.card-opened.card-expandable').length\n ) {\n let $toolbarEl = page.$el.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length) {\n app.toolbar.hide($toolbarEl);\n }\n }\n },\n },\n clicks: {\n '.card-close': function closeCard($clickedEl, data) {\n const app = this;\n app.card.close(data.card, data.animate);\n },\n '.card-open': function closeCard($clickedEl, data) {\n const app = this;\n app.card.open(data.card, data.animate);\n },\n '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n const app = this;\n if (\n $clickedEl.hasClass('card-opened') ||\n $clickedEl.hasClass('card-opening') ||\n $clickedEl.hasClass('card-closing')\n )\n return;\n if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n app.card.open($clickedEl);\n },\n '.card-backdrop-in': function onBackdropClick() {\n const app = this;\n let needToClose = false;\n if (app.params.card.closeByBackdropClick) needToClose = true;\n const $openedCardEl = $('.card-opened');\n if (!$openedCardEl.length) return;\n if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n needToClose = true;\n } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n needToClose = false;\n }\n if (needToClose) app.card.close($openedCardEl);\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, serializeObject } from '../../shared/utils.js';\n\n// Form Data\nconst FormData = {\n store(form, data) {\n const app = this;\n const window = getWindow();\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n // Store form data in app.formsData\n app.form.data[`form-${formId}`] = data;\n\n // Store form data in local storage also\n window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n },\n get(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n if (window.localStorage[`f7form-${formId}`]) {\n return JSON.parse(window.localStorage[`f7form-${formId}`]);\n }\n if (app.form.data[`form-${formId}`]) {\n return app.form.data[`form-${formId}`];\n }\n return undefined;\n },\n remove(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n // Delete form data from app.formsData\n if (app.form.data[`form-${formId}`]) {\n app.form.data[`form-${formId}`] = '';\n delete app.form.data[`form-${formId}`];\n }\n\n // Delete form data from local storage also\n if (window.localStorage[`f7form-${formId}`]) {\n window.localStorage[`f7form-${formId}`] = '';\n window.localStorage.removeItem(`f7form-${formId}`);\n }\n },\n};\n\n// Form Storage\nconst FormStorage = {\n init(formEl) {\n const app = this;\n const $formEl = $(formEl);\n const formId = $formEl.attr('id');\n if (!formId) return;\n const initialData = app.form.getFormData(formId);\n if (initialData) {\n app.form.fillFromData($formEl, initialData);\n }\n function store() {\n const data = app.form.convertToData($formEl);\n if (!data) return;\n app.form.storeFormData(formId, data);\n $formEl.trigger('form:storedata', data);\n app.emit('formStoreData', $formEl[0], data);\n }\n $formEl.on('change submit', store);\n },\n destroy(formEl) {\n const $formEl = $(formEl);\n $formEl.off('change submit');\n },\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if ($formEl.length === 0) return undefined;\n\n // Form data\n const data = {};\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each((inputEl) => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`select[name=\"${name}\"] option`).each((el) => {\n if (el.selected) data[name].push(el.value);\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`input[name=\"${name}\"]`).each((el) => {\n if (el.checked) data[name].push(el.value);\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((el) => {\n if (el.checked) data[name] = el.value;\n });\n break;\n default:\n data[name] = $inputEl.val();\n break;\n }\n }\n });\n $formEl.trigger('form:todata', data);\n app.emit('formToData', $formEl[0], data);\n\n return data;\n}\nfunction formFromData(formEl, formData) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if (!$formEl.length) return;\n\n let data = formData;\n const formId = $formEl.attr('id');\n\n if (!data && formId) {\n data = app.form.getFormData(formId);\n }\n\n if (!data) return;\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n\n $formEl.find('input, select, textarea').each((inputEl) => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (typeof data[name] === 'undefined' || data[name] === null) return;\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n $formEl.find(`select[name=\"${name}\"] option`).each((el) => {\n const selectEl = el;\n if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;\n else selectEl.selected = false;\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((el) => {\n const checkboxEl = el;\n if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;\n else checkboxEl.checked = false;\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((el) => {\n const radioEl = el;\n if (data[name] === el.value) radioEl.checked = true;\n else radioEl.checked = false;\n });\n break;\n default:\n $inputEl.val(data[name]);\n break;\n }\n }\n if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n $inputEl.trigger('change', 'fromdata');\n }\n });\n $formEl.trigger('form:fromdata', data);\n app.emit('formFromData', $formEl[0], data);\n}\n\nfunction initAjaxForm() {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n\n function onSubmitChange(e, fromData) {\n const $formEl = $(this);\n if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n if (e.type === 'submit') e.preventDefault();\n\n if (e.type === 'change' && fromData === 'fromdata') return;\n\n const method = ($formEl.attr('method') || 'GET').toUpperCase();\n const contentType = $formEl.attr('enctype') || $formEl.prop('enctype');\n\n let url = $formEl.attr('action');\n if (!url) return;\n\n let data;\n if (method === 'POST') {\n if (\n contentType === 'application/x-www-form-urlencoded' ||\n contentType === 'application/json'\n ) {\n data = app.form.convertToData($formEl[0]);\n if (contentType === 'application/json') {\n data = JSON.stringify(data);\n }\n } else {\n data = new window.FormData($formEl[0]);\n }\n } else {\n data = serializeObject(app.form.convertToData($formEl[0]));\n if (url.includes('?')) {\n url += `&${data}`;\n } else {\n url += `?${data}`;\n }\n }\n\n $formEl.trigger('formajax:beforesend', { data });\n app.emit('formAjaxBeforeSend', $formEl[0], data);\n\n fetch(url, {\n method,\n headers: { 'Content-Type': contentType || 'application/x-www-form-urlencoded' },\n ...(method === 'POST' || method === 'PUT' ? { body: data } : {}),\n })\n .then((response) => {\n $formEl.trigger('formajax:complete', { data, response });\n app.emit('formAjaxComplete', $formEl[0], data, response);\n\n $formEl.trigger('formajax:success', { data, response });\n app.emit('formAjaxSuccess', $formEl[0], data, response);\n })\n .catch((error) => {\n $formEl.trigger('formajax:error', { data, error });\n app.emit('formAjaxError', $formEl[0], data, error);\n });\n }\n $(document).on(\n 'submit change',\n 'form.form-ajax-submit, form.form-ajax-submit-onchange',\n onSubmitChange,\n );\n}\n\nexport default {\n name: 'form',\n create() {\n const app = this;\n extend(app, {\n form: {\n data: {},\n storeFormData: FormData.store.bind(app),\n getFormData: FormData.get.bind(app),\n removeFormData: FormData.remove.bind(app),\n convertToData: formToData.bind(app),\n fillFromData: formFromData.bind(app),\n storage: {\n init: FormStorage.init.bind(app),\n destroy: FormStorage.destroy.bind(app),\n },\n },\n });\n },\n on: {\n init() {\n const app = this;\n initAjaxForm.call(app);\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl)\n .find('.form-store-data')\n .each((formEl) => {\n app.form.storage.destroy(formEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.form-store-data')\n .each((formEl) => {\n app.form.storage.init(formEl);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.form-store-data').each((formEl) => {\n app.form.storage.destroy(formEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.form-store-data').each((formEl) => {\n app.form.storage.init(formEl);\n });\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst Input = {\n ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n createTextareaResizableShadow() {\n const document = getDocument();\n const $shadowEl = $(document.createElement('textarea'));\n $shadowEl.addClass('textarea-resizable-shadow');\n $shadowEl.prop({\n disabled: true,\n readonly: true,\n });\n Input.textareaResizableShadow = $shadowEl;\n },\n textareaResizableShadow: undefined,\n resizeTextarea(textareaEl) {\n const app = this;\n const window = getWindow();\n const $textareaEl = $(textareaEl);\n if (!Input.textareaResizableShadow) {\n Input.createTextareaResizableShadow();\n }\n const $shadowEl = Input.textareaResizableShadow;\n if (!$textareaEl.length) return;\n if (!$textareaEl.hasClass('resizable')) return;\n if (Input.textareaResizableShadow.parents().length === 0) {\n app.$el.append($shadowEl);\n }\n\n const styles = window.getComputedStyle($textareaEl[0]);\n 'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'\n .split(' ')\n .forEach((style) => {\n let styleValue = styles[style];\n if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {\n styleValue = styleValue.replace(',', '.');\n }\n $shadowEl.css(style, styleValue);\n });\n const currentHeight = $textareaEl[0].clientHeight;\n\n $shadowEl.val('');\n const initialHeight = $shadowEl[0].scrollHeight;\n\n $shadowEl.val($textareaEl.val());\n $shadowEl.css('height', 0);\n const scrollHeight = $shadowEl[0].scrollHeight;\n\n if (currentHeight !== scrollHeight) {\n if (scrollHeight > initialHeight) {\n $textareaEl.css('height', `${scrollHeight}px`);\n } else if (scrollHeight < currentHeight) {\n $textareaEl.css('height', '');\n }\n if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n $textareaEl.trigger('textarea:resize', { initialHeight, currentHeight, scrollHeight });\n app.emit('textareaResize', { initialHeight, currentHeight, scrollHeight });\n }\n }\n },\n validate(inputEl) {\n const $inputEl = $(inputEl);\n if (!$inputEl.length) return true;\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n function unsetReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = false;\n }\n }\n function setReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = true;\n }\n }\n unsetReadonly();\n const validity = $inputEl[0].validity;\n const validationMessage =\n $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n if (!validity) {\n setReadonly();\n return true;\n }\n if (!validity.valid) {\n let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n if (validationMessage) {\n if ($errorEl.length === 0) {\n $errorEl = $(\n `<div class=\"${\n $inputWrapEl.length ? 'input-error-message' : 'item-input-error-message'\n }\"></div>`,\n );\n $errorEl.insertAfter($inputEl);\n }\n $errorEl.text(validationMessage);\n }\n if ($errorEl.length > 0) {\n $itemInputEl.addClass('item-input-with-error-message');\n $inputWrapEl.addClass('input-with-error-message');\n }\n $itemInputEl.addClass('item-input-invalid');\n $inputWrapEl.addClass('input-invalid');\n $inputEl.addClass('input-invalid');\n setReadonly();\n return false;\n }\n $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n $inputWrapEl.removeClass('input-invalid input-with-error-message');\n $inputEl.removeClass('input-invalid');\n setReadonly();\n return true;\n },\n validateInputs(el) {\n const app = this;\n const validates = $(el)\n .find('input, textarea, select')\n .map((inputEl) => app.input.validate(inputEl));\n return validates.indexOf(false) < 0;\n },\n focus(inputEl) {\n const $inputEl = $(inputEl);\n const type = $inputEl.attr('type');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n $inputEl.parents('.item-input').addClass('item-input-focused');\n $inputEl.parents('.input').addClass('input-focused');\n $inputEl.addClass('input-focused');\n },\n blur(inputEl) {\n const $inputEl = $(inputEl);\n $inputEl.parents('.item-input').removeClass('item-input-focused');\n $inputEl.parents('.input').removeClass('input-focused');\n $inputEl.removeClass('input-focused');\n },\n checkEmptyState(inputEl) {\n const app = this;\n let $inputEl = $(inputEl);\n if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n }\n if (!$inputEl.length) return;\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n let value;\n if (isContentEditable) {\n if ($inputEl.find('.text-editor-placeholder').length) value = '';\n else value = $inputEl.html();\n } else {\n value = $inputEl.val();\n }\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n if (\n (value && typeof value === 'string' && value.trim() !== '') ||\n (Array.isArray(value) && value.length > 0)\n ) {\n $itemInputEl.addClass('item-input-with-value');\n $inputWrapEl.addClass('input-with-value');\n $inputEl.addClass('input-with-value');\n $inputEl.trigger('input:notempty');\n app.emit('inputNotEmpty', $inputEl[0]);\n } else {\n $itemInputEl.removeClass('item-input-with-value');\n $inputWrapEl.removeClass('input-with-value');\n $inputEl.removeClass('input-with-value');\n $inputEl.trigger('input:empty');\n app.emit('inputEmpty', $inputEl[0]);\n }\n },\n scrollIntoView(inputEl, duration = 0, centered, force) {\n const $inputEl = $(inputEl);\n const $scrollableEl = $inputEl\n .parents('.page-content, .panel, .card-expandable .card-content')\n .eq(0);\n if (!$scrollableEl.length) {\n return false;\n }\n const contentHeight = $scrollableEl[0].offsetHeight;\n const contentScrollTop = $scrollableEl[0].scrollTop;\n const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n\n const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n const inputHeight = $inputEl[0].offsetHeight;\n\n const min = inputOffsetTop + contentScrollTop - contentPaddingTop;\n const max =\n inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;\n const centeredPosition = min + (max - min) / 2;\n\n if (contentScrollTop > min) {\n $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n return true;\n }\n if (contentScrollTop < max) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n return true;\n }\n if (force) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n }\n return false;\n },\n init() {\n const app = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n Input.createTextareaResizableShadow();\n function onFocus() {\n const inputEl = this;\n if (app.params.input.scrollIntoViewOnFocus) {\n if (device.android) {\n $(window).once('resize', () => {\n if (document && document.activeElement === inputEl) {\n app.input.scrollIntoView(\n inputEl,\n app.params.input.scrollIntoViewDuration,\n app.params.input.scrollIntoViewCentered,\n app.params.input.scrollIntoViewAlways,\n );\n }\n });\n } else {\n app.input.scrollIntoView(\n inputEl,\n app.params.input.scrollIntoViewDuration,\n app.params.input.scrollIntoViewCentered,\n app.params.input.scrollIntoViewAlways,\n );\n }\n }\n app.input.focus(inputEl);\n }\n function onBlur() {\n const $inputEl = $(this);\n const tag = $inputEl[0].nodeName.toLowerCase();\n app.input.blur($inputEl);\n if (\n $inputEl.dataset().validate ||\n $inputEl.attr('validate') !== null ||\n $inputEl.attr('data-validate-on-blur') !== null\n ) {\n app.input.validate($inputEl);\n }\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n }\n }\n function onChange() {\n const $inputEl = $(this);\n const type = $inputEl.attr('type');\n const tag = $inputEl[0].nodeName.toLowerCase();\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n // Check Empty State\n app.input.checkEmptyState($inputEl);\n if (isContentEditable) return;\n\n // Check validation\n if (\n $inputEl.attr('data-validate-on-blur') === null &&\n ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)\n ) {\n app.input.validate($inputEl);\n }\n\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n app.input.resizeTextarea($inputEl);\n }\n }\n function onInvalid(e) {\n const $inputEl = $(this);\n if (\n $inputEl.attr('data-validate-on-blur') === null &&\n ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)\n ) {\n e.preventDefault();\n app.input.validate($inputEl);\n }\n }\n function clearInput() {\n const $clicked = $(this);\n const $inputEl = $clicked.siblings('input, textarea').eq(0);\n const previousValue = $inputEl.val();\n $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);\n app.emit('inputClear', previousValue);\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n $(document).on('click', '.input-clear-button', clearInput);\n $(document).on('mousedown', '.input-clear-button', preventDefault);\n $(document).on(\n 'change input',\n 'input, textarea, select, .item-input [contenteditable]',\n onChange,\n true,\n );\n $(document).on(\n 'focus',\n 'input, textarea, select, .item-input [contenteditable]',\n onFocus,\n true,\n );\n $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n },\n};\n\nexport default {\n name: 'input',\n params: {\n input: {\n scrollIntoViewOnFocus: undefined,\n scrollIntoViewCentered: false,\n scrollIntoViewDuration: 0,\n scrollIntoViewAlways: false,\n },\n },\n create() {\n const app = this;\n if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {\n app.params.input.scrollIntoViewOnFocus = getDevice().android;\n }\n bindMethods(app, {\n input: Input,\n });\n },\n on: {\n init() {\n const app = this;\n app.input.init();\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n $tabEl.find('.item-input, .input').each((itemInputEl) => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each((inputEl) => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $tabEl.find('textarea.resizable').each((textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n pageInit(page) {\n const app = this;\n const $pageEl = page.$el;\n $pageEl.find('.item-input, .input').each((itemInputEl) => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each((inputEl) => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $pageEl.find('textarea.resizable').each((textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint':\n function onPanelOpen(instance) {\n const app = this;\n if (instance && instance.$el) {\n instance.$el.find('textarea.resizable').each((textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n } else {\n $('textarea.resizable').each((textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n }\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nclass Toggle extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const toggle = this;\n const support = getSupport();\n\n const defaults = {};\n\n // Extend defaults with modules params\n toggle.useModulesParams(defaults);\n\n toggle.params = extend(defaults, params);\n\n const el = toggle.params.el;\n if (!el) return toggle;\n\n const $el = $(el);\n if ($el.length === 0) return toggle;\n\n if ($el[0].f7Toggle) return $el[0].f7Toggle;\n\n const $inputEl = $el.children('input[type=\"checkbox\"]');\n\n extend(toggle, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl[0],\n disabled:\n $el.hasClass('disabled') ||\n $inputEl.hasClass('disabled') ||\n $inputEl.attr('disabled') ||\n $inputEl[0].disabled,\n });\n\n Object.defineProperty(toggle, 'checked', {\n enumerable: true,\n configurable: true,\n set(checked) {\n if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n if (toggle.checked === checked) return;\n $inputEl[0].checked = checked;\n toggle.$inputEl.trigger('change');\n },\n get() {\n return $inputEl[0].checked;\n },\n });\n\n $el[0].f7Toggle = toggle;\n\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let toggleWidth;\n let touchStartTime;\n let touchStartChecked;\n function handleTouchStart(e) {\n if (isTouched || toggle.disabled) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchesDiff = 0;\n\n isTouched = true;\n isScrolling = undefined;\n touchStartTime = now();\n touchStartChecked = toggle.checked;\n\n toggleWidth = $el[0].offsetWidth;\n nextTick(() => {\n if (isTouched) {\n $el.addClass('toggle-active-state');\n }\n });\n }\n function handleTouchMove(e) {\n if (!isTouched || toggle.disabled) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const inverter = app.rtl ? -1 : 1;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n );\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n let changed;\n if (\n touchesDiff * inverter < 0 &&\n Math.abs(touchesDiff) > toggleWidth / 3 &&\n touchStartChecked\n ) {\n changed = true;\n }\n if (\n touchesDiff * inverter > 0 &&\n Math.abs(touchesDiff) > toggleWidth / 3 &&\n !touchStartChecked\n ) {\n changed = true;\n }\n if (changed) {\n touchesStart.x = pageX;\n toggle.checked = !touchStartChecked;\n touchStartChecked = !touchStartChecked;\n }\n }\n function handleTouchEnd() {\n if (!isTouched || toggle.disabled) {\n if (isScrolling) $el.removeClass('toggle-active-state');\n isTouched = false;\n return;\n }\n const inverter = app.rtl ? -1 : 1;\n isTouched = false;\n\n $el.removeClass('toggle-active-state');\n\n let changed;\n if (now() - touchStartTime < 300) {\n if (touchesDiff * inverter < 0 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n toggle.checked = !touchStartChecked;\n }\n }\n }\n function handleInputChange() {\n toggle.$el.trigger('toggle:change');\n toggle.emit('local::change toggleChange', toggle);\n }\n toggle.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? { passive: true } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n toggle.$inputEl.on('change', handleInputChange);\n };\n toggle.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? { passive: true } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n toggle.$inputEl.off('change', handleInputChange);\n };\n\n // Install Modules\n toggle.useModules();\n\n // Init\n toggle.init();\n }\n\n toggle() {\n const toggle = this;\n toggle.checked = !toggle.checked;\n }\n\n init() {\n const toggle = this;\n toggle.attachEvents();\n }\n\n destroy() {\n let toggle = this;\n toggle.$el.trigger('toggle:beforedestroy');\n toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n delete toggle.$el[0].f7Toggle;\n toggle.detachEvents();\n deleteProps(toggle);\n toggle = null;\n }\n}\n\nexport default Toggle;\n","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Toggle from './toggle-class.js';\n\nexport default {\n name: 'toggle',\n create() {\n const app = this;\n app.toggle = ConstructorMethods({\n defaultSelector: '.toggle',\n constructor: Toggle,\n app,\n domProp: 'f7Toggle',\n });\n },\n static: {\n Toggle,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.toggle-init')\n .each((toggleEl) => app.toggle.create({ el: toggleEl }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.toggle-init')\n .each((toggleEl) => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.toggle-init').each((toggleEl) => app.toggle.create({ el: toggleEl }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.toggle-init').each((toggleEl) => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n },\n vnode: {\n 'toggle-init': {\n insert(vnode) {\n const app = this;\n const toggleEl = vnode.elm;\n app.toggle.create({ el: toggleEl });\n },\n destroy(vnode) {\n const toggleEl = vnode.elm;\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nclass Range extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const range = this;\n const support = getSupport();\n\n const defaults = {\n el: null,\n inputEl: null,\n dual: false,\n step: 1,\n label: false,\n min: 0,\n max: 100,\n value: 0,\n draggableBar: true,\n vertical: false,\n verticalReversed: false,\n formatLabel: null,\n scale: false,\n scaleSteps: 5,\n scaleSubSteps: 0,\n formatScaleLabel: null,\n limitKnobPosition: app.theme === 'ios',\n };\n\n // Extend defaults with modules params\n range.useModulesParams(defaults);\n\n range.params = extend(defaults, params);\n\n const el = range.params.el;\n if (!el) return range;\n\n const $el = $(el);\n if ($el.length === 0) return range;\n\n if ($el[0].f7Range) return $el[0].f7Range;\n\n const dataset = $el.dataset();\n\n 'step min max value scaleSteps scaleSubSteps'.split(' ').forEach((paramName) => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = parseFloat(dataset[paramName]);\n }\n });\n 'dual label vertical verticalReversed scale'.split(' ').forEach((paramName) => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = dataset[paramName];\n }\n });\n\n if (!range.params.value) {\n if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n }\n }\n\n let $inputEl;\n if (!range.params.dual) {\n if (range.params.inputEl) {\n $inputEl = $(range.params.inputEl);\n } else if ($el.find('input[type=\"range\"]').length) {\n $inputEl = $el.find('input[type=\"range\"]').eq(0);\n }\n }\n\n const {\n dual,\n step,\n label,\n min,\n max,\n value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition,\n } = range.params;\n\n extend(range, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n dual,\n step,\n label,\n min,\n max,\n value,\n previousValue: value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition,\n });\n\n if ($inputEl) {\n 'step min max'.split(' ').forEach((paramName) => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n range.params[paramName] = parseFloat($inputEl.attr(paramName));\n range[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n if (typeof $inputEl.val() !== 'undefined') {\n range.params.value = parseFloat($inputEl.val());\n range.value = parseFloat($inputEl.val());\n }\n }\n\n // Dual\n if (range.dual) {\n $el.addClass('range-slider-dual');\n }\n if (range.label) {\n $el.addClass('range-slider-label');\n }\n\n // Vertical\n if (range.vertical) {\n $el.addClass('range-slider-vertical');\n if (range.verticalReversed) {\n $el.addClass('range-slider-vertical-reversed');\n }\n } else {\n $el.addClass('range-slider-horizontal');\n }\n\n // Check for layout\n const $barEl = $('<div class=\"range-bar\"></div>');\n const $barActiveEl = $('<div class=\"range-bar-active\"></div>');\n $barEl.append($barActiveEl);\n\n // Create Knobs\n // prettier-ignore\n const knobHTML = `\n <div class=\"range-knob-wrap\">\n <div class=\"range-knob\"></div>\n ${range.label ? '<div class=\"range-knob-label\"></div>' : ''}\n </div>\n `;\n const knobs = [$(knobHTML)];\n\n if (range.dual) {\n knobs.push($(knobHTML));\n }\n\n $el.append($barEl);\n knobs.forEach(($knobEl) => {\n $el.append($knobEl);\n });\n\n // Labels\n const labels = [];\n if (range.label) {\n labels.push(knobs[0].find('.range-knob-label'));\n if (range.dual) {\n labels.push(knobs[1].find('.range-knob-label'));\n }\n }\n\n // Scale\n let $scaleEl;\n if (range.scale && range.scaleSteps >= 1) {\n $scaleEl = $(`\n <div class=\"range-scale\">\n ${range.renderScale()}\n </div>\n `);\n $el.append($scaleEl);\n }\n\n extend(range, {\n knobs,\n labels,\n $barEl,\n $barActiveEl,\n $scaleEl,\n });\n\n $el[0].f7Range = range;\n\n // Touch Events\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let rangeOffset;\n let rangeOffsetLeft;\n let rangeOffsetTop;\n let $touchedKnobEl;\n let dualValueIndex;\n let valueChangedByTouch;\n let targetTouchIdentifier;\n function onTouchChange() {\n valueChangedByTouch = true;\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n if (!range.params.draggableBar) {\n if ($(e.target).closest('.range-knob').length === 0) {\n return;\n }\n }\n valueChangedByTouch = false;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (e.type === 'touchstart') {\n targetTouchIdentifier = e.targetTouches[0].identifier;\n }\n\n isTouched = true;\n isScrolling = undefined;\n rangeOffset = $el.offset();\n rangeOffsetLeft = rangeOffset.left;\n rangeOffsetTop = rangeOffset.top;\n\n let progress;\n if (range.vertical) {\n progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;\n } else {\n progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n }\n\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n dualValueIndex = 0;\n $touchedKnobEl = range.knobs[0];\n newValue = [newValue, range.value[1]];\n } else {\n dualValueIndex = 1;\n $touchedKnobEl = range.knobs[1];\n newValue = [range.value[0], newValue];\n }\n } else {\n $touchedKnobEl = range.knobs[0];\n newValue = progress * (range.max - range.min) + range.min;\n }\n nextTick(() => {\n if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n }, 70);\n range.on('change', onTouchChange);\n range.setValue(newValue, true);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n if (e.type === 'touchmove') {\n for (let i = 0; i < e.targetTouches.length; i += 1) {\n if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n pageX = e.targetTouches[i].pageX;\n pageY = e.targetTouches[i].pageY;\n }\n }\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n\n if (typeof isScrolling === 'undefined' && !range.vertical) {\n isScrolling = !!(\n isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n );\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n\n let progress;\n if (range.vertical) {\n progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;\n } else {\n progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n }\n\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n let leftValue;\n let rightValue;\n if (dualValueIndex === 0) {\n leftValue = newValue;\n rightValue = range.value[1];\n if (leftValue > rightValue) {\n rightValue = leftValue;\n }\n } else {\n leftValue = range.value[0];\n rightValue = newValue;\n if (rightValue < leftValue) {\n leftValue = rightValue;\n }\n }\n newValue = [leftValue, rightValue];\n }\n range.setValue(newValue, true);\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend') {\n let touchEnded;\n for (let i = 0; i < e.changedTouches.length; i += 1) {\n if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n }\n if (!touchEnded) return;\n }\n if (!isTouched) {\n if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n isTouched = false;\n return;\n }\n range.off('change', onTouchChange);\n isTouched = false;\n $touchedKnobEl.removeClass('range-knob-active-state');\n if (valueChangedByTouch && range.$inputEl && !range.dual) {\n range.$inputEl.trigger('change');\n }\n valueChangedByTouch = false;\n if (typeof range.previousValue !== 'undefined') {\n if (\n (range.dual &&\n (range.previousValue[0] !== range.value[0] ||\n range.previousValue[1] !== range.value[1])) ||\n (!range.dual && range.previousValue !== range.value)\n ) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n }\n }\n\n function handleResize() {\n range.calcSize();\n range.layout();\n }\n let parentModals;\n let parentPanel;\n let parentPage;\n range.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? { passive: true } : false;\n range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('tabShow', handleResize);\n app.on('resize', handleResize);\n parentModals = range.$el.parents(\n '.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast',\n );\n parentModals.on('modal:open', handleResize);\n parentPanel = range.$el.parents('.panel');\n parentPanel.on('panel:open panel:resize', handleResize);\n parentPage = range.$el.parents('.page').eq(0);\n parentPage.on('page:reinit', handleResize);\n };\n range.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? { passive: true } : false;\n range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('tabShow', handleResize);\n app.off('resize', handleResize);\n if (parentModals) {\n parentModals.off('modal:open', handleResize);\n }\n if (parentPanel) {\n parentPanel.off('panel:open panel:resize', handleResize);\n }\n if (parentPage) {\n parentPage.off('page:reinit', handleResize);\n }\n parentModals = null;\n parentPanel = null;\n parentPage = null;\n };\n\n // Install Modules\n range.useModules();\n\n // Init\n range.init();\n\n return range;\n }\n\n calcSize() {\n const range = this;\n if (range.vertical) {\n const height = range.$el.outerHeight();\n if (height === 0) return;\n range.rangeHeight = height;\n range.knobHeight = range.knobs[0].outerHeight();\n } else {\n const width = range.$el.outerWidth();\n if (width === 0) return;\n range.rangeWidth = width;\n range.knobWidth = range.knobs[0].outerWidth();\n }\n }\n\n layout() {\n const range = this;\n const {\n app,\n knobWidth,\n knobHeight,\n rangeWidth,\n rangeHeight,\n min,\n max,\n knobs,\n $barActiveEl,\n value,\n label,\n labels,\n vertical,\n verticalReversed,\n limitKnobPosition,\n } = range;\n const knobSize = vertical ? knobHeight : knobWidth;\n const rangeSize = vertical ? rangeHeight : rangeWidth;\n // eslint-disable-next-line\n const positionProperty = vertical\n ? verticalReversed\n ? 'top'\n : 'bottom'\n : app.rtl\n ? 'right'\n : 'left';\n if (range.dual) {\n const progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];\n $barActiveEl.css({\n [positionProperty]: `${progress[0] * 100}%`,\n [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`,\n });\n knobs.forEach(($knobEl, knobIndex) => {\n let startPos = rangeSize * progress[knobIndex];\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n $knobEl.css(positionProperty, `${startPos}px`);\n if (label)\n labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n });\n } else {\n const progress = (value - min) / (max - min);\n $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n\n let startPos = rangeSize * progress;\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n knobs[0].css(positionProperty, `${startPos}px`);\n if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n }\n if ((range.dual && value.indexOf(min) >= 0) || (!range.dual && value === min)) {\n range.$el.addClass('range-slider-min');\n } else {\n range.$el.removeClass('range-slider-min');\n }\n if ((range.dual && value.indexOf(max) >= 0) || (!range.dual && value === max)) {\n range.$el.addClass('range-slider-max');\n } else {\n range.$el.removeClass('range-slider-max');\n }\n }\n\n setValue(newValue, byTouchMove) {\n const range = this;\n const { step, min, max } = range;\n let valueChanged;\n let oldValue;\n if (range.dual) {\n oldValue = [range.value[0], range.value[1]];\n let newValues = newValue;\n if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n if (newValue[0] > newValue[1]) {\n newValues = [newValues[0], newValues[0]];\n }\n newValues = newValues.map((value) =>\n Math.max(Math.min(Math.round(value / step) * step, max), min),\n );\n if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n return range;\n }\n newValues.forEach((value, valueIndex) => {\n range.value[valueIndex] = value;\n });\n valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n range.layout();\n } else {\n oldValue = range.value;\n const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n range.value = value;\n range.layout();\n valueChanged = oldValue !== value;\n }\n\n if (valueChanged) {\n range.previousValue = oldValue;\n }\n // Events\n if (!valueChanged) return range;\n range.$el.trigger('range:change', range.value);\n if (range.$inputEl && !range.dual) {\n range.$inputEl.val(range.value);\n if (!byTouchMove) {\n range.$inputEl.trigger('input change');\n } else {\n range.$inputEl.trigger('input');\n }\n }\n if (!byTouchMove) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n range.emit('local::change rangeChange', range, range.value);\n return range;\n }\n\n getValue() {\n return this.value;\n }\n\n formatLabel(value, labelEl) {\n const range = this;\n if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n return value;\n }\n\n formatScaleLabel(value) {\n const range = this;\n if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n return value;\n }\n\n renderScale() {\n const range = this;\n const { app, verticalReversed, vertical } = range;\n\n // eslint-disable-next-line\n const positionProperty = vertical\n ? verticalReversed\n ? 'top'\n : 'bottom'\n : app.rtl\n ? 'right'\n : 'left';\n\n let html = '';\n Array.from({ length: range.scaleSteps + 1 }).forEach((scaleEl, index) => {\n const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n const scaleValue = range.min + scaleStepValue * index;\n const progress = (scaleValue - range.min) / (range.max - range.min);\n html += `<div class=\"range-scale-step\" style=\"${positionProperty}: ${\n progress * 100\n }%\">${range.formatScaleLabel(scaleValue)}</div>`;\n\n if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n Array.from({ length: range.scaleSubSteps - 1 }).forEach((subStepEl, subIndex) => {\n const subStep = scaleStepValue / range.scaleSubSteps;\n const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n const subProgress = (scaleSubValue - range.min) / (range.max - range.min);\n html += `<div class=\"range-scale-step range-scale-substep\" style=\"${positionProperty}: ${\n subProgress * 100\n }%\"></div>`;\n });\n }\n });\n\n return html;\n }\n\n updateScale() {\n const range = this;\n if (!range.scale || range.scaleSteps < 1) {\n if (range.$scaleEl) range.$scaleEl.remove();\n delete range.$scaleEl;\n return;\n }\n if (!range.$scaleEl) {\n range.$scaleEl = $('<div class=\"range-scale\"></div>');\n range.$el.append(range.$scaleEl);\n }\n\n range.$scaleEl.html(range.renderScale());\n }\n\n init() {\n const range = this;\n range.calcSize();\n range.layout();\n range.attachEvents();\n return range;\n }\n\n destroy() {\n let range = this;\n range.$el.trigger('range:beforedestroy');\n range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n delete range.$el[0].f7Range;\n range.detachEvents();\n deleteProps(range);\n range = null;\n }\n}\n\nexport default Range;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Range from './range-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'range',\n create() {\n const app = this;\n app.range = extend(\n ConstructorMethods({\n defaultSelector: '.range-slider',\n constructor: Range,\n app,\n domProp: 'f7Range',\n }),\n {\n getValue(el = '.range-slider') {\n const range = app.range.get(el);\n if (range) return range.getValue();\n return undefined;\n },\n setValue(el = '.range-slider', value) {\n const range = app.range.get(el);\n if (range) return range.setValue(value);\n return undefined;\n },\n },\n );\n },\n static: {\n Range,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.range-slider-init')\n .each(\n (rangeEl) =>\n new Range(app, {\n el: rangeEl,\n }),\n );\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.range-slider-init')\n .each((rangeEl) => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.range-slider-init').each(\n (rangeEl) =>\n new Range(app, {\n el: rangeEl,\n }),\n );\n },\n pageBeforeRemove(page) {\n page.$el.find('.range-slider-init').each((rangeEl) => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n },\n vnode: {\n 'range-slider-init': {\n insert(vnode) {\n const rangeEl = vnode.elm;\n const app = this;\n app.range.create({ el: rangeEl });\n },\n destroy(vnode) {\n const rangeEl = vnode.elm;\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nclass Stepper extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const stepper = this;\n\n const defaults = {\n el: null,\n inputEl: null,\n valueEl: null,\n value: 0,\n formatValue: null,\n step: 1,\n min: 0,\n max: 100,\n watchInput: true,\n autorepeat: false,\n autorepeatDynamic: false,\n wraps: false,\n manualInputMode: false,\n decimalPoint: 4,\n buttonsEndInputMode: true,\n };\n\n // Extend defaults with modules params\n stepper.useModulesParams(defaults);\n\n stepper.params = extend(defaults, params);\n if (stepper.params.value < stepper.params.min) {\n stepper.params.value = stepper.params.min;\n }\n if (stepper.params.value > stepper.params.max) {\n stepper.params.value = stepper.params.max;\n }\n\n const el = stepper.params.el;\n if (!el) return stepper;\n\n const $el = $(el);\n if ($el.length === 0) return stepper;\n\n if ($el[0].f7Stepper) return $el[0].f7Stepper;\n\n let $inputEl;\n if (stepper.params.inputEl) {\n $inputEl = $(stepper.params.inputEl);\n } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n }\n\n if ($inputEl && $inputEl.length) {\n 'step min max'.split(' ').forEach((paramName) => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n\n const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n if (Number.isNaN(decimalPoint)) {\n stepper.params.decimalPoint = 0;\n } else {\n stepper.params.decimalPoint = decimalPoint;\n }\n\n const inputValue = parseFloat($inputEl.val());\n if (\n typeof params.value === 'undefined' &&\n !Number.isNaN(inputValue) &&\n (inputValue || inputValue === 0)\n ) {\n stepper.params.value = inputValue;\n }\n }\n\n let $valueEl;\n if (stepper.params.valueEl) {\n $valueEl = $(stepper.params.valueEl);\n } else if ($el.find('.stepper-value').length) {\n $valueEl = $el.find('.stepper-value').eq(0);\n }\n\n const $buttonPlusEl = $el.find('.stepper-button-plus');\n const $buttonMinusEl = $el.find('.stepper-button-minus');\n\n const { step, min, max, value, decimalPoint } = stepper.params;\n\n extend(stepper, {\n app,\n $el,\n el: $el[0],\n $buttonPlusEl,\n buttonPlusEl: $buttonPlusEl[0],\n $buttonMinusEl,\n buttonMinusEl: $buttonMinusEl[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n $valueEl,\n valueEl: $valueEl ? $valueEl[0] : undefined,\n step,\n min,\n max,\n value,\n decimalPoint,\n typeModeChanged: false,\n });\n\n $el[0].f7Stepper = stepper;\n\n // Handle Events\n const touchesStart = {};\n let isTouched;\n let isScrolling;\n let preventButtonClick;\n let intervalId;\n let timeoutId;\n let autorepeatAction = null;\n let autorepeatInAction = false;\n let manualInput = false;\n\n function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(\n () => {\n if (current === 1) {\n preventButtonClick = true;\n autorepeatInAction = true;\n }\n clearInterval(intervalId);\n action();\n intervalId = setInterval(() => {\n action();\n }, repeatEvery);\n if (current < progressions) {\n dynamicRepeat(\n current + 1,\n progressions,\n startsIn,\n progressionStep,\n repeatEvery / 2,\n action,\n );\n }\n },\n current === 1 ? startsIn : progressionStep,\n );\n }\n\n function onTouchStart(e) {\n if (isTouched) return;\n if (manualInput) {\n return;\n }\n if ($(e.target).closest($buttonPlusEl).length) {\n autorepeatAction = 'increment';\n } else if ($(e.target).closest($buttonMinusEl).length) {\n autorepeatAction = 'decrement';\n }\n if (!autorepeatAction) return;\n\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isScrolling = undefined;\n\n const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n stepper[autorepeatAction]();\n });\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n if (manualInput) {\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n isScrolling = !!(\n isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n );\n }\n const distance = ((pageX - touchesStart.x) ** 2 + (pageY - touchesStart.y) ** 2) ** 0.5;\n\n if (isScrolling || distance > 20) {\n isTouched = false;\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n }\n }\n function onTouchEnd() {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n autorepeatAction = null;\n autorepeatInAction = false;\n isTouched = false;\n }\n\n function onMinusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.decrement(true);\n }\n function onPlusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.increment(true);\n }\n function onInputClick(e) {\n if (!e.target.readOnly && stepper.params.manualInputMode) {\n manualInput = true;\n if (typeof e.target.selectionStart === 'number') {\n e.target.selectionStart = e.target.value.length;\n e.target.selectionEnd = e.target.value.length;\n }\n }\n }\n function onInputKey(e) {\n if (e.keyCode === 13 || e.which === 13) {\n e.preventDefault();\n manualInput = false;\n stepper.endTypeMode();\n }\n }\n function onInputBlur() {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n function onInput(e) {\n if (manualInput) {\n stepper.typeValue(e.target.value);\n return;\n }\n if (e.detail && e.detail.sentByF7Stepper) return;\n stepper.setValue(e.target.value, true);\n }\n stepper.attachEvents = function attachEvents() {\n $buttonMinusEl.on('click', onMinusClick);\n $buttonPlusEl.on('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.on('input', onInput);\n $inputEl.on('click', onInputClick);\n $inputEl.on('blur', onInputBlur);\n $inputEl.on('keyup', onInputKey);\n }\n if (stepper.params.autorepeat) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n };\n stepper.detachEvents = function detachEvents() {\n $buttonMinusEl.off('click', onMinusClick);\n $buttonPlusEl.off('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.off('input', onInput);\n $inputEl.off('click', onInputClick);\n $inputEl.off('blur', onInputBlur);\n $inputEl.off('keyup', onInputKey);\n }\n };\n\n // Install Modules\n stepper.useModules();\n\n // Init\n stepper.init();\n\n return stepper;\n }\n\n minus() {\n return this.decrement();\n }\n\n plus() {\n return this.increment();\n }\n\n decrement() {\n const stepper = this;\n return stepper.setValue(stepper.value - stepper.step, false, true);\n }\n\n increment() {\n const stepper = this;\n return stepper.setValue(stepper.value + stepper.step, false, true);\n }\n\n setValue(newValue, forceUpdate, withWraps) {\n const stepper = this;\n const { step, min, max } = stepper;\n\n const oldValue = stepper.value;\n\n let value = Math.round(newValue / step) * step;\n if (stepper.params.wraps && withWraps) {\n if (value > max) value = min;\n if (value < min) value = max;\n } else {\n value = Math.max(Math.min(value, max), min);\n }\n\n if (Number.isNaN(value)) {\n value = oldValue;\n }\n stepper.value = value;\n\n const valueChanged = oldValue !== value;\n\n // Events\n if (!valueChanged && !forceUpdate) return stepper;\n\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', { sentByF7Stepper: true });\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n\n endTypeMode(noBlur) {\n const stepper = this;\n const { min, max } = stepper;\n let value = parseFloat(stepper.value);\n\n if (Number.isNaN(value)) value = 0;\n\n value = Math.max(Math.min(value, max), min);\n\n stepper.value = value;\n if (!stepper.typeModeChanged) {\n if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n stepper.$inputEl.blur();\n }\n return stepper;\n }\n stepper.typeModeChanged = false;\n\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', { sentByF7Stepper: true });\n if (!noBlur) stepper.$inputEl.blur();\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n\n typeValue(value) {\n const stepper = this;\n stepper.typeModeChanged = true;\n let inputTxt = String(value);\n if (inputTxt.length === 1 && inputTxt === '-') return stepper;\n if (\n inputTxt.lastIndexOf('.') + 1 === inputTxt.length ||\n inputTxt.lastIndexOf(',') + 1 === inputTxt.length\n ) {\n if (\n inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') ||\n inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')\n ) {\n inputTxt = inputTxt.slice(0, -1);\n stepper.value = inputTxt;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n } else {\n let newValue = parseFloat(inputTxt.replace(',', '.'));\n if (newValue === 0) {\n stepper.value = inputTxt.replace(',', '.');\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n if (Number.isNaN(newValue)) {\n stepper.value = 0;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n const powVal = 10 ** stepper.params.decimalPoint;\n newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;\n stepper.value = parseFloat(String(newValue).replace(',', '.'));\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n stepper.value = inputTxt;\n stepper.$inputEl.val(inputTxt);\n return stepper;\n }\n\n getValue() {\n return this.value;\n }\n\n formatValue(value) {\n const stepper = this;\n if (!stepper.params.formatValue) return value;\n return stepper.params.formatValue.call(stepper, value);\n }\n\n init() {\n const stepper = this;\n stepper.attachEvents();\n if (stepper.$valueEl && stepper.$valueEl.length) {\n const formattedValue = stepper.formatValue(stepper.value);\n stepper.$valueEl.html(formattedValue);\n }\n return stepper;\n }\n\n destroy() {\n let stepper = this;\n stepper.$el.trigger('stepper:beforedestroy');\n stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n delete stepper.$el[0].f7Stepper;\n stepper.detachEvents();\n deleteProps(stepper);\n stepper = null;\n }\n}\n\nexport default Stepper;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Stepper from './stepper-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'stepper',\n create() {\n const app = this;\n app.stepper = extend(\n ConstructorMethods({\n defaultSelector: '.stepper',\n constructor: Stepper,\n app,\n domProp: 'f7Stepper',\n }),\n {\n getValue(el = '.stepper') {\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.getValue();\n return undefined;\n },\n setValue(el = '.stepper', value) {\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.setValue(value);\n return undefined;\n },\n },\n );\n },\n static: {\n Stepper,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.stepper-init')\n .each((stepperEl) => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({ el: stepperEl }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.stepper-init')\n .each((stepperEl) => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.stepper-init').each((stepperEl) => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({ el: stepperEl }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.stepper-init').each((stepperEl) => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n },\n vnode: {\n 'stepper-init': {\n insert(vnode) {\n const app = this;\n const stepperEl = vnode.elm;\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({ el: stepperEl }, dataset || {}));\n },\n destroy(vnode) {\n const stepperEl = vnode.elm;\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n },\n },\n },\n};\n","/* eslint no-control-regex: \"off\" */\nconst defaultDiacriticsRemovalap = [\n {\n base: 'A',\n letters:\n '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F',\n },\n { base: 'AA', letters: '\\uA732' },\n { base: 'AE', letters: '\\u00C6\\u01FC\\u01E2' },\n { base: 'AO', letters: '\\uA734' },\n { base: 'AU', letters: '\\uA736' },\n { base: 'AV', letters: '\\uA738\\uA73A' },\n { base: 'AY', letters: '\\uA73C' },\n { base: 'B', letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181' },\n {\n base: 'C',\n letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E',\n },\n {\n base: 'D',\n letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779',\n },\n { base: 'DZ', letters: '\\u01F1\\u01C4' },\n { base: 'Dz', letters: '\\u01F2\\u01C5' },\n {\n base: 'E',\n letters:\n '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E',\n },\n { base: 'F', letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B' },\n {\n base: 'G',\n letters:\n '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E',\n },\n {\n base: 'H',\n letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D',\n },\n {\n base: 'I',\n letters:\n '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197',\n },\n { base: 'J', letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248' },\n {\n base: 'K',\n letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2',\n },\n {\n base: 'L',\n letters:\n '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780',\n },\n { base: 'LJ', letters: '\\u01C7' },\n { base: 'Lj', letters: '\\u01C8' },\n { base: 'M', letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C' },\n {\n base: 'N',\n letters:\n '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4',\n },\n { base: 'NJ', letters: '\\u01CA' },\n { base: 'Nj', letters: '\\u01CB' },\n {\n base: 'O',\n letters:\n '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C',\n },\n { base: 'OI', letters: '\\u01A2' },\n { base: 'OO', letters: '\\uA74E' },\n { base: 'OU', letters: '\\u0222' },\n { base: 'OE', letters: '\\u008C\\u0152' },\n { base: 'oe', letters: '\\u009C\\u0153' },\n { base: 'P', letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754' },\n { base: 'Q', letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A' },\n {\n base: 'R',\n letters:\n '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782',\n },\n {\n base: 'S',\n letters:\n '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784',\n },\n {\n base: 'T',\n letters:\n '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786',\n },\n { base: 'TZ', letters: '\\uA728' },\n {\n base: 'U',\n letters:\n '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244',\n },\n { base: 'V', letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245' },\n { base: 'VY', letters: '\\uA760' },\n { base: 'W', letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72' },\n { base: 'X', letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C' },\n {\n base: 'Y',\n letters:\n '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE',\n },\n {\n base: 'Z',\n letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762',\n },\n {\n base: 'a',\n letters:\n '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250',\n },\n { base: 'aa', letters: '\\uA733' },\n { base: 'ae', letters: '\\u00E6\\u01FD\\u01E3' },\n { base: 'ao', letters: '\\uA735' },\n { base: 'au', letters: '\\uA737' },\n { base: 'av', letters: '\\uA739\\uA73B' },\n { base: 'ay', letters: '\\uA73D' },\n { base: 'b', letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253' },\n {\n base: 'c',\n letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184',\n },\n {\n base: 'd',\n letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A',\n },\n { base: 'dz', letters: '\\u01F3\\u01C6' },\n {\n base: 'e',\n letters:\n '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD',\n },\n { base: 'f', letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C' },\n {\n base: 'g',\n letters:\n '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F',\n },\n {\n base: 'h',\n letters:\n '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265',\n },\n { base: 'hv', letters: '\\u0195' },\n {\n base: 'i',\n letters:\n '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131',\n },\n { base: 'j', letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249' },\n {\n base: 'k',\n letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3',\n },\n {\n base: 'l',\n letters:\n '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747',\n },\n { base: 'lj', letters: '\\u01C9' },\n { base: 'm', letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F' },\n {\n base: 'n',\n letters:\n '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5',\n },\n { base: 'nj', letters: '\\u01CC' },\n {\n base: 'o',\n letters:\n '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275',\n },\n { base: 'oi', letters: '\\u01A3' },\n { base: 'ou', letters: '\\u0223' },\n { base: 'oo', letters: '\\uA74F' },\n { base: 'p', letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755' },\n { base: 'q', letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759' },\n {\n base: 'r',\n letters:\n '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783',\n },\n {\n base: 's',\n letters:\n '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B',\n },\n {\n base: 't',\n letters:\n '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787',\n },\n { base: 'tz', letters: '\\uA729' },\n {\n base: 'u',\n letters:\n '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289',\n },\n { base: 'v', letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C' },\n { base: 'vy', letters: '\\uA761' },\n { base: 'w', letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73' },\n { base: 'x', letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D' },\n {\n base: 'y',\n letters:\n '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF',\n },\n {\n base: 'z',\n letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763',\n },\n];\n\nconst diacriticsMap = {};\nfor (let i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n const letters = defaultDiacriticsRemovalap[i].letters;\n for (let j = 0; j < letters.length; j += 1) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007E]/g, (a) => diacriticsMap[a] || a);\n}\n\nexport default removeDiacritics;\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps, id, nextTick } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport removeDiacritics from '../searchbar/remove-diacritics.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass SmartSelect extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const ss = this;\n\n const defaults = extend(\n {\n on: {},\n },\n app.params.smartSelect,\n );\n\n // Extend defaults with modules params\n ss.useModulesParams(defaults);\n\n ss.params = extend({}, defaults, params);\n\n ss.app = app;\n\n const $el = $(ss.params.el).eq(0);\n if ($el.length === 0) return ss;\n\n if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n\n const $selectEl = $el.find('select').eq(0);\n if ($selectEl.length === 0) return ss;\n\n let $valueEl;\n if (ss.params.setValueText) {\n $valueEl = $(ss.params.valueEl);\n if ($valueEl.length === 0) {\n $valueEl = $el.find('.item-after');\n }\n if ($valueEl.length === 0) {\n $valueEl = $('<div class=\"item-after\"></div>');\n $valueEl.insertAfter($el.find('.item-title'));\n }\n }\n\n // Url\n let url = params.url;\n if (!url) {\n if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');\n else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n }\n if (!url) url = ss.params.url;\n\n const multiple = $selectEl[0].multiple;\n const inputType = multiple ? 'checkbox' : 'radio';\n const selectId = id();\n\n extend(ss, {\n $el,\n el: $el[0],\n $selectEl,\n selectEl: $selectEl[0],\n $valueEl,\n valueEl: $valueEl && $valueEl[0],\n url,\n multiple,\n inputType,\n id: selectId,\n inputName: `${inputType}-${selectId}`,\n selectName: $selectEl.attr('name'),\n maxLength: $selectEl.attr('maxlength') || params.maxLength,\n });\n\n $el[0].f7SmartSelect = ss;\n\n // Events\n function onClick() {\n ss.open();\n }\n function onChange() {\n const value = ss.$selectEl.val();\n ss.$el.trigger('smartselect:change', value);\n ss.emit('local::change smartSelectChange', ss, value);\n if (ss.vl) {\n ss.vl.clearCache();\n }\n ss.setValueText();\n }\n ss.attachEvents = function attachEvents() {\n $el.on('click', onClick);\n $el.on('change', 'select', onChange);\n };\n ss.detachEvents = function detachEvents() {\n $el.off('click', onClick);\n $el.off('change', 'select', onChange);\n };\n\n function handleInputChange() {\n let optionEl;\n let text;\n const inputEl = this;\n const value = inputEl.value;\n let optionText = [];\n let displayAs;\n if (inputEl.type === 'checkbox') {\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (optionEl.value === value) {\n optionEl.selected = inputEl.checked;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset\n ? optionEl.dataset.displayAs\n : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n if (!optionEl) {\n optionEl = ss.$selectEl.find('option').filter((optEl) => optEl.value === value)[0];\n }\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n ss.selectEl.value = value;\n }\n\n ss.$selectEl.trigger('change');\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n ss.close();\n }\n }\n\n ss.attachInputsEvents = function attachInputsEvents() {\n ss.$containerEl.on(\n 'change',\n 'input[type=\"checkbox\"], input[type=\"radio\"]',\n handleInputChange,\n );\n };\n ss.detachInputsEvents = function detachInputsEvents() {\n ss.$containerEl.off(\n 'change',\n 'input[type=\"checkbox\"], input[type=\"radio\"]',\n handleInputChange,\n );\n };\n\n // Install Modules\n ss.useModules();\n\n // Init\n ss.init();\n\n return ss;\n }\n\n setValue(value) {\n const ss = this;\n let newValue = value;\n let optionText = [];\n let optionEl;\n let displayAs;\n let text;\n if (ss.multiple) {\n if (!Array.isArray(newValue)) newValue = [newValue];\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (newValue.indexOf(optionEl.value) >= 0) {\n optionEl.selected = true;\n } else {\n optionEl.selected = false;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset\n ? optionEl.dataset.displayAs\n : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n if (optionEl) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n }\n ss.selectEl.value = newValue;\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n ss.$selectEl.trigger('change');\n return ss;\n }\n\n unsetValue() {\n const ss = this;\n if (ss.params.setValueText) {\n ss.formatValueTextContent([]);\n }\n ss.$selectEl.find('option').each((optionEl) => {\n optionEl.selected = false;\n optionEl.checked = false;\n });\n ss.$selectEl[0].value = null;\n\n if (ss.$containerEl) {\n ss.$containerEl\n .find(\n `input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`,\n )\n .prop('checked', false);\n }\n ss.$selectEl.trigger('change');\n }\n\n getValue() {\n const ss = this;\n return ss.$selectEl.val();\n }\n\n get view() {\n const { params, $el } = this;\n let view;\n if (params.view) {\n view = params.view;\n }\n if (!view) {\n view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n }\n if (!view && params.openIn === 'page') {\n throw Error('Smart Select requires initialized View');\n }\n return view;\n }\n\n checkMaxLength() {\n const ss = this;\n const $containerEl = ss.$containerEl;\n if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n $containerEl.find('input[type=\"checkbox\"]').each((inputEl) => {\n if (!inputEl.checked) {\n $(inputEl).parents('li').addClass('disabled');\n } else {\n $(inputEl).parents('li').removeClass('disabled');\n }\n });\n } else {\n $containerEl.find('.disabled').removeClass('disabled');\n }\n }\n\n formatValueTextContent(values) {\n const ss = this;\n const valueFormatted = ss.formatValueText(values);\n if (valueFormatted.includes('<') && valueFormatted.includes('>')) {\n ss.$valueEl.html(valueFormatted);\n } else {\n ss.$valueEl.text(valueFormatted);\n }\n }\n\n formatValueText(values) {\n const ss = this;\n let textValue;\n if (ss.params.formatValueText) {\n textValue = ss.params.formatValueText.call(ss, values, ss);\n } else {\n textValue = values.join(', ');\n }\n return textValue;\n }\n\n setValueText(value) {\n const ss = this;\n let valueArray = [];\n if (typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n valueArray = value;\n } else {\n valueArray = [value];\n }\n } else {\n ss.$selectEl.find('option').each((optionEl) => {\n const $optionEl = $(optionEl);\n if (optionEl.selected) {\n const displayAs = optionEl.dataset\n ? optionEl.dataset.displayAs\n : $optionEl.data('display-value-as');\n if (displayAs && typeof displayAs !== 'undefined') {\n valueArray.push(displayAs);\n } else {\n valueArray.push(optionEl.textContent.trim());\n }\n }\n });\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(valueArray);\n }\n }\n\n getItemsData() {\n const ss = this;\n const theme = ss.app.theme;\n const items = [];\n let previousGroupEl;\n ss.$selectEl.find('option').each((optionEl) => {\n const $optionEl = $(optionEl);\n const optionData = $optionEl.dataset();\n const optionImage = optionData.optionImage || ss.params.optionImage;\n const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n const optionIconIos =\n theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n const optionInputIconPosition =\n optionData.inputIconPosition || ss.params.inputIconPosition || '';\n\n const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd;\n const optionColor = optionData.optionColor;\n\n let optionClassName = optionData.optionClass || '';\n if ($optionEl[0].disabled) optionClassName += ' disabled';\n\n const optionGroupEl = $optionEl.parent('optgroup')[0];\n const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n let optionIsLabel = false;\n if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n optionIsLabel = true;\n previousGroupEl = optionGroupEl;\n items.push({\n groupLabel: optionGroupLabel,\n isLabel: optionIsLabel,\n });\n }\n items.push({\n value: $optionEl[0].value,\n text: $optionEl[0].textContent.trim(),\n selected: $optionEl[0].selected,\n groupEl: optionGroupEl,\n groupLabel: optionGroupLabel,\n image: optionImage,\n icon: optionIcon,\n iconIos: optionIconIos,\n iconMd: optionIconMd,\n inputIconPosition: optionInputIconPosition,\n color: optionColor,\n className: optionClassName,\n disabled: $optionEl[0].disabled,\n id: ss.id,\n hasMedia: optionHasMedia,\n checkbox: ss.inputType === 'checkbox',\n radio: ss.inputType === 'radio',\n inputName: ss.inputName,\n inputType: ss.inputType,\n });\n });\n ss.items = items;\n return items;\n }\n\n renderSearchbar() {\n const ss = this;\n if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n return (\n <form class=\"searchbar\">\n <div class=\"searchbar-inner\">\n <div class=\"searchbar-input-wrap\">\n <input\n type=\"search\"\n spellcheck={ss.params.searchbarSpellcheck || 'false'}\n placeholder={ss.params.searchbarPlaceholder}\n />\n <i class=\"searchbar-icon\"></i>\n <span class=\"input-clear-button\"></span>\n </div>\n {ss.params.searchbarDisableButton && (\n <span class=\"searchbar-disable-button\">{ss.params.searchbarDisableText}</span>\n )}\n </div>\n </form>\n );\n }\n\n renderItem(item, index) {\n const ss = this;\n if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n\n function getIconContent(iconValue = '') {\n if (iconValue.indexOf(':') >= 0) {\n return iconValue.split(':')[1];\n }\n return '';\n }\n function getIconClass(iconValue = '') {\n if (iconValue.indexOf(':') >= 0) {\n let className = iconValue.split(':')[0];\n if (className === 'f7') className = 'f7-icons';\n if (className === 'material') className = 'material-icons';\n return className;\n }\n return iconValue;\n }\n\n let itemHtml;\n if (item.isLabel) {\n itemHtml = `<li class=\"list-group-title\">${item.groupLabel}</li>`;\n } else {\n let selected = item.selected;\n let disabled;\n if (ss.params.virtualList) {\n const ssValue = ss.getValue();\n selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n if (ss.multiple) {\n disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n }\n }\n\n const { icon, iconIos, iconMd } = item;\n const hasIcon = icon || iconIos || iconMd;\n const iconContent = getIconContent(icon || iconIos || iconMd || '');\n const iconClass = getIconClass(icon || iconIos || iconMd || '');\n\n itemHtml = (\n <li class={`${item.className || ''}${disabled ? ' disabled' : ''}`}>\n <label\n class={`item-${item.inputType} ${\n item.inputIconPosition ? `item-${item.inputType}-icon-${item.inputIconPosition}` : ''\n } item-content`}\n >\n <input\n type={item.inputType}\n name={item.inputName}\n value={item.value}\n _checked={selected}\n />\n <i class={`icon icon-${item.inputType}`}></i>\n {item.hasMedia && (\n <div class=\"item-media\">\n {hasIcon && <i class={`icon ${iconClass}`}>{iconContent}</i>}\n {item.image && <img src={item.image} />}\n </div>\n )}\n <div class=\"item-inner\">\n <div class={`item-title${item.color ? ` text-color-${item.color}` : ''}`}>\n {item.text}\n </div>\n </div>\n </label>\n </li>\n );\n }\n return itemHtml;\n }\n\n renderItems() {\n const ss = this;\n if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n const itemsHtml = `\n ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n `;\n return itemsHtml;\n }\n\n renderPage() {\n const ss = this;\n if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass;\n return (\n <div\n class={`page smart-select-page ${cssClass}`}\n data-name=\"smart-select-page\"\n data-select-name={ss.selectName}\n >\n <div\n class={`navbar ${\n ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''\n }`}\n >\n <div class=\"navbar-bg\"></div>\n <div\n class={`navbar-inner sliding ${\n ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''\n }`}\n >\n <div class=\"left\">\n <a class=\"link back\">\n <i class=\"icon icon-back\"></i>\n <span class=\"if-not-md\">{ss.params.pageBackLinkText}</span>\n </a>\n </div>\n {pageTitle && <div class=\"title\">{pageTitle}</div>}\n {ss.params.searchbar && <div class=\"subnavbar\">{ss.renderSearchbar()}</div>}\n </div>\n </div>\n {ss.params.searchbar && <div class=\"searchbar-backdrop\"></div>}\n <div class=\"page-content\">\n <div\n class={`list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${\n ss.id\n } ${ss.params.virtualList ? ' virtual-list' : ''} ${\n ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''\n }`}\n >\n <ul>{!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n </div>\n </div>\n </div>\n );\n }\n\n renderPopup() {\n const ss = this;\n if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass || '';\n return (\n <div\n class={`popup smart-select-popup ${cssClass} ${\n ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''\n }`}\n data-select-name={ss.selectName}\n >\n <div class=\"view\">\n <div\n class={`page smart-select-page ${ss.params.searchbar ? 'page-with-subnavbar' : ''}`}\n data-name=\"smart-select-page\"\n >\n <div\n class={`navbar ${\n ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''\n }`}\n >\n <div class=\"navbar-bg\"></div>\n <div class=\"navbar-inner sliding\">\n {pageTitle && <div class=\"title\">{pageTitle}</div>}\n <div class=\"right\">\n <a\n class=\"link popup-close\"\n data-popup={`.smart-select-popup[data-select-name='${ss.selectName}']`}\n >\n {ss.params.popupCloseLinkText}\n </a>\n </div>\n {ss.params.searchbar && <div class=\"subnavbar\">{ss.renderSearchbar()}</div>}\n </div>\n </div>\n {ss.params.searchbar && <div class=\"searchbar-backdrop\"></div>}\n <div class=\"page-content\">\n <div\n class={`list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${\n ss.id\n } ${ss.params.virtualList ? ' virtual-list' : ''} ${\n ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''\n }`}\n >\n <ul>{!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n renderSheet() {\n const ss = this;\n if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return (\n <div class={`sheet-modal smart-select-sheet ${cssClass}`} data-select-name={ss.selectName}>\n <div class={`toolbar toolbar-top ${ss.params.toolbarColorTheme ? `color-${ss.params.toolbarColorTheme}` : ''}`}>\n <div class=\"toolbar-inner\">\n <div class=\"left\"></div>\n <div class=\"right\">\n <a class=\"link sheet-close\">{ss.params.sheetCloseLinkText}</a>\n </div>\n </div>\n </div>\n <div class=\"sheet-modal-inner\">\n <div class=\"page-content\">\n <div class={`list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`}>\n <ul>{!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n </div>\n </div>\n </div>\n </div>\n )\n }\n\n renderPopover() {\n const ss = this;\n if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return (\n <div class={`popover smart-select-popover ${cssClass}`} data-select-name={ss.selectName}>\n <div class=\"popover-inner\">\n <div class={`list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`}>\n <ul>{!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n </div>\n </div>\n </div>\n\n )\n }\n\n scrollToSelectedItem() {\n const ss = this;\n const { params, $containerEl } = ss;\n if (!ss.opened) return ss;\n if (params.virtualList) {\n let selectedIndex;\n ss.vl.items.forEach((item, index) => {\n if (typeof selectedIndex === 'undefined' && item.selected) {\n selectedIndex = index;\n }\n });\n if (typeof selectedIndex !== 'undefined') {\n ss.vl.scrollToItem(selectedIndex);\n }\n } else {\n const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n if (!$selectedItemEl.length) return ss;\n const $scrollableEl = $containerEl.find('.page-content, .popover-inner');\n if (!$scrollableEl.length) return ss;\n $scrollableEl.scrollTop(\n $selectedItemEl.offset().top -\n $scrollableEl.offset().top -\n parseInt($scrollableEl.css('padding-top'), 10),\n );\n }\n return ss;\n }\n\n onOpen(type, containerEl) {\n const ss = this;\n const app = ss.app;\n const $containerEl = $(containerEl);\n ss.$containerEl = $containerEl;\n ss.openedIn = type;\n ss.opened = true;\n\n // Init VL\n if (ss.params.virtualList) {\n ss.vl = app.virtualList.create({\n el: $containerEl.find('.virtual-list'),\n items: ss.items,\n renderItem: ss.renderItem.bind(ss),\n height: ss.params.virtualListHeight,\n searchByItem(query, item) {\n if (\n item.text &&\n removeDiacritics(item.text).toLowerCase().indexOf(query.trim().toLowerCase()) >= 0\n )\n return true;\n return false;\n },\n });\n }\n if (ss.params.scrollToSelectedItem) {\n ss.scrollToSelectedItem();\n }\n\n // Init SB\n if (ss.params.searchbar) {\n let $searchbarEl = $containerEl.find('.searchbar');\n if (type === 'page' && app.theme === 'ios') {\n $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n }\n\n if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n let $notFoundEl = null;\n\n if (typeof ss.params.appendSearchbarNotFound === 'string') {\n $notFoundEl = $(\n `<div class=\"block searchbar-not-found\">${ss.params.appendSearchbarNotFound}</div>`,\n );\n } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n $notFoundEl = $('<div class=\"block searchbar-not-found\">Nothing found</div>');\n } else {\n $notFoundEl = ss.params.appendSearchbarNotFound;\n }\n\n if ($notFoundEl) {\n $containerEl.find('.page-content').append($notFoundEl[0]);\n }\n }\n\n const searchbarParams = extend(\n {\n el: $searchbarEl,\n backdropEl: $containerEl.find('.searchbar-backdrop'),\n searchContainer: `.smart-select-list-${ss.id}`,\n searchIn: '.item-title',\n },\n typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {},\n );\n\n ss.searchbar = app.searchbar.create(searchbarParams);\n }\n\n // Check for max length\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n\n // Close on select\n if (ss.params.closeOnSelect) {\n ss.$containerEl\n .find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`)\n .parents('label')\n .once('click', () => {\n ss.close();\n });\n }\n\n // Attach input events\n ss.attachInputsEvents();\n\n ss.$el.trigger('smartselect:open');\n ss.emit('local::open smartSelectOpen', ss);\n }\n\n onOpened() {\n const ss = this;\n\n ss.$el.trigger('smartselect:opened');\n ss.emit('local::opened smartSelectOpened', ss);\n }\n\n onClose() {\n const ss = this;\n if (ss.destroyed) return;\n\n // Destroy VL\n if (ss.vl && ss.vl.destroy) {\n ss.vl.destroy();\n ss.vl = null;\n delete ss.vl;\n }\n\n // Destroy SB\n if (ss.searchbar && ss.searchbar.destroy) {\n ss.searchbar.destroy();\n ss.searchbar = null;\n delete ss.searchbar;\n }\n // Detach events\n ss.detachInputsEvents();\n\n ss.$el.trigger('smartselect:close');\n ss.emit('local::close smartSelectClose', ss);\n }\n\n onClosed() {\n const ss = this;\n if (ss.destroyed) return;\n ss.opened = false;\n ss.$containerEl = null;\n delete ss.$containerEl;\n\n ss.$el.trigger('smartselect:closed');\n ss.emit('local::closed smartSelectClosed', ss);\n }\n\n openPage() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const pageHtml = ss.renderPage(ss.items);\n\n ss.view.router.navigate({\n url: ss.url,\n route: {\n content: pageHtml,\n path: ss.url,\n on: {\n pageBeforeIn(e, page) {\n ss.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ss.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ss.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ss.onClosed('page', page.el);\n },\n },\n },\n });\n return ss;\n }\n\n openPopup() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popupHtml = ss.renderPopup(ss.items);\n\n const popupParams = {\n content: popupHtml,\n push: ss.params.popupPush,\n swipeToClose: ss.params.popupSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n ss.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ss.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ss.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ss.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popup: popupParams,\n },\n });\n } else {\n ss.modal = ss.app.popup.create(popupParams).open();\n }\n return ss;\n }\n\n openSheet() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const sheetHtml = ss.renderSheet(ss.items);\n\n const sheetParams = {\n content: sheetHtml,\n backdrop: ss.params.sheetBackdrop,\n scrollToEl: ss.$el,\n closeByOutsideClick: true,\n push: ss.params.sheetPush,\n swipeToClose: ss.params.sheetSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n sheetOpen(sheet) {\n ss.onOpen('sheet', sheet.el);\n },\n sheetOpened(sheet) {\n ss.onOpened('sheet', sheet.el);\n },\n sheetClose(sheet) {\n ss.onClose('sheet', sheet.el);\n },\n sheetClosed(sheet) {\n ss.onClosed('sheet', sheet.el);\n },\n },\n };\n\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n sheet: sheetParams,\n },\n });\n } else {\n ss.modal = ss.app.sheet.create(sheetParams).open();\n }\n return ss;\n }\n\n openPopover() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popoverHtml = ss.renderPopover(ss.items);\n const popoverParams = {\n content: popoverHtml,\n targetEl: ss.$el,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popoverOpen(popover) {\n ss.onOpen('popover', popover.el);\n },\n popoverOpened(popover) {\n ss.onOpened('popover', popover.el);\n },\n popoverClose(popover) {\n ss.onClose('popover', popover.el);\n },\n popoverClosed(popover) {\n ss.onClosed('popover', popover.el);\n },\n },\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popover: popoverParams,\n },\n });\n } else {\n ss.modal = ss.app.popover.create(popoverParams).open();\n }\n return ss;\n }\n\n open(type) {\n const ss = this;\n if (ss.opened) return ss;\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n if (ss.$el) {\n ss.$el.trigger('smartselect:beforeopen', { prevent });\n }\n ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n if (prevented) return ss;\n const openIn = type || ss.params.openIn;\n ss[\n `open${openIn\n .split('')\n .map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n })\n .join('')}`\n ]();\n return ss;\n }\n\n close() {\n const ss = this;\n if (!ss.opened) return ss;\n if ((ss.params.routableModals && ss.view) || ss.openedIn === 'page') {\n ss.view.router.back();\n } else {\n ss.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ss.destroyed) return;\n ss.modal.destroy();\n delete ss.modal;\n });\n });\n ss.modal.close();\n }\n return ss;\n }\n\n init() {\n const ss = this;\n ss.attachEvents();\n ss.setValueText();\n }\n\n destroy() {\n const ss = this;\n ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n ss.$el.trigger('smartselect:beforedestroy');\n ss.detachEvents();\n delete ss.$el[0].f7SmartSelect;\n deleteProps(ss);\n ss.destroyed = true;\n }\n}\n\nexport default SmartSelect;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport SmartSelect from './smart-select-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'smartSelect',\n params: {\n smartSelect: {\n el: undefined,\n valueEl: undefined,\n setValueText: true,\n formatValueText: null,\n openIn: 'page', // or 'popup' or 'sheet' or 'popover'\n popupPush: false,\n popupSwipeToClose: undefined, // defaults to app\n sheetPush: false,\n sheetSwipeToClose: undefined, // defaults to app\n sheetBackdrop: false,\n pageTitle: undefined,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n popupTabletFullscreen: false,\n closeByBackdropClick: true,\n sheetCloseLinkText: 'Done',\n searchbar: false,\n searchbarPlaceholder: 'Search',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n closeOnSelect: false,\n virtualList: false,\n virtualListHeight: undefined,\n scrollToSelectedItem: false,\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n routableModals: false,\n url: 'select/',\n inputIconPosition: 'start',\n cssClass: '',\n /*\n Custom render functions\n */\n renderPage: undefined,\n renderPopup: undefined,\n renderSheet: undefined,\n renderPopover: undefined,\n renderItems: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n },\n },\n static: {\n SmartSelect,\n },\n create() {\n const app = this;\n app.smartSelect = extend(\n ConstructorMethods({\n defaultSelector: '.smart-select',\n constructor: SmartSelect,\n app,\n domProp: 'f7SmartSelect',\n }),\n {\n open(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.open) return ss.open();\n return undefined;\n },\n close(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.close) return ss.close();\n return undefined;\n },\n },\n );\n },\n\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.smart-select-init')\n .each((smartSelectEl) => {\n app.smartSelect.create(extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.smart-select-init')\n .each((smartSelectEl) => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.smart-select-init').each((smartSelectEl) => {\n app.smartSelect.create(extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.smart-select-init').each((smartSelectEl) => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n },\n clicks: {\n '.smart-select': function open($clickedEl, data) {\n const app = this;\n if (!$clickedEl[0].f7SmartSelect) {\n const ss = app.smartSelect.create(extend({ el: $clickedEl }, data));\n ss.open();\n }\n },\n },\n vnode: {\n 'smart-select-init': {\n insert(vnode) {\n const app = this;\n const smartSelectEl = vnode.elm;\n app.smartSelect.create(extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n },\n destroy(vnode) {\n const smartSelectEl = vnode.elm;\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n },\n },\n },\n};\n","import { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Calendar extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const calendar = this;\n\n calendar.params = extend({}, app.params.calendar, params);\n\n let $containerEl;\n if (calendar.params.containerEl) {\n $containerEl = $(calendar.params.containerEl);\n if ($containerEl.length === 0) return calendar;\n }\n\n let $inputEl;\n if (calendar.params.inputEl) {\n $inputEl = $(calendar.params.inputEl);\n }\n\n const isHorizontal = calendar.params.direction === 'horizontal';\n\n let inverter = 1;\n if (isHorizontal) {\n inverter = app.rtl ? -1 : 1;\n }\n\n extend(calendar, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: calendar.params.url,\n isHorizontal,\n inverter,\n animating: false,\n allowTouchMove: true,\n hasTimePicker:\n calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple,\n });\n calendar.dayFormatter = (date) => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, { day: 'numeric' });\n return formatter.format(date).replace(/æ—¥/, '');\n };\n calendar.monthFormatter = (date) => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, { month: 'long' });\n return formatter.format(date);\n };\n calendar.yearFormatter = (date) => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, { year: 'numeric' });\n return formatter.format(date);\n };\n calendar.timeSelectorFormatter = (date) => {\n const formatter = new Intl.DateTimeFormat(\n calendar.params.locale,\n calendar.params.timePickerFormat,\n );\n return formatter.format(date);\n };\n const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();\n calendar.is12HoursFormat =\n timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0;\n\n // Auto names\n let { monthNames, monthNamesShort, dayNames, dayNamesShort } = calendar.params;\n const { monthNamesIntl, monthNamesShortIntl, dayNamesIntl, dayNamesShortIntl } =\n calendar.getIntlNames();\n if (monthNames === 'auto') monthNames = monthNamesIntl;\n if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n if (dayNames === 'auto') dayNames = dayNamesIntl;\n if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n\n extend(calendar, {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort,\n });\n\n function onInputClick() {\n calendar.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onInputClear() {\n calendar.setValue([]);\n if (calendar.opened) {\n calendar.update();\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if (calendar.destroyed || !calendar.params) return;\n if (calendar.isPopover()) return;\n if (!calendar.opened || calendar.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover)\n return;\n if ($inputEl && $inputEl.length > 0) {\n if (\n $targetEl[0] !== $inputEl[0] &&\n $targetEl.closest('.sheet-modal, .calendar-modal').length === 0\n ) {\n calendar.close();\n }\n } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n }\n\n // Events\n extend(calendar, {\n attachInputEvents() {\n calendar.$inputEl.on('click', onInputClick);\n calendar.$inputEl.on('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.on('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n calendar.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n calendar.$inputEl.off('click', onInputClick);\n calendar.$inputEl.off('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.off('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n delete calendar.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n calendar.attachCalendarEvents = function attachCalendarEvents() {\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let currentTranslate;\n let wrapperWidth;\n let wrapperHeight;\n let percentage;\n let touchesDiff;\n let isScrolling;\n\n const { $el, $wrapperEl } = calendar;\n\n function handleTouchStart(e) {\n if (isMoved || isTouched || !e.isTrusted) return;\n isTouched = true;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = new Date().getTime();\n percentage = 0;\n allowItemClick = true;\n isScrolling = undefined;\n currentTranslate = calendar.monthsTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n const { isHorizontal: isH } = calendar;\n\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling ||\n Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n );\n }\n if ((isH && isScrolling) || !calendar.allowTouchMove) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (calendar.animating) {\n isTouched = false;\n return;\n }\n allowItemClick = false;\n if (!isMoved) {\n // First move\n isMoved = true;\n wrapperWidth = $wrapperEl[0].offsetWidth;\n wrapperHeight = $wrapperEl[0].offsetHeight;\n $wrapperEl.transition(0);\n }\n\n touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100;\n\n // Transform wrapper\n $wrapperEl.transform(\n `translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`,\n );\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n touchEndTime = new Date().getTime();\n if (touchEndTime - touchStartTime < 300) {\n if (Math.abs(touchesDiff) < 10) {\n calendar.resetMonth();\n } else if (touchesDiff >= 10) {\n if (app.rtl) calendar.nextMonth();\n else calendar.prevMonth();\n } else if (app.rtl) calendar.prevMonth();\n else calendar.nextMonth();\n } else if (percentage <= -0.5) {\n if (app.rtl) calendar.prevMonth();\n else calendar.nextMonth();\n } else if (percentage >= 0.5) {\n if (app.rtl) calendar.nextMonth();\n else calendar.prevMonth();\n } else {\n calendar.resetMonth();\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n\n function handleDayClick(e) {\n if (!allowItemClick) return;\n let $dayEl = $(e.target).parents('.calendar-day');\n if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n $dayEl = $(e.target);\n }\n if ($dayEl.length === 0) return;\n if ($dayEl.hasClass('calendar-day-disabled')) return;\n if (!calendar.params.rangePicker) {\n if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n }\n const dateYear = parseInt($dayEl.attr('data-year'), 10);\n const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n const dateDay = parseInt($dayEl.attr('data-day'), 10);\n calendar.emit(\n 'local::dayClick calendarDayClick',\n calendar,\n $dayEl[0],\n dateYear,\n dateMonth,\n dateDay,\n );\n if (\n !$dayEl.hasClass('calendar-day-selected') ||\n calendar.params.multiple ||\n calendar.params.rangePicker\n ) {\n const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n if (calendar.hasTimePicker) {\n if (calendar.value && calendar.value[0]) {\n valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n } else {\n valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n }\n }\n calendar.addValue(valueToAdd);\n }\n if (calendar.params.closeOnSelect) {\n if (\n (calendar.params.rangePicker && calendar.value.length === 2) ||\n !calendar.params.rangePicker\n ) {\n calendar.close();\n }\n }\n }\n\n function onNextMonthClick() {\n calendar.nextMonth();\n }\n\n function onPrevMonthClick() {\n calendar.prevMonth();\n }\n\n function onNextYearClick() {\n calendar.nextYear();\n }\n\n function onPrevYearClick() {\n calendar.prevYear();\n }\n\n function onMonthSelectorClick() {\n calendar.openMonthPicker();\n }\n\n function onYearSelectorClick() {\n calendar.openYearPicker();\n }\n\n function onTimeSelectorClick() {\n calendar.openTimePicker();\n }\n\n const passiveListener =\n app.touchEvents.start === 'touchstart' && getSupport().passiveListener\n ? { passive: true, capture: false }\n : false;\n // Selectors clicks\n $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').on('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').on('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n }\n // Day clicks\n $wrapperEl.on('click', handleDayClick);\n // Touch events\n if (calendar.params.touchMove) {\n $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n\n calendar.detachCalendarEvents = function detachCalendarEvents() {\n $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').off('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').off('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n }\n $wrapperEl.off('click', handleDayClick);\n if (calendar.params.touchMove) {\n $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n };\n\n calendar.init();\n\n return calendar;\n }\n\n get view() {\n const { $inputEl, app, params } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n getIntlNames() {\n const calendar = this;\n const locale = calendar.params.locale;\n\n const monthNamesIntl = [];\n const monthNamesShortIntl = [];\n const dayNamesIntl = [];\n const dayNamesShortIntl = [];\n const formatterMonthNames = new Intl.DateTimeFormat(locale, { month: 'long' });\n const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, { month: 'short' });\n const formatterDayNames = new Intl.DateTimeFormat(locale, { weekday: 'long' });\n const formatterDayNamesShort = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n let year;\n let yearStarted;\n let yearEnded;\n for (let i = 0; i < 24; i += 1) {\n const date = new Date().setMonth(i, 1);\n const currentYear = calendar.yearFormatter(date);\n\n if (year && currentYear !== year) {\n if (yearStarted) yearEnded = true;\n yearStarted = true;\n year = currentYear;\n }\n if (!year) {\n year = currentYear;\n }\n if (yearStarted && year === currentYear && !yearEnded) {\n monthNamesIntl.push(formatterMonthNames.format(date));\n monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n }\n }\n const weekDay = new Date().getDay();\n for (let i = 0; i < 7; i += 1) {\n const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n dayNamesIntl.push(formatterDayNames.format(date));\n dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n }\n\n return {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl,\n };\n }\n\n normalizeDate(date) {\n const calendar = this;\n const d = new Date(date);\n if (calendar.hasTimePicker) {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n }\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n\n normalizeValues(values) {\n const calendar = this;\n let newValues = [];\n if (values && Array.isArray(values)) {\n newValues = values.map((val) => calendar.normalizeDate(val));\n }\n return newValues;\n }\n\n initInput() {\n const calendar = this;\n if (!calendar.$inputEl) return;\n if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n }\n\n isPopover() {\n const calendar = this;\n const { app, modal, params } = calendar;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n\n if (!calendar.inline && calendar.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n\n formatDate(d) {\n const calendar = this;\n const date = new Date(d);\n const year = date.getFullYear();\n const month = date.getMonth();\n const month1 = month + 1;\n const day = date.getDate();\n const weekDay = date.getDay();\n const { monthNames, monthNamesShort, dayNames, dayNamesShort } = calendar;\n const { dateFormat, locale } = calendar.params;\n\n function twoDigits(number) {\n return number < 10 ? `0${number}` : number;\n }\n if (typeof dateFormat === 'string') {\n const tokens = {\n yyyy: year,\n yy: String(year).substring(2),\n mm: twoDigits(month1),\n m: month1,\n MM: monthNames[month],\n M: monthNamesShort[month],\n dd: twoDigits(day),\n d: day,\n DD: dayNames[weekDay],\n D: dayNamesShort[weekDay],\n };\n if (calendar.params.timePicker) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n let hours12 = hours;\n if (hours > 12) hours12 = hours - 12;\n if (hours === 0) hours12 = 12;\n const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n\n Object.assign(tokens, {\n HH: twoDigits(hours),\n H: hours,\n hh: twoDigits(hours12),\n h: hours12,\n ss: twoDigits(seconds),\n s: seconds,\n ':mm': twoDigits(minutes),\n ':m': minutes,\n a,\n A: a.toUpperCase(),\n });\n }\n const regexp = new RegExp(\n Object.keys(tokens)\n .map((t) => `(${t})`)\n .join('|'),\n 'g',\n );\n return dateFormat.replace(regexp, (token) => {\n if (token in tokens) return tokens[token];\n return token;\n });\n }\n if (typeof dateFormat === 'function') {\n return dateFormat(date);\n }\n // Intl Object\n const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n return formatter.format(date);\n }\n\n formatValue() {\n const calendar = this;\n const { value } = calendar;\n if (calendar.params.formatValue) {\n return calendar.params.formatValue.call(calendar, value);\n }\n return value\n .map((v) => calendar.formatDate(v))\n .join(calendar.params.rangePicker ? ' - ' : ', ');\n }\n\n addValue(newValue) {\n const calendar = this;\n const { multiple, rangePicker, rangePickerMinDays, rangePickerMaxDays } = calendar.params;\n if (multiple) {\n if (!calendar.value) calendar.value = [];\n let inValuesIndex;\n for (let i = 0; i < calendar.value.length; i += 1) {\n if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n inValuesIndex = i;\n }\n }\n if (typeof inValuesIndex === 'undefined') {\n calendar.value.push(newValue);\n } else {\n calendar.value.splice(inValuesIndex, 1);\n }\n calendar.updateValue();\n } else if (rangePicker) {\n if (!calendar.value) calendar.value = [];\n if (calendar.value.length === 2 || calendar.value.length === 0) {\n calendar.value = [];\n }\n\n if (\n calendar.value.length === 0 ||\n (Math.abs(calendar.value[0].getTime() - newValue.getTime()) >=\n (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000 &&\n (rangePickerMaxDays === 0 ||\n Math.abs(calendar.value[0].getTime() - newValue.getTime()) <=\n (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000))\n )\n calendar.value.push(newValue);\n else calendar.value = [];\n\n calendar.value.sort((a, b) => a - b);\n calendar.updateValue();\n } else {\n calendar.value = [newValue];\n calendar.updateValue();\n }\n }\n\n setValue(values) {\n const calendar = this;\n const currentValue = calendar.value;\n if (\n Array.isArray(currentValue) &&\n Array.isArray(values) &&\n currentValue.length === values.length\n ) {\n let equal = true;\n currentValue.forEach((v, index) => {\n if (v !== values[index]) equal = false;\n });\n if (equal) return;\n }\n calendar.value = values;\n calendar.updateValue();\n }\n\n getValue() {\n const calendar = this;\n return calendar.value;\n }\n\n updateValue(onlyHeader) {\n const calendar = this;\n const { $el, $wrapperEl, $inputEl, value, params } = calendar;\n let i;\n if ($el && $el.length > 0) {\n $wrapperEl\n .find('.calendar-day-selected')\n .removeClass(\n 'calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right',\n );\n let valueDate;\n\n if (params.rangePicker && value.length === 2) {\n const leftDate = new Date(value[0]).getTime();\n const rightDate = new Date(value[1]).getTime();\n for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {\n valueDate = new Date(i);\n let addClass = 'calendar-day-selected';\n if (leftDate !== rightDate) {\n if (i !== leftDate && i !== rightDate) {\n addClass += ' calendar-day-selected-range';\n }\n if (i === leftDate) {\n addClass += ' calendar-day-selected-left';\n }\n if (i === rightDate) {\n addClass += ' calendar-day-selected-right';\n }\n }\n $wrapperEl\n .find(\n `.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`,\n )\n .addClass(addClass);\n }\n valueDate = new Date(leftDate);\n $wrapperEl\n .find(\n `.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`,\n )\n .removeClass('calendar-day-selected-range')\n .addClass('calendar-day-selected calendar-day-selected-left');\n valueDate = new Date(rightDate);\n $wrapperEl\n .find(\n `.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`,\n )\n .removeClass('calendar-day-selected-range')\n .addClass('calendar-day-selected calendar-day-selected-right');\n } else {\n for (i = 0; i < calendar.value.length; i += 1) {\n valueDate = new Date(value[i]);\n $wrapperEl\n .find(\n `.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`,\n )\n .addClass('calendar-day-selected');\n }\n }\n }\n if (!onlyHeader) {\n calendar.emit('local::change calendarChange', calendar, value);\n }\n\n if ($el && $el.length > 0 && calendar.hasTimePicker) {\n $el\n .find('.calendar-time-selector a')\n .text(\n value && value.length\n ? calendar.timeSelectorFormatter(value[0])\n : calendar.params.timePickerPlaceholder,\n );\n }\n\n if (($inputEl && $inputEl.length) || params.header) {\n const inputValue = calendar.formatValue(value);\n if (params.header && $el && $el.length) {\n $el.find('.calendar-selected-date').text(inputValue);\n }\n if ($inputEl && $inputEl.length && !onlyHeader) {\n $inputEl.val(inputValue);\n $inputEl.trigger('change');\n }\n }\n }\n\n updateCurrentMonthYear(dir) {\n const calendar = this;\n const { $months, $el, monthNames } = calendar;\n let currentLocaleMonth;\n let currentLocaleYear;\n if (typeof dir === 'undefined') {\n calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n currentLocaleYear = $months.eq(1).attr('data-locale-year');\n } else {\n calendar.currentMonth = parseInt(\n $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'),\n 10,\n );\n calendar.currentYear = parseInt(\n $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'),\n 10,\n );\n currentLocaleMonth = $months\n .eq(dir === 'next' ? $months.length - 1 : 0)\n .attr('data-locale-month');\n currentLocaleYear = $months\n .eq(dir === 'next' ? $months.length - 1 : 0)\n .attr('data-locale-year');\n }\n $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n $el.find('.current-year-value').text(currentLocaleYear);\n }\n\n update() {\n const calendar = this;\n const { currentYear, currentMonth, $wrapperEl } = calendar;\n const currentDate = new Date(currentYear, currentMonth);\n const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n const currentMonthHtml = calendar.renderMonth(currentDate);\n const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n\n $wrapperEl\n .transition(0)\n .html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`)\n .transform('translate3d(0,0,0)');\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n calendar.$months.each((monthEl) => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n }\n\n onMonthChangeStart(dir) {\n const calendar = this;\n const { $months, currentYear, currentMonth } = calendar;\n calendar.updateCurrentMonthYear(dir);\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n\n $months.eq(currentIndex).addClass('calendar-month-current');\n $months\n .eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1)\n .addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n\n calendar.emit(\n 'local::monthYearChangeStart calendarMonthYearChangeStart',\n calendar,\n currentYear,\n currentMonth,\n );\n }\n\n onMonthChangeEnd(dir, rebuildBoth) {\n const calendar = this;\n const { currentYear, currentMonth, $wrapperEl, monthsTranslate } = calendar;\n calendar.animating = false;\n let nextMonthHtml;\n let prevMonthHtml;\n let currentMonthHtml;\n $wrapperEl\n .find(\n '.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)',\n )\n .remove();\n\n if (typeof dir === 'undefined') {\n dir = 'next'; // eslint-disable-line\n rebuildBoth = true; // eslint-disable-line\n }\n if (!rebuildBoth) {\n currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n } else {\n $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n }\n if (dir === 'next' || rebuildBoth) {\n $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n }\n if (dir === 'prev' || rebuildBoth) {\n $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n }\n const $months = $wrapperEl.find('.calendar-month');\n calendar.$months = $months;\n calendar.setMonthsTranslate(monthsTranslate);\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar,\n dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0],\n );\n calendar.emit(\n 'local::monthYearChangeEnd calendarMonthYearChangeEnd',\n calendar,\n currentYear,\n currentMonth,\n );\n }\n\n setMonthsTranslate(translate) {\n const calendar = this;\n const { $months, isHorizontal: isH, inverter } = calendar;\n // eslint-disable-next-line\n translate = translate || calendar.monthsTranslate || 0;\n if (typeof calendar.monthsTranslate === 'undefined') {\n calendar.monthsTranslate = translate;\n }\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n const currentMonthTranslate = -translate * 100 * inverter;\n const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n $months\n .eq(0)\n .transform(\n `translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`,\n )\n .addClass('calendar-month-prev');\n $months\n .eq(1)\n .transform(\n `translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`,\n )\n .addClass('calendar-month-current');\n $months\n .eq(2)\n .transform(\n `translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`,\n )\n .addClass('calendar-month-next');\n }\n\n nextMonth(transition) {\n const calendar = this;\n const { params, $wrapperEl, inverter, isHorizontal: isH } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n const nextMonth = parseInt(\n calendar.$months.eq(calendar.$months.length - 1).attr('data-month'),\n 10,\n );\n const nextYear = parseInt(\n calendar.$months.eq(calendar.$months.length - 1).attr('data-year'),\n 10,\n );\n const nextDate = new Date(nextYear, nextMonth);\n const nextDateTime = nextDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.maxDate) {\n if (nextDateTime > new Date(params.maxDate).getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate -= 1;\n if (nextMonth === calendar.currentMonth) {\n const nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next'))\n .transform(\n `translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`,\n )\n .addClass('calendar-month-next');\n $wrapperEl.append(nextMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar.$months.eq(calendar.$months.length - 1)[0],\n );\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('next');\n const translate = calendar.monthsTranslate * 100 * inverter;\n\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('next');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('next');\n }\n }\n\n prevMonth(transition) {\n const calendar = this;\n const { params, $wrapperEl, inverter, isHorizontal: isH } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n const prevDate = new Date(prevYear, prevMonth + 1, -1);\n const prevDateTime = prevDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (prevDateTime < minDate.getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate += 1;\n if (prevMonth === calendar.currentMonth) {\n const prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev'))\n .transform(\n `translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`,\n )\n .addClass('calendar-month-prev');\n $wrapperEl.prepend(prevMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('prev');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('prev');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('prev');\n }\n }\n\n resetMonth(transition = '') {\n const calendar = this;\n const { $wrapperEl, inverter, isHorizontal: isH, monthsTranslate } = calendar;\n const translate = monthsTranslate * 100 * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n }\n // eslint-disable-next-line\n setYearMonth(year, month, transition) {\n const calendar = this;\n const { params, isHorizontal: isH, $wrapperEl, inverter } = calendar;\n // eslint-disable-next-line\n if (typeof year === 'undefined') year = calendar.currentYear;\n // eslint-disable-next-line\n if (typeof month === 'undefined') month = calendar.currentMonth;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n // eslint-disable-next-line\n transition = '';\n // eslint-disable-next-line\n if (!params.animate) transition = 0;\n }\n let targetDate;\n if (year < calendar.currentYear) {\n targetDate = new Date(year, month + 1, -1).getTime();\n } else {\n targetDate = new Date(year, month).getTime();\n }\n if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n return false;\n }\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (targetDate < minDate.getTime()) {\n return false;\n }\n }\n const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n const dir = targetDate > currentDate ? 'next' : 'prev';\n const newMonthHTML = calendar.renderMonth(new Date(year, month));\n calendar.monthsTranslate = calendar.monthsTranslate || 0;\n const prevTranslate = calendar.monthsTranslate;\n let monthTranslate;\n const transitionEndCallback = !calendar.animating && transition !== 0;\n if (targetDate > currentDate) {\n // To next\n calendar.monthsTranslate -= 1;\n if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n $wrapperEl.append(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n calendar.$months\n .eq(calendar.$months.length - 1)\n .transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`)\n .addClass('calendar-month-next');\n } else {\n // To prev\n calendar.monthsTranslate += 1;\n if (!calendar.animating) calendar.$months.eq(0).remove();\n $wrapperEl.prepend(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n calendar.$months\n .eq(0)\n .transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`)\n .addClass('calendar-month-prev');\n }\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n dir === 'next'\n ? calendar.$months.eq(calendar.$months.length - 1)[0]\n : calendar.$months.eq(0)[0],\n );\n\n calendar.animating = true;\n calendar.onMonthChangeStart(dir);\n const wrapperTranslate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd(dir, true);\n });\n }\n if (!params.animate || transition === 0) {\n calendar.onMonthChangeEnd(dir, true);\n }\n }\n\n nextYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear + 1);\n }\n\n prevYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear - 1);\n }\n // eslint-disable-next-line\n dateInRange(dayDate, range) {\n let match = false;\n let i;\n if (!range) return false;\n if (Array.isArray(range)) {\n for (i = 0; i < range.length; i += 1) {\n if (range[i].from || range[i].to) {\n if (range[i].from && range[i].to) {\n if (\n dayDate <= new Date(range[i].to).getTime() &&\n dayDate >= new Date(range[i].from).getTime()\n ) {\n match = true;\n }\n } else if (range[i].from) {\n if (dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime()) {\n match = true;\n }\n }\n } else if (range[i].date) {\n if (dayDate === new Date(range[i].date).getTime()) {\n match = true;\n }\n } else if (dayDate === new Date(range[i]).getTime()) {\n match = true;\n }\n }\n } else if (range.from || range.to) {\n if (range.from && range.to) {\n if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.from) {\n if (dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.to) {\n if (dayDate <= new Date(range.to).getTime()) {\n match = true;\n }\n }\n } else if (range.date) {\n match = dayDate === new Date(range.date).getTime();\n } else if (typeof range === 'function') {\n match = range(new Date(dayDate));\n }\n return match;\n }\n // eslint-disable-next-line\n daysInMonth(date) {\n const d = new Date(date);\n return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n }\n\n renderMonths(date) {\n const calendar = this;\n if (calendar.params.renderMonths) {\n return calendar.params.renderMonths.call(calendar, date);\n }\n return (\n <div class=\"calendar-months-wrapper\">\n {calendar.renderMonth(date, 'prev')}\n {calendar.renderMonth(date)}\n {calendar.renderMonth(date, 'next')}\n </div>\n );\n }\n\n renderMonth(d, offset) {\n const calendar = this;\n const { params, value } = calendar;\n if (params.renderMonth) {\n return params.renderMonth.call(calendar, d, offset);\n }\n let date = new Date(d);\n let year = date.getFullYear();\n let month = date.getMonth();\n let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n let localeYear = calendar.yearFormatter(date);\n\n if (offset === 'next') {\n if (month === 11) date = new Date(year + 1, 0);\n else date = new Date(year, month + 1, 1);\n }\n if (offset === 'prev') {\n if (month === 0) date = new Date(year - 1, 11);\n else date = new Date(year, month - 1, 1);\n }\n if (offset === 'next' || offset === 'prev') {\n month = date.getMonth();\n year = date.getFullYear();\n localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n localeYear = calendar.yearFormatter(date);\n }\n\n const currentValues = [];\n const today = new Date().setHours(0, 0, 0, 0);\n const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n const rows = 6;\n const cols = 7;\n const daysInPrevMonth = calendar.daysInMonth(\n new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000,\n );\n const daysInMonth = calendar.daysInMonth(date);\n const minDayNumber = params.firstDay === 6 ? 0 : 1;\n\n let monthHtml = '';\n let dayIndex = 0 + (params.firstDay - 1);\n let disabled;\n let hasEvents;\n let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n\n if (value && value.length) {\n for (let i = 0; i < value.length; i += 1) {\n currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n }\n }\n\n for (let row = 1; row <= rows; row += 1) {\n let rowHtml = '';\n for (let col = 1; col <= cols; col += 1) {\n dayIndex += 1;\n let dayDate;\n let dayNumber = dayIndex - firstDayOfMonthIndex;\n let addClass = '';\n if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n dayIndex -= 7;\n dayNumber = dayIndex - firstDayOfMonthIndex;\n }\n\n const weekDayIndex =\n col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;\n\n if (dayNumber < 0) {\n dayNumber = daysInPrevMonth + dayNumber + 1;\n addClass += ' calendar-day-prev';\n dayDate = new Date(\n month - 1 < 0 ? year - 1 : year,\n month - 1 < 0 ? 11 : month - 1,\n dayNumber,\n ).getTime();\n } else {\n dayNumber += 1;\n if (dayNumber > daysInMonth) {\n dayNumber -= daysInMonth;\n addClass += ' calendar-day-next';\n dayDate = new Date(\n month + 1 > 11 ? year + 1 : year,\n month + 1 > 11 ? 0 : month + 1,\n dayNumber,\n ).getTime();\n } else {\n dayDate = new Date(year, month, dayNumber).getTime();\n }\n }\n // Today\n if (dayDate === today) addClass += ' calendar-day-today';\n\n // Selected\n if (params.rangePicker && currentValues.length === 2) {\n if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {\n addClass += ' calendar-day-selected';\n }\n if (currentValues[0] !== currentValues[1]) {\n if (dayDate > currentValues[0] && dayDate < currentValues[1]) {\n addClass += ' calendar-day-selected-range';\n }\n if (dayDate === currentValues[0]) {\n addClass += ' calendar-day-selected-left';\n }\n if (dayDate === currentValues[1]) {\n addClass += ' calendar-day-selected-right';\n }\n }\n } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n // Weekend\n if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n addClass += ' calendar-day-weekend';\n }\n // Events\n let eventsHtml = '';\n hasEvents = false;\n if (params.events) {\n if (calendar.dateInRange(dayDate, params.events)) {\n hasEvents = true;\n }\n }\n if (hasEvents) {\n addClass += ' calendar-day-has-events';\n // prettier-ignore\n eventsHtml = `\n <span class=\"calendar-day-events\">\n <span class=\"calendar-day-event\"></span>\n </span>\n `;\n if (Array.isArray(params.events)) {\n const eventDots = [];\n params.events.forEach((ev) => {\n const color = ev.color || '';\n if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n eventDots.push(color);\n }\n });\n // prettier-ignore\n eventsHtml = `\n <span class=\"calendar-day-events\">\n ${eventDots.map(color => `\n <span class=\"calendar-day-event\" style=\"${color ? `background-color: ${color}` : ''}\"></span>\n `.trim()).join('')}\n </span>\n `;\n }\n }\n // Custom Ranges\n if (params.rangesClasses) {\n for (let k = 0; k < params.rangesClasses.length; k += 1) {\n if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n addClass += ` ${params.rangesClasses[k].cssClass}`;\n }\n }\n }\n // Disabled\n disabled = false;\n if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) {\n disabled = true;\n }\n if (params.disabled) {\n if (calendar.dateInRange(dayDate, params.disabled)) {\n disabled = true;\n }\n }\n if (disabled) {\n addClass += ' calendar-day-disabled';\n }\n\n dayDate = new Date(dayDate);\n const dayYear = dayDate.getFullYear();\n const dayMonth = dayDate.getMonth();\n const dayNumberDisplay = calendar.dayFormatter(dayDate);\n // prettier-ignore\n rowHtml += `\n <div data-year=\"${dayYear}\" data-month=\"${dayMonth}\" data-day=\"${dayNumber}\" class=\"calendar-day${addClass}\" data-date=\"${dayYear}-${dayMonth}-${dayNumber}\">\n <span class=\"calendar-day-number\">${dayNumberDisplay}${eventsHtml}</span>\n </div>`.trim();\n }\n monthHtml += `<div class=\"calendar-row\">${rowHtml}</div>`;\n }\n monthHtml = `<div class=\"calendar-month\" data-year=\"${year}\" data-month=\"${month}\" data-locale-year=\"${localeYear}\" data-locale-month=\"${localeMonth}\">${monthHtml}</div>`;\n return monthHtml;\n }\n\n renderWeekHeader() {\n const calendar = this;\n if (calendar.params.renderWeekHeader) {\n return calendar.params.renderWeekHeader.call(calendar);\n }\n const { params } = calendar;\n let weekDaysHtml = '';\n for (let i = 0; i < 7; i += 1) {\n const dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;\n const dayName = calendar.dayNamesShort[dayIndex];\n weekDaysHtml += `<div class=\"calendar-week-day\">${dayName}</div>`;\n }\n return <div class=\"calendar-week-header\">{weekDaysHtml}</div>;\n }\n\n renderMonthSelector() {\n const calendar = this;\n if (calendar.params.renderMonthSelector) {\n return calendar.params.renderMonthSelector.call(calendar);\n }\n return (\n <div class=\"calendar-month-selector\">\n <a class=\"link icon-only calendar-prev-month-button\">\n <i class=\"icon icon-prev\"></i>\n </a>\n {calendar.params.monthPicker ? (\n <a class=\"current-month-value link\"></a>\n ) : (\n <span class=\"current-month-value\"></span>\n )}\n <a class=\"link icon-only calendar-next-month-button\">\n <i class=\"icon icon-next\"></i>\n </a>\n </div>\n );\n }\n\n renderYearSelector() {\n const calendar = this;\n if (calendar.params.renderYearSelector) {\n return calendar.params.renderYearSelector.call(calendar);\n }\n return (\n <div class=\"calendar-year-selector\">\n <a class=\"link icon-only calendar-prev-year-button\">\n <i class=\"icon icon-prev\"></i>\n </a>\n {calendar.params.yearPicker ? (\n <a class=\"current-year-value link\"></a>\n ) : (\n <span class=\"current-year-value\"></span>\n )}\n <a class=\"link icon-only calendar-next-year-button\">\n <i class=\"icon icon-next\"></i>\n </a>\n </div>\n );\n }\n\n // eslint-disable-next-line\n renderTimeSelector() {\n const calendar = this;\n const value = calendar.value && calendar.value[0];\n let timeString;\n if (value) timeString = calendar.timeSelectorFormatter(value);\n return (\n <div class=\"calendar-time-selector\">\n <span>{calendar.params.timePickerLabel}</span>\n <a class=\"link\">{timeString || calendar.params.timePickerPlaceholder}</a>\n </div>\n );\n }\n\n renderHeader() {\n const calendar = this;\n if (calendar.params.renderHeader) {\n return calendar.params.renderHeader.call(calendar);\n }\n return (\n <div class=\"calendar-header\">\n <div class=\"calendar-selected-date\">{calendar.params.headerPlaceholder}</div>\n </div>\n );\n }\n\n renderFooter() {\n const calendar = this;\n const app = calendar.app;\n if (calendar.params.renderFooter) {\n return calendar.params.renderFooter.call(calendar);\n }\n return (\n <div class=\"calendar-footer\">\n <a\n class={`${\n app.theme === 'md' ? 'button button-round' : 'link'\n } calendar-close sheet-close popover-close`}\n >\n {calendar.params.toolbarCloseText}\n </a>\n </div>\n );\n }\n\n renderToolbar() {\n const calendar = this;\n if (calendar.params.renderToolbar) {\n return calendar.params.renderToolbar.call(calendar, calendar);\n }\n // prettier-ignore\n return (\n <div class=\"toolbar toolbar-top\">\n <div class=\"toolbar-inner\">\n {calendar.params.monthSelector ? calendar.renderMonthSelector() : ''}\n {calendar.params.yearSelector ? calendar.renderYearSelector() : ''}\n </div>\n </div>\n );\n }\n // eslint-disable-next-line\n renderInline() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return (\n <div\n class={`calendar calendar-inline ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`}\n >\n {header && calendar.renderHeader()}\n {toolbar && calendar.renderToolbar()}\n {weekHeader && calendar.renderWeekHeader()}\n <div class=\"calendar-months\">{calendar.renderMonths(date)}</div>\n {hasTimePicker && calendar.renderTimeSelector()}\n {footer && calendar.renderFooter()}\n </div>\n );\n }\n\n renderCustomModal() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return (\n <div\n class={`calendar calendar-modal ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`}\n >\n {header && calendar.renderHeader()}\n {toolbar && calendar.renderToolbar()}\n {weekHeader && calendar.renderWeekHeader()}\n <div class=\"calendar-months\">{calendar.renderMonths(date)}</div>\n {hasTimePicker && calendar.renderTimeSelector()}\n {footer && calendar.renderFooter()}\n </div>\n );\n }\n\n renderSheet() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return (\n <div\n class={`sheet-modal calendar calendar-sheet ${rangePicker ? 'calendar-range' : ''} ${\n cssClass || ''\n }`}\n >\n {header && calendar.renderHeader()}\n {toolbar && calendar.renderToolbar()}\n {weekHeader && calendar.renderWeekHeader()}\n <div class=\"sheet-modal-inner calendar-months\">{calendar.renderMonths(date)}</div>\n {hasTimePicker && calendar.renderTimeSelector()}\n {footer && calendar.renderFooter()}\n </div>\n );\n }\n\n renderPopover() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return (\n <div class=\"popover calendar-popover\">\n <div class=\"popover-inner\">\n <div class={`calendar ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`}>\n {header && calendar.renderHeader()}\n {toolbar && calendar.renderToolbar()}\n {weekHeader && calendar.renderWeekHeader()}\n <div class=\"calendar-months\">{calendar.renderMonths(date)}</div>\n {hasTimePicker && calendar.renderTimeSelector()}\n {footer && calendar.renderFooter()}\n </div>\n </div>\n </div>\n );\n }\n\n render() {\n const calendar = this;\n const { params } = calendar;\n if (params.render) return params.render.call(calendar);\n if (!calendar.inline) {\n let modalType = params.openIn;\n if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n\n if (modalType === 'popover') return calendar.renderPopover();\n if (modalType === 'sheet') return calendar.renderSheet();\n return calendar.renderCustomModal();\n }\n return calendar.renderInline();\n }\n\n openMonthPicker() {\n const calendar = this;\n const { $el, app } = calendar;\n if (!$el || !$el.length) return;\n\n $el.append(\n '<div class=\"popover calendar-popover calendar-month-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-month-picker\"></div></div></div>',\n );\n\n calendar.monthPickerPopover = app.popover.create({\n el: $el.find('.calendar-month-picker-popover'),\n targetEl: $el.find('.calendar-month-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeMonthPicker();\n },\n closed() {\n if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();\n calendar.monthPickerPopover.destroy();\n if (calendar.monthPickerInstance) {\n calendar.monthPickerInstance.close();\n calendar.monthPickerInstance.destroy();\n }\n delete calendar.monthPickerInstance;\n delete calendar.monthPickerPopover;\n },\n },\n });\n calendar.monthPickerPopover.open();\n\n const localeMonth = parseInt(\n calendar.$el.find('.calendar-month-current').attr('data-locale-month'),\n 10,\n );\n\n const values = [];\n const displayValues = [];\n calendar.monthNames.forEach((m, index) => {\n values.push(index);\n displayValues.push(m);\n });\n\n calendar.monthPickerInstance = app.picker.create({\n containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),\n value: [localeMonth],\n toolbar: calendar.params.monthPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.monthPickerCloseText,\n cols: [\n {\n values,\n displayValues,\n },\n ],\n });\n }\n\n closeMonthPicker() {\n const calendar = this;\n if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened)\n calendar.monthPickerPopover.close();\n\n const index = calendar.monthPickerInstance.value[0];\n const localeMonthIndex = parseInt(\n calendar.$el.find('.calendar-month-current').attr('data-locale-month'),\n 10,\n );\n const monthIndex = calendar.currentMonth;\n const diff = localeMonthIndex - monthIndex;\n const diffIndex = index - diff;\n calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n }\n\n openYearPicker() {\n const calendar = this;\n const { $el, app } = calendar;\n if (!$el || !$el.length) return;\n\n $el.append(\n '<div class=\"popover calendar-popover calendar-year-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-year-picker\"></div></div></div>',\n );\n\n calendar.yearPickerPopover = app.popover.create({\n el: $el.find('.calendar-year-picker-popover'),\n targetEl: $el.find('.calendar-year-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeYearPicker();\n },\n closed() {\n if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();\n calendar.yearPickerPopover.destroy();\n if (calendar.yearPickerInstance) {\n calendar.yearPickerInstance.close();\n calendar.yearPickerInstance.destroy();\n }\n delete calendar.yearPickerInstance;\n delete calendar.yearPickerPopover;\n },\n },\n });\n calendar.yearPickerPopover.open();\n\n const currentYear = calendar.currentYear;\n let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n if (calendar.params.minDate) {\n yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n }\n let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n if (calendar.params.maxDate) {\n yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n }\n const years = [];\n for (let i = yearMin; i <= yearMax; i += 1) {\n years.push(i);\n }\n\n calendar.yearPickerInstance = app.picker.create({\n containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),\n value: [currentYear],\n toolbar: calendar.params.yearPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.yearPickerCloseText,\n cols: [\n {\n values: years,\n },\n ],\n });\n }\n\n closeYearPicker() {\n const calendar = this;\n if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened)\n calendar.yearPickerPopover.close();\n calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);\n }\n\n openTimePicker() {\n const calendar = this;\n const { $el, app, is12HoursFormat } = calendar;\n if (!$el || !$el.length) return;\n $el.append(\n '<div class=\"popover calendar-popover calendar-time-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-time-picker\"></div></div></div>',\n );\n const hoursArr = [];\n const minutesArr = [];\n const hoursMin = is12HoursFormat ? 1 : 0;\n const hoursMax = is12HoursFormat ? 12 : 23;\n for (let i = hoursMin; i <= hoursMax; i += 1) {\n hoursArr.push(i);\n }\n for (let i = 0; i <= 59; i += 1) {\n minutesArr.push(i);\n }\n let value;\n if (calendar.value && calendar.value.length) {\n value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n } else {\n value = [new Date().getHours(), new Date().getMinutes()];\n }\n if (is12HoursFormat) {\n value.push(value[0] < 12 ? 'AM' : 'PM');\n if (value[0] > 12) value[0] -= 12;\n if (value[0] === 0) value[0] = 12;\n }\n calendar.timePickerPopover = app.popover.create({\n el: $el.find('.calendar-time-picker-popover'),\n targetEl: $el.find('.calendar-time-selector .link'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeTimePicker();\n },\n closed() {\n if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();\n calendar.timePickerPopover.destroy();\n if (calendar.timePickerInstance) {\n calendar.timePickerInstance.close();\n calendar.timePickerInstance.destroy();\n }\n delete calendar.timePickerInstance;\n delete calendar.timePickerPopover;\n },\n },\n });\n calendar.timePickerPopover.open();\n calendar.timePickerInstance = app.picker.create({\n containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),\n value,\n toolbar: calendar.params.timePickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.timePickerCloseText,\n cols: [\n {\n values: hoursArr,\n },\n {\n divider: true,\n content: ':',\n },\n {\n values: minutesArr,\n displayValues: minutesArr.map((m) => (m < 10 ? `0${m}` : m)),\n },\n ...(is12HoursFormat\n ? [\n {\n values: ['AM', 'PM'],\n },\n ]\n : []),\n ],\n });\n }\n\n closeTimePicker() {\n const calendar = this;\n const { is12HoursFormat } = calendar;\n if (calendar.timePickerInstance) {\n const timePickerValue = calendar.timePickerInstance.value;\n let hours = parseInt(timePickerValue[0], 10);\n const minutes = parseInt(timePickerValue[1], 10);\n const period = calendar.timePickerInstance.value[2];\n if (is12HoursFormat) {\n if (period === 'AM' && hours === 12) {\n hours = 0;\n } else if (period === 'PM' && hours !== 12) {\n hours += 12;\n }\n }\n\n let value = calendar.value && calendar.value.length && calendar.value[0];\n if (!value) {\n value = new Date();\n value.setHours(hours, minutes, 0, 0);\n } else {\n value = new Date(value);\n value.setHours(hours, minutes);\n }\n calendar.setValue([value]);\n if (calendar.timePickerPopover && calendar.timePickerPopover.opened)\n calendar.timePickerPopover.close();\n }\n }\n\n onOpen() {\n const calendar = this;\n const { initialized, $el, app, $inputEl, inline, value, params } = calendar;\n calendar.closing = false;\n calendar.opened = true;\n calendar.opening = true;\n\n // Init main events\n calendar.attachCalendarEvents();\n\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) calendar.setValue(value, 0);\n else if (params.value) {\n calendar.setValue(calendar.normalizeValues(params.value), 0);\n }\n } else if (value) {\n calendar.setValue(value, 0);\n }\n\n // Update current month and year\n calendar.updateCurrentMonthYear();\n\n // Set initial translate\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n\n // Update input value\n if (updateValue) calendar.updateValue();\n else if (params.header && value) {\n calendar.updateValue(true);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n calendar.initialized = true;\n\n calendar.$months.each((monthEl) => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n\n // Trigger events\n if ($el) {\n $el.trigger('calendar:open');\n }\n if ($inputEl) {\n $inputEl.trigger('calendar:open');\n }\n calendar.emit('local::open calendarOpen', calendar);\n }\n\n onOpened() {\n const calendar = this;\n calendar.opening = false;\n if (calendar.$el) {\n calendar.$el.trigger('calendar:opened');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:opened');\n }\n calendar.emit('local::opened calendarOpened', calendar);\n }\n\n onClose() {\n const calendar = this;\n const app = calendar.app;\n calendar.opening = false;\n calendar.closing = true;\n\n if (calendar.$inputEl) {\n if (app.theme === 'md') {\n calendar.$inputEl.trigger('blur');\n } else {\n const validate = calendar.$inputEl.attr('validate');\n const required = calendar.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(calendar.$inputEl);\n }\n }\n }\n if (calendar.detachCalendarEvents) {\n calendar.detachCalendarEvents();\n }\n\n if (calendar.$el) {\n calendar.$el.trigger('calendar:close');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:close');\n }\n calendar.emit('local::close calendarClose', calendar);\n }\n\n onClosed() {\n const calendar = this;\n calendar.opened = false;\n calendar.closing = false;\n\n if (!calendar.inline) {\n nextTick(() => {\n if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n if (!calendar.params.routableModals) {\n calendar.modal.destroy();\n }\n }\n delete calendar.modal;\n });\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:closed');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:closed');\n }\n calendar.emit('local::closed calendarClosed', calendar);\n }\n\n open() {\n const calendar = this;\n const { app, opened, inline, $inputEl, params } = calendar;\n if (opened) return;\n\n if (inline) {\n calendar.$el = $(calendar.render());\n calendar.$el[0].f7Calendar = calendar;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$containerEl.append(calendar.$el);\n calendar.onOpen();\n calendar.onOpened();\n return;\n }\n let modalType = params.openIn;\n if (modalType === 'auto') {\n modalType = calendar.isPopover() ? 'popover' : 'sheet';\n }\n const modalContent = calendar.render();\n\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: params.scrollToInput ? $inputEl : undefined,\n content: modalContent,\n backdrop:\n params.backdrop === true ||\n ((modalType === 'popover' || modalType === 'customModal') &&\n app.params.popover.backdrop !== false &&\n params.backdrop !== false),\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n calendar.modal = modal;\n calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$el[0].f7Calendar = calendar;\n if (modalType === 'customModal') {\n $(calendar.$el)\n .find('.calendar-close')\n .once('click', () => {\n calendar.close();\n });\n }\n calendar.onOpen();\n },\n opened() {\n calendar.onOpened();\n },\n close() {\n calendar.onClose();\n },\n closed() {\n calendar.onClosed();\n },\n },\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && calendar.view) {\n calendar.view.router.navigate({\n url: calendar.url,\n route: {\n path: calendar.url,\n [modalType]: modalParams,\n },\n });\n } else {\n calendar.modal = app[modalType].create(modalParams);\n calendar.modal.open();\n }\n }\n\n close() {\n const calendar = this;\n const { opened, inline } = calendar;\n if (!opened) return;\n if (inline) {\n calendar.onClose();\n calendar.onClosed();\n return;\n }\n if (calendar.params.routableModals && calendar.view) {\n calendar.view.router.back();\n } else {\n calendar.modal.close();\n }\n }\n\n init() {\n const calendar = this;\n\n calendar.initInput();\n\n if (calendar.inline) {\n calendar.open();\n calendar.emit('local::init calendarInit', calendar);\n return;\n }\n\n if (!calendar.initialized && calendar.params.value) {\n calendar.setValue(calendar.normalizeValues(calendar.params.value));\n }\n\n // Attach input Events\n if (calendar.$inputEl) {\n calendar.attachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.attachHtmlEvents();\n }\n calendar.emit('local::init calendarInit', calendar);\n }\n\n destroy() {\n const calendar = this;\n if (calendar.destroyed) return;\n const { $el } = calendar;\n calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n if ($el) $el.trigger('calendar:beforedestroy');\n\n calendar.close();\n\n // Detach Events\n if (calendar.$inputEl) {\n calendar.detachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.detachHtmlEvents();\n }\n\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n\n if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n deleteProps(calendar);\n calendar.destroyed = true;\n }\n}\n\nexport default Calendar;\n","import ConstructorMethods from '../../shared/constructor-methods.js';\nimport Calendar from './calendar-class.js';\nimport $ from '../../shared/dom7.js';\n\nexport default {\n name: 'calendar',\n static: {\n Calendar,\n },\n create() {\n const app = this;\n app.calendar = ConstructorMethods({\n defaultSelector: '.calendar',\n constructor: Calendar,\n app,\n domProp: 'f7Calendar',\n });\n app.calendar.close = function close(el = '.calendar') {\n const $el = $(el);\n if ($el.length === 0) return;\n const calendar = $el[0].f7Calendar;\n if (!calendar || (calendar && !calendar.opened)) return;\n calendar.close();\n };\n },\n params: {\n calendar: {\n // Calendar settings\n dateFormat: undefined,\n monthNames: 'auto',\n monthNamesShort: 'auto',\n dayNames: 'auto',\n dayNamesShort: 'auto',\n locale: undefined,\n firstDay: 1, // First day of the week, Monday\n weekendDays: [0, 6], // Sunday and Saturday\n multiple: false,\n rangePicker: false,\n rangePickerMinDays: 1, // when calendar is used as rangePicker\n rangePickerMaxDays: 0, // when calendar is used as rangePicker, 0 means unlimited\n direction: 'horizontal', // or 'vertical'\n minDate: null,\n maxDate: null,\n disabled: null, // dates range of disabled days\n events: null, // dates range of days with events\n rangesClasses: null, // array with custom classes date ranges\n touchMove: true,\n animate: true,\n closeOnSelect: false,\n monthSelector: true,\n monthPicker: true,\n monthPickerToolbar: true,\n monthPickerCloseText: 'Done',\n yearSelector: true,\n yearPicker: true,\n yearPickerToolbar: true,\n yearPickerMin: undefined,\n yearPickerMax: undefined,\n yearPickerCloseText: 'Done',\n timePicker: false,\n timePickerToolbar: true,\n timePickerLabel: 'Time',\n timePickerFormat: { hour: 'numeric', minute: 'numeric' },\n timePickerPlaceholder: 'Select time',\n timePickerCloseText: 'Done',\n weekHeader: true,\n value: null,\n // Common opener settings\n containerEl: null,\n openIn: 'auto', // or 'popover' or 'sheet' or 'customModal'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n header: false,\n headerPlaceholder: 'Select date',\n toolbar: true,\n toolbarCloseText: 'Done',\n footer: false,\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'date/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderWeekHeader: null,\n renderMonths: null,\n renderMonth: null,\n renderMonthSelector: null,\n renderYearSelector: null,\n renderHeader: null,\n renderFooter: null,\n renderToolbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n render: null,\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default function pickerColumn(colEl, updateItems) {\n const picker = this;\n // const app = picker.app;\n const $colEl = $(colEl);\n const colIndex = $colEl.index();\n const col = picker.cols[colIndex];\n if (col.divider) return;\n\n col.$el = $colEl;\n col.el = $colEl[0];\n col.$itemsEl = col.$el.find('.picker-items');\n col.items = col.$itemsEl.find('.picker-item');\n\n let itemHeight;\n let colHeight;\n\n col.replaceValues = function replaceColValues(values, displayValues) {\n col.detachEvents();\n col.values = values;\n col.displayValues = displayValues;\n col.$itemsEl.html(picker.renderColumn(col, true));\n col.items = col.$itemsEl.find('.picker-item');\n col.calcSize();\n col.setValue(col.values[0], true);\n col.attachEvents();\n };\n col.calcSize = function calcColSize() {\n colHeight = col.$el[0].offsetHeight;\n itemHeight = col.items[0].offsetHeight;\n\n const hadPadding = col.el.style.getPropertyValue('--f7-picker-scroll-padding');\n col.el.style.setProperty('--f7-picker-scroll-padding', `${(colHeight - itemHeight) / 2}px`);\n if (!hadPadding) {\n col.$itemsEl[0].scrollTop = 0;\n }\n };\n\n col.setValue = function setColValue(newValue, valueCallbacks) {\n const newActiveIndex = col.$itemsEl\n .find(`.picker-item[data-picker-value=\"${newValue}\"]`)\n .index();\n if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n return;\n }\n const newScrollTop = newActiveIndex * itemHeight;\n col.$itemsEl[0].scrollTop = newScrollTop;\n\n // Update items\n col.updateItems(newActiveIndex, newScrollTop, valueCallbacks);\n };\n\n col.updateItems = function updateColItems(activeIndex, scrollTop, valueCallbacks) {\n if (typeof scrollTop === 'undefined') {\n // eslint-disable-next-line\n scrollTop = col.$itemsEl[0].scrollTop;\n }\n\n /* eslint-disable no-param-reassign */\n if (typeof activeIndex === 'undefined') {\n activeIndex = Math.round(scrollTop / itemHeight);\n }\n if (activeIndex < 0) activeIndex = 0;\n if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n /* eslint-enable no-param-reassign */\n const previousActiveIndex = col.activeIndex;\n col.activeIndex = activeIndex;\n col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n\n const selectedItem = col.items.eq(activeIndex);\n selectedItem.addClass('picker-item-selected').children().transform('');\n // Set 3D rotate effect\n if (picker.params.rotateEffect) {\n col.items.each((itemEl) => {\n const $itemEl = $(itemEl);\n\n const itemOffset = itemEl.offsetTop - (colHeight - itemHeight) / 2 - scrollTop;\n const percentage = itemOffset / itemHeight;\n const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n\n let angle = -24 * percentage;\n if (angle > 180) angle = 180;\n if (angle < -180) angle = -180;\n if (Math.abs(percentage) > itemsFit) {\n $itemEl.addClass('picker-item-far');\n } else {\n $itemEl.removeClass('picker-item-far');\n }\n $itemEl\n .children('span')\n .transform(`translate3d(0, ${-percentage * itemHeight}px, -100px) rotateX(${angle}deg)`);\n });\n }\n\n if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n // Update values\n col.value = selectedItem.attr('data-picker-value');\n col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n // On change callback\n if (previousActiveIndex !== activeIndex) {\n if (col.onChange) {\n col.onChange(picker, col.value, col.displayValue);\n }\n picker.updateValue();\n }\n }\n };\n\n function handleScroll() {\n col.updateItems();\n }\n\n function handleClick() {\n const value = $(this).attr('data-picker-value');\n col.setValue(value);\n }\n\n col.attachEvents = function attachColEvents() {\n col.$itemsEl.on('scroll', handleScroll);\n col.items.on('click', handleClick);\n };\n col.detachEvents = function detachColEvents() {\n col.items.off('click', handleClick);\n };\n\n col.init = function initCol() {\n col.calcSize();\n if (colIndex === 0) col.$el.addClass('picker-column-first');\n if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n if (picker.params.freeMode) col.$el.addClass('picker-column-free-mode');\n // Update items on init\n if (updateItems) col.updateItems(0);\n\n col.attachEvents();\n };\n\n col.destroy = function destroyCol() {\n col.detachEvents();\n };\n\n col.init();\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nimport pickerColumn from './picker-column.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Picker extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const picker = this;\n const device = getDevice();\n const window = getWindow();\n picker.params = extend({}, app.params.picker, params);\n\n let $containerEl;\n if (picker.params.containerEl) {\n $containerEl = $(picker.params.containerEl);\n if ($containerEl.length === 0) return picker;\n }\n\n let $inputEl;\n if (picker.params.inputEl) {\n $inputEl = $(picker.params.inputEl);\n }\n\n let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n if (picker.params.scrollToEl) {\n const scrollToEl = $(picker.params.scrollToEl);\n if (scrollToEl.length > 0) {\n $scrollToEl = scrollToEl;\n }\n }\n\n extend(picker, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n needsOriginFix:\n device.ios ||\n (window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 &&\n window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 &&\n !device.android),\n cols: [],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $scrollToEl,\n initialized: false,\n opened: false,\n url: picker.params.url,\n });\n\n function onResize() {\n picker.resizeCols();\n }\n function onInputClick() {\n picker.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n let htmlTouchStartTarget = null;\n function onHtmlTouchStart(e) {\n htmlTouchStartTarget = e.target;\n }\n function onHtmlClick(e) {\n if (picker.destroyed || !picker.params) return;\n const $targetEl = $(e.target);\n if (picker.isPopover()) return;\n if (!picker.opened || picker.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if (\n htmlTouchStartTarget === e.target &&\n $targetEl[0] !== $inputEl[0] &&\n $targetEl.closest('.sheet-modal').length === 0\n ) {\n picker.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n picker.close();\n }\n }\n\n // Events\n extend(picker, {\n attachResizeEvent() {\n app.on('resize', onResize);\n },\n detachResizeEvent() {\n app.off('resize', onResize);\n },\n attachInputEvents() {\n picker.$inputEl.on('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.on('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n picker.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n picker.$inputEl.off('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.off('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n delete picker.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n app.on('touchstart', onHtmlTouchStart);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n app.off('touchstart', onHtmlTouchStart);\n },\n });\n\n picker.init();\n\n return picker;\n }\n\n get view() {\n const { app, params, $inputEl } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n initInput() {\n const picker = this;\n if (!picker.$inputEl) return;\n if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n }\n\n resizeCols() {\n const picker = this;\n if (!picker.opened) return;\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n picker.cols[i].calcSize();\n picker.cols[i].setValue(picker.cols[i].value, false);\n }\n }\n }\n\n isPopover() {\n const picker = this;\n const { app, modal, params } = picker;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n\n if (!picker.inline && picker.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n\n formatValue() {\n const picker = this;\n const { value, displayValue } = picker;\n if (picker.params.formatValue) {\n return picker.params.formatValue.call(picker, value, displayValue);\n }\n return value.join(' ');\n }\n\n setValue(values) {\n const picker = this;\n let valueIndex = 0;\n if (picker.cols.length === 0) {\n picker.value = values;\n picker.updateValue(values);\n return;\n }\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (picker.cols[i] && !picker.cols[i].divider) {\n picker.cols[i].setValue(values[valueIndex]);\n valueIndex += 1;\n }\n }\n }\n\n getValue() {\n const picker = this;\n return picker.value;\n }\n\n updateValue(forceValues) {\n const picker = this;\n const newValue = forceValues || [];\n const newDisplayValue = [];\n let column;\n if (picker.cols.length === 0) {\n const noDividerColumns = picker.params.cols.filter((c) => !c.divider);\n for (let i = 0; i < noDividerColumns.length; i += 1) {\n column = noDividerColumns[i];\n if (\n column.displayValues !== undefined &&\n column.values !== undefined &&\n column.values.indexOf(newValue[i]) !== -1\n ) {\n newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n } else {\n newDisplayValue.push(newValue[i]);\n }\n }\n } else {\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n newValue.push(picker.cols[i].value);\n newDisplayValue.push(picker.cols[i].displayValue);\n }\n }\n }\n\n if (newValue.indexOf(undefined) >= 0) {\n return;\n }\n picker.value = newValue;\n picker.displayValue = newDisplayValue;\n picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n if (picker.inputEl) {\n picker.$inputEl.val(picker.formatValue());\n picker.$inputEl.trigger('change');\n }\n }\n\n initColumn(colEl, updateItems) {\n const picker = this;\n pickerColumn.call(picker, colEl, updateItems);\n }\n // eslint-disable-next-line\n destroyColumn(colEl) {\n const picker = this;\n const $colEl = $(colEl);\n const index = $colEl.index();\n if (picker.cols[index] && picker.cols[index].destroy) {\n picker.cols[index].destroy();\n }\n }\n\n renderToolbar() {\n const picker = this;\n if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n return (\n <div class=\"toolbar toolbar-top\">\n <div class=\"toolbar-inner\">\n <div class=\"left\"></div>\n <div class=\"right\">\n <a class=\"link sheet-close popover-close\">{picker.params.toolbarCloseText}</a>\n </div>\n </div>\n </div>\n );\n }\n // eslint-disable-next-line\n renderColumn(col, onlyItems) {\n const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${\n col.cssClass || ''\n }`;\n let columnHtml;\n let columnItemsHtml;\n\n if (col.divider) {\n // prettier-ignore\n columnHtml = `\n <div class=\"${colClasses} picker-column-divider\">${col.content}</div>\n `;\n } else {\n // prettier-ignore\n columnItemsHtml = col.values.map((value, index) => `\n <div class=\"picker-item\" data-picker-value=\"${value}\">\n <span>${col.displayValues ? col.displayValues[index] : value}</span>\n </div>\n `).join('');\n // prettier-ignore\n columnHtml = `\n <div class=\"${colClasses}\">\n <div class=\"picker-items\">${columnItemsHtml}</div>\n </div>\n `;\n }\n\n return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n }\n\n renderInline() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const inlineHtml = (\n <div class={`picker picker-inline ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`}>\n {toolbar && picker.renderToolbar()}\n <div class=\"picker-columns\">\n {picker.cols.map((col) => picker.renderColumn(col))}\n <div class=\"picker-center-highlight\"></div>\n </div>\n </div>\n );\n\n return inlineHtml;\n }\n\n renderSheet() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const sheetHtml = (\n <div\n class={`sheet-modal picker picker-sheet ${rotateEffect ? 'picker-3d' : ''} ${\n cssClass || ''\n }`}\n >\n {toolbar && picker.renderToolbar()}\n <div class=\"sheet-modal-inner picker-columns\">\n {picker.cols.map((col) => picker.renderColumn(col))}\n <div class=\"picker-center-highlight\"></div>\n </div>\n </div>\n );\n\n return sheetHtml;\n }\n\n renderPopover() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const popoverHtml = (\n <div class=\"popover picker-popover\">\n <div class=\"popover-inner\">\n <div class={`picker ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`}>\n {toolbar && picker.renderToolbar()}\n <div class=\"picker-columns\">\n {picker.cols.map((col) => picker.renderColumn(col))}\n <div class=\"picker-center-highlight\"></div>\n </div>\n </div>\n </div>\n </div>\n );\n\n return popoverHtml;\n }\n\n render() {\n const picker = this;\n if (picker.params.render) return picker.params.render.call(picker);\n if (!picker.inline) {\n if (picker.isPopover()) return picker.renderPopover();\n return picker.renderSheet();\n }\n return picker.renderInline();\n }\n\n onOpen() {\n const picker = this;\n const { initialized, $el, app, $inputEl, inline, value, params } = picker;\n picker.opened = true;\n picker.closing = false;\n picker.opening = true;\n\n // Init main events\n picker.attachResizeEvent();\n\n // Init cols\n $el.find('.picker-column').each((colEl) => {\n let updateItems = true;\n if ((!initialized && params.value) || (initialized && value)) {\n updateItems = false;\n }\n picker.initColumn(colEl, updateItems);\n });\n\n // Set value\n if (!initialized) {\n if (value) picker.setValue(value);\n else if (params.value) {\n picker.setValue(params.value);\n }\n } else if (value) {\n picker.setValue(value);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n picker.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('picker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('picker:open');\n }\n picker.emit('local::open pickerOpen', picker);\n }\n\n onOpened() {\n const picker = this;\n picker.opening = false;\n\n if (picker.$el) {\n picker.$el.trigger('picker:opened');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:opened');\n }\n picker.emit('local::opened pickerOpened', picker);\n }\n\n onClose() {\n const picker = this;\n const app = picker.app;\n picker.opening = false;\n picker.closing = true;\n\n // Detach events\n picker.detachResizeEvent();\n\n picker.cols.forEach((col) => {\n if (col.destroy) col.destroy();\n });\n\n if (picker.$inputEl) {\n if (app.theme === 'md') {\n picker.$inputEl.trigger('blur');\n } else {\n const validate = picker.$inputEl.attr('validate');\n const required = picker.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(picker.$inputEl);\n }\n }\n }\n\n if (picker.$el) {\n picker.$el.trigger('picker:close');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:close');\n }\n picker.emit('local::close pickerClose', picker);\n }\n\n onClosed() {\n const picker = this;\n picker.opened = false;\n picker.closing = false;\n\n if (!picker.inline) {\n nextTick(() => {\n if (picker.modal && picker.modal.el && picker.modal.destroy) {\n if (!picker.params.routableModals) {\n picker.modal.destroy();\n }\n }\n delete picker.modal;\n });\n }\n\n if (picker.$el) {\n picker.$el.trigger('picker:closed');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:closed');\n }\n picker.emit('local::closed pickerClosed', picker);\n }\n\n open() {\n const picker = this;\n const { app, opened, inline, $inputEl, $scrollToEl, params } = picker;\n if (opened) return;\n if (picker.cols.length === 0 && params.cols.length) {\n params.cols.forEach((col) => {\n picker.cols.push(col);\n });\n }\n if (inline) {\n picker.$el = $(picker.render());\n picker.$el[0].f7Picker = picker;\n picker.$containerEl.append(picker.$el);\n picker.onOpen();\n picker.onOpened();\n return;\n }\n const isPopover = picker.isPopover();\n const modalType = isPopover ? 'popover' : 'sheet';\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: $scrollToEl,\n content: picker.render(),\n backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n on: {\n open() {\n const modal = this;\n picker.modal = modal;\n picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n picker.$el[0].f7Picker = picker;\n picker.onOpen();\n },\n opened() {\n picker.onOpened();\n },\n close() {\n picker.onClose();\n },\n closed() {\n picker.onClosed();\n },\n },\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && picker.view) {\n picker.view.router.navigate({\n url: picker.url,\n route: {\n path: picker.url,\n [modalType]: modalParams,\n },\n });\n } else {\n picker.modal = app[modalType].create(modalParams);\n picker.modal.open();\n }\n }\n\n close() {\n const picker = this;\n const { opened, inline } = picker;\n if (!opened) return;\n if (inline) {\n picker.onClose();\n picker.onClosed();\n return;\n }\n if (picker.params.routableModals && picker.view) {\n picker.view.router.back();\n } else {\n picker.modal.close();\n }\n }\n\n init() {\n const picker = this;\n\n picker.initInput();\n\n if (picker.inline) {\n picker.open();\n picker.emit('local::init pickerInit', picker);\n return;\n }\n\n if (!picker.initialized && picker.params.value) {\n picker.setValue(picker.params.value);\n }\n\n // Attach input Events\n if (picker.$inputEl) {\n picker.attachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.attachHtmlEvents();\n }\n picker.emit('local::init pickerInit', picker);\n }\n\n destroy() {\n const picker = this;\n if (picker.destroyed) return;\n const { $el } = picker;\n picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n if ($el) $el.trigger('picker:beforedestroy');\n\n picker.close();\n\n // Detach Events\n if (picker.$inputEl) {\n picker.detachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.detachHtmlEvents();\n }\n\n if ($el && $el.length) delete picker.$el[0].f7Picker;\n deleteProps(picker);\n picker.destroyed = true;\n }\n}\n\nexport default Picker;\n","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Picker from './picker-class.js';\n\nexport default {\n name: 'picker',\n static: {\n Picker,\n },\n create() {\n const app = this;\n app.picker = ConstructorMethods({\n defaultSelector: '.picker',\n constructor: Picker,\n app,\n domProp: 'f7Picker',\n });\n app.picker.close = function close(el = '.picker') {\n const $el = $(el);\n if ($el.length === 0) return;\n const picker = $el[0].f7Picker;\n if (!picker || (picker && !picker.opened)) return;\n picker.close();\n };\n },\n params: {\n picker: {\n // Picker settings\n rotateEffect: false,\n freeMode: false,\n cols: [],\n // Common opener settings\n containerEl: null,\n openIn: 'auto', // or 'popover' or 'sheet'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n backdrop: undefined, // uses Popover or Sheet defaults\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n scrollToEl: undefined,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'select/',\n // Render functions\n renderToolbar: null,\n render: null,\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\n\nconst InfiniteScroll = {\n handle(el, e) {\n const app = this;\n const $el = $(el);\n const scrollTop = $el[0].scrollTop;\n const scrollHeight = $el[0].scrollHeight;\n const height = $el[0].offsetHeight;\n let distance = $el[0].getAttribute('data-infinite-distance');\n\n const virtualListContainer = $el.find('.virtual-list');\n let virtualList;\n\n const onTop = $el.hasClass('infinite-scroll-top');\n if (!distance) distance = 50;\n if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n distance = (parseInt(distance, 10) / 100) * height;\n }\n if (distance > height) distance = height;\n if (onTop) {\n if (scrollTop < distance) {\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n } else if (scrollTop + height >= scrollHeight - distance) {\n if (virtualListContainer.length > 0) {\n virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n return;\n }\n }\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n },\n create(el) {\n const $el = $(el);\n const app = this;\n function scrollHandler(e) {\n app.infiniteScroll.handle(this, e);\n }\n $el.each((element) => {\n element.f7InfiniteScrollHandler = scrollHandler;\n element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n });\n },\n destroy(el) {\n const $el = $(el);\n $el.each((element) => {\n element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n delete element.f7InfiniteScrollHandler;\n });\n },\n};\nexport default {\n name: 'infiniteScroll',\n create() {\n const app = this;\n bindMethods(app, {\n infiniteScroll: InfiniteScroll,\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each((el) => {\n app.infiniteScroll.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each((el) => {\n app.infiniteScroll.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each((el) => {\n app.infiniteScroll.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each((el) => {\n app.infiniteScroll.destroy(el);\n });\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nclass PullToRefresh extends Framework7Class {\n constructor(app, el) {\n super({}, [app]);\n const ptr = this;\n const device = getDevice();\n const support = getSupport();\n const $el = $(el);\n const $preloaderEl = $el.find('.ptr-preloader');\n\n ptr.$el = $el;\n ptr.el = $el[0];\n ptr.app = app;\n\n ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n // Extend defaults with modules params\n ptr.useModulesParams({});\n\n const isMaterial = app.theme === 'md';\n const isIos = app.theme === 'ios';\n\n // Done\n ptr.done = function done() {\n const $transitionTarget = isMaterial ? $preloaderEl : $el;\n const onTranstionEnd = (e) => {\n if ($(e.target).closest($preloaderEl).length) return;\n $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n $el.trigger('ptr:done');\n ptr.emit('local::done ptrDone', $el[0]);\n $transitionTarget.off('transitionend', onTranstionEnd);\n };\n $transitionTarget.on('transitionend', onTranstionEnd);\n $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n return ptr;\n };\n\n ptr.refresh = function refresh() {\n if ($el.hasClass('ptr-refreshing')) return ptr;\n $el.addClass('ptr-transitioning ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n return ptr;\n };\n\n // Mousewheel\n ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n // Events handling\n let touchId;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let refresh = false;\n let useTranslate = false;\n let forceUseTranslate = false;\n let startTranslate = 0;\n let translate;\n let scrollTop;\n let wasScrolled;\n let triggerDistance;\n let dynamicTriggerDistance;\n let pullStarted;\n let hasNavbar = false;\n let scrollHeight;\n let offsetHeight;\n let maxScrollTop;\n const $pageEl = $el.parents('.page');\n\n if (\n $pageEl.find('.navbar').length > 0 ||\n $pageEl.parents('.view').children('.navbars').length > 0\n )\n hasNavbar = true;\n if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n if (!ptr.bottom) {\n const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n if (pageNavbarEl) {\n const $pageNavbarEl = $(pageNavbarEl);\n const isLargeTransparent =\n $pageNavbarEl.hasClass('navbar-large-transparent') ||\n ($pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent'));\n const isTransparent =\n $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n if (isLargeTransparent) {\n $el.addClass('ptr-with-navbar-large-transparent');\n } else if (isTransparent) {\n $el.addClass('ptr-with-navbar-transparent');\n }\n }\n }\n if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n // Define trigger distance\n if ($el.attr('data-ptr-distance')) {\n dynamicTriggerDistance = true;\n } else if (isMaterial) {\n triggerDistance = 66;\n } else if (isIos) {\n triggerDistance = 44;\n }\n\n function setPreloaderProgress(progress = 0) {\n const $bars = $preloaderEl.find('.preloader-inner-line');\n const perBarProgress = 1 / $bars.length;\n\n $bars.forEach((barEl, barIndex) => {\n const barProgress = (progress - barIndex * perBarProgress) / perBarProgress;\n barEl.style.opacity = Math.max(Math.min(barProgress, 1), 0) * 0.27;\n });\n }\n\n function unsetPreloaderProgress() {\n $preloaderEl.find('.preloader-inner-line').css('opacity', '');\n }\n\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n if (isTouched) {\n if (device.os === 'android') {\n if ('targetTouches' in e && e.targetTouches.length > 1) return;\n } else return;\n }\n\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if (\n $(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length\n )\n return;\n\n isMoved = false;\n pullStarted = false;\n isTouched = true;\n isScrolling = undefined;\n wasScrolled = undefined;\n if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n let pageX;\n let pageY;\n let touch;\n if (e.type === 'touchmove') {\n if (touchId && e.touches) {\n for (let i = 0; i < e.touches.length; i += 1) {\n if (e.touches[i].identifier === touchId) {\n touch = e.touches[i];\n }\n }\n }\n if (!touch) touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (!pageX || !pageY) return;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n );\n }\n if (!isScrolling) {\n isTouched = false;\n return;\n }\n\n scrollTop = $el[0].scrollTop;\n\n if (!isMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n isTouched = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each((ptrScrollableEl) => {\n if (ptrScrollableEl === el) return;\n if (\n ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight &&\n $(ptrScrollableEl).css('overflow') === 'auto' &&\n ((!ptr.bottom && ptrScrollableEl.scrollTop > 0) ||\n (ptr.bottom &&\n ptrScrollableEl.scrollTop <\n ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight))\n ) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n isTouched = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0)\n triggerDistance = (scrollHeight * parseInt(triggerDistance, 10)) / 100;\n }\n startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {\n useTranslate = true;\n } else {\n useTranslate = false;\n }\n forceUseTranslate = false;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n\n if (\n typeof wasScrolled === 'undefined' &&\n (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)\n )\n wasScrolled = true;\n\n const ptrStarted = ptr.bottom\n ? (touchesDiff < 0 && scrollTop >= maxScrollTop) || scrollTop > maxScrollTop\n : (touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0;\n\n if (ptrStarted) {\n // iOS 8 fix\n if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {\n if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n }\n\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', 'auto');\n $el.scrollTop(maxScrollTop);\n forceUseTranslate = true;\n }\n\n if (useTranslate || forceUseTranslate) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate =\n (ptr.bottom ? -1 * Math.abs(touchesDiff) ** 0.85 : touchesDiff ** 0.85) +\n startTranslate;\n if (isMaterial) {\n $preloaderEl\n .transform(`translate3d(0,${translate}px,0)`)\n .find('.ptr-arrow')\n .transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom || isIos) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n // eslint-disable-next-line\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,0px,0)`);\n }\n }\n } else if (isIos && !ptr.bottom) {\n $preloaderEl.transform(`translate3d(0,${scrollTop}px,0)`);\n }\n\n let progress;\n if (isIos && !refresh) {\n progress =\n useTranslate || forceUseTranslate\n ? Math.abs(touchesDiff) ** 0.85 / triggerDistance\n : Math.abs(touchesDiff) / (triggerDistance * 2);\n setPreloaderProgress(progress);\n }\n\n if (\n ((useTranslate || forceUseTranslate) &&\n Math.abs(touchesDiff) ** 0.85 > triggerDistance) ||\n (!useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2)\n ) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n\n if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n if (e.changedTouches[0].identifier !== touchId) {\n isTouched = false;\n isScrolling = false;\n isMoved = false;\n touchId = null;\n return;\n }\n }\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom || isIos) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', '');\n }\n\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n isTouched = false;\n isMoved = false;\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n\n let mousewheelTimeout;\n let mousewheelMoved;\n let mousewheelAllow = true;\n let mousewheelTranslate = 0;\n\n function handleMouseWheelRelease() {\n mousewheelAllow = true;\n mousewheelMoved = false;\n mousewheelTranslate = 0;\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n function handleMouseWheel(e) {\n if (!mousewheelAllow) return;\n const { deltaX, deltaY } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if (\n $(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length\n )\n return;\n\n clearTimeout(mousewheelTimeout);\n\n scrollTop = $el[0].scrollTop;\n\n if (!mousewheelMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n mousewheelAllow = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each((ptrScrollableEl) => {\n if (ptrScrollableEl === el) return;\n if (\n ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight &&\n $(ptrScrollableEl).css('overflow') === 'auto' &&\n ((!ptr.bottom && ptrScrollableEl.scrollTop > 0) ||\n (ptr.bottom &&\n ptrScrollableEl.scrollTop <\n ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight))\n ) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n mousewheelAllow = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0)\n triggerDistance = (scrollHeight * parseInt(triggerDistance, 10)) / 100;\n }\n }\n isMoved = true;\n mousewheelTranslate -= deltaY;\n touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n if (\n typeof wasScrolled === 'undefined' &&\n (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)\n )\n wasScrolled = true;\n\n const ptrStarted = ptr.bottom\n ? (touchesDiff < 0 && scrollTop >= maxScrollTop) || scrollTop > maxScrollTop\n : (touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0;\n\n if (ptrStarted) {\n if (e.cancelable) {\n e.preventDefault();\n }\n\n translate = touchesDiff;\n if (Math.abs(translate) > triggerDistance) {\n translate = triggerDistance + (Math.abs(translate) - triggerDistance) ** 0.7;\n if (ptr.bottom) translate = -translate;\n }\n\n if (isMaterial) {\n $preloaderEl\n .transform(`translate3d(0,${translate}px,0)`)\n .find('.ptr-arrow')\n .transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,${-translate}px,0)`);\n }\n }\n }\n\n let progress;\n if (isIos && !refresh) {\n progress = Math.abs(translate) / triggerDistance;\n setPreloaderProgress(progress);\n }\n\n if (Math.abs(translate) > triggerDistance) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n\n mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n }\n\n if (!$pageEl.length || !$el.length) return ptr;\n\n $el[0].f7PullToRefresh = ptr;\n\n // Events\n ptr.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? { passive: true } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.on('wheel', handleMouseWheel);\n }\n };\n ptr.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? { passive: true } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.off('wheel', handleMouseWheel);\n }\n };\n\n // Install Modules\n ptr.useModules();\n\n // Init\n ptr.init();\n\n return ptr;\n }\n\n init() {\n const ptr = this;\n ptr.attachEvents();\n }\n\n destroy() {\n let ptr = this;\n ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n ptr.$el.trigger('ptr:beforedestroy');\n delete ptr.el.f7PullToRefresh;\n ptr.detachEvents();\n deleteProps(ptr);\n ptr = null;\n }\n}\n\nexport default PullToRefresh;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport PullToRefresh from './pull-to-refresh-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'pullToRefresh',\n create() {\n const app = this;\n app.ptr = extend(\n ConstructorMethods({\n defaultSelector: '.ptr-content',\n constructor: PullToRefresh,\n app,\n domProp: 'f7PullToRefresh',\n }),\n {\n done(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.done();\n return undefined;\n },\n refresh(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.refresh();\n return undefined;\n },\n },\n );\n },\n static: {\n PullToRefresh,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each((el) => {\n app.ptr.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each((el) => {\n app.ptr.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.ptr-content').each((el) => {\n app.ptr.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.ptr-content').each((el) => {\n app.ptr.destroy(el);\n });\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nclass DataTable extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const table = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n table.useModulesParams(defaults);\n\n table.params = extend(defaults, params);\n\n // El\n const $el = $(table.params.el);\n if ($el.length === 0) return undefined;\n\n table.$el = $el;\n table.el = $el[0];\n\n if (table.$el[0].f7DataTable) {\n const instance = table.$el[0].f7DataTable;\n table.destroy();\n return instance;\n }\n\n table.$el[0].f7DataTable = table;\n\n extend(table, {\n collapsible: $el.hasClass('data-table-collapsible'),\n // Headers\n $headerEl: $el.find('.data-table-header'),\n $headerSelectedEl: $el.find('.data-table-header-selected'),\n });\n\n // Events\n function handleChange(e) {\n if (e.detail && e.detail.sentByF7DataTable) {\n // Scripted event, don't do anything\n return;\n }\n const $inputEl = $(this);\n const checked = $inputEl[0].checked;\n const columnIndex = $inputEl.parents('td,th').index();\n\n if ($inputEl.parents('thead').length > 0) {\n if (columnIndex === 0) {\n $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n $el\n .find(`tbody tr td:nth-child(${columnIndex + 1}) input`)\n .prop('checked', checked)\n .trigger('change', { sentByF7DataTable: true });\n $inputEl.prop('indeterminate', false);\n } else {\n if (columnIndex === 0) {\n $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n const checkedRows = $el.find(\n `tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`,\n ).length;\n const totalRows = $el.find('tbody tr').length;\n const $headCheckboxEl = $el.find(\n `thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`,\n );\n if (!checked) {\n $headCheckboxEl.prop('checked', false);\n } else if (checkedRows === totalRows) {\n $headCheckboxEl.prop('checked', true).trigger('change', { sentByF7DataTable: true });\n }\n $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n }\n table.checkSelectedHeader();\n }\n function handleSortableClick() {\n const $cellEl = $(this);\n const isActive = $cellEl.hasClass('sortable-cell-active');\n const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n let newSort;\n if (isActive) {\n newSort = currentSort === 'desc' ? 'asc' : 'desc';\n $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n } else {\n $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n $cellEl.addClass('sortable-cell-active');\n newSort = currentSort;\n }\n $cellEl.trigger('datatable:sort', newSort);\n table.emit('local::sort dataTableSort', table, newSort);\n }\n table.attachEvents = function attachEvents() {\n table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n };\n table.detachEvents = function detachEvents() {\n table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n };\n\n // Install Modules\n table.useModules();\n\n // Init\n table.init();\n\n return table;\n }\n\n setCollapsibleLabels() {\n const table = this;\n if (!table.collapsible) return;\n table.$el.find('tbody td:not(.checkbox-cell)').each((el) => {\n const $el = $(el);\n const elIndex = $el.index();\n const collapsibleTitle = $el.attr('data-collapsible-title');\n if (!collapsibleTitle && collapsibleTitle !== '') {\n $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n }\n });\n }\n\n checkSelectedHeader() {\n const table = this;\n if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n }\n }\n\n init() {\n const table = this;\n table.attachEvents();\n table.setCollapsibleLabels();\n table.checkSelectedHeader();\n }\n\n destroy() {\n let table = this;\n\n table.$el.trigger('datatable:beforedestroy');\n table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n\n table.detachEvents();\n\n if (table.$el[0]) {\n table.$el[0].f7DataTable = null;\n delete table.$el[0].f7DataTable;\n }\n deleteProps(table);\n table = null;\n }\n}\n\nexport default DataTable;\n","import $ from '../../shared/dom7.js';\nimport DataTable from './data-table-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'dataTable',\n static: {\n DataTable,\n },\n create() {\n const app = this;\n app.dataTable = ConstructorMethods({\n defaultSelector: '.data-table',\n constructor: DataTable,\n app,\n domProp: 'f7DataTable',\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl)\n .find('.data-table-init')\n .each((tableEl) => {\n app.dataTable.destroy(tableEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.data-table-init')\n .each((tableEl) => {\n app.dataTable.create({ el: tableEl });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.data-table-init').each((tableEl) => {\n app.dataTable.destroy(tableEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.data-table-init').each((tableEl) => {\n app.dataTable.create({ el: tableEl });\n });\n },\n },\n vnode: {\n 'data-table-init': {\n insert(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.create({ el: tableEl });\n },\n destroy(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.destroy(tableEl);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods, getTranslate, nextFrame } from '../../shared/utils.js';\n\nconst Fab = {\n morphOpen(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return;\n\n $targetEl.transition(0).addClass('fab-morph-target-visible');\n const target = {\n width: $targetEl[0].offsetWidth,\n height: $targetEl[0].offsetHeight,\n offset: $targetEl.offset(),\n borderRadius: $targetEl.css('border-radius'),\n zIndex: $targetEl.css('z-index'),\n };\n const fab = {\n width: $fabEl[0].offsetWidth,\n height: $fabEl[0].offsetHeight,\n offset: $fabEl.offset(),\n translateX: getTranslate($fabEl[0], 'x'),\n translateY: getTranslate($fabEl[0], 'y'),\n };\n\n $fabEl[0].f7FabMorphData = {\n $targetEl,\n target,\n fab,\n };\n\n const diffX =\n fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY =\n fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n\n let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n if (borderRadius > 0) borderRadius += 2;\n\n $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n $fabEl.transition(0).transform('');\n $targetEl.transition(0);\n target.width = $targetEl[0].offsetWidth;\n target.height = $targetEl[0].offsetHeight;\n target.offset = $targetEl.offset();\n fab.offset = $fabEl.offset();\n\n const diffXNew =\n fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffYNew =\n fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleXNew = target.width / fab.width;\n const scaleYNew = target.height / fab.height;\n\n $fabEl.transform(\n `translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`,\n );\n };\n\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl\n .addClass('fab-opened')\n .css('z-index', target.zIndex - 1)\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $targetEl.transition('');\n nextFrame(() => {\n $targetEl.css('opacity', 1).transform('scale(1,1)');\n $fabEl\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`)\n .css('border-radius', `${borderRadius}px`)\n .css('box-shadow', 'none')\n .css('opacity', '0');\n });\n app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n });\n },\n morphClose(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const morphData = $fabEl[0].f7FabMorphData;\n if (!morphData) return;\n const { $targetEl, target, fab } = morphData;\n if ($targetEl.length === 0) return;\n\n const diffX =\n fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY =\n fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n\n app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl\n .transition('')\n .css('box-shadow', '')\n .css('border-radius', '')\n .css('opacity', '1')\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $fabEl.css('z-index', '').removeClass('fab-opened').transform('');\n nextFrame(() => {\n $fabEl.transitionEnd(() => {\n $targetEl\n .removeClass('fab-morph-target-visible')\n .css('opacity', '')\n .transform('')\n .transition('');\n });\n });\n });\n },\n open(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if ($fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n\n if (app.fab.openedEl) {\n if (app.fab.openedEl === $fabEl[0]) return;\n app.fab.close(app.fab.openedEl);\n }\n app.fab.openedEl = $fabEl[0];\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n } else {\n $fabEl.addClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n $fabEl.trigger('fab:open');\n },\n close(fabEl = '.fab-opened') {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if (!$fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n app.fab.openedEl = null;\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphClose($fabEl);\n } else {\n $fabEl.removeClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n $fabEl.trigger('fab:close');\n },\n toggle(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);\n else app.fab.close(fabEl);\n },\n};\n\nexport default {\n name: 'fab',\n create() {\n const app = this;\n bindMethods(app, {\n fab: {\n openedEl: null,\n ...Fab,\n },\n });\n },\n clicks: {\n '.fab > a': function open($clickedEl) {\n const app = this;\n app.fab.toggle($clickedEl.parents('.fab'));\n },\n '.fab-open': function open($clickedEl, data = {}) {\n const app = this;\n app.fab.open(data.fab);\n },\n '.fab-close': function close($clickedEl, data = {}) {\n const app = this;\n app.fab.close(data.fab);\n },\n '.fab-backdrop': function close() {\n const app = this;\n app.fab.close();\n },\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport FrameworkClass from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport removeDiacritics from './remove-diacritics.js';\n\nclass Searchbar extends FrameworkClass {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const sb = this;\n\n const defaults = {\n el: undefined,\n inputEl: undefined,\n inputEvents: 'change input compositionend',\n disableButton: true,\n disableButtonEl: undefined,\n backdropEl: undefined,\n searchContainer: undefined, // container to search, HTMLElement or CSS selector\n searchItem: 'li', // single item selector, CSS selector\n searchIn: undefined, // where to search in item, CSS selector\n searchGroup: '.list-group',\n searchGroupTitle: '.list-group-title',\n ignore: '.searchbar-ignore',\n foundEl: '.searchbar-found',\n notFoundEl: '.searchbar-not-found',\n hideOnEnableEl: '.searchbar-hide-on-enable',\n hideOnSearchEl: '.searchbar-hide-on-search',\n backdrop: true,\n removeDiacritics: true,\n customSearch: false,\n hideGroupTitles: true,\n hideGroups: true,\n disableOnBackdropClick: true,\n expandable: false,\n inline: false,\n };\n\n // Extend defaults with modules params\n sb.useModulesParams(defaults);\n\n sb.params = extend(defaults, params);\n\n const $el = $(sb.params.el);\n if ($el.length === 0) return sb;\n\n if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n\n $el[0].f7Searchbar = sb;\n\n let $pageEl;\n const $navbarEl = $el.parents('.navbar');\n if ($el.parents('.page').length > 0) {\n $pageEl = $el.parents('.page');\n } else if ($navbarEl.length > 0) {\n $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n if (!$pageEl.length) {\n const $currentPageEl = $el.parents('.view').find('.page-current');\n if (\n $currentPageEl[0] &&\n $currentPageEl[0].f7Page &&\n $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]\n ) {\n $pageEl = $currentPageEl;\n }\n }\n }\n\n let $foundEl;\n if (params.foundEl) {\n $foundEl = $(params.foundEl);\n } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n $foundEl = $pageEl.find(sb.params.foundEl);\n }\n\n let $notFoundEl;\n if (params.notFoundEl) {\n $notFoundEl = $(params.notFoundEl);\n } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n }\n\n let $hideOnEnableEl;\n if (params.hideOnEnableEl) {\n $hideOnEnableEl = $(params.hideOnEnableEl);\n } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n }\n\n let $hideOnSearchEl;\n if (params.hideOnSearchEl) {\n $hideOnSearchEl = $(params.hideOnSearchEl);\n } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n }\n\n const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n\n if (typeof sb.params.backdrop === 'undefined') {\n sb.params.backdrop = !inline;\n }\n\n let $backdropEl;\n if (sb.params.backdrop) {\n if (sb.params.backdropEl) {\n $backdropEl = $(sb.params.backdropEl);\n } else if ($pageEl && $pageEl.length > 0) {\n $backdropEl = $pageEl.find('.searchbar-backdrop');\n } else {\n $backdropEl = $el.siblings('.searchbar-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"searchbar-backdrop\"></div>');\n if ($pageEl && $pageEl.length) {\n if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n $backdropEl.insertBefore($el);\n } else {\n $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n }\n } else {\n $backdropEl.insertBefore($el);\n }\n }\n }\n\n let $searchContainer;\n if (sb.params.searchContainer) {\n $searchContainer = $(sb.params.searchContainer);\n }\n\n let $inputEl;\n if (sb.params.inputEl) {\n $inputEl = $(sb.params.inputEl);\n } else {\n $inputEl = $el.find('input[type=\"search\"]').eq(0);\n }\n\n let $disableButtonEl;\n if (sb.params.disableButton) {\n if (sb.params.disableButtonEl) {\n $disableButtonEl = $(sb.params.disableButtonEl);\n } else {\n $disableButtonEl = $el.find('.searchbar-disable-button');\n }\n }\n\n extend(sb, {\n app,\n view: app.views.get($el.parents('.view')),\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n $searchContainer,\n searchContainer: $searchContainer && $searchContainer[0],\n $inputEl,\n inputEl: $inputEl[0],\n $disableButtonEl,\n disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n disableButtonHasMargin: false,\n $pageEl,\n pageEl: $pageEl && $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl && $navbarEl[0],\n $foundEl,\n foundEl: $foundEl && $foundEl[0],\n $notFoundEl,\n notFoundEl: $notFoundEl && $notFoundEl[0],\n $hideOnEnableEl,\n hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n $hideOnSearchEl,\n hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n previousQuery: '',\n query: '',\n isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n virtualList: undefined,\n enabled: false,\n expandable,\n inline,\n });\n\n // Events\n function preventSubmit(e) {\n e.preventDefault();\n }\n function onInputFocus(e) {\n sb.enable(e);\n sb.$el.addClass('searchbar-focused');\n }\n function onInputBlur() {\n sb.$el.removeClass('searchbar-focused');\n }\n function onInputChange() {\n const value = sb.$inputEl.val().trim();\n if (\n (sb.$searchContainer &&\n sb.$searchContainer.length > 0 &&\n (sb.params.searchIn ||\n sb.isVirtualList ||\n sb.params.searchIn === sb.params.searchItem)) ||\n sb.params.customSearch\n ) {\n sb.search(value, true);\n }\n }\n function onInputClear(e, previousValue) {\n sb.$el.trigger('searchbar:clear', previousValue);\n sb.emit('local::clear searchbarClear', sb, previousValue);\n }\n function disableOnClick(e) {\n sb.disable(e);\n }\n function onPageBeforeOut() {\n if (!sb || (sb && !sb.$el)) return;\n if (sb.enabled) {\n sb.$el.removeClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el\n .parents('.navbar')\n .removeClass(\n 'with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition',\n );\n }\n }\n }\n function onPageBeforeIn() {\n if (!sb || (sb && !sb.$el)) return;\n if (sb.enabled) {\n sb.$el.addClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n sb.attachEvents = function attachEvents() {\n $el.on('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.on('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.on('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n sb.$pageEl.on('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.on('focus', onInputFocus);\n sb.$inputEl.on('blur', onInputBlur);\n sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n sb.$inputEl.on('input:clear', onInputClear);\n };\n sb.detachEvents = function detachEvents() {\n $el.off('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.off('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.off('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n sb.$pageEl.off('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.off('focus', onInputFocus);\n sb.$inputEl.off('blur', onInputBlur);\n sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n sb.$inputEl.off('input:clear', onInputClear);\n };\n\n // Install Modules\n sb.useModules();\n\n // Init\n sb.init();\n\n return sb;\n }\n\n clear(e) {\n const sb = this;\n if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n sb.disable();\n return sb;\n }\n const previousQuery = sb.value;\n sb.$inputEl.val('').trigger('change').focus();\n sb.$el.trigger('searchbar:clear', previousQuery);\n sb.emit('local::clear searchbarClear', sb, previousQuery);\n return sb;\n }\n\n setDisableButtonMargin() {\n const sb = this;\n if (sb.expandable) return;\n const app = sb.app;\n sb.$disableButtonEl.transition(0).show();\n sb.$disableButtonEl.css(\n `margin-${app.rtl ? 'left' : 'right'}`,\n `${-sb.disableButtonEl.offsetWidth}px`,\n );\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n sb.$disableButtonEl.transition('');\n sb.disableButtonHasMargin = true;\n }\n\n enable(setFocus) {\n const sb = this;\n if (sb.enabled) return sb;\n const app = sb.app;\n const document = getDocument();\n const device = getDevice();\n\n sb.enabled = true;\n function enable() {\n if (\n sb.$backdropEl &&\n ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch) &&\n !sb.$el.hasClass('searchbar-enabled') &&\n !sb.query\n ) {\n sb.backdropShow();\n }\n sb.$el.addClass('searchbar-enabled');\n if (!sb.$disableButtonEl || (sb.$disableButtonEl && sb.$disableButtonEl.length === 0)) {\n sb.$el.addClass('searchbar-enabled-no-disable-button');\n }\n if (\n !sb.expandable &&\n sb.$disableButtonEl &&\n sb.$disableButtonEl.length > 0 &&\n app.theme !== 'md'\n ) {\n if (!sb.disableButtonHasMargin) {\n sb.setDisableButtonMargin();\n }\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n }\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {\n const $pageContentEl = sb.$pageEl.find('.page-content');\n const $titleLargeEl = $navbarEl.find('.title-large');\n $pageContentEl.addClass('with-searchbar-expandable-enabled');\n if (\n $navbarEl.hasClass('navbar-large') &&\n $navbarEl.hasClass('navbar-large-collapsed') &&\n $titleLargeEl.length &&\n $pageContentEl.length\n ) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n } else {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large')) {\n $navbarEl.addClass('navbar-large-collapsed');\n }\n }\n }\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:enable');\n sb.emit('local::enable searchbarEnable', sb);\n }\n let needsFocus = false;\n if (setFocus === true) {\n if (document.activeElement !== sb.inputEl) {\n needsFocus = true;\n }\n }\n const isIos = device.ios && app.theme === 'ios';\n if (isIos) {\n if (sb.expandable) {\n if (needsFocus) sb.$inputEl.focus();\n enable();\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n nextTick(() => {\n enable();\n }, 400);\n } else {\n enable();\n }\n }\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (app.theme === 'md' && sb.expandable) {\n sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n }\n enable();\n }\n return sb;\n }\n\n disable() {\n const sb = this;\n if (!sb.enabled) return sb;\n const app = sb.app;\n sb.$inputEl.val('').trigger('change');\n sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');\n\n if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {\n const $titleLargeEl = $navbarEl.find('.title-large');\n sb.$el.transitionEnd(() => {\n $pageContentEl.removeClass('with-searchbar-expandable-closing');\n });\n if (\n $navbarEl.hasClass('navbar-large') &&\n $navbarEl.hasClass('navbar-large-collapsed') &&\n $titleLargeEl.length\n ) {\n const scrollTop = $pageContentEl[0].scrollTop;\n const titleLargeHeight = $titleLargeEl[0].offsetHeight;\n if (scrollTop > titleLargeHeight) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n $pageContentEl\n .removeClass('with-searchbar-expandable-enabled')\n .addClass('with-searchbar-expandable-closing');\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl\n .removeClass(\n 'with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition',\n )\n .addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n } else {\n $navbarEl\n .removeClass(\n 'with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition',\n )\n .addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n if (sb.$pageEl) {\n sb.$pageEl.find('.page-content').trigger('scroll');\n }\n }\n }\n if (\n !sb.expandable &&\n sb.$disableButtonEl &&\n sb.$disableButtonEl.length > 0 &&\n app.theme !== 'md'\n ) {\n sb.$disableButtonEl.css(\n `margin-${app.rtl ? 'left' : 'right'}`,\n `${-sb.disableButtonEl.offsetWidth}px`,\n );\n }\n if (\n sb.$backdropEl &&\n ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch)\n ) {\n sb.backdropHide();\n }\n\n sb.enabled = false;\n\n sb.$inputEl.blur();\n\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n\n sb.$el.trigger('searchbar:disable');\n sb.emit('local::disable searchbarDisable', sb);\n return sb;\n }\n\n toggle() {\n const sb = this;\n if (sb.enabled) sb.disable();\n else sb.enable(true);\n return sb;\n }\n\n backdropShow() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.addClass('searchbar-backdrop-in');\n }\n return sb;\n }\n\n backdropHide() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.removeClass('searchbar-backdrop-in');\n }\n return sb;\n }\n\n search(query, internal) {\n const sb = this;\n sb.previousQuery = sb.query || '';\n if (query === sb.previousQuery) return sb;\n\n if (!internal) {\n if (!sb.enabled) {\n sb.enable();\n }\n sb.$inputEl.val(query);\n sb.$inputEl.trigger('input');\n }\n sb.query = query;\n sb.value = query;\n\n const { $searchContainer, $el, $foundEl, $notFoundEl, $hideOnSearchEl, isVirtualList } = sb;\n\n // Hide on search element\n if (query.length > 0 && $hideOnSearchEl) {\n $hideOnSearchEl.addClass('hidden-by-searchbar');\n } else if ($hideOnSearchEl) {\n $hideOnSearchEl.removeClass('hidden-by-searchbar');\n }\n // Add active/inactive classes on overlay\n if (\n ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled')) ||\n (sb.params.customSearch && $el.hasClass('searchbar-enabled'))\n ) {\n if (query.length === 0) {\n sb.backdropShow();\n } else {\n sb.backdropHide();\n }\n }\n\n if (sb.params.customSearch) {\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n\n let foundItems = [];\n let vlQuery;\n if (isVirtualList) {\n sb.virtualList = $searchContainer[0].f7VirtualList;\n if (query.trim() === '') {\n sb.virtualList.resetFilter();\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n vlQuery = sb.params.removeDiacritics ? removeDiacritics(query) : query;\n if (sb.virtualList.params.searchAll) {\n foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n } else if (sb.virtualList.params.searchByItem) {\n for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {\n foundItems.push(i);\n }\n }\n }\n } else {\n let values;\n if (sb.params.removeDiacritics)\n values = removeDiacritics(query.trim().toLowerCase()).split(' ');\n else {\n values = query.trim().toLowerCase().split(' ');\n }\n $searchContainer\n .find(sb.params.searchItem)\n .removeClass('hidden-by-searchbar')\n .each((itemEl) => {\n const $itemEl = $(itemEl);\n let compareWithText = [];\n let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n if (sb.params.searchIn === sb.params.searchItem) {\n $searchIn = $itemEl;\n }\n $searchIn.each((searchInEl) => {\n let itemText = $(searchInEl).text().trim().toLowerCase();\n if (sb.params.removeDiacritics) itemText = removeDiacritics(itemText);\n compareWithText.push(itemText);\n });\n compareWithText = compareWithText.join(' ');\n let wordsMatch = 0;\n for (let i = 0; i < values.length; i += 1) {\n if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n }\n if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n $itemEl.addClass('hidden-by-searchbar');\n } else {\n foundItems.push($itemEl[0]);\n }\n });\n\n if (sb.params.hideGroupTitles) {\n $searchContainer.find(sb.params.searchGroupTitle).each((titleEl) => {\n const $titleEl = $(titleEl);\n const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n let hide = true;\n for (let i = 0; i < $nextElements.length; i += 1) {\n const $nextEl = $nextElements.eq(i);\n if ($nextEl.is(sb.params.searchGroupTitle)) break;\n if (!$nextEl.hasClass('hidden-by-searchbar')) {\n hide = false;\n }\n }\n const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');\n else $titleEl.removeClass('hidden-by-searchbar');\n });\n }\n if (sb.params.hideGroups) {\n $searchContainer.find(sb.params.searchGroup).each((groupEl) => {\n const $groupEl = $(groupEl);\n const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n // eslint-disable-next-line\n const notHidden = $groupEl.find(sb.params.searchItem).filter((el) => {\n return !$(el).hasClass('hidden-by-searchbar');\n });\n if (notHidden.length === 0 && !ignore) {\n $groupEl.addClass('hidden-by-searchbar');\n } else {\n $groupEl.removeClass('hidden-by-searchbar');\n }\n });\n }\n }\n\n if (foundItems.length === 0) {\n if ($notFoundEl) $notFoundEl.show();\n if ($foundEl) $foundEl.hide();\n } else {\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n }\n if (isVirtualList && sb.virtualList) {\n sb.virtualList.filterItems(foundItems);\n }\n\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery, foundItems });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n\n return sb;\n }\n\n init() {\n const sb = this;\n if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n sb.attachEvents();\n }\n\n destroy() {\n const sb = this;\n sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n sb.$el.trigger('searchbar:beforedestroy');\n sb.detachEvents();\n if (sb.$el[0]) {\n sb.$el[0].f7Searchbar = null;\n delete sb.$el[0].f7Searchbar;\n }\n deleteProps(sb);\n }\n}\n\nexport default Searchbar;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Searchbar from './searchbar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'searchbar',\n static: {\n Searchbar,\n },\n create() {\n const app = this;\n app.searchbar = ConstructorMethods({\n defaultSelector: '.searchbar',\n constructor: Searchbar,\n app,\n domProp: 'f7Searchbar',\n addMethods: 'clear enable disable toggle search'.split(' '),\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.searchbar-init')\n .each((searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.searchbar-init')\n .each((searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.searchbar-init').each((searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n if (\n app.theme === 'ios' &&\n page.view &&\n page.view.router.dynamicNavbar &&\n page.$navbarEl &&\n page.$navbarEl.length > 0\n ) {\n page.$navbarEl.find('.searchbar-init').each((searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.searchbar-init').each((searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n if (\n app.theme === 'ios' &&\n page.view &&\n page.view.router.dynamicNavbar &&\n page.$navbarEl &&\n page.$navbarEl.length > 0\n ) {\n page.$navbarEl.find('.searchbar-init').each((searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n }\n },\n },\n clicks: {\n '.searchbar-clear': function clear($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.clear();\n },\n '.searchbar-enable': function enable($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.enable(true);\n },\n '.searchbar-disable': function disable($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.disable();\n },\n '.searchbar-toggle': function toggle($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.toggle();\n },\n },\n vnode: {\n 'searchbar-init': {\n insert(vnode) {\n const app = this;\n const searchbarEl = vnode.elm;\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), { el: searchbarEl }));\n },\n destroy(vnode) {\n const searchbarEl = vnode.elm;\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Messages extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const m = this;\n\n const defaults = {\n autoLayout: true,\n messages: [],\n newMessagesFirst: false,\n scrollMessages: true,\n scrollMessagesOnEdge: true,\n firstMessageRule: undefined,\n lastMessageRule: undefined,\n tailMessageRule: undefined,\n sameNameMessageRule: undefined,\n sameHeaderMessageRule: undefined,\n sameFooterMessageRule: undefined,\n sameAvatarMessageRule: undefined,\n customClassMessageRule: undefined,\n renderMessage: undefined,\n };\n\n // Extend defaults with modules params\n m.useModulesParams(defaults);\n\n m.params = extend(defaults, params);\n\n const $el = $(params.el).eq(0);\n if ($el.length === 0) return m;\n\n if ($el[0].f7Messages) return $el[0].f7Messages;\n\n $el[0].f7Messages = m;\n\n const $pageContentEl = $el.closest('.page-content').eq(0);\n\n extend(m, {\n messages: m.params.messages,\n $el,\n el: $el[0],\n $pageContentEl,\n pageContentEl: $pageContentEl[0],\n });\n // Install Modules\n m.useModules();\n\n // Init\n m.init();\n\n return m;\n }\n // eslint-disable-next-line\n getMessageData(messageEl) {\n const $messageEl = $(messageEl);\n const data = {\n name: $messageEl.find('.message-name').html(),\n header: $messageEl.find('.message-header').html(),\n textHeader: $messageEl.find('.message-text-header').html(),\n textFooter: $messageEl.find('.message-text-footer').html(),\n footer: $messageEl.find('.message-footer').html(),\n isTitle: $messageEl.hasClass('messages-title'),\n type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n text: $messageEl.find('.message-text').html(),\n image: $messageEl.find('.message-image').html(),\n imageSrc: $messageEl.find('.message-image img').attr('src'),\n typing: $messageEl.hasClass('message-typing'),\n };\n if (data.isTitle) {\n data.text = $messageEl.html();\n }\n if (data.text && data.textHeader) {\n data.text = data.text.replace(\n `<div class=\"message-text-header\">${data.textHeader}</div>`,\n '',\n );\n }\n if (data.text && data.textFooter) {\n data.text = data.text.replace(\n `<div class=\"message-text-footer\">${data.textFooter}</div>`,\n '',\n );\n }\n let avatar = $messageEl.find('.message-avatar').css('background-image');\n if (avatar === 'none' || avatar === '') avatar = undefined;\n if (avatar && typeof avatar === 'string') {\n avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n } else {\n avatar = undefined;\n }\n data.avatar = avatar;\n\n return data;\n }\n\n getMessagesData() {\n const m = this;\n const data = [];\n m.$el.find('.message, .messages-title').each((messageEl) => {\n data.push(m.getMessageData(messageEl));\n });\n return data;\n }\n\n renderMessage(messageToRender) {\n const m = this;\n const message = extend(\n {\n type: 'sent',\n attrs: {},\n },\n messageToRender,\n );\n if (m.params.renderMessage) {\n return m.params.renderMessage.call(m, message);\n }\n if (message.isTitle) {\n return `<div class=\"messages-title\">${message.text}</div>`;\n }\n return (\n <div\n class={`message message-${message.type} ${message.isTyping ? 'message-typing' : ''} ${\n message.cssClass || ''\n }`}\n {...message.attrs}\n >\n {message.avatar && (\n <div class=\"message-avatar\" style={`background-image:url(${message.avatar})`}></div>\n )}\n <div class=\"message-content\">\n {message.name && <div class=\"message-name\">{message.name}</div>}\n {message.header && <div class=\"message-header\">{message.header}</div>}\n <div class=\"message-bubble\">\n {message.textHeader && <div class=\"message-text-header\">{message.textHeader}</div>}\n {message.image && <div class=\"message-image\">{message.image}</div>}\n {message.imageSrc && !message.image && (\n <div class=\"message-image\">\n <img src={message.imageSrc} />\n </div>\n )}\n {(message.text || message.isTyping) && (\n <div class=\"message-text\">\n {message.text || ''}\n {message.isTyping && (\n <div class=\"message-typing-indicator\">\n <div></div>\n <div></div>\n <div></div>\n </div>\n )}\n </div>\n )}\n {message.textFooter && <div class=\"message-text-footer\">{message.textFooter}</div>}\n </div>\n {message.footer && <div class=\"message-footer\">{message.footer}</div>}\n </div>\n </div>\n );\n }\n\n renderMessages(\n messagesToRender = this.messages,\n method = this.params.newMessagesFirst ? 'prepend' : 'append',\n ) {\n const m = this;\n const html = messagesToRender.map((message) => m.renderMessage(message)).join('');\n m.$el[method](html);\n }\n\n isFirstMessage(...args) {\n const m = this;\n if (m.params.firstMessageRule) return m.params.firstMessageRule(...args);\n return false;\n }\n\n isLastMessage(...args) {\n const m = this;\n if (m.params.lastMessageRule) return m.params.lastMessageRule(...args);\n return false;\n }\n\n isTailMessage(...args) {\n const m = this;\n if (m.params.tailMessageRule) return m.params.tailMessageRule(...args);\n return false;\n }\n\n isSameNameMessage(...args) {\n const m = this;\n if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...args);\n return false;\n }\n\n isSameHeaderMessage(...args) {\n const m = this;\n if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...args);\n return false;\n }\n\n isSameFooterMessage(...args) {\n const m = this;\n if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...args);\n return false;\n }\n\n isSameAvatarMessage(...args) {\n const m = this;\n if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...args);\n return false;\n }\n\n isCustomClassMessage(...args) {\n const m = this;\n if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...args);\n return undefined;\n }\n\n layout() {\n const m = this;\n m.$el.find('.message, .messages-title').each((messageEl, index) => {\n const $messageEl = $(messageEl);\n if (!m.messages) {\n m.messages = m.getMessagesData();\n }\n const classes = [];\n const message = m.messages[index];\n const previousMessage = m.messages[index - 1];\n const nextMessage = m.messages[index + 1];\n if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n classes.push('message-first');\n }\n if (m.isLastMessage(message, previousMessage, nextMessage)) {\n classes.push('message-last');\n }\n if (m.isTailMessage(message, previousMessage, nextMessage)) {\n classes.push('message-tail');\n }\n if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-name');\n }\n if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-header');\n }\n if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-footer');\n }\n if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-avatar');\n }\n let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n if (customMessageClasses && customMessageClasses.length) {\n if (typeof customMessageClasses === 'string') {\n customMessageClasses = customMessageClasses.split(' ');\n }\n customMessageClasses.forEach((customClass) => {\n classes.push(customClass);\n });\n }\n $messageEl.removeClass(\n 'message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar',\n );\n classes.forEach((className) => {\n $messageEl.addClass(className);\n });\n });\n }\n\n clear() {\n const m = this;\n m.messages = [];\n m.$el.html('');\n }\n\n removeMessage(messageToRemove, layout = true) {\n const m = this;\n // Index or El\n let index;\n let $el;\n if (typeof messageToRemove === 'number') {\n index = messageToRemove;\n $el = m.$el.find('.message, .messages-title').eq(index);\n } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n index = m.messages.indexOf(messageToRemove);\n $el = m.$el.children().eq(index);\n } else {\n $el = $(messageToRemove);\n index = $el.index();\n }\n if ($el.length === 0) {\n return m;\n }\n $el.remove();\n m.messages.splice(index, 1);\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n\n removeMessages(messagesToRemove, layout = true) {\n const m = this;\n if (Array.isArray(messagesToRemove)) {\n const messagesToRemoveEls = [];\n messagesToRemove.forEach((messageToRemoveIndex) => {\n messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n });\n messagesToRemoveEls.forEach((messageToRemove) => {\n m.removeMessage(messageToRemove, false);\n });\n } else {\n $(messagesToRemove).each((messageToRemove) => {\n m.removeMessage(messageToRemove, false);\n });\n }\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n\n addMessage(...args) {\n const m = this;\n let messageToAdd;\n let animate;\n let method;\n if (typeof args[1] === 'boolean') {\n [messageToAdd, animate, method] = args;\n } else {\n [messageToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n\n return m.addMessages([messageToAdd], animate, method);\n }\n\n setScrollData() {\n const m = this;\n // Define scroll positions before new messages added\n const scrollHeightBefore = m.pageContentEl.scrollHeight;\n const heightBefore = m.pageContentEl.offsetHeight;\n const scrollBefore = m.pageContentEl.scrollTop;\n m.scrollData = {\n scrollHeightBefore,\n heightBefore,\n scrollBefore,\n };\n return {\n scrollHeightBefore,\n heightBefore,\n scrollBefore,\n };\n }\n\n addMessages(...args) {\n const m = this;\n let messagesToAdd;\n let animate;\n let method;\n if (typeof args[1] === 'boolean') {\n [messagesToAdd, animate, method] = args;\n } else {\n [messagesToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n\n const { scrollHeightBefore, scrollBefore } = m.setScrollData();\n\n // Add message to DOM and data\n let messagesHTML = '';\n const typingMessage = m.messages.filter((el) => el.isTyping)[0];\n messagesToAdd.forEach((messageToAdd) => {\n if (typingMessage) {\n if (method === 'append') {\n m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n } else {\n m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n }\n } else {\n m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n }\n messagesHTML += m.renderMessage(messageToAdd);\n });\n const $messagesEls = $(messagesHTML);\n if (animate) {\n if (method === 'append' && !m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-bottom');\n }\n if (method === 'prepend' && m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-top');\n }\n }\n if (typingMessage) {\n if (method === 'append') {\n $messagesEls.insertBefore(m.$el.find('.message-typing'));\n } else {\n $messagesEls.insertAfter(m.$el.find('.message-typing'));\n }\n } else {\n m.$el[method]($messagesEls);\n }\n\n // Layout\n if (m.params.autoLayout) m.layout();\n\n if (method === 'prepend' && !typingMessage) {\n m.pageContentEl.scrollTop =\n scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n }\n\n if (\n m.params.scrollMessages &&\n ((method === 'append' && !m.params.newMessagesFirst) ||\n (method === 'prepend' && m.params.newMessagesFirst && !typingMessage))\n ) {\n m.scrollWithEdgeCheck(animate);\n }\n\n return m;\n }\n\n showTyping(message = {}) {\n const m = this;\n const typingMessage = m.messages.filter((el) => el.isTyping)[0];\n if (typingMessage) {\n m.removeMessage(m.messages.indexOf(typingMessage));\n }\n m.addMessage(\n extend(\n {\n type: 'received',\n isTyping: true,\n },\n message,\n ),\n );\n return m;\n }\n\n hideTyping() {\n const m = this;\n let typingMessageIndex;\n let typingFound;\n m.messages.forEach((message, index) => {\n if (message.isTyping) typingMessageIndex = index;\n });\n if (typeof typingMessageIndex !== 'undefined') {\n if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n typingFound = true;\n m.removeMessage(typingMessageIndex);\n }\n }\n if (!typingFound) {\n const $typingMessageEl = m.$el.find('.message-typing');\n if ($typingMessageEl.length) {\n m.removeMessage($typingMessageEl);\n }\n }\n return m;\n }\n\n scrollWithEdgeCheck(animate) {\n const m = this;\n const { scrollBefore, scrollHeightBefore, heightBefore } = m.scrollData;\n if (m.params.scrollMessagesOnEdge) {\n let onEdge = false;\n if (m.params.newMessagesFirst && scrollBefore === 0) {\n onEdge = true;\n }\n if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {\n onEdge = true;\n }\n if (onEdge) m.scroll(animate ? undefined : 0);\n } else {\n m.scroll(animate ? undefined : 0);\n }\n }\n\n scroll(duration = 300, scrollTop) {\n const m = this;\n const currentScroll = m.pageContentEl.scrollTop;\n let newScrollTop;\n if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;\n else {\n newScrollTop = m.params.newMessagesFirst\n ? 0\n : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n if (newScrollTop === currentScroll) return m;\n }\n m.$pageContentEl.scrollTop(newScrollTop, duration);\n return m;\n }\n\n init() {\n const m = this;\n if (!m.messages || m.messages.length === 0) {\n m.messages = m.getMessagesData();\n }\n if (m.params.messages && m.params.messages.length) {\n m.renderMessages();\n }\n if (m.params.autoLayout) m.layout();\n if (m.params.scrollMessages) m.scroll(0);\n }\n\n destroy() {\n const m = this;\n m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n m.$el.trigger('messages:beforedestroy');\n if (m.$el[0]) {\n m.$el[0].f7Messages = null;\n delete m.$el[0].f7Messages;\n }\n deleteProps(m);\n }\n}\n\nexport default Messages;\n","import $ from '../../shared/dom7.js';\nimport Messages from './messages-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'messages',\n static: {\n Messages,\n },\n create() {\n const app = this;\n app.messages = ConstructorMethods({\n defaultSelector: '.messages',\n constructor: Messages,\n app,\n domProp: 'f7Messages',\n addMethods:\n 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(\n ' ',\n ),\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl)\n .find('.messages-init')\n .each((messagesEl) => {\n app.messages.destroy(messagesEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.messages-init')\n .each((messagesEl) => {\n app.messages.create({ el: messagesEl });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messages-init').each((messagesEl) => {\n app.messages.destroy(messagesEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messages-init').each((messagesEl) => {\n app.messages.create({ el: messagesEl });\n });\n },\n },\n vnode: {\n 'messages-init': {\n insert(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.create({ el: messagesEl });\n },\n destroy(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.destroy(messagesEl);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nclass Messagebar extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const messagebar = this;\n\n const defaults = {\n top: false,\n topOffset: 0,\n bottomOffset: 0,\n attachments: [],\n renderAttachments: undefined,\n renderAttachment: undefined,\n maxHeight: null,\n resizePage: true,\n };\n\n // Extend defaults with modules params\n messagebar.useModulesParams(defaults);\n\n messagebar.params = extend(defaults, params);\n\n // El\n const $el = $(messagebar.params.el);\n if ($el.length === 0) return messagebar;\n\n if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n\n $el[0].f7Messagebar = messagebar;\n\n // Page and PageContent\n const $pageEl = $el.parents('.page').eq(0);\n const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n // Area\n const $areaEl = $el.find('.messagebar-area');\n\n // Textarea\n let $textareaEl;\n if (messagebar.params.textareaEl) {\n $textareaEl = $(messagebar.params.textareaEl);\n } else {\n $textareaEl = $el.find('textarea');\n }\n\n // Attachments & Library\n const $attachmentsEl = $el.find('.messagebar-attachments');\n const $sheetEl = $el.find('.messagebar-sheet');\n\n if (messagebar.params.top) {\n $el.addClass('messagebar-top');\n }\n\n extend(messagebar, {\n $el,\n el: $el[0],\n $areaEl,\n areaEl: $areaEl[0],\n $textareaEl,\n textareaEl: $textareaEl[0],\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n $sheetEl,\n sheetEl: $sheetEl[0],\n sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n $pageEl,\n pageEl: $pageEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl,\n top: $el.hasClass('messagebar-top') || messagebar.params.top,\n attachments: [],\n });\n\n // Events\n function onAppResize() {\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n }\n function onSubmit(e) {\n e.preventDefault();\n }\n function onAttachmentClick(e) {\n const index = $(this).index();\n if ($(e.target).closest('.messagebar-attachment-delete').length) {\n $(this).trigger('messagebar:attachmentdelete', index);\n messagebar.emit(\n 'local::attachmentDelete messagebarAttachmentDelete',\n messagebar,\n this,\n index,\n );\n } else {\n $(this).trigger('messagebar:attachmentclick', index);\n messagebar.emit(\n 'local::attachmentClick messagebarAttachmentClick',\n messagebar,\n this,\n index,\n );\n }\n }\n function onTextareaChange() {\n messagebar.checkEmptyState();\n messagebar.$el.trigger('messagebar:change');\n messagebar.emit('local::change messagebarChange', messagebar);\n }\n function onTextareaFocus() {\n messagebar.sheetHide();\n messagebar.$el.addClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:focus');\n messagebar.emit('local::focus messagebarFocus', messagebar);\n }\n function onTextareaBlur() {\n messagebar.$el.removeClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:blur');\n messagebar.emit('local::blur messagebarBlur', messagebar);\n }\n\n messagebar.attachEvents = function attachEvents() {\n $el.on('textarea:resize', onAppResize);\n $el.on('submit', onSubmit);\n $el.on('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.on('change input', onTextareaChange);\n $textareaEl.on('focus', onTextareaFocus);\n $textareaEl.on('blur', onTextareaBlur);\n app.on('resize', onAppResize);\n };\n messagebar.detachEvents = function detachEvents() {\n $el.off('textarea:resize', onAppResize);\n $el.off('submit', onSubmit);\n $el.off('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.off('change input', onTextareaChange);\n $textareaEl.off('focus', onTextareaFocus);\n $textareaEl.off('blur', onTextareaBlur);\n app.off('resize', onAppResize);\n };\n\n // Install Modules\n messagebar.useModules();\n\n // Init\n messagebar.init();\n\n return messagebar;\n }\n\n focus() {\n const messagebar = this;\n messagebar.$textareaEl.focus();\n return messagebar;\n }\n\n blur() {\n const messagebar = this;\n messagebar.$textareaEl.blur();\n return messagebar;\n }\n\n clear() {\n const messagebar = this;\n messagebar.$textareaEl.val('').trigger('change');\n return messagebar;\n }\n\n getValue() {\n const messagebar = this;\n return messagebar.$textareaEl.val().trim();\n }\n\n setValue(value) {\n const messagebar = this;\n messagebar.$textareaEl.val(value).trigger('change');\n return messagebar;\n }\n\n setPlaceholder(placeholder) {\n const messagebar = this;\n messagebar.$textareaEl.attr('placeholder', placeholder);\n return messagebar;\n }\n\n resizePage() {\n const messagebar = this;\n const {\n params,\n $el,\n top,\n $pageEl,\n $pageContentEl,\n $areaEl,\n $textareaEl,\n $sheetEl,\n $attachmentsEl,\n } = messagebar;\n const elHeight = $el[0].offsetHeight;\n let maxHeight = params.maxHeight;\n if (top) {\n /*\n Disable at the moment\n const requiredPaddingTop = elHeight + params.topOffset;\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n if (requiredPaddingTop !== currentPaddingTop) {\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n $el.trigger('messagebar:resizePage');\n messagebar.emit('local::resizepage messagebarResizePage');\n }\n */\n } else {\n const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const requiredPaddingBottom = elHeight + params.bottomOffset;\n if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const pageScrollHeight = $pageContentEl[0].scrollHeight;\n const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n const pageScrollTop = $pageContentEl[0].scrollTop;\n const scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;\n if (!maxHeight) {\n maxHeight =\n $pageEl[0].offsetHeight -\n currentPaddingTop -\n $sheetEl.outerHeight() -\n $attachmentsEl.outerHeight() -\n parseInt($areaEl.css('margin-top'), 10) -\n parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n if (scrollOnBottom) {\n $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n }\n $el.trigger('messagebar:resizepage');\n messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n }\n }\n }\n\n checkEmptyState() {\n const messagebar = this;\n const { $el, $textareaEl } = messagebar;\n const value = $textareaEl.val().trim();\n if (value && value.length) {\n $el.addClass('messagebar-with-value');\n } else {\n $el.removeClass('messagebar-with-value');\n }\n }\n\n attachmentsCreate(innerHTML = '') {\n const messagebar = this;\n const $attachmentsEl = $(`<div class=\"messagebar-attachments\">${innerHTML}</div>`);\n $attachmentsEl.insertBefore(messagebar.$textareaEl);\n extend(messagebar, {\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n });\n return messagebar;\n }\n\n attachmentsShow(innerHTML = '') {\n const messagebar = this;\n messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n attachmentsHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n attachmentsToggle() {\n const messagebar = this;\n if (messagebar.attachmentsVisible) {\n messagebar.attachmentsHide();\n } else {\n messagebar.attachmentsShow();\n }\n return messagebar;\n }\n\n renderAttachment(attachment) {\n const messagebar = this;\n if (messagebar.params.renderAttachment) {\n return messagebar.params.renderAttachment.call(messagebar, attachment);\n }\n return `\n <div class=\"messagebar-attachment\">\n <img src=\"${attachment}\">\n <span class=\"messagebar-attachment-delete\"></span>\n </div>\n `;\n }\n\n renderAttachments() {\n const messagebar = this;\n let html;\n if (messagebar.params.renderAttachments) {\n html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n } else {\n html = `${messagebar.attachments\n .map((attachment) => messagebar.renderAttachment(attachment))\n .join('')}`;\n }\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(html);\n } else {\n messagebar.$attachmentsEl.html(html);\n }\n }\n\n sheetCreate(innerHTML = '') {\n const messagebar = this;\n const $sheetEl = $(`<div class=\"messagebar-sheet\">${innerHTML}</div>`);\n messagebar.$el.append($sheetEl);\n extend(messagebar, {\n $sheetEl,\n sheetEl: $sheetEl[0],\n });\n return messagebar;\n }\n\n sheetShow(innerHTML = '') {\n const messagebar = this;\n messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n if (messagebar.$sheetEl.length === 0) {\n messagebar.sheetCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-sheet-visible');\n messagebar.sheetVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n sheetHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-sheet-visible');\n messagebar.sheetVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n sheetToggle() {\n const messagebar = this;\n if (messagebar.sheetVisible) {\n messagebar.sheetHide();\n } else {\n messagebar.sheetShow();\n }\n return messagebar;\n }\n\n init() {\n const messagebar = this;\n messagebar.attachEvents();\n messagebar.checkEmptyState();\n return messagebar;\n }\n\n destroy() {\n const messagebar = this;\n messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n messagebar.$el.trigger('messagebar:beforedestroy');\n messagebar.detachEvents();\n if (messagebar.$el[0]) {\n messagebar.$el[0].f7Messagebar = null;\n delete messagebar.$el[0].f7Messagebar;\n }\n deleteProps(messagebar);\n }\n}\n\nexport default Messagebar;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Messagebar from './messagebar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'messagebar',\n static: {\n Messagebar,\n },\n create() {\n const app = this;\n app.messagebar = ConstructorMethods({\n defaultSelector: '.messagebar',\n constructor: Messagebar,\n app,\n domProp: 'f7Messagebar',\n addMethods:\n 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(\n ' ',\n ),\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl)\n .find('.messagebar-init')\n .each((messagebarEl) => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.messagebar-init')\n .each((messagebarEl) => {\n app.messagebar.create(extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messagebar-init').each((messagebarEl) => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messagebar-init').each((messagebarEl) => {\n app.messagebar.create(extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n });\n },\n },\n vnode: {\n 'messagebar-init': {\n insert(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.create(extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n },\n destroy(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.destroy(messagebarEl);\n },\n },\n },\n};\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { k as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) swiper.virtual.cache[index] = slideEl;\n return slideEl;\n }\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}, swiper-slide`).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const realIndex = swiper.realIndex;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n const indexBeforeLoopFix = swiper.activeIndex;\n swiper.loopFix({\n direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n const indexAfterFix = swiper.activeIndex;\n if (indexBeforeLoopFix === indexAfterFix) {\n swiper.slideToLoop(realIndex, 0, false, true);\n }\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\n }\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, i as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, i as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n };\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n let v;\n try {\n v = JSON.parse(val);\n } catch (err) {\n v = val;\n }\n return v;\n }\n return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n const localParamsList = [...paramsList, 'on'];\n const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach(paramName => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({\n name: propName,\n value: propValue\n });\n }\n attrsList.forEach(attr => {\n const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0];\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = {\n enabled: true\n };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n extend(params, passedParams);\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {})\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {})\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {})\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return {\n params,\n passedParams\n };\n}\n\nexport { getParams as g };\n","/**\n * Swiper Custom Element 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `<svg width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z\" fill=\"currentColor\"/></svg>\n `;\nconst addStyle = (shadowRoot, styles) => {\n if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n const styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(styles);\n shadowRoot.adoptedStyleSheets = [styleSheet];\n } else {\n const style = document.createElement('style');\n style.rel = 'stylesheet';\n style.textContent = styles;\n shadowRoot.appendChild(style);\n }\n};\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n static get nextButtonSvg() {\n return arrowSvg;\n }\n static get prevButtonSvg() {\n return arrowSvg.replace('/></svg>', ' transform-origin=\"center\" transform=\"rotate(180)\"/></svg>');\n }\n cssStyles() {\n return [SwiperCSS,\n // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n }\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n calcSlideSlots() {\n const currentSideSlots = this.slideSlots || 0;\n // slide slots\n const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n });\n this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n if (!this.rendered) return;\n if (this.slideSlots > currentSideSlots) {\n for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n const slideEl = document.createElement('swiper-slide');\n slideEl.setAttribute('part', `slide slide-${i + 1}`);\n const slotEl = document.createElement('slot');\n slotEl.setAttribute('name', `slide-${i + 1}`);\n slideEl.appendChild(slotEl);\n this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n }\n } else if (this.slideSlots < currentSideSlots) {\n const slides = this.swiper.slides;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (i > this.slideSlots) {\n slides[i].remove();\n }\n }\n }\n }\n render() {\n if (this.rendered) return;\n this.calcSlideSlots();\n\n // local styles\n let localStyles = this.cssStyles();\n if (this.slideSlots > 0) {\n localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n }\n if (localStyles.length) {\n addStyle(this.shadowRoot, localStyles);\n }\n this.cssLinks().forEach(url => {\n const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowRoot.appendChild(linkEl);\n });\n // prettier-ignore\n const el = document.createElement('div');\n el.classList.add('swiper');\n el.part = 'container';\n\n // prettier-ignore\n el.innerHTML = `\n <slot name=\"container-start\"></slot>\n <div class=\"swiper-wrapper\" part=\"wrapper\">\n <slot></slot>\n ${Array.from({\n length: this.slideSlots\n }).map((_, index) => `\n <swiper-slide part=\"slide slide-${index}\">\n <slot name=\"slide-${index}\"></slot>\n </swiper-slide>\n `).join('')}\n </div>\n <slot name=\"container-end\"></slot>\n ${needsNavigation(this.passedParams) ? `\n <div part=\"button-prev\" class=\"swiper-button-prev\">${this.constructor.prevButtonSvg}</div>\n <div part=\"button-next\" class=\"swiper-button-next\">${this.constructor.nextButtonSvg}</div>\n ` : ''}\n ${needsPagination(this.passedParams) ? `\n <div part=\"pagination\" class=\"swiper-pagination\"></div>\n ` : ''}\n ${needsScrollbar(this.passedParams) ? `\n <div part=\"scrollbar\" class=\"swiper-scrollbar\"></div>\n ` : ''}\n `;\n this.shadowRoot.appendChild(el);\n this.rendered = true;\n }\n initialize() {\n var _this = this;\n if (this.initialized) return;\n this.initialized = true;\n const {\n params: swiperParams,\n passedParams\n } = getParams(this);\n this.swiperParams = swiperParams;\n this.passedParams = passedParams;\n delete this.swiperParams.init;\n this.render();\n\n // eslint-disable-next-line\n this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n ...(swiperParams.virtual ? {} : {\n observer: true,\n observeSlideChildren: this.slideSlots > 0\n }),\n ...swiperParams,\n touchEventsTarget: 'container',\n onAny: function (name) {\n if (name === 'observerUpdate') {\n _this.calcSlideSlots();\n }\n const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const event = new CustomEvent(eventName, {\n detail: args,\n bubbles: true,\n cancelable: true\n });\n _this.dispatchEvent(event);\n }\n });\n }\n connectedCallback() {\n if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.init === false || this.getAttribute('init') === 'false') {\n return;\n }\n this.initialize();\n }\n disconnectedCallback() {\n if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.swiper && this.swiper.destroy) {\n this.swiper.destroy();\n }\n this.initialized = false;\n }\n updateSwiperOnPropChange(propName, propValue) {\n const {\n params: swiperParams,\n passedParams\n } = getParams(this, propName, propValue);\n this.passedParams = passedParams;\n this.swiperParams = swiperParams;\n updateSwiper({\n swiper: this.swiper,\n passedParams: this.passedParams,\n changedParams: [attrToProp(propName)],\n ...(propName === 'navigation' && passedParams[propName] ? {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next'\n } : {}),\n ...(propName === 'pagination' && passedParams[propName] ? {\n paginationEl: '.swiper-pagination'\n } : {}),\n ...(propName === 'scrollbar' && passedParams[propName] ? {\n scrollbarEl: '.swiper-scrollbar'\n } : {})\n });\n }\n attributeChangedCallback(attr, prevValue, newValue) {\n if (!this.initialized) return;\n if (prevValue === 'true' && newValue === null) {\n newValue = false;\n }\n this.updateSwiperOnPropChange(attr, newValue);\n }\n static get observedAttributes() {\n const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n return attrs;\n }\n}\nparamsList.forEach(paramName => {\n if (paramName === 'init') return;\n paramName = paramName.replace('_', '');\n Object.defineProperty(SwiperContainer.prototype, paramName, {\n configurable: true,\n get() {\n return (this.passedParams || {})[paramName];\n },\n set(value) {\n if (!this.passedParams) this.passedParams = {};\n this.passedParams[paramName] = value;\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(paramName);\n }\n });\n});\nclass SwiperSlide extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n render() {\n const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n addStyle(this.shadowRoot, SwiperSlideCSS);\n this.shadowRoot.appendChild(document.createElement('slot'));\n if (lazy) {\n const lazyDiv = document.createElement('div');\n lazyDiv.classList.add('swiper-lazy-preloader');\n lazyDiv.part.add('preloader');\n this.shadowRoot.appendChild(lazyDiv);\n }\n }\n initialize() {\n this.render();\n }\n connectedCallback() {\n this.initialize();\n }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n if (typeof window === 'undefined') return;\n if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n window.SwiperElementRegisterParams = params => {\n paramsList.push(...params);\n };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n","// eslint-disable-next-line\nimport Swiper from 'swiper/bundle';\n// eslint-disable-next-line\nimport { register } from 'swiper/element/bundle';\nimport $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nregister();\n\n// UMD_ONLY_START\n/* eslint-disable */\nif (!window.Swiper) {\n window.Swiper = Swiper;\n}\n/* eslint-enable */\n// UMD_ONLY_END\n\nfunction initSwiper(swiperEl) {\n const app = this;\n const $swiperEl = $(swiperEl);\n if ($swiperEl.length === 0) return;\n const isElement = $swiperEl[0].swiper && $swiperEl[0].swiper.isElement;\n if ($swiperEl[0].swiper && !$swiperEl[0].swiper.isElement) return;\n let initialSlide;\n let params = {};\n let isTabs;\n let isRoutableTabs;\n if ($swiperEl.hasClass('tabs')) {\n initialSlide = $swiperEl.children('swiper-slide').indexOf($swiperEl.children('.tab-active')[0]);\n isTabs = true;\n isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n }\n if ($swiperEl.attr('data-swiper')) {\n params = JSON.parse($swiperEl.attr('data-swiper'));\n } else if ($swiperEl[0].f7SwiperParams) {\n params = $swiperEl[0].f7SwiperParams;\n } else {\n params = $swiperEl.dataset();\n Object.keys(params).forEach((key) => {\n const value = params[key];\n if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n // not JSON\n }\n }\n });\n }\n\n if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n params.initialSlide = initialSlide;\n }\n\n const swiper = isElement ? $swiperEl[0].swiper : app.swiper.create($swiperEl[0], params);\n\n if (isElement) {\n swiper.slideTo(initialSlide, 0);\n }\n\n function updateSwiper() {\n swiper.update();\n }\n\n const $tabEl = $swiperEl\n .parents('.tab')\n .filter((tabEl) => {\n return (\n $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0\n );\n })\n .eq(0);\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.on('tab:show', updateSwiper);\n }\n\n swiper.on('beforeDestroy', () => {\n $swiperEl\n .parents('.popup, .login-screen, .sheet-modal, .popover')\n .off('modal:open', updateSwiper);\n $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.off('tab:show', updateSwiper);\n }\n });\n if (isTabs) {\n swiper.on('slideChange', () => {\n if (isRoutableTabs) {\n let view = app.views.get($swiperEl.parents('.view'));\n if (!view) view = app.views.main;\n const router = view.router;\n const tabRouteUrl = router.findTabRouteUrl($(swiper.slides).eq(swiper.activeIndex)[0]);\n if (tabRouteUrl) {\n setTimeout(() => {\n router.navigate(tabRouteUrl);\n }, 0);\n }\n } else {\n app.tab.show({\n tabEl: $(swiper.slides).eq(swiper.activeIndex),\n });\n }\n });\n }\n}\n\nexport default {\n name: 'swiper',\n static: {\n Swiper,\n },\n create() {\n const app = this;\n app.swiper = ConstructorMethods({\n defaultSelector: '.swiper',\n constructor: Swiper,\n domProp: 'swiper',\n });\n },\n on: {\n pageMounted(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each((swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each((swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageReinit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each((swiperEl) => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('swiper-container.tabs')\n .each((swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl)\n .find('swiper-container.tabs')\n .each((swiperEl) => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl)\n .find('swiper-container.tabs')\n .each((swiperEl) => {\n app.swiper.destroy(swiperEl);\n });\n },\n },\n};\n","/* eslint indent: [\"off\"] */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass PhotoBrowser extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const pb = this;\n pb.app = app;\n\n const defaults = extend(\n {\n on: {},\n },\n app.params.photoBrowser,\n );\n\n // Extend defaults with modules params\n pb.useModulesParams(defaults);\n\n pb.params = extend(defaults, params);\n\n extend(pb, {\n exposed: false,\n opened: false,\n activeIndex: pb.params.swiper.initialSlide,\n url: pb.params.url,\n swipeToClose: {\n allow: true,\n isTouched: false,\n diff: undefined,\n start: undefined,\n current: undefined,\n started: false,\n activeSlide: undefined,\n timeStart: undefined,\n },\n });\n\n // Install Modules\n pb.useModules();\n\n // Init\n pb.init();\n }\n\n get view() {\n const { params, app } = this;\n return params.view || app.views.main;\n }\n\n onSlideChange(swiper) {\n const pb = this;\n pb.activeIndex = swiper.activeIndex;\n\n let current = swiper.activeIndex + 1;\n let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n if (swiper.params.loop) {\n total -= 2;\n current -= swiper.loopedSlides;\n if (current < 1) current = total + current;\n if (current > total) current -= total;\n }\n\n const $activeSlideEl = pb.params.virtualSlides\n ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`)\n : $(swiper.slides).eq(swiper.activeIndex);\n const $previousSlideEl = pb.params.virtualSlides\n ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`)\n : $(swiper.slides).eq(swiper.previousIndex);\n\n let $currentEl = pb.$el.find('.photo-browser-current');\n let $totalEl = pb.$el.find('.photo-browser-total');\n let navbarEl;\n if (\n pb.params.type === 'page' &&\n pb.params.navbar &&\n $currentEl.length === 0 &&\n pb.app.theme === 'ios'\n ) {\n navbarEl = pb.app.navbar.getElByPage(pb.$el);\n if (navbarEl) {\n $currentEl = $(navbarEl).find('.photo-browser-current');\n $totalEl = $(navbarEl).find('.photo-browser-total');\n }\n }\n if ($currentEl.length && $totalEl.length) {\n $currentEl.text(current);\n $totalEl.text(total);\n if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n if (navbarEl) {\n pb.app.navbar.size(navbarEl);\n }\n }\n\n // Update captions\n if (pb.captions.length > 0) {\n const captionIndex = swiper.params.loop\n ? $activeSlideEl.attr('data-swiper-slide-index')\n : pb.activeIndex;\n pb.$captionsContainerEl\n .find('.photo-browser-caption-active')\n .removeClass('photo-browser-caption-active');\n pb.$captionsContainerEl\n .find(`[data-caption-index=\"${captionIndex}\"]`)\n .addClass('photo-browser-caption-active');\n }\n\n // Stop Video\n const previousSlideVideo = $previousSlideEl.find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n }\n }\n\n onTouchStart() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.allow) return;\n swipeToClose.isTouched = true;\n }\n\n onTouchMove(e) {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n\n if (!swipeToClose.isTouched) return;\n if (!swipeToClose.started) {\n swipeToClose.started = true;\n swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (pb.params.virtualSlides) {\n swipeToClose.activeSlide = $(pb.swiper.wrapperEl).children('.swiper-slide-active');\n } else {\n swipeToClose.activeSlide = $(pb.swiper.slides).eq(pb.swiper.activeIndex);\n }\n swipeToClose.timeStart = now();\n }\n e.preventDefault();\n swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n }\n\n onTouchEnd() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n swipeToClose.isTouched = false;\n if (!swipeToClose.started) {\n swipeToClose.started = false;\n return;\n }\n swipeToClose.started = false;\n swipeToClose.allow = false;\n const diff = Math.abs(swipeToClose.diff);\n const timeDiff = new Date().getTime() - swipeToClose.timeStart;\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n nextTick(() => {\n if (pb.$el) {\n if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');\n else pb.$el.addClass('swipe-close-to-top');\n }\n pb.emit('local::swipeToClose', pb);\n pb.$el.transform('').transition('');\n pb.close();\n swipeToClose.allow = true;\n });\n return;\n }\n if (diff !== 0) {\n pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n swipeToClose.allow = true;\n pb.$el.removeClass('photo-browser-transitioning');\n });\n } else {\n swipeToClose.allow = true;\n }\n nextTick(() => {\n pb.$el.transform('').transition('');\n });\n }\n\n // Render Functions\n renderNavbar() {\n const pb = this;\n if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n\n const iconsColor = pb.params.iconsColor;\n\n const pageBackLinkText =\n pb.app.theme === 'ios' && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n\n const renderNavbarCount =\n typeof pb.params.navbarShowCount === 'undefined'\n ? pb.params.photos.length > 1\n : pb.params.navbarShowCount;\n\n const isPopup = pb.params.type !== 'page';\n return (\n <div\n class={`navbar navbar-photo-browser ${\n pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : ''\n }`}\n >\n <div class=\"navbar-bg\"></div>\n <div class=\"navbar-inner navbar-inner-centered-title sliding\">\n {!isPopup && (\n <div class=\"left\">\n <a class={`link ${!pageBackLinkText ? 'icon-only' : ''} back`}>\n <i class={`icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`}></i>\n {pageBackLinkText && <span>{pageBackLinkText}</span>}\n </a>\n </div>\n )}\n {renderNavbarCount && (\n <div class=\"title\">\n <span class=\"photo-browser-current\"></span>\n <span class=\"photo-browser-of\">{pb.params.navbarOfText}</span>\n <span class=\"photo-browser-total\"></span>\n </div>\n )}\n {isPopup && (pb.params.popupCloseLinkText || pb.params.popupCloseLinkIcon) && (\n <div class=\"right\">\n <a class=\"link popup-close\" data-popup=\".photo-browser-popup\">\n {pb.params.popupCloseLinkIcon && pb.app.theme === 'ios' && (\n <i>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n >\n <path\n fill=\"currentColor\"\n d=\"M 10.0234 43.0234 C 9.2266 43.8203 9.2031 45.1797 10.0234 45.9766 C 10.8438 46.7734 12.1797 46.7734 13.0000 45.9766 L 28.0000 30.9766 L 43.0000 45.9766 C 43.7969 46.7734 45.1563 46.7969 45.9766 45.9766 C 46.7734 45.1562 46.7734 43.8203 45.9766 43.0234 L 30.9531 28.0000 L 45.9766 13.0000 C 46.7734 12.2031 46.7969 10.8437 45.9766 10.0469 C 45.1328 9.2266 43.7969 9.2266 43.0000 10.0469 L 28.0000 25.0469 L 13.0000 10.0469 C 12.1797 9.2266 10.8203 9.2031 10.0234 10.0469 C 9.2266 10.8672 9.2266 12.2031 10.0234 13.0000 L 25.0234 28.0000 Z\"\n />\n </svg>\n </i>\n )}\n {pb.params.popupCloseLinkIcon && pb.app.theme === 'md' && (\n <i>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"currentColor\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\" />\n </svg>\n </i>\n )}\n {pb.params.popupCloseLinkText && <span>{pb.params.popupCloseLinkText}</span>}\n </a>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n renderToolbar() {\n const pb = this;\n if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n\n const iconsColor = pb.params.iconsColor;\n\n return (\n <div class=\"toolbar toolbar-bottom tabbar\">\n <div class=\"toolbar-inner\">\n <a class=\"link photo-browser-prev\">\n <i class={`icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`}></i>\n </a>\n <a class=\"link photo-browser-next\">\n <i class={`icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}`}></i>\n </a>\n </div>\n </div>\n );\n }\n\n renderThumbs() {\n const pb = this;\n\n return (\n <div class=\"toolbar toolbar-bottom photo-browser-thumbs\">\n <div class=\"swiper\">\n <div class=\"swiper-wrapper\">\n {pb.params.thumbs.map((thumb, index) => pb.renderThumb(thumb, index))}\n </div>\n </div>\n </div>\n );\n }\n\n renderCaption(caption, index) {\n const pb = this;\n if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n return (\n <div class=\"photo-browser-caption\" data-caption-index={index}>\n {caption}\n </div>\n );\n }\n\n renderObject(photo, index) {\n const pb = this;\n if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n return (\n <div\n class=\"photo-browser-slide photo-browser-object-slide swiper-slide\"\n data-swiper-slide-index={index}\n >\n {photo.html ? photo.html : photo}\n </div>\n );\n }\n\n renderLazyPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n return (\n <div\n class=\"photo-browser-slide photo-browser-slide-lazy swiper-slide\"\n data-swiper-slide-index={index}\n >\n <div class=\"swiper-lazy-preloader\"></div>\n <span class=\"swiper-zoom-container\">\n <img loading=\"lazy\" src={photo.url ? photo.url : photo} />\n </span>\n </div>\n );\n }\n\n renderPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n return (\n <div class=\"photo-browser-slide swiper-slide\" data-swiper-slide-index={index}>\n <span class=\"swiper-zoom-container\">\n <img src={photo.url ? photo.url : photo} />\n </span>\n </div>\n );\n }\n\n renderThumb(thumb, index) {\n const pb = this;\n const url = typeof thumb === 'string' ? thumb : thumb.url;\n if (pb.params.renderThumb) return pb.params.renderThumb.call(pb, thumb, index);\n return (\n <div class=\"photo-browser-thumbs-slide swiper-slide\" data-swiper-slide-index={index}>\n {url && <img src={url} loading=\"lazy\" />}\n </div>\n );\n }\n\n render() {\n const pb = this;\n if (pb.params.render) return pb.params.render.call(pb, pb.params);\n return (\n <div class={`photo-browser photo-browser-${pb.params.theme}`}>\n <div class=\"view\">\n <div\n class={`page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${\n !pb.params.navbar ? 'no-navbar' : ''\n }`}\n data-name=\"photo-browser-page\"\n >\n {pb.params.navbar && pb.renderNavbar()}\n {pb.params.toolbar && pb.renderToolbar()}\n {pb.params.thumbs && pb.params.thumbs.length && pb.renderThumbs()}\n <div\n class={`photo-browser-captions photo-browser-captions-${\n pb.params.captionsTheme || pb.params.theme\n }`}\n >\n {pb.params.photos.map((photo, index) => {\n if (photo.caption) return pb.renderCaption(photo.caption, index);\n return '';\n })}\n </div>\n <div class=\"photo-browser-swiper-container swiper\">\n <div class=\"photo-browser-swiper-wrapper swiper-wrapper\">\n {!pb.params.virtualSlides &&\n pb.params.photos.map((photo, index) => {\n if (\n photo.html ||\n ((typeof photo === 'string' || photo instanceof String) &&\n photo.indexOf('<') >= 0 &&\n photo.indexOf('>') >= 0)\n ) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n })}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n renderStandalone() {\n const pb = this;\n if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n const standaloneHtml = `<div class=\"popup photo-browser-popup photo-browser-standalone popup-tablet-fullscreen\">${pb.render()}</div>`;\n return standaloneHtml;\n }\n\n renderPage() {\n const pb = this;\n if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n const pageHtml = pb.render();\n\n return pageHtml;\n }\n\n renderPopup() {\n const pb = this;\n if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n const popupHtml = `<div class=\"popup photo-browser-popup\">${pb.render()}</div>`;\n\n return popupHtml;\n }\n\n // Callbacks\n onOpen(type, el) {\n const pb = this;\n const app = pb.app;\n const $el = $(el);\n\n $el[0].f7PhotoBrowser = pb;\n\n pb.$el = $el;\n pb.el = $el[0];\n pb.openedIn = type;\n pb.opened = true;\n\n pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.$el.find('.photo-browser-slide');\n pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n pb.captions = pb.$el.find('.photo-browser-caption');\n\n const hasThumbs = pb.params.thumbs && pb.params.thumbs.length > 0;\n\n // Init Swiper\n let clickTimeout;\n let preventThumbsSlide;\n let preventMainSlide;\n const initialSlide = pb.activeIndex;\n const swiperParams = extend({}, pb.params.swiper, {\n initialSlide,\n // cssMode:\n // typeof pb.params.swiper.cssMode === 'undefined' && (app.device.ios || app.device.android)\n // ? true\n // : pb.params.swiper.cssMode,\n on: {\n click(e) {\n clearTimeout(clickTimeout);\n if (pb.params.exposition) {\n clickTimeout = setTimeout(() => {\n pb.expositionToggle();\n }, 350);\n }\n pb.emit('local::tap', e);\n pb.emit('local::click', e);\n },\n doubleClick(e) {\n clearTimeout(clickTimeout);\n pb.emit('local::doubleTap', e);\n pb.emit('local::doubleClick', e);\n },\n slideChange(...args) {\n const swiper = this;\n if (hasThumbs && pb.thumbsSwiper && !preventMainSlide) {\n preventThumbsSlide = true;\n pb.thumbsSwiper.slideTo(pb.swiper.activeIndex);\n setTimeout(() => {\n preventThumbsSlide = false;\n });\n }\n pb.onSlideChange(swiper);\n pb.emit('local::slideChange', ...args);\n },\n transitionStart(...args) {\n pb.emit('local::transitionStart', ...args);\n },\n transitionEnd(...args) {\n pb.emit('local::transitionEnd', ...args);\n },\n slideChangeTransitionStart(...args) {\n const swiper = this;\n pb.onSlideChange(swiper);\n pb.emit('local::slideChangeTransitionStart', ...args);\n },\n slideChangeTransitionEnd(...args) {\n pb.emit('local::slideChangeTransitionEnd', ...args);\n },\n },\n });\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n extend(swiperParams.on, {\n touchStart(swiper, e) {\n pb.onTouchStart(e);\n pb.emit('local::touchStart', e);\n },\n touchMoveOpposite(swiper, e) {\n pb.onTouchMove(e);\n pb.emit('local::touchMoveOpposite', e);\n },\n touchEnd(swiper, e) {\n pb.onTouchEnd(e);\n pb.emit('local::touchEnd', e);\n },\n });\n }\n if (pb.params.virtualSlides) {\n extend(swiperParams, {\n virtual: {\n slides: pb.params.photos,\n renderSlide(photo, index) {\n if (\n photo.html ||\n ((typeof photo === 'string' || photo instanceof String) &&\n photo.indexOf('<') >= 0 &&\n photo.indexOf('>') >= 0)\n ) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n },\n },\n });\n }\n const window = getWindow();\n pb.swiper = app.swiper\n ? app.swiper.create(pb.$swiperContainerEl[0], swiperParams)\n : new window.Swiper(pb.$swiperContainerEl[0], swiperParams);\n\n if (pb.activeIndex === 0 || pb.params.virtualSlides) {\n pb.onSlideChange(pb.swiper);\n }\n if (hasThumbs) {\n const thumbsSwiperParams = {\n el: pb.$el.find('.photo-browser-thumbs .swiper')[0],\n slidesPerView: 'auto',\n centeredSlides: true,\n spaceBetween: 4,\n watchSlidesProgress: true,\n initialSlide,\n on: {\n touchMove() {\n preventMainSlide = true;\n },\n touchEnd() {\n preventMainSlide = false;\n },\n slideChange(s) {\n if (preventThumbsSlide) return;\n pb.swiper.slideTo(s.activeIndex, 0);\n },\n click(s) {\n if (!s.clickedSlide) return;\n const index = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n s.slideTo(index, 0);\n },\n },\n };\n\n pb.thumbsSwiper = app.swiper\n ? app.swiper.create(thumbsSwiperParams)\n : new window.Swiper(thumbsSwiperParams);\n }\n\n if (pb.$el) {\n pb.$el.trigger('photobrowser:open');\n }\n pb.emit('local::open photoBrowserOpen', pb);\n }\n\n onOpened() {\n const pb = this;\n if (pb.$el && pb.params.type === 'standalone') {\n pb.$el.css('animation', 'none');\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:opened');\n }\n pb.emit('local::opened photoBrowserOpened', pb);\n }\n\n onClose() {\n const pb = this;\n if (pb.destroyed) return;\n\n // Destroy Swiper\n if (pb.swiper && pb.swiper.destroy) {\n pb.swiper.destroy(true, false);\n pb.swiper = null;\n delete pb.swiper;\n }\n if (pb.thumbsSwiper && pb.thumbsSwiper.destroy) {\n pb.thumbsSwiper.destroy(true, false);\n pb.thumbsSwiper = null;\n delete pb.thumbsSwiper;\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:close');\n }\n pb.emit('local::close photoBrowserClose', pb);\n }\n\n onClosed() {\n const pb = this;\n if (pb.destroyed) return;\n pb.opened = false;\n pb.$el = null;\n pb.el = null;\n delete pb.$el;\n delete pb.el;\n if (pb.$el) {\n pb.$el.trigger('photobrowser:closed');\n }\n pb.emit('local::closed photoBrowserClosed', pb);\n }\n\n // Open\n openPage() {\n const pb = this;\n if (pb.opened) return pb;\n\n const pageHtml = pb.renderPage();\n\n pb.view.router.navigate({\n url: pb.url,\n route: {\n content: pageHtml,\n path: pb.url,\n on: {\n pageBeforeIn(e, page) {\n pb.view.$el.addClass(\n `with-photo-browser-page with-photo-browser-page-${pb.params.theme}`,\n );\n pb.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n pb.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n pb.view.$el.removeClass(\n `with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`,\n );\n pb.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n pb.onClosed('page', page.el);\n },\n },\n },\n });\n return pb;\n }\n\n openStandalone() {\n const pb = this;\n if (pb.opened) return pb;\n\n const standaloneHtml = pb.renderStandalone();\n\n const popupParams = {\n backdrop: false,\n content: standaloneHtml,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n },\n },\n };\n\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams,\n },\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n openPopup() {\n const pb = this;\n if (pb.opened) return pb;\n\n const popupHtml = pb.renderPopup();\n\n const popupParams = {\n content: popupHtml,\n push: pb.params.popupPush,\n closeByBackdropClick: pb.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n },\n },\n };\n\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams,\n },\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n // Exposition\n expositionEnable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.addClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions)\n pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n pb.exposed = true;\n return pb;\n }\n\n expositionDisable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.removeClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions)\n pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n pb.exposed = false;\n return pb;\n }\n\n expositionToggle() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions)\n pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n pb.exposed = !pb.exposed;\n return pb;\n }\n\n open(index) {\n const pb = this;\n const type = pb.params.type;\n if (pb.opened) {\n if (pb.swiper && typeof index !== 'undefined') {\n pb.swiper.slideTo(parseInt(index, 10));\n }\n return pb;\n }\n if (typeof index !== 'undefined') {\n pb.activeIndex = index;\n }\n if (type === 'standalone') {\n pb.openStandalone();\n }\n if (type === 'page') {\n pb.openPage();\n }\n if (type === 'popup') {\n pb.openPopup();\n }\n return pb;\n }\n\n close() {\n const pb = this;\n if (!pb.opened) return pb;\n if ((pb.params.routableModals && pb.view) || pb.openedIn === 'page') {\n pb.view.router.back();\n } else {\n pb.modal.once('modalClosed', () => {\n nextTick(() => {\n if (pb.destroyed) return;\n pb.modal.destroy();\n delete pb.modal;\n });\n });\n pb.modal.close();\n }\n return pb;\n }\n // eslint-disable-next-line\n init() {}\n\n destroy() {\n let pb = this;\n pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n if (pb.$el) {\n pb.$el.trigger('photobrowser:beforedestroy');\n pb.$el[0].f7PhotoBrowser = null;\n delete pb.$el[0].f7PhotoBrowser;\n }\n deleteProps(pb);\n pb.destroyed = true;\n pb = null;\n }\n}\n\nexport default PhotoBrowser;\n","import PhotoBrowser from './photo-browser-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'photoBrowser',\n params: {\n photoBrowser: {\n photos: [],\n thumbs: [],\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n captionsTheme: undefined,\n iconsColor: undefined,\n popupPush: false,\n swipeToClose: true,\n pageBackLinkText: 'Back',\n popupCloseLinkText: undefined,\n popupCloseLinkIcon: true,\n navbarOfText: 'of',\n navbarShowCount: undefined,\n view: undefined,\n url: 'photos/',\n routableModals: false,\n virtualSlides: true,\n lazy: true,\n closeByBackdropClick: true,\n\n renderNavbar: undefined,\n renderToolbar: undefined,\n renderCaption: undefined,\n renderObject: undefined,\n renderLazyPhoto: undefined,\n renderPhoto: undefined,\n renderThumb: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderStandalone: undefined,\n\n swiper: {\n cssMode: false,\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n loop: false,\n keyboard: {\n enabled: true,\n },\n navigation: {\n nextEl: '.photo-browser-next',\n prevEl: '.photo-browser-prev',\n },\n zoom: {\n enabled: true,\n maxRatio: 3,\n minRatio: 1,\n },\n },\n },\n },\n create() {\n const app = this;\n app.photoBrowser = ConstructorMethods({\n defaultSelector: '.photo-browser-popup, .photo-browser-page',\n constructor: PhotoBrowser,\n app,\n domProp: 'f7PhotoBrowser',\n });\n },\n static: {\n PhotoBrowser,\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Notification extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n on: {},\n },\n app.params.notification,\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const notification = this;\n\n notification.app = app;\n\n notification.params = extendedParams;\n\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n closeTimeout,\n cssClass,\n closeOnClick,\n } = notification.params;\n\n let $el;\n if (!notification.params.el) {\n // Find Element\n const notificationHtml = notification.render({\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass,\n });\n\n $el = $(notificationHtml);\n } else {\n $el = $(notification.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return notification.destroy();\n }\n\n extend(notification, {\n $el,\n el: $el[0],\n type: 'notification',\n });\n\n $el[0].f7Modal = notification;\n\n if (closeButton) {\n $el.find('.notification-close-button').on('click', () => {\n notification.close();\n });\n }\n $el.on('click', (e) => {\n if (closeButton && $(e.target).closest('.notification-close-button').length) {\n return;\n }\n notification.emit('local::click notificationClick', notification);\n if (closeOnClick) notification.close();\n });\n\n notification.on('beforeDestroy', () => {\n $el.off('click');\n });\n\n /* Touch Events */\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchesDiff;\n let touchStartTime;\n let notificationHeight;\n const touchesStart = {};\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n touchStartTime = now();\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x)\n );\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (!isMoved) {\n notification.$el.removeClass('notification-transitioning');\n notification.$el.transition(0);\n notificationHeight = notification.$el[0].offsetHeight / 2;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n let newTranslate = touchesDiff;\n if (touchesDiff > 0) {\n newTranslate = touchesDiff ** 0.8;\n }\n notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n return;\n }\n\n const timeDiff = now() - touchStartTime;\n notification.$el.transition('');\n notification.$el.addClass('notification-transitioning');\n notification.$el.transform('');\n\n if ((touchesDiff < -10 && timeDiff < 300) || -touchesDiff >= notificationHeight / 1) {\n notification.close();\n }\n }\n\n function attachTouchEvents() {\n notification.$el.on(app.touchEvents.start, handleTouchStart, { passive: true });\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachTouchEvents() {\n notification.$el.off(app.touchEvents.start, handleTouchStart, { passive: true });\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n let timeoutId;\n function closeOnTimeout() {\n timeoutId = nextTick(() => {\n if (isTouched && isMoved) {\n closeOnTimeout();\n return;\n }\n notification.close();\n }, closeTimeout);\n }\n notification.on('open', () => {\n if (notification.params.swipeToClose) {\n attachTouchEvents();\n }\n $('.notification.modal-in').each((openedEl) => {\n const notificationInstance = app.notification.get(openedEl);\n if (openedEl !== notification.el && notificationInstance) {\n notificationInstance.close();\n }\n });\n if (closeTimeout) {\n closeOnTimeout();\n }\n });\n notification.on('close beforeDestroy', () => {\n if (notification.params.swipeToClose) {\n detachTouchEvents();\n }\n clearTimeout(timeoutId);\n });\n\n return notification;\n }\n\n render() {\n const notification = this;\n if (notification.params.render)\n return notification.params.render.call(notification, notification);\n const { icon, title, titleRightText, subtitle, text, closeButton, cssClass } =\n notification.params;\n return (\n <div class={`notification ${icon ? 'notification-with-icon' : ''} ${cssClass || ''}`}>\n <div class=\"notification-header\">\n {icon && <div class=\"notification-icon\">{icon}</div>}\n {title && <div class=\"notification-title\">{title}</div>}\n {titleRightText && <div class=\"notification-title-right-text\">{titleRightText}</div>}\n {closeButton && <span class=\"notification-close-button\"></span>}\n </div>\n <div class=\"notification-content\">\n {subtitle && <div class=\"notification-subtitle\">{subtitle}</div>}\n {text && <div class=\"notification-text\">{text}</div>}\n </div>\n </div>\n );\n }\n}\nexport default Notification;\n","import { extend } from '../../shared/utils.js';\nimport Notification from './notification-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n name: 'notification',\n static: {\n Notification,\n },\n create() {\n const app = this;\n app.notification = extend(\n {},\n ModalMethods({\n app,\n constructor: Notification,\n defaultSelector: '.notification.modal-in',\n }),\n );\n },\n params: {\n notification: {\n icon: null,\n title: null,\n titleRightText: null,\n subtitle: null,\n text: null,\n closeButton: false,\n closeTimeout: null,\n closeOnClick: false,\n swipeToClose: true,\n cssClass: null,\n render: null,\n containerEl: null,\n },\n },\n};\n","/* eslint \"no-useless-escape\": \"off\" */\nimport $ from '../../shared/dom7.js';\nimport {\n extend,\n id,\n nextTick,\n deleteProps,\n iosPreloaderContent,\n mdPreloaderContent,\n} from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Autocomplete extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const ac = this;\n ac.app = app;\n\n const device = getDevice();\n\n const defaults = extend(\n {\n on: {},\n },\n app.params.autocomplete,\n );\n\n // Extend defaults with modules params\n ac.useModulesParams(defaults);\n\n ac.params = extend(defaults, params);\n\n let $openerEl;\n if (ac.params.openerEl) {\n $openerEl = $(ac.params.openerEl);\n if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n }\n\n let $inputEl;\n if (ac.params.inputEl) {\n $inputEl = $(ac.params.inputEl);\n if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n }\n\n const uniqueId = id();\n\n let url = params.url;\n if (!url && $openerEl && $openerEl.length) {\n if ($openerEl.attr('href')) url = $openerEl.attr('href');\n else if ($openerEl.find('a').length > 0) {\n url = $openerEl.find('a').attr('href');\n }\n }\n if (!url || url === '#' || url === '') url = ac.params.url;\n\n const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n\n extend(ac, {\n $openerEl,\n openerEl: $openerEl && $openerEl[0],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n id: uniqueId,\n url,\n value: ac.params.value || [],\n inputType,\n inputName: `${inputType}-${uniqueId}`,\n $modalEl: undefined,\n $dropdownEl: undefined,\n });\n\n let previousQuery = '';\n function onInputChange() {\n let query = ac.$inputEl.val().trim();\n\n if (!ac.params.source) return;\n ac.params.source.call(ac, query, (items) => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n let regExp;\n if (ac.params.highlightMatches) {\n query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n regExp = new RegExp(`(${query})`, 'i');\n }\n\n let firstValue;\n let firstItem;\n for (let i = 0; i < limit; i += 1) {\n const itemValue =\n typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n const itemText =\n typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n if (i === 0) {\n firstValue = itemValue;\n firstItem = ac.items[i];\n }\n itemsHTML += ac.renderItem(\n {\n value: itemValue,\n text: ac.params.highlightMatches ? itemText.replace(regExp, '<b>$1</b>') : itemText,\n },\n i,\n );\n }\n if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n itemsHTML += ac.renderItem({\n placeholder: true,\n text: ac.params.dropdownPlaceholderText,\n });\n }\n ac.$dropdownEl.find('ul').html(itemsHTML);\n if (ac.params.typeahead) {\n if (!firstValue || !firstItem) {\n return;\n }\n if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n return;\n }\n if (previousQuery.toLowerCase() === query.toLowerCase()) {\n ac.value = [];\n return;\n }\n\n if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n previousQuery = query;\n ac.value = [];\n return;\n }\n $inputEl.val(firstValue);\n $inputEl[0].setSelectionRange(query.length, firstValue.length);\n\n const previousValue =\n typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n ac.value = [firstItem];\n ac.emit('local::change autocompleteChange', [firstItem]);\n }\n }\n\n previousQuery = query;\n });\n }\n function onPageInputChange() {\n const inputEl = this;\n const value = inputEl.value;\n const isValues = $(inputEl).parents('.autocomplete-values').length > 0;\n let item;\n let itemValue;\n let aValue;\n if (isValues) {\n if (ac.inputType === 'checkbox' && !inputEl.checked) {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue =\n typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n ac.updateValues();\n ac.emit('local::change autocompleteChange', ac.value);\n }\n return;\n }\n\n // Find Related Item\n for (let i = 0; i < ac.items.length; i += 1) {\n itemValue =\n typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n }\n if (ac.inputType === 'radio') {\n ac.value = [item];\n } else if (inputEl.checked) {\n ac.value.push(item);\n } else {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue =\n typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n }\n\n // Update Values Block\n ac.updateValues();\n\n // On Select Callback\n if ((ac.inputType === 'radio' && inputEl.checked) || ac.inputType === 'checkbox') {\n ac.emit('local::change autocompleteChange', ac.value);\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if (\n $targetEl.is(ac.$inputEl[0]) ||\n (ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length)\n )\n return;\n ac.close();\n }\n function onOpenerClick() {\n ac.open();\n }\n function onInputFocus() {\n ac.open();\n }\n function onInputBlur() {\n if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n setTimeout(() => {\n ac.close();\n }, 0);\n }\n function onResize() {\n ac.positionDropdown();\n }\n\n function onKeyDown(e) {\n if (!ac.opened) return;\n if (e.keyCode === 27) {\n // ESC\n e.preventDefault();\n ac.$inputEl.blur();\n return;\n }\n if (e.keyCode === 13) {\n // Enter\n const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n if ($selectedItemLabel.length) {\n e.preventDefault();\n $selectedItemLabel.trigger('click');\n ac.$inputEl.blur();\n return;\n }\n if (ac.params.typeahead) {\n e.preventDefault();\n ac.$inputEl.blur();\n }\n return;\n }\n if (e.keyCode !== 40 && e.keyCode !== 38) return;\n e.preventDefault();\n const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n let $newItem;\n if ($selectedItem.length) {\n $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n if (!$newItem.length) {\n $newItem = ac.$dropdownEl\n .find('li')\n .eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n } else {\n $newItem = ac.$dropdownEl\n .find('li')\n .eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n $selectedItem.removeClass('autocomplete-dropdown-selected');\n $newItem.addClass('autocomplete-dropdown-selected');\n }\n function onDropdownClick() {\n const $clickedEl = $(this);\n let clickedItem;\n for (let i = 0; i < ac.items.length; i += 1) {\n const itemValue =\n typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n const value = $clickedEl.attr('data-value');\n if (itemValue === value || itemValue * 1 === value * 1) {\n clickedItem = ac.items[i];\n }\n }\n if (ac.params.updateInputValueOnSelect) {\n ac.$inputEl.val(\n typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem,\n );\n ac.$inputEl.trigger('input change');\n }\n ac.value = [clickedItem];\n ac.emit('local::change autocompleteChange', [clickedItem]);\n ac.close();\n }\n\n ac.attachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.on('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.on('focus', onInputFocus);\n ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').on('click', onHtmlClick);\n } else {\n ac.$inputEl.on('blur', onInputBlur);\n }\n ac.$inputEl.on('keydown', onKeyDown);\n }\n };\n ac.detachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.off('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.off('focus', onInputFocus);\n ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').off('click', onHtmlClick);\n } else {\n ac.$inputEl.off('blur', onInputBlur);\n }\n ac.$inputEl.off('keydown', onKeyDown);\n }\n };\n ac.attachDropdownEvents = function attachDropdownEvents() {\n ac.$dropdownEl.on('click', 'label', onDropdownClick);\n app.on('resize', onResize);\n };\n ac.detachDropdownEvents = function detachDropdownEvents() {\n ac.$dropdownEl.off('click', 'label', onDropdownClick);\n app.off('resize', onResize);\n };\n\n ac.attachPageEvents = function attachPageEvents() {\n ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n if (ac.params.closeOnSelect && !ac.params.multiple) {\n ac.$el.once('click', '.list label', () => {\n nextTick(() => {\n ac.close();\n });\n });\n }\n };\n ac.detachPageEvents = function detachPageEvents() {\n ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n };\n\n // Install Modules\n ac.useModules();\n\n // Init\n ac.init();\n\n return ac;\n }\n\n get view() {\n const ac = this;\n const { $openerEl, $inputEl, app } = ac;\n let view;\n if (ac.params.view) {\n view = ac.params.view;\n } else if ($openerEl || $inputEl) {\n const $el = $openerEl || $inputEl;\n view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n positionDropdown() {\n const ac = this;\n const { $inputEl, app, $dropdownEl } = ac;\n\n const $pageContentEl = $inputEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const inputOffset = $inputEl.offset();\n const inputOffsetWidth = $inputEl[0].offsetWidth;\n const inputOffsetHeight = $inputEl[0].offsetHeight;\n const $listEl = $inputEl.parents('.list');\n\n let $listParent;\n $listEl.parents().each((parentEl) => {\n if ($listParent) return;\n const $parentEl = $(parentEl);\n if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n });\n\n const listOffset = $listEl.offset();\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n const inputOffsetLeft =\n inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n const inputOffsetTop =\n inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n\n const maxHeight =\n $pageContentEl[0].scrollHeight -\n paddingBottom -\n (inputOffsetTop + $pageContentEl[0].scrollTop) -\n $inputEl[0].offsetHeight;\n\n const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n let paddingValue;\n if ($listEl.length) {\n paddingValue =\n (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) -\n (app.theme === 'md' ? 16 : 15);\n }\n\n $dropdownEl.css({\n left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`,\n });\n $dropdownEl.children('.autocomplete-dropdown-inner').css({\n maxHeight: `${maxHeight}px`,\n [paddingProp]: $listEl.length > 0 ? `${paddingValue}px` : '',\n });\n }\n\n focus() {\n const ac = this;\n ac.$el.find('input[type=search]').focus();\n }\n\n source(query) {\n const ac = this;\n if (!ac.params.source) return;\n\n const { $el } = ac;\n\n ac.params.source.call(ac, query, (items) => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n for (let i = 0; i < limit; i += 1) {\n let selected = false;\n const itemValue =\n typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n for (let j = 0; j < ac.value.length; j += 1) {\n const aValue =\n typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n }\n itemsHTML += ac.renderItem(\n {\n value: itemValue,\n text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ac.inputName,\n selected,\n },\n i,\n );\n }\n $el.find('.autocomplete-found ul').html(itemsHTML);\n if (items.length === 0) {\n if (query.length !== 0) {\n $el.find('.autocomplete-not-found').show();\n $el.find('.autocomplete-found, .autocomplete-values').hide();\n } else {\n $el.find('.autocomplete-values').show();\n $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n }\n } else {\n $el.find('.autocomplete-found').show();\n $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n }\n });\n }\n\n updateValues() {\n const ac = this;\n let valuesHTML = '';\n for (let i = 0; i < ac.value.length; i += 1) {\n valuesHTML += ac.renderItem(\n {\n value:\n typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: `${ac.inputName}-checked}`,\n selected: true,\n },\n i,\n );\n }\n ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n }\n\n preloaderHide() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n }\n }\n\n preloaderShow() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n }\n }\n\n renderPreloader() {\n const ac = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent,\n };\n\n return (\n <div\n class={`autocomplete-preloader preloader ${\n ac.params.preloaderColor ? `color-${ac.params.preloaderColor}` : ''\n }`}\n >\n {preloaders[`${ac.app.theme}PreloaderContent`] || ''}\n </div>\n );\n }\n\n renderSearchbar() {\n const ac = this;\n if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n\n return (\n <form class=\"searchbar\">\n <div class=\"searchbar-inner\">\n <div class=\"searchbar-input-wrap\">\n <input\n type=\"search\"\n spellcheck={ac.params.searchbarSpellcheck || 'false'}\n placeholder={ac.params.searchbarPlaceholder}\n />\n <i class=\"searchbar-icon\"></i>\n <span class=\"input-clear-button\"></span>\n </div>\n {ac.params.searchbarDisableButton && (\n <span class=\"searchbar-disable-button\">{ac.params.searchbarDisableText}</span>\n )}\n </div>\n </form>\n );\n }\n\n renderItem(item, index) {\n const ac = this;\n if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n\n const itemValue =\n item.value && typeof item.value === 'string'\n ? item.value.replace(/\"/g, '"')\n : item.value;\n if (ac.params.openIn !== 'dropdown') {\n return (\n <li>\n <label class={`item-${item.inputType} item-content`}>\n <input\n type={item.inputType}\n name={item.inputName}\n value={itemValue}\n _checked={item.selected}\n />\n <i class={`icon icon-${item.inputType}`} />\n <div class=\"item-inner\">\n <div class=\"item-title\">{item.text}</div>\n </div>\n </label>\n </li>\n );\n }\n // Dropdown\n if (!item.placeholder) {\n return (\n <li>\n <label class=\"item-radio item-content\" data-value={itemValue}>\n <div class=\"item-inner\">\n <div class=\"item-title\">{item.text}</div>\n </div>\n </label>\n </li>\n );\n }\n\n // Dropwdown placeholder\n return (\n <li class=\"autocomplete-dropdown-placeholder\">\n <label class=\"item-content\">\n <div class=\"item-inner\">\n <div class=\"item-title\">{item.text}</div>\n </div>\n </label>\n </li>\n );\n }\n\n renderNavbar() {\n const ac = this;\n if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n let pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n const inPopup = ac.params.openIn === 'popup';\n\n // eslint-disable-next-line\n const navbarLeft = inPopup ? (\n ac.params.preloader && <div class=\"left\">{ac.renderPreloader()}</div>\n ) : (\n <div class=\"left sliding\">\n <a class=\"link back\">\n <i class=\"icon icon-back\"></i>\n <span class=\"if-not-md\">{ac.params.pageBackLinkText}</span>\n </a>\n </div>\n );\n const navbarRight = inPopup ? (\n <div class=\"right\">\n <a class=\"link popup-close\" data-popup=\".autocomplete-popup\">\n {ac.params.popupCloseLinkText}\n </a>\n </div>\n ) : (\n ac.params.preloader && <div class=\"right\">{ac.renderPreloader()}</div>\n );\n return (\n <div\n class={`navbar ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`}\n >\n <div class=\"navbar-bg\"></div>\n <div\n class={`navbar-inner ${\n ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''\n }`}\n >\n {navbarLeft}\n {pageTitle && <div class=\"title sliding\">{pageTitle}</div>}\n {navbarRight}\n <div class=\"subnavbar sliding\">{ac.renderSearchbar()}</div>\n </div>\n </div>\n );\n }\n\n renderDropdown() {\n const ac = this;\n if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n\n return (\n <div class=\"autocomplete-dropdown\">\n <div class=\"autocomplete-dropdown-inner\">\n <div class={`list no-safe-areas`}>\n <ul></ul>\n </div>\n </div>\n {ac.params.preloader && ac.renderPreloader()}\n </div>\n );\n }\n\n renderPage(inPopup) {\n const ac = this;\n if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n\n return (\n <div class=\"page page-with-subnavbar autocomplete-page\" data-name=\"autocomplete-page\">\n {ac.renderNavbar(inPopup)}\n <div class=\"searchbar-backdrop\"></div>\n <div class=\"page-content\">\n <div\n class={`list autocomplete-list autocomplete-found autocomplete-list-${ac.id} ${\n ac.params.formColorTheme ? `color-${ac.params.formColorTheme}` : ''\n }`}\n >\n <ul></ul>\n </div>\n <div class=\"list autocomplete-not-found\">\n <ul>\n <li class=\"item-content\">\n <div class=\"item-inner\">\n <div class=\"item-title\">{ac.params.notFoundText}</div>\n </div>\n </li>\n </ul>\n </div>\n <div class=\"list autocomplete-values\">\n <ul></ul>\n </div>\n </div>\n </div>\n );\n }\n\n renderPopup() {\n const ac = this;\n if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n return (\n <div class=\"popup autocomplete-popup\">\n <div class=\"view\">{ac.renderPage(true)};</div>\n </div>\n );\n }\n\n onOpen(type, el) {\n const ac = this;\n const app = ac.app;\n const $el = $(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n let $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n },\n },\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) ac.source('');\n }\n\n ac.emit('local::open autocompleteOpen', ac);\n }\n\n autoFocus() {\n const ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n }\n\n onOpened() {\n const ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n }\n\n onClose() {\n const ac = this;\n if (ac.destroyed) return;\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n } else {\n ac.detachPageEvents();\n }\n\n ac.emit('local::close autocompleteClose', ac);\n }\n\n onClosed() {\n const ac = this;\n if (ac.destroyed) return;\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n\n ac.emit('local::closed autocompleteClosed', ac);\n }\n\n openPage() {\n const ac = this;\n if (ac.opened) return ac;\n const pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n },\n },\n options: {\n animate: ac.params.animate,\n },\n },\n });\n return ac;\n }\n\n openPopup() {\n const ac = this;\n if (ac.opened) return ac;\n const popupHtml = ac.renderPopup();\n\n const popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n push: ac.params.popupPush,\n swipeToClose: ac.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ac.params.routableModals && ac.view) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams,\n },\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n }\n\n openDropdown() {\n const ac = this;\n\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $(ac.renderDropdown());\n }\n\n const $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n }\n\n open() {\n const ac = this;\n if (ac.opened) return ac;\n const openIn = ac.params.openIn;\n ac[\n `open${openIn\n .split('')\n .map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n })\n .join('')}`\n ]();\n return ac;\n }\n\n close() {\n const ac = this;\n if (!ac.opened) return ac;\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if ((ac.params.routableModals && ac.view) || ac.openedIn === 'page') {\n ac.view.router.back({ animate: ac.params.animate });\n } else {\n ac.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ac.destroyed) return;\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n }\n\n init() {\n const ac = this;\n ac.attachEvents();\n }\n\n destroy() {\n const ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n deleteProps(ac);\n ac.destroyed = true;\n }\n}\n\nexport default Autocomplete;\n","import { extend } from '../../shared/utils.js';\nimport Autocomplete from './autocomplete-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n\n value: undefined,\n multiple: false,\n\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n\n openIn: 'page', // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n\n popupPush: false,\n popupSwipeToClose: undefined,\n\n animate: true,\n\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n\n // Routing\n routableModals: false,\n url: 'select/',\n\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined,\n },\n },\n static: {\n Autocomplete,\n },\n create() {\n const app = this;\n app.autocomplete = extend(\n ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app,\n domProp: 'f7Autocomplete',\n }),\n {\n open(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) return ac.open();\n return undefined;\n },\n close(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) return ac.close();\n return undefined;\n },\n },\n );\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\n\nclass Tooltip extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const tooltip = this;\n const support = getSupport();\n\n const defaults = extend({}, app.params.tooltip);\n\n const document = getDocument();\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n\n tooltip.params = extend(defaults, params);\n if (\n typeof params.offset === 'undefined' &&\n support.touch &&\n tooltip.params.trigger === 'hover'\n ) {\n tooltip.params.offset = 10;\n }\n\n const { targetEl, containerEl } = tooltip.params;\n if (!targetEl && !tooltip.params.delegated) return tooltip;\n\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip;\n\n if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated)\n return $targetEl[0].f7Tooltip;\n\n let $containerEl = $(containerEl || app.$el).eq(0);\n if ($containerEl.length === 0) {\n $containerEl = app.$el;\n }\n\n const $el = $(tooltip.render()).eq(0);\n\n extend(tooltip, {\n app,\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false,\n });\n\n if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;\n\n const touchesStart = {};\n let isTouched;\n function handleClick() {\n if (tooltip.opened) tooltip.hide();\n else tooltip.show(this);\n }\n function handleClickOut(e) {\n if (\n tooltip.opened &&\n ($(e.target).closest($targetEl).length || $(e.target).closest(tooltip.$el).length)\n )\n return;\n tooltip.hide();\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const distance = ((x - touchesStart.x) ** 2 + (y - touchesStart.y) ** 2) ** 0.5;\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.on('click', handleClick);\n }\n $('html').on('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? { passive: true } : false;\n if (tooltip.params.delegated) {\n $(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n }\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).on(\n support.pointerEvents ? 'pointerenter' : 'mouseenter',\n tooltip.params.targetEl,\n handleMouseEnter,\n true,\n );\n $(document).on(\n support.pointerEvents ? 'pointerleave' : 'mouseleave',\n tooltip.params.targetEl,\n handleMouseLeave,\n true,\n );\n } else {\n tooltip.$targetEl.on(\n support.pointerEvents ? 'pointerenter' : 'mouseenter',\n handleMouseEnter,\n );\n tooltip.$targetEl.on(\n support.pointerEvents ? 'pointerleave' : 'mouseleave',\n handleMouseLeave,\n );\n }\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.off('click', handleClick);\n }\n $('html').off('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? { passive: true } : false;\n if (tooltip.params.delegated) {\n $(document).off(\n app.touchEvents.start,\n tooltip.params.targetEl,\n handleTouchStart,\n passive,\n );\n } else {\n tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n }\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).off(\n support.pointerEvents ? 'pointerenter' : 'mouseenter',\n tooltip.params.targetEl,\n handleMouseEnter,\n true,\n );\n $(document).off(\n support.pointerEvents ? 'pointerleave' : 'mouseleave',\n tooltip.params.targetEl,\n handleMouseLeave,\n true,\n );\n } else {\n tooltip.$targetEl.off(\n support.pointerEvents ? 'pointerenter' : 'mouseenter',\n handleMouseEnter,\n );\n tooltip.$targetEl.off(\n support.pointerEvents ? 'pointerleave' : 'mouseleave',\n handleMouseLeave,\n );\n }\n }\n };\n\n // Install Modules\n tooltip.useModules();\n\n tooltip.init();\n\n return tooltip;\n }\n\n setTargetEl(targetEl) {\n const tooltip = this;\n tooltip.detachEvents();\n tooltip.$targetEl = $(targetEl);\n tooltip.targetEl = tooltip.$targetEl[0];\n tooltip.attachEvents();\n return tooltip;\n }\n\n position(targetEl) {\n const tooltip = this;\n const { $el, app, $containerEl } = tooltip;\n const hasContainerEl = !!tooltip.params.containerEl;\n const tooltipOffset = tooltip.params.offset || 0;\n $el.css({ left: '', top: '' });\n const $targetEl = $(targetEl || tooltip.targetEl);\n const [width, height] = [$el.width(), $el.height()];\n\n $el.css({ left: '', top: '' });\n\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n\n const boundaries =\n hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;\n\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {\n const clientRect = $targetEl[0].getBoundingClientRect();\n targetWidth = clientRect.width;\n targetHeight = clientRect.height;\n }\n\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - boundaries.left;\n targetOffsetTop = targetOffset.top - boundaries.top;\n\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n let [left, top] = [0, 0, 0];\n\n // Top Position\n let position = 'top';\n\n if (height + tooltipOffset < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height - tooltipOffset;\n } else if (height < boundaries.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + tooltipOffset;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n if (top <= 0) {\n top = 8;\n } else if (top + height >= boundaries.height) {\n top = boundaries.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n if (left < 8) left = 8;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n if (left < 0) left = 0;\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || left + width > boundaries.width) {\n if (left < 8) left = targetOffsetLeft + targetWidth;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n }\n }\n\n // Apply Styles\n $el.css({ top: `${top}px`, left: `${left}px` });\n }\n\n show(aroundEl) {\n const tooltip = this;\n const { $el, $targetEl, $containerEl } = tooltip;\n if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {\n $containerEl.append($el);\n }\n tooltip.position(aroundEl);\n const $aroundEl = $(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show');\n $el.trigger('tooltip:show');\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show');\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n }\n\n hide() {\n const tooltip = this;\n const { $el, $targetEl } = tooltip;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide');\n $el.trigger('tooltip:hide');\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n }\n\n render() {\n const tooltip = this;\n if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n const { cssClass, text } = tooltip.params;\n return `\n <div class=\"tooltip ${cssClass || ''}\">\n <div class=\"tooltip-content\">${text || ''}</div>\n </div>\n `.trim();\n }\n\n setText(newText) {\n const tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n }\n\n init() {\n const tooltip = this;\n tooltip.attachEvents();\n }\n\n destroy() {\n const tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) return;\n tooltip.$targetEl.trigger('tooltip:beforedestroy');\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n deleteProps(tooltip);\n tooltip.destroyed = true;\n }\n}\nexport default Tooltip;\n","import $ from '../../shared/dom7.js';\nimport Tooltip from './tooltip-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'tooltip',\n static: {\n Tooltip,\n },\n create() {\n const app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app,\n domProp: 'f7Tooltip',\n });\n app.tooltip.show = function show(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n delegated: false,\n text: null,\n cssClass: null,\n render: null,\n offset: 0,\n trigger: 'hover',\n containerEl: undefined,\n },\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.tooltip-init')\n .each((el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.tooltip-init')\n .each((el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tooltip-init').each((el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n if (\n app.theme === 'ios' &&\n page.view &&\n page.view.router.dynamicNavbar &&\n page.$navbarEl &&\n page.$navbarEl.length > 0\n ) {\n page.$navbarEl.find('.tooltip-init').each((el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.tooltip-init').each((el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n if (\n app.theme === 'ios' &&\n page.view &&\n page.view.router.dynamicNavbar &&\n page.$navbarEl &&\n page.$navbarEl.length > 0\n ) {\n page.$navbarEl.find('.tooltip-init').each((el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n }\n },\n },\n vnode: {\n 'tooltip-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n },\n update(vnode) {\n const el = vnode.elm;\n if (!el.f7Tooltip) return;\n if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n }\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n },\n },\n },\n};\n","/* eslint no-nested-ternary: off */\nimport { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Gauge extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const self = this;\n\n const defaults = extend({}, app.params.gauge);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n\n self.params = extend(defaults, params);\n\n const { el } = self.params;\n if (!el) return self;\n\n const $el = $(el);\n if ($el.length === 0) return self;\n\n if ($el[0].f7Gauge) return $el[0].f7Gauge;\n\n extend(self, {\n app,\n $el,\n el: $el && $el[0],\n });\n\n $el[0].f7Gauge = self;\n\n // Install Modules\n self.useModules();\n\n self.init();\n\n return self;\n }\n\n calcRadius() {\n const self = this;\n const { size, borderWidth } = self.params;\n return size / 2 - borderWidth / 2;\n }\n\n calcBorderLength() {\n const self = this;\n const radius = self.calcRadius();\n return 2 * Math.PI * radius;\n }\n\n render() {\n const self = this;\n if (self.params.render) return self.params.render.call(self, self);\n\n const {\n type,\n value,\n size,\n bgColor,\n borderBgColor,\n borderColor,\n borderWidth,\n valueText,\n valueTextColor,\n valueFontSize,\n valueFontWeight,\n labelText,\n labelTextColor,\n labelFontSize,\n labelFontWeight,\n } = self.params;\n\n const semiCircle = type === 'semicircle';\n const radius = self.calcRadius();\n const length = self.calcBorderLength();\n const progress = Math.max(Math.min(value, 1), 0);\n\n return (\n <svg\n class=\"gauge-svg\"\n width={`${size}px`}\n height={`${semiCircle ? size / 2 : size}px`}\n viewBox={`0 0 ${size} ${semiCircle ? size / 2 : size}`}\n >\n {semiCircle && (\n <path\n class=\"gauge-back-semi\"\n d={`M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`}\n stroke={borderBgColor}\n stroke-width={borderWidth}\n fill={bgColor || 'none'}\n />\n )}\n {semiCircle && (\n <path\n class=\"gauge-front-semi\"\n d={`M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`}\n stroke={borderColor}\n stroke-width={borderWidth}\n stroke-dasharray={length / 2}\n stroke-dashoffset={(length / 2) * (1 + progress)}\n fill={borderBgColor ? 'none' : bgColor || 'none'}\n />\n )}\n {!semiCircle && borderBgColor && (\n <circle\n class=\"gauge-back-circle\"\n stroke={borderBgColor}\n stroke-width={borderWidth}\n fill={bgColor || 'none'}\n cx={size / 2}\n cy={size / 2}\n r={radius}\n />\n )}\n {!semiCircle && (\n <circle\n class=\"gauge-front-circle\"\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n stroke={borderColor}\n stroke-width={borderWidth}\n stroke-dasharray={length}\n stroke-dashoffset={length * (1 - progress)}\n fill={borderBgColor ? 'none' : bgColor || 'none'}\n cx={size / 2}\n cy={size / 2}\n r={radius}\n />\n )}\n\n {valueText && (\n <text\n class=\"gauge-value-text\"\n x=\"50%\"\n y={semiCircle ? '100%' : '50%'}\n font-weight={valueFontWeight}\n font-size={valueFontSize}\n fill={valueTextColor}\n dy={semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0}\n text-anchor=\"middle\"\n dominant-baseline={!semiCircle && 'middle'}\n >\n {valueText}\n </text>\n )}\n {labelText && (\n <text\n class=\"gauge-label-text\"\n x=\"50%\"\n y={semiCircle ? '100%' : '50%'}\n font-weight={labelFontWeight}\n font-size={labelFontSize}\n fill={labelTextColor}\n dy={semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0}\n text-anchor=\"middle\"\n dominant-baseline={!semiCircle && 'middle'}\n >\n {labelText}\n </text>\n )}\n </svg>\n );\n }\n\n update(newParams = {}) {\n const self = this;\n const document = getDocument();\n const { params, $svgEl } = self;\n\n Object.keys(newParams).forEach((param) => {\n if (typeof newParams[param] !== 'undefined') {\n params[param] = newParams[param];\n }\n });\n if ($svgEl.length === 0) return self;\n\n const {\n value,\n size,\n bgColor,\n borderBgColor,\n borderColor,\n borderWidth,\n valueText,\n valueTextColor,\n valueFontSize,\n valueFontWeight,\n labelText,\n labelTextColor,\n labelFontSize,\n labelFontWeight,\n } = params;\n\n const length = self.calcBorderLength();\n const progress = Math.max(Math.min(value, 1), 0);\n const radius = self.calcRadius();\n const semiCircle = params.type === 'semicircle';\n\n const svgAttrs = {\n width: `${size}px`,\n height: `${semiCircle ? size / 2 : size}px`,\n viewBox: `0 0 ${size} ${semiCircle ? size / 2 : size}`,\n };\n Object.keys(svgAttrs).forEach((attr) => {\n $svgEl.attr(attr, svgAttrs[attr]);\n });\n if (semiCircle) {\n const backAttrs = {\n d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n };\n const frontAttrs = {\n d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length / 2,\n 'stroke-dashoffset': (length / 2) * (1 + progress),\n fill: borderBgColor ? 'none' : bgColor || 'none',\n };\n Object.keys(backAttrs).forEach((attr) => {\n $svgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);\n });\n Object.keys(frontAttrs).forEach((attr) => {\n $svgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);\n });\n } else {\n const backAttrs = {\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n const frontAttrs = {\n transform: `rotate(-90 ${size / 2} ${size / 2})`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length,\n 'stroke-dashoffset': length * (1 - progress),\n fill: borderBgColor ? 'none' : bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n Object.keys(backAttrs).forEach((attr) => {\n $svgEl.find('.gauge-back-circle').attr(attr, backAttrs[attr]);\n });\n Object.keys(frontAttrs).forEach((attr) => {\n $svgEl.find('.gauge-front-circle').attr(attr, frontAttrs[attr]);\n });\n }\n if (valueText) {\n if (!$svgEl.find('.gauge-value-text').length) {\n const textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n textEl.classList.add('gauge-value-text');\n $svgEl.append(textEl);\n }\n const textAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': valueFontWeight,\n 'font-size': valueFontSize,\n fill: valueTextColor,\n dy: semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(textAttrs).forEach((attr) => {\n $svgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);\n });\n $svgEl.find('.gauge-value-text').text(valueText);\n } else {\n $svgEl.find('.gauge-value-text').remove();\n }\n if (labelText) {\n if (!$svgEl.find('.gauge-label-text').length) {\n const textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n textEl.classList.add('gauge-label-text');\n $svgEl.append(textEl);\n }\n const labelAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': labelFontWeight,\n 'font-size': labelFontSize,\n fill: labelTextColor,\n dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(labelAttrs).forEach((attr) => {\n $svgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);\n });\n $svgEl.find('.gauge-label-text').text(labelText);\n } else {\n $svgEl.find('.gauge-label-text').remove();\n }\n return self;\n }\n\n init() {\n const self = this;\n const $svgEl = $(self.render()).eq(0);\n $svgEl.f7Gauge = self;\n extend(self, {\n $svgEl,\n svgEl: $svgEl && $svgEl[0],\n });\n self.$el.append($svgEl);\n return self;\n }\n\n destroy() {\n const self = this;\n if (!self.$el || self.destroyed) return;\n self.$el.trigger('gauge:beforedestroy');\n self.emit('local::beforeDestroy gaugeBeforeDestroy', self);\n self.$svgEl.remove();\n delete self.$el[0].f7Gauge;\n deleteProps(self);\n self.destroyed = true;\n }\n}\nexport default Gauge;\n","import $ from '../../shared/dom7.js';\nimport Gauge from './gauge-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport { extend } from '../../shared/utils.js';\n\nexport default {\n name: 'gauge',\n static: {\n Gauge,\n },\n create() {\n const app = this;\n app.gauge = ConstructorMethods({\n defaultSelector: '.gauge',\n constructor: Gauge,\n app,\n domProp: 'f7Gauge',\n });\n app.gauge.update = function update(el, newParams) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const gauge = app.gauge.get(el);\n if (!gauge) return undefined;\n gauge.update(newParams);\n return gauge;\n };\n },\n params: {\n gauge: {\n el: null,\n type: 'circle',\n value: 0,\n size: 200,\n bgColor: 'transparent',\n borderBgColor: '#eeeeee',\n borderColor: '#000000',\n borderWidth: 10,\n valueText: null,\n valueTextColor: '#000000',\n valueFontSize: 31,\n valueFontWeight: 500,\n labelText: null,\n labelTextColor: '#888888',\n labelFontSize: 14,\n labelFontWeight: 400,\n },\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.gauge-init')\n .each((el) => {\n app.gauge.create(extend({ el }, $(el).dataset() || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.gauge-init')\n .each((el) => {\n if (el.f7Gauge) el.f7Gauge.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.gauge-init').each((el) => {\n app.gauge.create(extend({ el }, $(el).dataset() || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.gauge-init').each((el) => {\n if (el.f7Gauge) el.f7Gauge.destroy();\n });\n },\n },\n vnode: {\n 'gauge-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.gauge.create(extend({ el }, $(el).dataset() || {}));\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Gauge) el.f7Gauge.destroy();\n },\n },\n },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, alphaLabelText } = self.params;\n return (\n <div class=\"color-picker-module color-picker-module-alpha-slider\">\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{alphaLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-alpha\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input type=\"number\" step=\"0.01\" min=\"0\" max=\"1\" class=\"color-picker-value-alpha\" />\n ) : (\n <span class=\"color-picker-value-alpha\"></span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n },\n init(self) {\n self.alphaRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-alpha'),\n min: 0,\n max: 1,\n step: 0.01,\n value: 1,\n on: {\n change(range, value) {\n const alpha = Math.floor(value * 100) / 100;\n self.setValue({ alpha });\n },\n },\n });\n function handleInputChange(e) {\n const alpha = self.value.alpha;\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = alpha;\n return;\n }\n value = Math.max(0, Math.min(1, value));\n self.setValue({ alpha: value });\n }\n\n self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n\n self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n };\n },\n update(self) {\n const { value } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { alpha } = value;\n self.alphaRangeSlider.value = alpha;\n self.alphaRangeSlider.layout();\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-alpha').val(alpha);\n } else {\n self.$el.find('span.color-picker-value-alpha').text(alpha);\n }\n },\n destroy(self) {\n if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n self.alphaRangeSlider.destroy();\n }\n delete self.alphaRangeSlider;\n\n if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n delete self.destroyAlphaSliderEvents;\n },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render() {\n return (\n <div class=\"color-picker-module color-picker-module-current-color\">\n <div class=\"color-picker-current-color\"></div>\n </div>\n );\n },\n update(self) {\n self.$el\n .find('.color-picker-module-current-color .color-picker-current-color')\n .css('background-color', self.value.hex);\n },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render(self) {\n const { hexLabel, hexLabelText, hexValueEditable } = self.params;\n return (\n <div class=\"color-picker-module color-picker-module-hex\">\n <div class=\"color-picker-hex-wrap\">\n {hexLabel && <div class=\"color-picker-hex-label\">{hexLabelText}</div>}\n <div class=\"color-picker-hex-value\">\n {hexValueEditable ? (\n <input type=\"text\" class=\"color-picker-value-hex\" />\n ) : (\n <span class=\"color-picker-value-hex\"></span>\n )}\n </div>\n </div>\n </div>\n );\n },\n init(self) {\n function handleInputChange(e) {\n const hex = self.value.hex;\n let value = e.target.value.replace(/#/g, '');\n if (Number.isNaN(value) || !value || (value.length !== 3 && value.length !== 6)) {\n e.target.value = hex;\n return;\n }\n const min = 0;\n const current = parseInt(value, 16);\n const max = parseInt('ffffff', 16); // eslint-disable-line\n if (current > max) {\n value = 'fff';\n }\n if (current < min) {\n value = '000';\n }\n self.setValue({ hex: value });\n }\n\n self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n\n self.destroyHexEvents = function destroyHexEvents() {\n self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n };\n },\n update(self) {\n const { value } = self;\n\n const { hexValueEditable } = self.params;\n\n const { hex } = value;\n if (hexValueEditable) {\n self.$el.find('input.color-picker-value-hex').val(hex);\n } else {\n self.$el.find('span.color-picker-value-hex').text(hex);\n }\n },\n destroy(self) {\n if (self.destroyHexEvents) self.destroyHexEvents();\n delete self.destroyHexEvents;\n },\n};\n","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText,\n saturationLabelText,\n brightnessLabelText,\n } = self.params;\n return (\n <div class=\"color-picker-module color-picker-module-hsb-sliders\">\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{hueLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-hue\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input\n type=\"number\"\n step=\"0.1\"\n min=\"0\"\n max=\"360\"\n class=\"color-picker-value-hue\"\n data-color-index=\"0\"\n />\n ) : (\n <span class=\"color-picker-value-hue\"></span>\n )}\n </div>\n )}\n </div>\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{saturationLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-saturation\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input\n type=\"number\"\n step=\"0.1\"\n min=\"0\"\n max=\"100\"\n class=\"color-picker-value-saturation\"\n data-color-index=\"1\"\n />\n ) : (\n <span class=\"color-picker-value-saturation\"></span>\n )}\n </div>\n )}\n </div>\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{brightnessLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-brightness\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input\n type=\"number\"\n step=\"0.1\"\n min=\"0\"\n max=\"100\"\n class=\"color-picker-value-brightness\"\n data-color-index=\"2\"\n />\n ) : (\n <span class=\"color-picker-value-brightness\"></span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ hue: value });\n },\n },\n });\n self.saturationRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-saturation'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const s = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], s, self.value.hsb[2]] });\n },\n },\n });\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], self.value.hsb[1], b] });\n },\n },\n });\n\n function handleInputChange(e) {\n const hsb = [...self.value.hsb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = hsb[index];\n return;\n }\n if (index === 0) {\n value = Math.max(0, Math.min(360, value));\n } else {\n value = Math.max(0, Math.min(100, value)) / 100;\n }\n\n hsb[index] = value;\n self.setValue({ hsb });\n }\n\n self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n\n self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const { app, value } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hsb, hue } = value;\n\n self.hueRangeSlider.value = hue;\n self.saturationRangeSlider.value = hsb[1];\n self.brightnessRangeSlider.value = hsb[2];\n\n self.hueRangeSlider.layout();\n self.saturationRangeSlider.layout();\n self.brightnessRangeSlider.layout();\n\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], 1);\n const hslLeft = colorHsbToHsl(hsb[0], 0, 1);\n const hslRight = colorHsbToHsl(hsb[0], 1, 1);\n const brightness = hsb[2];\n\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n self.saturationRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`,\n );\n self.brightnessRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`,\n );\n self.saturationRangeSlider.$el\n .find('.range-bar')\n .css(\n 'background-image',\n `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${\n hslLeft[1] * 100\n }%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${\n hslRight[2] * 100\n }%))`,\n );\n\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n self.$el.find('input.color-picker-value-saturation').val(`${(hsb[1] * 1000) / 10}`);\n self.$el.find('input.color-picker-value-brightness').val(`${(hsb[2] * 1000) / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n self.$el.find('span.color-picker-value-saturation').text(`${(hsb[1] * 1000) / 10}`);\n self.$el.find('span.color-picker-value-brightness').text(`${(hsb[2] * 1000) / 10}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n self.saturationRangeSlider.destroy();\n }\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n\n delete self.hueRangeSlider;\n delete self.saturationRangeSlider;\n delete self.brightnessRangeSlider;\n\n if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n delete self.destroyHsbSlidersEvents;\n },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, hueLabelText } = self.params;\n return (\n <div class=\"color-picker-module color-picker-module-hue-slider\">\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{hueLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-hue\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input type=\"number\" step=\"0.1\" min=\"0\" max=\"360\" class=\"color-picker-value-hue\" />\n ) : (\n <span class=\"color-picker-value-hue\"></span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ hue: value });\n },\n },\n });\n },\n update(self) {\n const { value } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hue } = value;\n\n self.hueRangeSlider.value = hue;\n self.hueRangeSlider.layout();\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n },\n};\n","import { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, brightnessLabelText } = self.params;\n return (\n <div class=\"color-picker-module color-picker-module-brightness-slider\">\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{brightnessLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-brightness\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input\n type=\"number\"\n step=\"0.1\"\n min=\"0\"\n max=\"100\"\n class=\"color-picker-value-brightness\"\n />\n ) : (\n <span class=\"color-picker-value-brightness\"></span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n },\n init(self) {\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], self.value.hsb[1], b] });\n },\n },\n });\n },\n update(self) {\n const { value, app } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hsb } = value;\n\n self.brightnessRangeSlider.value = hsb[2];\n self.brightnessRangeSlider.layout();\n\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n const hslLeft = colorHsbToHsl(hsb[0], hsb[1], 0);\n const hslRight = colorHsbToHsl(hsb[0], hsb[1], 1);\n\n self.brightnessRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`,\n );\n self.brightnessRangeSlider.$el\n .find('.range-bar')\n .css(\n 'background-image',\n `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${\n hslLeft[1] * 100\n }%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${\n hslRight[2] * 100\n }%))`,\n );\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-brightness').val(`${(hsb[2] * 1000) / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-brightness').text(`${(hsb[2] * 1000) / 10}`);\n }\n },\n destroy(self) {\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.brightnessRangeSlider;\n },\n};\n","/* eslint indent: [\"off\"] */\nimport $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render(self) {\n return (\n <div class=\"color-picker-module color-picker-module-palette\">\n <div class=\"color-picker-palette\">\n {self.params.palette.map((p) => {\n if (Array.isArray(p)) {\n let row = '<div class=\"color-picker-palette-row\">';\n // prettier-ignore\n row += p.map((c) => `\n <div class=\"color-picker-palette-value\" data-palette-color=\"${c}\" style=\"background-color: ${c}\"></div>\n `).join('');\n row += '</div>';\n return row;\n }\n return (\n <div\n class=\"color-picker-palette-value\"\n data-palette-color={p}\n style={`background-color: ${p}`}\n ></div>\n );\n })}\n </div>\n </div>\n );\n },\n init(self) {\n function handlePaletteClick(e) {\n const hex = $(e.target).attr('data-palette-color');\n self.setValue({\n hex,\n });\n }\n\n self.$el.on(\n 'click',\n '.color-picker-module-palette .color-picker-palette-value',\n handlePaletteClick,\n );\n\n self.destroyPaletteEvents = function destroyPaletteEvents() {\n self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n };\n },\n destroy(self) {\n if (self.destroyPaletteEvents) {\n self.destroyPaletteEvents();\n }\n delete self.destroyPaletteEvents;\n },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render() {\n return (\n <div class=\"color-picker-module color-picker-module-initial-current-colors\">\n <div class=\"color-picker-initial-current-colors\">\n <div class=\"color-picker-initial-color\"></div>\n <div class=\"color-picker-current-color\"></div>\n </div>\n </div>\n );\n },\n init(self) {\n function handleInitialColorClick() {\n if (self.initialValue) {\n const { hex, alpha } = self.initialValue;\n self.setValue({\n hex,\n alpha,\n });\n }\n }\n self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n };\n },\n update(self) {\n self.$el\n .find('.color-picker-module-initial-current-colors .color-picker-initial-color')\n .css('background-color', self.initialValue.hex);\n self.$el\n .find('.color-picker-module-initial-current-colors .color-picker-current-color')\n .css('background-color', self.value.hex);\n },\n destroy(self) {\n if (self.destroyInitialCurrentEvents) {\n self.destroyInitialCurrentEvents();\n }\n delete self.destroyInitialCurrentEvents;\n },\n};\n","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render(self) {\n const { barLabel, barValue, barValueEditable, redLabelText, greenLabelText, blueLabelText } =\n self.params;\n return (\n <div class=\"color-picker-module color-picker-module-rgb-bars\">\n <div class=\"color-picker-bar-wrap\">\n {barLabel && <div class=\"color-picker-bar-label\">{redLabelText}</div>}\n <div class=\"range-slider color-picker-bar color-picker-bar-red\"></div>\n {barValue && (\n <div class=\"color-picker-bar-value\">\n {barValueEditable ? (\n <input\n type=\"number\"\n step=\"1\"\n min=\"0\"\n max=\"255\"\n class=\"color-picker-value-bar-red\"\n data-color-index=\"0\"\n />\n ) : (\n <span class=\"color-picker-value-bar-red\"></span>\n )}\n </div>\n )}\n </div>\n <div class=\"color-picker-bar-wrap\">\n {barLabel && <div class=\"color-picker-bar-label\">{greenLabelText}</div>}\n <div class=\"range-slider color-picker-bar color-picker-bar-green\"></div>\n {barValue && (\n <div class=\"color-picker-bar-value\">\n {barValueEditable ? (\n <input\n type=\"number\"\n step=\"1\"\n min=\"0\"\n max=\"255\"\n class=\"color-picker-value-bar-green\"\n data-color-index=\"1\"\n />\n ) : (\n <span class=\"color-picker-value-bar-green\"></span>\n )}\n </div>\n )}\n </div>\n <div class=\"color-picker-bar-wrap\">\n {barLabel && <div class=\"color-picker-bar-label\">{blueLabelText}</div>}\n <div class=\"range-slider color-picker-bar color-picker-bar-blue\"></div>\n {barValue && (\n <div class=\"color-picker-bar-value\">\n {barValueEditable ? (\n <input\n type=\"number\"\n step=\"1\"\n min=\"0\"\n max=\"255\"\n class=\"color-picker-value-bar-blue\"\n data-color-index=\"2\"\n />\n ) : (\n <span class=\"color-picker-value-bar-blue\"></span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n },\n init(self) {\n self.redBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [value, self.value.rgb[1], self.value.rgb[2]] });\n },\n },\n });\n self.greenBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], value, self.value.rgb[2]] });\n },\n },\n });\n self.blueBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], self.value.rgb[1], value] });\n },\n },\n });\n\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({ rgb });\n }\n\n self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n\n self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n };\n },\n update(self) {\n const { value, redBar, greenBar, blueBar } = self;\n\n const { barValue, barValueEditable } = self.params;\n\n const { rgb } = value;\n\n redBar.value = rgb[0];\n greenBar.value = rgb[1];\n blueBar.value = rgb[2];\n\n redBar.layout();\n greenBar.layout();\n blueBar.layout();\n\n redBar.$el\n .find('.range-bar')\n .css(\n 'background-image',\n `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`,\n );\n greenBar.$el\n .find('.range-bar')\n .css(\n 'background-image',\n `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`,\n );\n blueBar.$el\n .find('.range-bar')\n .css(\n 'background-image',\n `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`,\n );\n\n if (barValue && barValueEditable) {\n self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n } else if (barValue) {\n self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redBar && self.redBar.destroy) {\n self.redBar.destroy();\n }\n if (self.greenBar && self.greenBar.destroy) {\n self.greenBar.destroy();\n }\n if (self.blueBar && self.blueBar.destroy) {\n self.blueBar.destroy();\n }\n\n delete self.redBar;\n delete self.greenBar;\n delete self.blueBar;\n\n if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n delete self.destroyRgbBarsEvents;\n },\n};\n","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText,\n } = self.params;\n return (\n <div class=\"color-picker-module color-picker-module-rgb-sliders\">\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{redLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-red\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input\n type=\"number\"\n step=\"1\"\n min=\"0\"\n max=\"255\"\n class=\"color-picker-value-red\"\n data-color-index=\"0\"\n />\n ) : (\n <span class=\"color-picker-value-red\"></span>\n )}\n </div>\n )}\n </div>\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{greenLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-green\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input\n type=\"number\"\n step=\"1\"\n min=\"0\"\n max=\"255\"\n class=\"color-picker-value-green\"\n data-color-index=\"1\"\n />\n ) : (\n <span class=\"color-picker-value-green\"></span>\n )}\n </div>\n )}\n </div>\n <div class=\"color-picker-slider-wrap\">\n {sliderLabel && <div class=\"color-picker-slider-label\">{blueLabelText}</div>}\n <div class=\"range-slider color-picker-slider color-picker-slider-blue\"></div>\n {sliderValue && (\n <div class=\"color-picker-slider-value\">\n {sliderValueEditable ? (\n <input\n type=\"number\"\n step=\"1\"\n min=\"0\"\n max=\"255\"\n class=\"color-picker-value-blue\"\n data-color-index=\"2\"\n />\n ) : (\n <span class=\"color-picker-value-blue\"></span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n },\n init(self) {\n self.redRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [value, self.value.rgb[1], self.value.rgb[2]] });\n },\n },\n });\n self.greenRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], value, self.value.rgb[2]] });\n },\n },\n });\n self.blueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], self.value.rgb[1], value] });\n },\n },\n });\n\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({ rgb });\n }\n\n self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n\n self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const { app, value, redRangeSlider, greenRangeSlider, blueRangeSlider } = self;\n\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { rgb } = value;\n\n redRangeSlider.value = rgb[0];\n greenRangeSlider.value = rgb[1];\n blueRangeSlider.value = rgb[2];\n\n redRangeSlider.layout();\n greenRangeSlider.layout();\n blueRangeSlider.layout();\n\n redRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`,\n );\n greenRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`,\n );\n blueRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`,\n );\n\n const direction = app.rtl ? 'to left' : 'to right';\n\n redRangeSlider.$el\n .find('.range-bar')\n .css(\n 'background-image',\n `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`,\n );\n greenRangeSlider.$el\n .find('.range-bar')\n .css(\n 'background-image',\n `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`,\n );\n blueRangeSlider.$el\n .find('.range-bar')\n .css(\n 'background-image',\n `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`,\n );\n\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redRangeSlider && self.redRangeSlider.destroy) {\n self.redRangeSlider.destroy();\n }\n if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n self.greenRangeSlider.destroy();\n }\n if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n self.blueRangeSlider.destroy();\n }\n\n delete self.redRangeSlider;\n delete self.greenRangeSlider;\n delete self.blueRangeSlider;\n\n if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n delete self.destroyRgbSlidersEvents;\n },\n};\n","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render() {\n return (\n <div class=\"color-picker-module color-picker-module-sb-spectrum\">\n <div class=\"color-picker-sb-spectrum\" style=\"background-color: hsl(0, 100%, 50%)\">\n <div class=\"color-picker-sb-spectrum-handle\"></div>\n </div>\n </div>\n );\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n\n self.setValue({ hsb: [self.value.hue, s, b] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el\n .find('.color-picker-sb-spectrum-handle')\n .addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el\n .find('.color-picker-sb-spectrum-handle')\n .removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules['sb-spectrum'].update(self);\n }\n\n const passiveListener =\n app.touchEvents.start === 'touchstart' && getSupport().passiveListener\n ? { passive: true, capture: false }\n : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const { value } = self;\n\n const { hsl, hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n\n self.$el\n .find('.color-picker-sb-spectrum-handle')\n .css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`)\n .transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n },\n};\n","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n render() {\n return (\n <div class=\"color-picker-module color-picker-module-hs-spectrum\">\n <div class=\"color-picker-hs-spectrum\">\n <div class=\"color-picker-hs-spectrum-handle\"></div>\n </div>\n </div>\n );\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setHSFromSpecterCoords(x, y) {\n let h = ((x - specterRect.left) / specterRect.width) * 360;\n let s = (y - specterRect.top) / specterRect.height;\n h = Math.max(0, Math.min(360, h));\n s = 1 - Math.max(0, Math.min(1, s));\n\n self.setValue({ hsb: [h, s, self.value.hsb[2]] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n setHSFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el\n .find('.color-picker-hs-spectrum-handle')\n .addClass('color-picker-hs-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el\n .find('.color-picker-hs-spectrum-handle')\n .removeClass('color-picker-hs-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules['hs-spectrum'].update(self);\n }\n\n const passiveListener =\n app.touchEvents.start === 'touchstart' && getSupport().passiveListener\n ? { passive: true, capture: false }\n : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const { value } = self;\n\n const { hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n\n const hslBright = colorHsbToHsl(hsb[0], hsb[1], 1);\n\n self.$el\n .find('.color-picker-hs-spectrum-handle')\n .css(\n 'background-color',\n `hsl(${hslBright[0]}, ${hslBright[1] * 100}%, ${hslBright[2] * 100}%)`,\n )\n .transform(\n `translate(${specterWidth * (hsb[0] / 360)}px, ${specterHeight * (1 - hsb[1])}px)`,\n );\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n },\n};\n","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nfunction svgWheelCircles() {\n const total = 256;\n let circles = '';\n for (let i = total; i > 0; i -= 1) {\n const angle = (i * Math.PI) / (total / 2);\n const hue = (360 / total) * i;\n circles += `<circle cx=\"${150 - Math.sin(angle) * 125}\" cy=\"${\n 150 - Math.cos(angle) * 125\n }\" r=\"25\" fill=\"hsl(${hue}, 100%, 50%)\"></circle>`;\n }\n return circles;\n}\nexport default {\n render() {\n return (\n <div class=\"color-picker-module color-picker-module-wheel\">\n <div class=\"color-picker-wheel\">\n <svg viewBox=\"0 0 300 300\" width=\"300\" height=\"300\">\n {svgWheelCircles()}\n </svg>\n <div class=\"color-picker-wheel-handle\"></div>\n <div class=\"color-picker-sb-spectrum\" style=\"background-color: hsl(0, 100%, 50%)\">\n <div class=\"color-picker-sb-spectrum-handle\"></div>\n </div>\n </div>\n </div>\n );\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let wheelRect;\n let wheelIsTouched;\n let wheelHandleIsTouched;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setHueFromWheelCoords(x, y) {\n const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n let angleDeg = (angleRad * 180) / Math.PI + 90;\n if (angleDeg < 0) angleDeg += 360;\n angleDeg = 360 - angleDeg;\n self.setValue({ hue: angleDeg });\n }\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n\n self.setValue({ hsb: [self.value.hue, s, b] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n wheelIsTouched = $targetEl.closest('circle').length > 0;\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (wheelIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n setHueFromWheelCoords(touchStartX, touchStartY);\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el\n .find('.color-picker-sb-spectrum-handle')\n .addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (\n !(wheelIsTouched || wheelHandleIsTouched) &&\n !(specterIsTouched || specterHandleIsTouched)\n )\n return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (wheelHandleIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n }\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (wheelIsTouched || wheelHandleIsTouched) {\n setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el\n .find('.color-picker-sb-spectrum-handle')\n .removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n wheelIsTouched = false;\n wheelHandleIsTouched = false;\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules.wheel.update(self);\n }\n\n const passiveListener =\n app.touchEvents.start === 'touchstart' && getSupport().passiveListener\n ? { passive: true, capture: false }\n : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroyWheelEvents = function destroyWheelEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const { value } = self;\n\n const { hsl, hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n const wheelHalfSize = wheelSize / 2;\n const angleRad = (value.hue * Math.PI) / 180;\n const handleSize = wheelSize / 6;\n const handleHalfSize = handleSize / 2;\n const tX =\n wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n const tY =\n wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n self.$el\n .find('.color-picker-wheel-handle')\n .css('background-color', `hsl(${hsl[0]}, 100%, 50%)`)\n .transform(`translate(${tX}px, ${tY}px)`);\n\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n\n self.$el\n .find('.color-picker-sb-spectrum-handle')\n .css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`)\n .transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroyWheelEvents) self.destroyWheelEvents();\n delete self.destroyWheelEvents;\n },\n};\n","import {\n extend,\n colorRgbToHex,\n colorRgbToHsl,\n colorHslToHsb,\n colorHslToRgb,\n colorHsbToHsl,\n colorHexToRgb,\n nextTick,\n deleteProps,\n} from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nimport moduleAlphaSlider from './modules/alpha-slider.js';\nimport moduleCurrentColor from './modules/current-color.js';\nimport moduleHex from './modules/hex.js';\nimport moduleHsbSliders from './modules/hsb-sliders.js';\nimport moduleHueSlider from './modules/hue-slider.js';\nimport moduleBrightnessSlider from './modules/brightness-slider.js';\nimport modulePalette from './modules/palette.js';\nimport moduleInitialCurrentColors from './modules/initial-current-colors.js';\nimport moduleRgbBars from './modules/rgb-bars.js';\nimport moduleRgbSliders from './modules/rgb-sliders.js';\nimport moduleSbSpectrum from './modules/sb-spectrum.js';\nimport moduleHsSpectrum from './modules/hs-spectrum.js';\nimport moduleWheel from './modules/wheel.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass ColorPicker extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const self = this;\n\n self.params = extend({}, app.params.colorPicker, params);\n\n let $containerEl;\n if (self.params.containerEl) {\n $containerEl = $(self.params.containerEl);\n if ($containerEl.length === 0) return self;\n }\n\n let $inputEl;\n if (self.params.inputEl) {\n $inputEl = $(self.params.inputEl);\n }\n\n let $targetEl;\n if (self.params.targetEl) {\n $targetEl = $(self.params.targetEl);\n }\n\n extend(self, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n initialized: false,\n opened: false,\n url: self.params.url,\n modules: {\n 'alpha-slider': moduleAlphaSlider,\n 'current-color': moduleCurrentColor,\n hex: moduleHex, // eslint-disable-line\n 'hsb-sliders': moduleHsbSliders,\n 'hue-slider': moduleHueSlider,\n 'brightness-slider': moduleBrightnessSlider,\n palette: modulePalette, // eslint-disable-line\n 'initial-current-colors': moduleInitialCurrentColors,\n 'rgb-bars': moduleRgbBars,\n 'rgb-sliders': moduleRgbSliders,\n 'sb-spectrum': moduleSbSpectrum,\n 'hs-spectrum': moduleHsSpectrum,\n wheel: moduleWheel, // eslint-disable-line\n },\n });\n\n function onInputClick() {\n self.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onTargetClick() {\n self.open();\n }\n function onHtmlClick(e) {\n if (self.destroyed || !self.params) return;\n if (self.params.openIn === 'page') return;\n const $clickTargetEl = $(e.target);\n if (!self.opened || self.closing) return;\n if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if (\n $clickTargetEl[0] !== $inputEl[0] &&\n $clickTargetEl.closest('.sheet-modal').length === 0\n ) {\n self.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n self.close();\n }\n }\n\n // Events\n extend(self, {\n attachInputEvents() {\n self.$inputEl.on('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.on('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n self.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n self.$inputEl.off('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.off('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n delete self.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachTargetEvents() {\n self.$targetEl.on('click', onTargetClick);\n },\n detachTargetEvents() {\n self.$targetEl.off('click', onTargetClick);\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n\n self.init();\n\n return self;\n }\n\n get view() {\n const { $inputEl, $targetEl, app, params } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else {\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view && $targetEl) {\n view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n }\n }\n if (!view) view = app.views.main;\n\n return view;\n }\n\n attachEvents() {\n const self = this;\n self.centerModules = self.centerModules.bind(self);\n if (self.params.centerModules) {\n self.app.on('resize', self.centerModules);\n }\n }\n\n detachEvents() {\n const self = this;\n if (self.params.centerModules) {\n self.app.off('resize', self.centerModules);\n }\n }\n\n centerModules() {\n const self = this;\n if (!self.opened || !self.$el || self.inline) return;\n const $pageContentEl = self.$el.find('.page-content');\n if (!$pageContentEl.length) return;\n const { scrollHeight, offsetHeight } = $pageContentEl[0];\n if (scrollHeight <= offsetHeight) {\n $pageContentEl.addClass('justify-content-center');\n } else {\n $pageContentEl.removeClass('justify-content-center');\n }\n }\n\n initInput() {\n const self = this;\n if (!self.$inputEl) return;\n if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n }\n\n getModalType() {\n const self = this;\n const { app, modal, params } = self;\n const { openIn, openInPhone } = params;\n const device = getDevice();\n if (modal && modal.type) return modal.type;\n if (openIn !== 'auto') return openIn;\n if (self.inline) return null;\n if (device.ios) {\n return device.ipad ? 'popover' : openInPhone;\n }\n if (app.width >= 768) {\n return 'popover';\n }\n\n return openInPhone;\n }\n\n formatValue() {\n const self = this;\n const { value } = self;\n if (self.params.formatValue) {\n return self.params.formatValue.call(self, value);\n }\n return value.hex;\n }\n\n // eslint-disable-next-line\n normalizeHsValues(arr) {\n return [\n Math.floor(arr[0] * 10) / 10,\n Math.floor(arr[1] * 1000) / 1000,\n Math.floor(arr[2] * 1000) / 1000,\n ];\n }\n\n setValue(value = {}, updateModules = true) {\n const self = this;\n if (typeof value === 'undefined') return;\n\n let { hex, rgb, hsl, hsb, alpha = 1, hue, rgba, hsla } = self.value || {};\n\n const needChangeEvent = self.value || (!self.value && !self.params.value);\n let valueChanged;\n Object.keys(value).forEach((k) => {\n if (!self.value || typeof self.value[k] === 'undefined') {\n valueChanged = true;\n return;\n }\n const v = value[k];\n if (Array.isArray(v)) {\n v.forEach((subV, subIndex) => {\n if (subV !== self.value[k][subIndex]) {\n valueChanged = true;\n }\n });\n } else if (v !== self.value[k]) {\n valueChanged = true;\n }\n });\n if (!valueChanged) return;\n\n if (value.rgb || value.rgba) {\n const [r, g, b, a = alpha] = value.rgb || value.rgba;\n rgb = [r, g, b];\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hsl || value.hsla) {\n const [h, s, l, a = alpha] = value.hsl || value.hsla;\n hsl = [h, s, l];\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hsb) {\n const [h, s, b, a = alpha] = value.hsb;\n hsb = [h, s, b];\n hsl = colorHsbToHsl(...hsb);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hex) {\n rgb = colorHexToRgb(value.hex);\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n\n if (typeof value.alpha !== 'undefined') {\n alpha = value.alpha;\n if (typeof rgb !== 'undefined') {\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n }\n if (typeof hsl !== 'undefined') {\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n }\n\n if (typeof value.hue !== 'undefined') {\n const [h, s, l] = hsl; // eslint-disable-line\n hsl = [value.hue, s, l];\n hsb = colorHslToHsb(...hsl);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n self.value = {\n hex,\n alpha,\n hue,\n rgb,\n hsl,\n hsb,\n rgba,\n hsla,\n };\n if (!self.initialValue) self.initialValue = extend({}, self.value);\n self.updateValue(needChangeEvent);\n if (self.opened && updateModules) {\n self.updateModules();\n }\n }\n\n getValue() {\n const self = this;\n return self.value;\n }\n\n updateValue(fireEvents = true) {\n const self = this;\n const { $inputEl, value, $targetEl } = self;\n if ($targetEl && self.params.targetElSetBackgroundColor) {\n const { rgba } = value;\n $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n }\n if (fireEvents) {\n self.emit('local::change colorPickerChange', self, value);\n }\n\n if ($inputEl && $inputEl.length) {\n const inputValue = self.formatValue(value);\n if ($inputEl && $inputEl.length) {\n $inputEl.val(inputValue);\n if (fireEvents) {\n $inputEl.trigger('change');\n }\n }\n }\n }\n\n updateModules() {\n const self = this;\n const { modules } = self;\n self.params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].update) {\n modules[m].update(self);\n } else if (m && m.update) {\n m.update(self);\n }\n });\n }\n\n update() {\n const self = this;\n self.updateModules();\n }\n\n renderPicker() {\n const self = this;\n const { params, modules } = self;\n let html = '';\n\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].render) {\n html += modules[m].render(self);\n } else if (m && m.render) {\n html += m.render(self);\n }\n });\n\n return html;\n }\n\n renderNavbar() {\n const self = this;\n if (self.params.renderNavbar) {\n return self.params.renderNavbar.call(self, self);\n }\n const { openIn, navbarTitleText, navbarBackLinkText, navbarCloseText } = self.params;\n return (\n <div class=\"navbar\">\n <div class=\"navbar-bg\"></div>\n <div class=\"navbar-inner sliding\">\n {openIn === 'page' && (\n <div class=\"left\">\n <a class=\"link back\">\n <i class=\"icon icon-back\"></i>\n <span class=\"if-not-md\">{navbarBackLinkText}</span>\n </a>\n </div>\n )}\n <div class=\"title\">{navbarTitleText}</div>\n {openIn !== 'page' && (\n <div class=\"right\">\n <a class=\"link popup-close\" data-popup=\".color-picker-popup\">\n {navbarCloseText}\n </a>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n renderToolbar() {\n const self = this;\n if (self.params.renderToolbar) {\n return self.params.renderToolbar.call(self, self);\n }\n return (\n <div class=\"toolbar toolbar-top\">\n <div class=\"toolbar-inner\">\n <div class=\"left\"></div>\n <div class=\"right\">\n <a\n class=\"link sheet-close popover-close\"\n data-sheet=\".color-picker-sheet-modal\"\n data-popover=\".color-picker-popover\"\n >\n {self.params.toolbarCloseText}\n </a>\n </div>\n </div>\n </div>\n );\n }\n\n renderInline() {\n const self = this;\n const { cssClass, groupedModules } = self.params;\n return (\n <div\n class={`color-picker color-picker-inline ${\n groupedModules ? 'color-picker-grouped-modules' : ''\n } ${cssClass || ''}`}\n >\n {self.renderPicker()}\n </div>\n );\n }\n\n renderSheet() {\n const self = this;\n const { cssClass, toolbarSheet, groupedModules } = self.params;\n return (\n <div\n class={`sheet-modal color-picker color-picker-sheet-modal ${\n groupedModules ? 'color-picker-grouped-modules' : ''\n } ${cssClass || ''}`}\n >\n {toolbarSheet && self.renderToolbar()}\n <div class=\"sheet-modal-inner\">\n <div class=\"page-content\">{self.renderPicker()}</div>\n </div>\n </div>\n );\n }\n\n renderPopover() {\n const self = this;\n const { cssClass, toolbarPopover, groupedModules } = self.params;\n return (\n <div class={`popover color-picker-popover ${cssClass || ''}`}>\n <div class=\"popover-inner\">\n <div class={`color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`}>\n {toolbarPopover && self.renderToolbar()}\n <div class=\"page-content\">{self.renderPicker()}</div>\n </div>\n </div>\n </div>\n );\n }\n\n renderPopup() {\n const self = this;\n const { cssClass, navbarPopup, groupedModules } = self.params;\n return (\n <div class={`popup color-picker-popup ${cssClass || ''}`}>\n <div class=\"page\">\n {navbarPopup && self.renderNavbar()}\n <div class={`color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`}>\n <div class=\"page-content\">{self.renderPicker()}</div>\n </div>\n </div>\n </div>\n );\n }\n\n renderPage() {\n const self = this;\n const { cssClass, groupedModules } = self.params;\n return (\n <div class={`page color-picker-page ${cssClass || ''}`} data-name=\"color-picker-page\">\n {self.renderNavbar()}\n <div class={`color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`}>\n <div class=\"page-content\">{self.renderPicker()}</div>\n </div>\n </div>\n );\n }\n\n // eslint-disable-next-line\n render() {\n const self = this;\n const { params } = self;\n if (params.render) return params.render.call(self);\n if (self.inline) return self.renderInline();\n if (params.openIn === 'page') {\n return self.renderPage();\n }\n\n const modalType = self.getModalType();\n if (modalType === 'popover') return self.renderPopover();\n if (modalType === 'sheet') return self.renderSheet();\n if (modalType === 'popup') return self.renderPopup();\n }\n\n onOpen() {\n const self = this;\n const { initialized, $el, app, $inputEl, inline, value, params, modules } = self;\n self.closing = false;\n self.opened = true;\n self.opening = true;\n\n // Init main events\n self.attachEvents();\n\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].init) {\n modules[m].init(self);\n } else if (m && m.init) {\n m.init(self);\n }\n });\n\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) self.setValue(value);\n else if (params.value) {\n self.setValue(params.value, false);\n } else if (!params.value) {\n self.setValue({ hex: '#ff0000' }, false);\n }\n } else if (value) {\n self.initialValue = extend({}, value);\n self.setValue(value, false);\n }\n\n // Update input value\n if (updateValue) self.updateValue();\n self.updateModules();\n\n // Center modules\n if (params.centerModules) {\n self.centerModules();\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n self.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('colorpicker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('colorpicker:open');\n }\n self.emit('local::open colorPickerOpen', self);\n }\n\n onOpened() {\n const self = this;\n self.opening = false;\n if (self.$el) {\n self.$el.trigger('colorpicker:opened');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:opened');\n }\n self.emit('local::opened colorPickerOpened', self);\n }\n\n onClose() {\n const self = this;\n const { app, params, modules } = self;\n self.opening = false;\n self.closing = true;\n\n // Detach events\n self.detachEvents();\n\n if (self.$inputEl) {\n if (app.theme === 'md') {\n self.$inputEl.trigger('blur');\n } else {\n const validate = self.$inputEl.attr('validate');\n const required = self.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(self.$inputEl);\n }\n }\n }\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n modules[m].destroy(self);\n } else if (m && m.destroy) {\n m.destroy(self);\n }\n });\n\n if (self.$el) {\n self.$el.trigger('colorpicker:close');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:close');\n }\n self.emit('local::close colorPickerClose', self);\n }\n\n onClosed() {\n const self = this;\n self.opened = false;\n self.closing = false;\n\n if (!self.inline) {\n nextTick(() => {\n if (self.modal && self.modal.el && self.modal.destroy) {\n if (!self.params.routableModals) {\n self.modal.destroy();\n }\n }\n delete self.modal;\n });\n }\n if (self.$el) {\n self.$el.trigger('colorpicker:closed');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:closed');\n }\n self.emit('local::closed colorPickerClosed', self);\n }\n\n open() {\n const self = this;\n const { app, opened, inline, $inputEl, $targetEl, params } = self;\n if (opened) return;\n\n if (inline) {\n self.$el = $(self.render());\n self.$el[0].f7ColorPicker = self;\n self.$containerEl.append(self.$el);\n self.onOpen();\n self.onOpened();\n return;\n }\n\n const colorPickerContent = self.render();\n\n if (params.openIn === 'page') {\n self.view.router.navigate({\n url: self.url,\n route: {\n content: colorPickerContent,\n path: self.url,\n on: {\n pageBeforeIn(e, page) {\n self.$el = page.$el.find('.color-picker');\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n pageAfterIn() {\n self.onOpened();\n },\n pageBeforeOut() {\n self.onClose();\n },\n pageAfterOut() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n },\n },\n },\n });\n } else {\n const modalType = self.getModalType();\n let backdrop = params.backdrop;\n if (backdrop === null || typeof backdrop === 'undefined') {\n if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n if (modalType === 'popup') backdrop = true;\n }\n const modalParams = {\n targetEl: $targetEl || $inputEl,\n scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,\n content: colorPickerContent,\n backdrop,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n self.modal = modal;\n self.$el =\n modalType === 'popover' || modalType === 'popup'\n ? modal.$el.find('.color-picker')\n : modal.$el;\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n opened() {\n self.onOpened();\n },\n close() {\n self.onClose();\n },\n closed() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n },\n },\n };\n if (modalType === 'popup') {\n modalParams.push = params.popupPush;\n modalParams.swipeToClose = params.popupSwipeToClose;\n }\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && self.view) {\n self.view.router.navigate({\n url: self.url,\n route: {\n path: self.url,\n [modalType]: modalParams,\n },\n });\n } else {\n self.modal = app[modalType].create(modalParams);\n self.modal.open();\n }\n }\n }\n\n close() {\n const self = this;\n const { opened, inline } = self;\n if (!opened) return;\n if (inline) {\n self.onClose();\n self.onClosed();\n return;\n }\n if ((self.params.routableModals && self.view) || self.params.openIn === 'page') {\n self.view.router.back();\n } else {\n self.modal.close();\n }\n }\n\n init() {\n const self = this;\n\n self.initInput();\n\n if (self.inline) {\n self.open();\n self.emit('local::init colorPickerInit', self);\n return;\n }\n\n if (!self.initialized && self.params.value) {\n self.setValue(self.params.value);\n }\n\n // Attach input Events\n if (self.$inputEl) {\n self.attachInputEvents();\n }\n if (self.$targetEl) {\n self.attachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.attachHtmlEvents();\n }\n self.emit('local::init colorPickerInit', self);\n }\n\n destroy() {\n const self = this;\n if (self.destroyed) return;\n const { $el } = self;\n self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n if ($el) $el.trigger('colorpicker:beforedestroy');\n\n self.close();\n\n // Detach Events\n self.detachEvents();\n if (self.$inputEl) {\n self.detachInputEvents();\n }\n if (self.$targetEl) {\n self.detachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.detachHtmlEvents();\n }\n\n if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n deleteProps(self);\n self.destroyed = true;\n }\n}\n\nexport default ColorPicker;\n","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ColorPicker from './color-picker-class.js';\n\nexport default {\n name: 'colorPicker',\n static: {\n ColorPicker,\n },\n create() {\n const app = this;\n app.colorPicker = ConstructorMethods({\n defaultSelector: '.color-picker',\n constructor: ColorPicker,\n app,\n domProp: 'f7ColorPicker',\n });\n app.colorPicker.close = function close(el = '.color-picker') {\n const $el = $(el);\n if ($el.length === 0) return;\n const colorPicker = $el[0].f7ColorPicker;\n if (!colorPicker || (colorPicker && !colorPicker.opened)) return;\n colorPicker.close();\n };\n },\n params: {\n colorPicker: {\n // Color picker settings\n value: null,\n modules: ['wheel'],\n palette: [\n [\n '#FFEBEE',\n '#FFCDD2',\n '#EF9A9A',\n '#E57373',\n '#EF5350',\n '#F44336',\n '#E53935',\n '#D32F2F',\n '#C62828',\n '#B71C1C',\n ],\n [\n '#F3E5F5',\n '#E1BEE7',\n '#CE93D8',\n '#BA68C8',\n '#AB47BC',\n '#9C27B0',\n '#8E24AA',\n '#7B1FA2',\n '#6A1B9A',\n '#4A148C',\n ],\n [\n '#E8EAF6',\n '#C5CAE9',\n '#9FA8DA',\n '#7986CB',\n '#5C6BC0',\n '#3F51B5',\n '#3949AB',\n '#303F9F',\n '#283593',\n '#1A237E',\n ],\n [\n '#E1F5FE',\n '#B3E5FC',\n '#81D4FA',\n '#4FC3F7',\n '#29B6F6',\n '#03A9F4',\n '#039BE5',\n '#0288D1',\n '#0277BD',\n '#01579B',\n ],\n [\n '#E0F2F1',\n '#B2DFDB',\n '#80CBC4',\n '#4DB6AC',\n '#26A69A',\n '#009688',\n '#00897B',\n '#00796B',\n '#00695C',\n '#004D40',\n ],\n [\n '#F1F8E9',\n '#DCEDC8',\n '#C5E1A5',\n '#AED581',\n '#9CCC65',\n '#8BC34A',\n '#7CB342',\n '#689F38',\n '#558B2F',\n '#33691E',\n ],\n [\n '#FFFDE7',\n '#FFF9C4',\n '#FFF59D',\n '#FFF176',\n '#FFEE58',\n '#FFEB3B',\n '#FDD835',\n '#FBC02D',\n '#F9A825',\n '#F57F17',\n ],\n [\n '#FFF3E0',\n '#FFE0B2',\n '#FFCC80',\n '#FFB74D',\n '#FFA726',\n '#FF9800',\n '#FB8C00',\n '#F57C00',\n '#EF6C00',\n '#E65100',\n ],\n ],\n groupedModules: false,\n centerModules: true,\n\n sliderLabel: false,\n sliderValue: false,\n sliderValueEdiable: false,\n\n barLabel: false,\n barValue: false,\n barValueEdiable: false,\n\n hexLabel: false,\n hexValueEditable: false,\n\n redLabelText: 'R',\n greenLabelText: 'G',\n blueLabelText: 'B',\n hueLabelText: 'H',\n saturationLabelText: 'S',\n brightnessLabelText: 'B',\n hexLabelText: 'HEX',\n alphaLabelText: 'A',\n\n // Common opener settings\n containerEl: null,\n openIn: 'popover', // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n openInPhone: 'popup', // or 'popover' or 'sheet' or 'popup' or 'page'\n popupPush: false,\n popupSwipeToClose: undefined,\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n targetEl: null,\n targetElSetBackgroundColor: false,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n toolbarSheet: true,\n toolbarPopover: false,\n toolbarCloseText: 'Done',\n navbarPopup: true,\n navbarCloseText: 'Done',\n navbarTitleText: 'Color',\n navbarBackLinkText: 'Back',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'color/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderToolbar: null,\n renderNavbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n renderPopup: null,\n render: null,\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\n\nconst Treeview = {\n open(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.addClass('treeview-item-opened');\n $itemEl.trigger('treeview:open');\n app.emit('treeviewOpen', $itemEl[0]);\n function done(cancel) {\n if (cancel) {\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n } else {\n $itemEl[0].f7TreeviewChildrenLoaded = true;\n }\n $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-preloader').remove();\n }\n\n if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n const preloaders = { iosPreloaderContent, mdPreloaderContent };\n $itemEl.trigger('treeview:loadchildren', done);\n app.emit('treeviewLoadChildren', $itemEl[0], done);\n $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n $itemEl\n .find('.treeview-item-root')\n .prepend(\n `<div class=\"preloader treeview-preloader\">${\n preloaders[`${app.theme}PreloaderContent`]\n }</div>`,\n );\n }\n },\n close(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n },\n toggle(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n const wasOpened = $itemEl.hasClass('treeview-item-opened');\n app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n },\n};\n\nexport default {\n name: 'treeview',\n create() {\n const app = this;\n bindMethods(app, {\n treeview: Treeview,\n });\n },\n clicks: {\n '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n if ($clickedEl.parents('.treeview-item-toggle').length) return;\n const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst textEditorButtonsMap = {\n // f7-icon, material-icon, command\n bold: ['bold', 'format_bold', 'bold'],\n italic: ['italic', 'format_italic', 'italic'],\n underline: ['underline', 'format_underlined', 'underline'],\n strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n link: ['link', 'link', 'createLink'],\n image: ['photo', 'image', 'insertImage'],\n paragraph: ['paragraph', '<i class=\"icon\">¶</i>', 'formatBlock.P'],\n h1: ['<i class=\"icon\">H<sub>1</sub></i>', '<i class=\"icon\">H<sub>1</sub></i>', 'formatBlock.H1'],\n h2: ['<i class=\"icon\">H<sub>2</sub></i>', '<i class=\"icon\">H<sub>2</sub></i>', 'formatBlock.H2'],\n h3: ['<i class=\"icon\">H<sub>3</sub></i>', '<i class=\"icon\">H<sub>3</sub></i>', 'formatBlock.H3'],\n alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n subscript: ['textformat_subscript', '<i class=\"icon\">A<sub>1</sub></i>', 'subscript'],\n superscript: ['textformat_superscript', '<i class=\"icon\">A<sup>1</sup></i>', 'superscript'],\n indent: ['increase_indent', 'format_indent_increase', 'indent'],\n outdent: ['decrease_indent', 'format_indent_decrease', 'outdent'],\n};\n\nclass TextEditor extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const self = this;\n const document = getDocument();\n const device = getDevice();\n\n const defaults = extend({}, app.params.textEditor);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n\n self.params = extend(defaults, params);\n\n const el = self.params.el;\n if (!el) return self;\n\n const $el = $(el);\n if ($el.length === 0) return self;\n\n if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n\n let $contentEl = $el.children('.text-editor-content');\n if (!$contentEl.length) {\n $el.append('<div class=\"text-editor-content\" contenteditable></div>');\n $contentEl = $el.children('.text-editor-content');\n }\n\n extend(self, {\n app,\n $el,\n el: $el[0],\n $contentEl,\n contentEl: $contentEl[0],\n });\n if ('value' in params) {\n self.value = self.params.value;\n }\n\n if (self.params.mode === 'keyboard-toolbar') {\n if (!(device.cordova || device.capacitor) && !device.android) {\n self.params.mode = 'popover';\n }\n }\n\n if (typeof self.params.buttons === 'string') {\n try {\n self.params.buttons = JSON.parse(self.params.buttons);\n } catch (err) {\n throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n }\n }\n\n $el[0].f7TextEditor = self;\n\n // Bind\n self.onButtonClick = self.onButtonClick.bind(self);\n self.onFocus = self.onFocus.bind(self);\n self.onBlur = self.onBlur.bind(self);\n self.onInput = self.onInput.bind(self);\n self.onPaste = self.onPaste.bind(self);\n self.onSelectionChange = self.onSelectionChange.bind(self);\n self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n // Handle Events\n self.attachEvents = function attachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.on('click', 'button', self.onButtonClick);\n }\n self.$contentEl.on('paste', self.onPaste);\n self.$contentEl.on('focus', self.onFocus);\n self.$contentEl.on('blur', self.onBlur);\n self.$contentEl.on('input', self.onInput, true);\n $(document).on('selectionchange', self.onSelectionChange);\n };\n self.detachEvents = function detachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.off('click', 'button', self.onButtonClick);\n }\n self.$contentEl.off('paste', self.onPaste);\n self.$contentEl.off('focus', self.onFocus);\n self.$contentEl.off('blur', self.onBlur);\n self.$contentEl.off('input', self.onInput, true);\n $(document).off('selectionchange', self.onSelectionChange);\n };\n\n // Install Modules\n self.useModules();\n\n // Init\n self.init();\n\n return self;\n }\n\n setValue(newValue) {\n const self = this;\n const currentValue = self.value;\n if (currentValue === newValue) return self;\n self.value = newValue;\n self.$contentEl.html(newValue);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n return self;\n }\n\n getValue() {\n const self = this;\n return self.value;\n }\n\n clearValue() {\n const self = this;\n self.setValue('');\n if (self.params.placeholder && !self.$contentEl.html()) {\n self.insertPlaceholder();\n }\n return self;\n }\n\n createLink() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const currentSelection = window.getSelection();\n const selectedNodes = [];\n let $selectedLinks;\n if (\n currentSelection &&\n currentSelection.anchorNode &&\n $(currentSelection.anchorNode).parents(self.$el).length\n ) {\n let anchorNode = currentSelection.anchorNode;\n while (anchorNode) {\n selectedNodes.push(anchorNode);\n if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n anchorNode = null;\n }\n if (anchorNode) {\n anchorNode = anchorNode.nextSibling;\n }\n }\n\n const selectedNodesLinks = [];\n const $selectedNodes = $(selectedNodes);\n for (let i = 0; i < $selectedNodes.length; i += 1) {\n const childNodes = $selectedNodes[i].children;\n if (childNodes) {\n for (let j = 0; j < childNodes.length; j += 1) {\n if ($(childNodes[j]).is('a')) {\n selectedNodesLinks.push(childNodes[j]);\n }\n }\n }\n }\n $selectedLinks = $selectedNodes.closest('a').add($(selectedNodesLinks));\n }\n if ($selectedLinks && $selectedLinks.length) {\n $selectedLinks.each((linkNode) => {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(linkNode);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('unlink', false);\n selection.removeAllRanges();\n });\n return self;\n }\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.linkUrlText, (link) => {\n if (link && link.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('createLink', false, link.trim());\n self.$el.trigger('texteditor:insertlink', { url: link.trim() });\n self.emit('local:insertLink textEditorInsertLink', self, link.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n\n insertImage() {\n const self = this;\n const document = getDocument();\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.imageUrlText, (imageUrl) => {\n if (imageUrl && imageUrl.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('insertImage', false, imageUrl.trim());\n self.$el.trigger('texteditor:insertimage', { url: imageUrl.trim() });\n self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n\n removePlaceholder() {\n const self = this;\n self.$contentEl.find('.text-editor-placeholder').remove();\n }\n\n insertPlaceholder() {\n const self = this;\n self.$contentEl.append(`<div class=\"text-editor-placeholder\">${self.params.placeholder}</div>`);\n }\n\n onSelectionChange() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.mode === 'toolbar') return;\n const selection = window.getSelection();\n const selectionIsInContent =\n $(selection.anchorNode).parents(self.contentEl).length ||\n selection.anchorNode === self.contentEl;\n if (self.params.mode === 'keyboard-toolbar') {\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n } else {\n self.openKeyboardToolbar();\n }\n return;\n }\n if (self.params.mode === 'popover') {\n const selectionIsInPopover =\n $(selection.anchorNode).parents(self.popover.el).length ||\n selection.anchorNode === self.popover.el;\n if (!selectionIsInContent && !selectionIsInPopover) {\n self.closePopover();\n return;\n }\n if (!selection.isCollapsed && selection.rangeCount) {\n const range = selection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n const rootEl = self.app.$el[0] || document.body;\n self.openPopover(\n rect.x + (window.scrollX || 0) - rootEl.offsetLeft,\n rect.y + (window.scrollY || 0) - rootEl.offsetTop,\n rect.width,\n rect.height,\n );\n } else if (selection.isCollapsed) {\n self.closePopover();\n }\n }\n }\n\n onPaste(e) {\n const self = this;\n const document = getDocument();\n if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n const text = e.clipboardData.getData('text/plain');\n e.preventDefault();\n document.execCommand('insertText', false, text);\n }\n }\n\n onInput() {\n const self = this;\n const value = self.$contentEl.html();\n\n self.value = value;\n\n self.$el.trigger('texteditor:input');\n self.emit('local:input textEditorInput', self, self.value);\n\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n }\n\n onFocus() {\n const self = this;\n self.removePlaceholder();\n self.$contentEl.focus();\n self.$el.trigger('texteditor:focus');\n self.emit('local::focus textEditorFocus', self);\n }\n\n onBlur() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.placeholder && self.$contentEl.html() === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'popover') {\n const selection = window.getSelection();\n const selectionIsInContent =\n $(selection.anchorNode).parents(self.contentEl).length ||\n selection.anchorNode === self.contentEl;\n const inPopover =\n document.activeElement &&\n self.popover &&\n $(document.activeElement).closest(self.popover.$el).length;\n if (!inPopover && !selectionIsInContent) {\n self.closePopover();\n }\n }\n if (self.params.mode === 'keyboard-toolbar') {\n const selection = window.getSelection();\n const selectionIsInContent =\n $(selection.anchorNode).parents(self.contentEl).length ||\n selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n }\n }\n self.$el.trigger('texteditor:blur');\n self.emit('local::blur textEditorBlur', self);\n }\n\n onButtonClick(e) {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const selection = window.getSelection();\n const selectionIsInContent =\n $(selection.anchorNode).parents(self.contentEl).length ||\n selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) return;\n const $buttonEl = $(e.target).closest('button');\n if ($buttonEl.parents('form').length) {\n e.preventDefault();\n }\n const button = $buttonEl.attr('data-button');\n const buttonData = self.params.customButtons && self.params.customButtons[button];\n if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n $buttonEl.trigger('texteditor:buttonclick', button);\n self.emit('local::buttonClick textEditorButtonClick', self, button);\n if (buttonData) {\n if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n return;\n }\n const command = textEditorButtonsMap[button][2];\n if (command === 'createLink') {\n self.createLink();\n return;\n }\n if (command === 'insertImage') {\n self.insertImage();\n return;\n }\n if (command.indexOf('formatBlock') === 0) {\n const tagName = command.split('.')[1];\n const $anchorNode = $(selection.anchorNode);\n if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n document.execCommand('formatBlock', false, 'div');\n } else {\n document.execCommand('formatBlock', false, tagName);\n }\n return;\n }\n document.execCommand(command, false);\n }\n\n // eslint-disable-next-line\n getSelectionRange() {\n const window = getWindow();\n const document = getDocument();\n if (window.getSelection) {\n const sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (document.selection && document.selection.createRange) {\n return document.selection.createRange();\n }\n return null;\n }\n\n // eslint-disable-next-line\n setSelectionRange(range) {\n const window = getWindow();\n const document = getDocument();\n if (range) {\n if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (document.selection && range.select) {\n range.select();\n }\n }\n }\n\n renderButtons() {\n const self = this;\n let html = '';\n function renderButton(button) {\n const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n if (self.params.customButtons && self.params.customButtons[button]) {\n const buttonData = self.params.customButtons[button];\n return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${\n buttonData.content || ''\n }</button>`;\n }\n if (!textEditorButtonsMap[button]) return '';\n const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${\n iconContent.indexOf('<') >= 0 ? iconContent : `<i class=\"${iconClass}\">${iconContent}</i>`\n }</button>`.trim();\n }\n self.params.buttons.forEach((button, buttonIndex) => {\n if (Array.isArray(button)) {\n button.forEach((b) => {\n html += renderButton(b);\n });\n if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n html += '<div class=\"text-editor-button-divider\"></div>';\n }\n } else {\n html += renderButton(button);\n }\n });\n return html;\n }\n\n createToolbar() {\n const self = this;\n self.$el.prepend(`<div class=\"text-editor-toolbar\">${self.renderButtons()}</div>`);\n }\n\n createKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl = $(\n `<div class=\"toolbar toolbar-bottom text-editor-keyboard-toolbar\"><div class=\"toolbar-inner\">${self.renderButtons()}</div></div>`,\n );\n }\n\n createPopover() {\n const self = this;\n self.popover = self.app.popover.create({\n content: `\n <div class=\"popover dark text-editor-popover\">\n <div class=\"popover-inner\">${self.renderButtons()}</div>\n </div>\n `,\n closeByOutsideClick: false,\n backdrop: false,\n });\n }\n\n openKeyboardToolbar() {\n const self = this;\n if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;\n self.$el.trigger('texteditor:keyboardopen');\n self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n self.app.$el.append(self.$keyboardToolbarEl);\n }\n\n closeKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl.remove();\n self.$el.trigger('texteditor:keyboardclose');\n self.emit('local::keyboardClose textEditorKeyboardClose', self);\n }\n\n openPopover(targetX, targetY, targetWidth, targetHeight) {\n const self = this;\n\n if (!self.popover) return;\n Object.assign(self.popover.params, {\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n });\n clearTimeout(self.popoverTimeout);\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n if (self.popover.opened) {\n self.popover.resize();\n } else {\n self.$el.trigger('texteditor:popoveropen');\n self.emit('local::popoverOpen textEditorPopoverOpen', self);\n self.popover.open();\n }\n }, 400);\n }\n\n closePopover() {\n const self = this;\n clearTimeout(self.popoverTimeout);\n if (!self.popover || !self.popover.opened) return;\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n self.$el.trigger('texteditor:popoverclose');\n self.emit('local::popoverClose textEditorPopoverClose', self);\n self.popover.close();\n }, 400);\n }\n\n init() {\n const self = this;\n if (self.value) {\n self.$contentEl.html(self.value);\n } else {\n self.value = self.$contentEl.html();\n }\n if (self.params.placeholder && self.value === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'toolbar') {\n self.createToolbar();\n } else if (self.params.mode === 'popover') {\n self.createPopover();\n } else if (self.params.mode === 'keyboard-toolbar') {\n self.createKeyboardToolbar();\n }\n\n self.attachEvents();\n self.$el.trigger('texteditor:init');\n self.emit('local::init textEditorInit', self);\n return self;\n }\n\n destroy() {\n let self = this;\n self.$el.trigger('texteditor:beforedestroy');\n self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n self.detachEvents();\n if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n self.$keyboardToolbarEl.remove();\n }\n if (self.popover) {\n self.popover.close(false);\n self.popover.destroy();\n }\n delete self.$el[0].f7TextEditor;\n deleteProps(self);\n self = null;\n }\n}\n\nexport default TextEditor;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport TextEditor from './text-editor-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'textEditor',\n params: {\n textEditor: {\n el: null,\n mode: 'toolbar', // or 'popover'\n value: undefined, // will use html content\n customButtons: null,\n buttons: [\n ['bold', 'italic', 'underline', 'strikeThrough'],\n ['orderedList', 'unorderedList'],\n ['link', 'image'],\n ['paragraph', 'h1', 'h2', 'h3'],\n ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'],\n ['subscript', 'superscript'],\n ['indent', 'outdent'],\n ],\n dividers: true,\n imageUrlText: 'Insert image URL',\n linkUrlText: 'Insert link URL',\n placeholder: null,\n clearFormattingOnPaste: true,\n },\n },\n create() {\n const app = this;\n app.textEditor = extend(\n ConstructorMethods({\n defaultSelector: '.text-editor',\n constructor: TextEditor,\n app,\n domProp: 'f7TextEditor',\n }),\n );\n },\n static: {\n TextEditor,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl)\n .find('.text-editor-init')\n .each((editorEl) => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({ el: editorEl }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl)\n .find('.text-editor-init')\n .each((editorEl) => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.text-editor-init').each((editorEl) => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({ el: editorEl }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.text-editor-init').each((editorEl) => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n },\n vnode: {\n 'text-editor-init': {\n insert(vnode) {\n const app = this;\n const editorEl = vnode.elm;\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({ el: editorEl }, dataset || {}));\n },\n destroy(vnode) {\n const editorEl = vnode.elm;\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass PieChart extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const self = this;\n\n const defaults = extend({}, app.params.pieChart);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n\n self.params = extend(defaults, params);\n\n const { el } = self.params;\n if (!el) return self;\n\n const $el = $(el);\n if ($el.length === 0) return self;\n\n if ($el[0].f7PieChart) return $el[0].f7PieChart;\n\n extend(self, {\n app,\n $el,\n el: $el && $el[0],\n currentIndex: null,\n f7Tooltip: null,\n });\n\n $el[0].f7PieChart = self;\n\n // Install Modules\n self.useModules();\n\n self.showTooltip = self.showTooltip.bind(this);\n self.hideTooltip = self.hideTooltip.bind(this);\n\n self.init();\n\n return self;\n }\n\n getSummValue() {\n const { datasets } = this.params;\n let summ = 0;\n datasets\n .map((d) => d.value || 0)\n .forEach((value) => {\n summ += value;\n });\n return summ;\n }\n\n getPaths() {\n const { datasets, size } = this.params;\n const paths = [];\n\n let cumulativePercentage = 0;\n\n function getCoordinatesForPercentage(percentage) {\n const x = Math.cos(2 * Math.PI * percentage) * (size / 3);\n const y = Math.sin(2 * Math.PI * percentage) * (size / 3);\n return [x, y];\n }\n\n datasets.forEach(({ value, label, color }) => {\n const percentage = value / this.getSummValue();\n\n const [startX, startY] = getCoordinatesForPercentage(cumulativePercentage);\n cumulativePercentage += percentage;\n const [endX, endY] = getCoordinatesForPercentage(cumulativePercentage);\n const largeArcFlag = percentage > 0.5 ? 1 : 0;\n const points = [\n `M ${startX} ${startY}`, // Move\n `A ${size / 3} ${size / 3} 0 ${largeArcFlag} 1 ${endX} ${endY}`, // Arc\n 'L 0 0', // Line\n ].join(' ');\n\n paths.push({\n points,\n label,\n color,\n });\n });\n return paths;\n }\n\n formatTooltipText() {\n const { datasets } = this.params;\n const { currentIndex } = this;\n if (currentIndex === null) return '';\n const { value, label, color } = datasets[currentIndex];\n const percentage = (value / this.getSummValue()) * 100;\n\n const round = (v) => {\n if (parseInt(v, 10) === v) return v;\n return Math.round(v * 100) / 100;\n };\n\n if (this.params.formatTooltip) {\n return this.params.formatTooltip.call(this, {\n index: currentIndex,\n value,\n label,\n color,\n percentage,\n });\n }\n\n const tooltipText = `${label ? `${label}: ` : ''}${round(value)} (${round(percentage)}%)`;\n\n return `\n <div class=\"pie-chart-tooltip-label\">\n <span class=\"pie-chart-tooltip-color\" style=\"background-color: ${color};\"></span> ${tooltipText}\n </div>\n `;\n }\n\n setTooltip() {\n const self = this;\n const { currentIndex, el, app, params } = self;\n const { tooltip } = params;\n if (currentIndex === null && !self.f7Tooltip) return;\n if (!tooltip || !el) return;\n\n if (currentIndex !== null && !self.f7Tooltip) {\n self.f7Tooltip = app.tooltip.create({\n trigger: 'manual',\n containerEl: el,\n targetEl: el.querySelector(`path[data-index=\"${currentIndex}\"]`),\n text: self.formatTooltipText(),\n cssClass: 'pie-chart-tooltip',\n });\n self.f7Tooltip.show();\n return;\n }\n if (!self.f7Tooltip) return;\n if (currentIndex !== null) {\n self.f7Tooltip.setText(self.formatTooltipText());\n self.f7Tooltip.setTargetEl(el.querySelector(`path[data-index=\"${currentIndex}\"]`));\n\n self.f7Tooltip.show();\n } else {\n self.f7Tooltip.hide();\n }\n }\n\n render() {\n const self = this;\n const size = self.params.size;\n const paths = self.getPaths();\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n viewBox={`-${size / 3} -${size / 3} ${(size * 2) / 3} ${(size * 2) / 3}`}\n style=\"transform: rotate(-90deg)\"\n >\n {paths.map((path, index) => (\n <path d={path.points} fill={path.color} data-index={index} />\n ))}\n </svg>\n );\n }\n\n update(newParams = {}) {\n const self = this;\n const { params } = self;\n Object.keys(newParams).forEach((param) => {\n if (typeof newParams[param] !== 'undefined') {\n params[param] = newParams[param];\n }\n });\n if (self.$svgEl.length === 0) return self;\n self.$svgEl.remove();\n delete self.$svgEl.f7PieChart;\n const $svgEl = $(self.render()).eq(0);\n $svgEl.f7PieChart = self;\n extend(self, {\n $svgEl,\n svgEl: $svgEl && $svgEl[0],\n });\n self.$el.append($svgEl);\n return self;\n }\n\n setCurrentIndex(index) {\n const self = this;\n if (index === self.currentIndex) return;\n const { datasets } = self.params;\n self.currentIndex = index;\n self.$el.trigger('piechart:select', { index, dataset: datasets[index] });\n self.emit('local::select pieChartSelect', self, index, datasets[index]);\n }\n\n showTooltip(e) {\n const newIndex = parseInt(e.target.getAttribute('data-index'), 10);\n this.setCurrentIndex(newIndex);\n this.$svgEl\n .find('path')\n .removeClass('pie-chart-hidden')\n .forEach((el, index) => {\n if (index !== this.currentIndex) $(el).addClass('pie-chart-hidden');\n });\n this.setTooltip();\n }\n\n hideTooltip() {\n this.setCurrentIndex(null);\n this.$svgEl.find('path').removeClass('pie-chart-hidden');\n this.setTooltip();\n }\n\n init() {\n const self = this;\n const $svgEl = $(self.render()).eq(0);\n $svgEl.f7PieChart = self;\n extend(self, {\n $svgEl,\n svgEl: $svgEl && $svgEl[0],\n });\n self.$el.append($svgEl);\n self.$el.on('click mouseenter', 'path', self.showTooltip, true);\n self.$el.on('mouseleave', 'path', self.hideTooltip, true);\n return self;\n }\n\n destroy() {\n const self = this;\n if (!self.$el || self.destroyed) return;\n self.$el.trigger('piechart:beforedestroy');\n self.emit('local::beforeDestroy pieChartBeforeDestroy', self);\n self.$el.off('click mouseenter', 'path', self.showTooltip, true);\n self.$el.off('mouseleave', 'path', self.hideTooltip, true);\n self.$svgEl.remove();\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n }\n delete self.$el[0].f7PieChart;\n deleteProps(self);\n self.destroyed = true;\n }\n}\n\nexport default PieChart;\n","import $ from '../../shared/dom7.js';\nimport PieChart from './pie-chart-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'pieChart',\n params: {\n pieChart: {\n el: null,\n datasets: [],\n size: 320,\n tooltip: false,\n formatTooltip: null,\n },\n },\n create() {\n const app = this;\n app.pieChart = ConstructorMethods({\n defaultSelector: '.pie-chart',\n constructor: PieChart,\n app,\n domProp: 'f7PieChart',\n });\n app.pieChart.update = function update(el, newParams) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const pieChart = app.pieChart.get(el);\n if (!pieChart) return undefined;\n pieChart.update(newParams);\n return pieChart;\n };\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass AreaChart extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const self = this;\n\n const defaults = extend({}, app.params.areaChart);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n\n self.params = extend(defaults, params);\n\n const { el } = self.params;\n if (!el) return self;\n\n const $el = $(el);\n if ($el.length === 0) return self;\n\n if ($el[0].f7AreaChart) return $el[0].f7AreaChart;\n\n extend(self, {\n app,\n $el,\n el: $el && $el[0],\n currentIndex: null,\n hiddenDatasets: [],\n f7Tooltip: null,\n linesOffsets: null,\n });\n\n $el[0].f7AreaChart = self;\n\n // Install Modules\n self.useModules();\n\n self.onMouseEnter = self.onMouseEnter.bind(self);\n self.onMouseMove = self.onMouseMove.bind(self);\n self.onMouseLeave = self.onMouseLeave.bind(self);\n self.onLegendClick = self.onLegendClick.bind(self);\n\n self.init();\n\n return self;\n }\n\n getVisibleLabels() {\n const { maxAxisLabels, axisLabels } = this.params;\n if (!maxAxisLabels || axisLabels.length <= maxAxisLabels) return axisLabels;\n const skipStep = Math.ceil(axisLabels.length / maxAxisLabels);\n const filtered = axisLabels.filter((label, index) => index % skipStep === 0);\n return filtered;\n }\n\n getSummValues() {\n const { datasets } = this.params;\n const { hiddenDatasets } = this;\n const summValues = [];\n datasets\n .filter((dataset, index) => !hiddenDatasets.includes(index))\n .forEach(({ values }) => {\n values.forEach((value, valueIndex) => {\n if (!summValues[valueIndex]) summValues[valueIndex] = 0;\n summValues[valueIndex] += value;\n });\n });\n return summValues;\n }\n\n getChartData() {\n const { datasets, lineChart, width, height } = this.params;\n const { hiddenDatasets } = this;\n const data = [];\n if (!datasets.length) {\n return data;\n }\n const lastValues = datasets[0].values.map(() => 0);\n let maxValue = 0;\n if (lineChart) {\n datasets\n .filter((dataset, index) => !hiddenDatasets.includes(index))\n .forEach(({ values }) => {\n const datasetMaxValue = Math.max(...values);\n if (datasetMaxValue > maxValue) maxValue = datasetMaxValue;\n });\n } else {\n maxValue = Math.max(...this.getSummValues());\n }\n\n datasets\n .filter((dataset, index) => !hiddenDatasets.includes(index))\n .forEach(({ label, values, color }) => {\n const points = values.map((originalValue, valueIndex) => {\n lastValues[valueIndex] += originalValue;\n const value = lineChart ? originalValue : lastValues[valueIndex];\n const x = (valueIndex / (values.length - 1)) * width;\n const y = height - (value / maxValue) * height;\n if (lineChart) {\n return `${valueIndex === 0 ? 'M' : 'L'}${x},${y}`;\n }\n return `${x} ${y}`;\n });\n if (!lineChart) {\n points.push(`${width} ${height} 0 ${height}`);\n }\n\n data.push({\n label,\n points: points.join(' '),\n color,\n });\n });\n return data.reverse();\n }\n\n getVerticalLines() {\n const { datasets, width } = this.params;\n const lines = [];\n if (!datasets.length) {\n return lines;\n }\n const values = datasets[0].values;\n values.forEach((value, valueIndex) => {\n const x = (valueIndex / (values.length - 1)) * width;\n lines.push(x);\n });\n return lines;\n }\n\n toggleDataset(index) {\n const {\n hiddenDatasets,\n params: { toggleDatasets },\n } = this;\n if (!toggleDatasets) return;\n if (hiddenDatasets.includes(index)) {\n hiddenDatasets.splice(hiddenDatasets.indexOf(index), 1);\n } else {\n hiddenDatasets.push(index);\n }\n if (this.$legendEl) {\n this.$legendEl.find('.area-chart-legend-item').removeClass('area-chart-legend-item-hidden');\n hiddenDatasets.forEach((i) => {\n this.$legendEl\n .find(`.area-chart-legend-item[data-index=\"${i}\"]`)\n .addClass('area-chart-legend-item-hidden');\n });\n }\n this.update({}, true);\n }\n\n formatAxisLabel(label) {\n const { formatAxisLabel } = this.params;\n if (formatAxisLabel) return formatAxisLabel.call(this, label);\n return label;\n }\n\n formatLegendLabel(label) {\n const { formatLegendLabel } = this.params;\n if (formatLegendLabel) return formatLegendLabel.call(this, label);\n return label;\n }\n\n calcLinesOffsets() {\n const lines = this.svgEl.querySelectorAll('line');\n this.linesOffsets = [];\n for (let i = 0; i < lines.length; i += 1) {\n this.linesOffsets.push(lines[i].getBoundingClientRect().left);\n }\n }\n\n formatTooltip() {\n const self = this;\n const {\n currentIndex,\n hiddenDatasets,\n params: {\n datasets,\n axisLabels,\n formatTooltip,\n formatTooltipTotal,\n formatTooltipAxisLabel,\n formatTooltipDataset,\n },\n } = self;\n if (currentIndex === null) return '';\n let total = 0;\n const currentValues = datasets\n .filter((dataset, index) => !hiddenDatasets.includes(index))\n .map((dataset) => ({\n color: dataset.color,\n label: dataset.label,\n value: dataset.values[currentIndex],\n }));\n currentValues.forEach((dataset) => {\n total += dataset.value;\n });\n if (formatTooltip) {\n return formatTooltip({\n index: currentIndex,\n total,\n datasets: currentValues,\n });\n }\n let labelText = formatTooltipAxisLabel\n ? formatTooltipAxisLabel.call(self, axisLabels[currentIndex])\n : this.formatAxisLabel(axisLabels[currentIndex]);\n if (!labelText) labelText = '';\n const totalText = formatTooltipTotal ? formatTooltipTotal.call(self, total) : total;\n // prettier-ignore\n const datasetsText = currentValues.length > 0 ? `\n <ul class=\"area-chart-tooltip-list\">\n ${currentValues\n .map(({ label, color, value }) => {\n const valueText = formatTooltipDataset\n ? formatTooltipDataset.call(self, label, value, color)\n : `${label ? `${label}: ` : ''}${value}`;\n return `\n <li><span style=\"background-color: ${color};\"></span>${valueText}</li>\n `;\n }).join('')}\n </ul>` : '';\n // prettier-ignore\n return `\n <div class=\"area-chart-tooltip-label\">${labelText}</div>\n <div class=\"area-chart-tooltip-total\">${totalText}</div>\n ${datasetsText}\n `;\n }\n\n setTooltip() {\n const self = this;\n const {\n app,\n el,\n svgEl,\n hiddenDatasets,\n currentIndex,\n params: { tooltip, datasets },\n } = self;\n if (!tooltip) return;\n const hasVisibleDataSets =\n datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).length > 0;\n if (!hasVisibleDataSets) {\n if (self.f7Tooltip && self.f7Tooltip.hide) self.f7Tooltip.hide();\n return;\n }\n\n if (currentIndex !== null && !self.f7Tooltip) {\n self.f7Tooltip = app.tooltip.create({\n trigger: 'manual',\n containerEl: el,\n targetEl: svgEl.querySelector(`line[data-index=\"${currentIndex}\"]`),\n text: self.formatTooltip(),\n cssClass: 'area-chart-tooltip',\n });\n if (self.f7Tooltip && self.f7Tooltip.show) {\n self.f7Tooltip.show();\n }\n return;\n }\n if (!self.f7Tooltip || !self.f7Tooltip.hide || !self.f7Tooltip.show) {\n return;\n }\n if (currentIndex !== null) {\n self.f7Tooltip.setText(self.formatTooltip());\n self.f7Tooltip.setTargetEl(svgEl.querySelector(`line[data-index=\"${currentIndex}\"]`));\n self.f7Tooltip.show();\n } else {\n self.f7Tooltip.hide();\n }\n }\n\n setCurrentIndex(index) {\n if (index === this.currentIndex) return;\n this.currentIndex = index;\n this.$el.trigger('areachart:select', { index });\n this.emit('local::select areaChartSelect', this, index);\n this.$svgEl.find('line').removeClass('area-chart-current-line');\n this.$svgEl.find(`line[data-index=\"${index}\"]`).addClass('area-chart-current-line');\n this.setTooltip();\n }\n\n onLegendClick(e) {\n const index = parseInt($(e.target).closest('.area-chart-legend-item').attr('data-index'), 10);\n this.toggleDataset(index);\n }\n\n onMouseEnter() {\n this.calcLinesOffsets();\n }\n\n onMouseMove(e) {\n const self = this;\n if (!self.linesOffsets) {\n self.calcLinesOffsets();\n }\n let currentLeft = e.pageX;\n if (typeof currentLeft === 'undefined') currentLeft = 0;\n const distances = self.linesOffsets.map((left) => Math.abs(currentLeft - left));\n const minDistance = Math.min(...distances);\n const closestIndex = distances.indexOf(minDistance);\n self.setCurrentIndex(closestIndex);\n }\n\n onMouseLeave() {\n this.setCurrentIndex(null);\n }\n\n attachEvents() {\n const { svgEl, $el } = this;\n if (!svgEl) return;\n svgEl.addEventListener('mouseenter', this.onMouseEnter);\n svgEl.addEventListener('mousemove', this.onMouseMove);\n svgEl.addEventListener('mouseleave', this.onMouseLeave);\n $el.on('click', '.area-chart-legend-item', this.onLegendClick);\n }\n\n detachEvents() {\n const { svgEl, $el } = this;\n if (!svgEl) return;\n svgEl.removeEventListener('mouseenter', this.onMouseEnter);\n svgEl.removeEventListener('mousemove', this.onMouseMove);\n svgEl.removeEventListener('mouseleave', this.onMouseLeave);\n $el.off('click', '.area-chart-legend-item', this.onLegendClick);\n }\n\n render() {\n const self = this;\n const { lineChart, toggleDatasets, width, height, axis, axisLabels, legend, datasets } =\n self.params;\n const chartData = self.getChartData();\n const verticalLines = self.getVerticalLines();\n const visibleLegends = self.getVisibleLabels();\n\n const LegendItemTag = toggleDatasets ? 'button' : 'span';\n return (\n <div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"none\"\n >\n {chartData.map((data) =>\n lineChart ? (\n <path stroke={data.color} fill-rule=\"evenodd\" d={data.points} />\n ) : (\n <polygon fill={data.color} fill-rule=\"evenodd\" points={data.points} />\n ),\n )}\n\n {verticalLines.map((line, index) => (\n <line data-index={index} fill=\"#000\" x1={line} y1={0} x2={line} y2={height} />\n ))}\n </svg>\n {axis && (\n <div class=\"area-chart-axis\">\n {axisLabels.map((label) => (\n <span>\n {visibleLegends.includes(label) && <span>{self.formatAxisLabel(label)}</span>}\n </span>\n ))}\n </div>\n )}\n {legend && (\n <div class=\"area-chart-legend\">\n {datasets.map((dataset, index) => (\n <LegendItemTag\n data-index={index}\n class={`area-chart-legend-item ${toggleDatasets ? 'area-chart-legend-button' : ''}`}\n _type={toggleDatasets ? 'button' : undefined}\n >\n <span style={`background-color: ${dataset.color}`}></span>\n {self.formatLegendLabel(dataset.label)}\n </LegendItemTag>\n ))}\n </div>\n )}\n </div>\n );\n }\n\n update(newParams = {}, onlySvg = false) {\n const self = this;\n const { params } = self;\n Object.keys(newParams).forEach((param) => {\n if (typeof newParams[param] !== 'undefined') {\n params[param] = newParams[param];\n }\n });\n if (self.$svgEl.length === 0) return self;\n self.detachEvents();\n self.$svgEl.remove();\n if (!onlySvg) {\n self.$axisEl.remove();\n self.$legendEl.remove();\n }\n const $rendered = $(self.render());\n const $svgEl = $rendered.find('svg');\n extend(self, {\n svgEl: $svgEl && $svgEl[0],\n $svgEl,\n });\n\n if (!onlySvg) {\n const $axisEl = $rendered.find('.area-chart-axis');\n const $legendEl = $rendered.find('.area-chart-legend');\n extend(self, {\n $axisEl,\n $legendEl,\n });\n self.$el.append($axisEl);\n self.$el.append($legendEl);\n }\n self.$el.prepend($svgEl);\n\n self.attachEvents();\n return self;\n }\n\n init() {\n const self = this;\n const $rendered = $(self.render());\n const $svgEl = $rendered.find('svg');\n const $axisEl = $rendered.find('.area-chart-axis');\n const $legendEl = $rendered.find('.area-chart-legend');\n extend(self, {\n svgEl: $svgEl && $svgEl[0],\n $svgEl,\n $axisEl,\n $legendEl,\n });\n self.$el.append($svgEl);\n self.$el.append($axisEl);\n self.$el.append($legendEl);\n self.attachEvents();\n return self;\n }\n\n destroy() {\n const self = this;\n if (!self.$el || self.destroyed) return;\n self.$el.trigger('piechart:beforedestroy');\n self.emit('local::beforeDestroy areaChartBeforeDestroy', self);\n self.detachEvents();\n self.$svgEl.remove();\n self.$axisEl.remove();\n self.$legendEl.remove();\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n }\n delete self.$el[0].f7AreaChart;\n deleteProps(self);\n self.destroyed = true;\n }\n}\n\nexport default AreaChart;\n","import $ from '../../shared/dom7.js';\nimport AreaChart from './area-chart-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n name: 'areaChart',\n params: {\n areaChart: {\n el: null,\n lineChart: false,\n datasets: [],\n axis: false,\n axisLabels: [],\n tooltip: false,\n legend: false,\n toggleDatasets: false,\n width: 640,\n height: 320,\n maxAxisLabels: 8,\n formatAxisLabel: null,\n formatLegendLabel: null,\n formatTooltip: null,\n formatTooltipAxisLabel: null,\n formatTooltipTotal: null,\n formatTooltipDataset: null,\n },\n },\n create() {\n const app = this;\n app.areaChart = ConstructorMethods({\n defaultSelector: '.area-chart',\n constructor: AreaChart,\n app,\n domProp: 'f7AreaChart',\n });\n app.areaChart.update = function update(el, newParams) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const areaChart = app.areaChart.get(el);\n if (!areaChart) return undefined;\n areaChart.update(newParams);\n return areaChart;\n };\n },\n};\n","import { bindMethods } from '../../shared/utils.js';\n\nconst Breadcrumbs = {};\n\nexport default {\n name: 'breadrumbs',\n create() {\n const app = this;\n bindMethods(app, {\n breadrumbs: Breadcrumbs,\n });\n },\n};\n","import $ from './shared/dom7.js';\n\nimport Framework7 from './components/app/app-class.js';\n\n//IMPORT_HELPERS\n\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport RouterComponentLoaderModule from './modules/router/component-loader.js';\nimport ComponentModule, { Component, $jsx } from './modules/component/component.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\n\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Router from './modules/router/router-class.js';\n\n//IMPORT_COMPONENTS\n\n// UMD_ONLY_START\nif (typeof window !== 'undefined') {\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n}\n// UMD_ONLY_END\n\nRouter.use([RouterComponentLoaderModule]);\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule,\n ServiceWorkerModule,\n StoreModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n //INSTALL_COMPONENTS\n]);\n\n//NAMED_EXPORT\nexport default Framework7;\n","export default {\n name: 'contactsList',\n};\n","export default {\n name: 'timeline',\n};\n","export default {\n name: 'chip',\n};\n","export default {\n name: 'checkbox',\n};\n","export default {\n name: 'radio',\n};\n","export default {\n name: 'grid',\n};\n","export default {\n name: 'skeleton',\n};\n","export default {\n name: 'typography',\n};\n"],"mappings":";;;;;;;;;;;;2OAYA,SAASA,EAASC,GACd,OAAgB,OAARA,GACW,iBAARA,GACP,gBAAiBA,GACjBA,EAAIC,cAAgBC,MAC5B,CACA,SAASC,EAAOC,EAAaC,QAAP,IAAND,MAAS,SAAO,IAAHC,MAAM,IAC/BH,OAAOI,KAAKD,GAAKE,SAASC,SACK,IAAhBJ,EAAOI,GACdJ,EAAOI,GAAOH,EAAIG,GACbT,EAASM,EAAIG,KAClBT,EAASK,EAAOI,KAChBN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GAC/BN,EAAOC,EAAOI,GAAMH,EAAIG,GAC5B,GAER,CAEA,MAAME,EAAc,CAChBC,KAAM,GACNC,mBAAmB,EACnBC,sBAAsB,EACtBC,cAAe,CACXC,OAAO,EACPC,SAAU,IAEdC,cAAaA,IACF,KAEXC,iBAAgBA,IACL,GAEXC,eAAcA,IACH,KAEXC,YAAWA,KACA,CACHC,YAAY,IAGpBC,cAAaA,KACF,CACHC,SAAU,GACVC,WAAY,GACZC,MAAO,GACPC,eAAe,EACfC,qBAAoBA,IACT,KAInBC,gBAAeA,KACJ,IAEXC,WAAUA,IACC,KAEXC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhB,SAASC,IACL,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,GAEzD,OADAtC,EAAOqC,EAAK9B,GACL8B,CACX,CAEA,MAAME,EAAY,CACdD,SAAU/B,EACViC,UAAW,CACPC,UAAW,IAEfd,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZO,QAAS,CACLC,eAAe,EACfC,YAAY,EACZC,KAAK,EACLC,OAAO,GAEXC,YAAa,WACT,OAAOC,I,EAEXvC,mBAAmB,EACnBC,sBAAsB,EACtBuC,iBAAgBA,KACL,CACHC,iBAAgBA,IACL,KAInBC,QAAQ,EACRC,OAAO,EACPC,OAAQ,GACRC,aAAa,EACbC,eAAe,EACfC,WAAUA,KACC,IAEXC,sBAAsBC,GACQ,oBAAfJ,YACPI,IACO,MAEJJ,WAAWI,EAAU,GAEhCC,qBAAqBC,GACS,oBAAfN,YAGXC,aAAaK,EACjB,GAEJ,SAASC,IACL,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,GAErD,OADA/D,EAAO8D,EAAKvB,GACLuB,CACX,CCrHA,MAAME,UAAaC,MACjBnE,YAAYoE,GACW,iBAAVA,EACTC,MAAMD,IAENC,SAAUD,GAAS,IAnBzB,SAAsBrE,GACpB,MAAMuE,EAAQvE,EAAIwE,UAClBtE,OAAOuE,eAAezE,EAAK,YAAa,CACtC0E,IAAGA,IACMH,EAGTI,IAAIC,GACFL,EAAMC,UAAYI,CACpB,GAGJ,CAQMC,CAAa1B,MAEjB,EAIF,SAAS2B,EAAUC,QAAG,IAAHA,MAAM,IACvB,MAAMC,EAAM,GAQZ,OAPAD,EAAIxE,SAAQ0E,IACNb,MAAMc,QAAQD,GAChBD,EAAIG,QAAQL,EAAUG,IAEtBD,EAAIG,KAAKF,EACX,IAEKD,CACT,CACA,SAASI,EAAYL,EAAKlB,GACxB,OAAOO,MAAMiB,UAAUC,OAAOC,KAAKR,EAAKlB,EAC1C,CA+BA,SAAS2B,EAAEC,EAAUC,GACnB,MAAMxB,EAASF,IACTvB,EAAWF,IACjB,IAAIwC,EAAM,GAEV,IAAKW,GAAWD,aAAoBtB,EAClC,OAAOsB,EAGT,IAAKA,EACH,OAAO,IAAItB,EAAKY,GAGlB,GAAwB,iBAAbU,EAAuB,CAChC,MAAME,EAAOF,EAASG,OAEtB,GAAID,EAAKE,QAAQ,MAAQ,GAAKF,EAAKE,QAAQ,MAAQ,EAAG,CACpD,IAAIC,EAAW,MACa,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,MACd,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,SACd,IAAxBH,EAAKE,QAAQ,QAAwC,IAAxBF,EAAKE,QAAQ,SAAcC,EAAW,MACxC,IAA3BH,EAAKE,QAAQ,YAAiBC,EAAW,SACb,IAA5BH,EAAKE,QAAQ,aAAkBC,EAAW,UAC9C,MAAMC,EAAatD,EAASnB,cAAcwE,GAC1CC,EAAWC,UAAYL,EAEvB,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAWvE,WAAWf,OAAQwF,GAAK,EACrDlB,EAAII,KAAKY,EAAWvE,WAAWyE,GAEnC,MACElB,EA7CN,SAAaU,EAAUC,GACrB,GAAwB,iBAAbD,EACT,MAAO,CAACA,GAGV,MAAMS,EAAI,GACJlB,EAAMU,EAAQxE,iBAAiBuE,GAErC,IAAK,IAAIQ,EAAI,EAAGA,EAAIjB,EAAIvE,OAAQwF,GAAK,EACnCC,EAAEf,KAAKH,EAAIiB,IAGb,OAAOC,CACT,CAgCYC,CAAIV,EAASG,OAAQF,GAAWjD,EAG1C,MAAO,GAAIgD,EAASW,UAAYX,IAAavB,GAAUuB,IAAahD,EAClEsC,EAAII,KAAKM,QACJ,GAAIrB,MAAMc,QAAQO,GAAW,CAClC,GAAIA,aAAoBtB,EAAM,OAAOsB,EACrCV,EAAMU,CACR,CAEA,OAAO,IAAItB,EAtEb,SAAqBY,GACnB,MAAMsB,EAAc,GAEpB,IAAK,IAAIJ,EAAI,EAAGA,EAAIlB,EAAItE,OAAQwF,GAAK,GACE,IAAjCI,EAAYR,QAAQd,EAAIkB,KAAYI,EAAYlB,KAAKJ,EAAIkB,IAG/D,OAAOI,CACT,CA8DkBC,CAAYvB,GAC9B,CAEAS,EAAEe,GAAKpC,EAAKkB,UA4yCZ,MAAMmB,EAAY,gBAAgBC,MAAM,KAExC,SAASC,EAASC,GAiBhB,OAhBA,WAA+B,QAAAC,EAAAC,UAAApG,OAANqG,EAAI1C,UAAAwC,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJD,EAAIC,GAAAF,UAAAE,GAC3B,QAAuB,IAAZD,EAAK,GAAoB,CAClC,IAAK,IAAIb,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChCO,EAAUX,QAAQc,GAAQ,IACxBA,KAAQxD,KAAK8C,GAAI9C,KAAK8C,GAAGU,KAC3BnB,EAAErC,KAAK8C,IAAIe,QAAQL,IAKzB,OAAOxD,IACT,CAEA,OAAOA,KAAK8D,GAAGN,KAASG,EAC1B,CAGF,CAEA,MAAMI,EAAQR,EAAS,SACjB3F,EAAO2F,EAAS,QAChBS,EAAQT,EAAS,SACjBU,EAAUV,EAAS,WACnBW,EAAWX,EAAS,YACpBY,EAAQZ,EAAS,SACjBa,EAAUb,EAAS,WACnBc,EAAWd,EAAS,YACpBe,EAASf,EAAS,UAClBgB,EAAShB,EAAS,UAClBiB,EAAYjB,EAAS,aACrBkB,EAAYlB,EAAS,aACrBmB,EAAUnB,EAAS,WACnBoB,EAAapB,EAAS,cACtBqB,EAAarB,EAAS,cACtBsB,EAAWtB,EAAS,YACpBuB,EAAYvB,EAAS,aACrBwB,EAAaxB,EAAS,cACtByB,EAAWzB,EAAS,YACpB0B,EAAY1B,EAAS,aACrB2B,EAAS3B,EAAS,UAClB4B,EAAS5B,EAAS,U,4CAzaxB,WACE,MAAM6B,EAAMpF,KACZ,IAAI8C,EACAuC,EAAE,QAAAC,EAAA5B,UAAApG,OAHQiI,EAAGtE,UAAAqE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAHD,EAAGC,GAAA9B,UAAA8B,GAKjB,IAAK1C,EAAI,EAAGA,EAAIyC,EAAIjI,OAAQwF,GAAK,EAAG,CAClC,MAAM2C,EAAQpD,EAAEkD,EAAIzC,IAEpB,IAAKuC,EAAI,EAAGA,EAAII,EAAMnI,OAAQ+H,GAAK,EACjCD,EAAIpD,KAAKyD,EAAMJ,GAEnB,CAEA,OAAOD,CACT,E,SAx7BA,WAA8B,QAAAM,EAAAhC,UAAApG,OAATqI,EAAO1E,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAPD,EAAOC,GAAAlC,UAAAkC,GAC1B,MAAMC,EAAalE,EAAUgE,EAAQG,KAAIC,GAAKA,EAAEzC,MAAM,QAItD,OAHAtD,KAAK5C,SAAQ0E,IACXA,EAAGkE,UAAUC,OAAOJ,EAAW,IAE1B7F,IACT,E,QAulCA,SAAiBkG,EAAcC,GAC7B,MAAMpF,EAASF,IACT0E,EAAMvF,KACN+C,EAAI,CACRqD,MAAOrJ,OAAOsJ,OAAO,GAAIH,GACzBI,OAAQvJ,OAAOsJ,OAAO,CACpBE,SAAU,IACVC,OAAQ,SAQPL,GACHM,SAAUlB,EACVmB,WAAW,EACXC,IAAK,GAELC,eAAcA,CAACJ,EAAQK,IACN,UAAXL,EACK,GAAMM,KAAKC,IAAIF,EAAWC,KAAKE,IAAM,EAGxB,mBAAXR,EACFA,EAAOK,GAGTA,EAGTI,OACMlE,EAAEmE,SACJnG,EAAOJ,qBAAqBoC,EAAEmE,SAGhCnE,EAAE2D,WAAY,EACd3D,EAAE0D,SAASU,MAAKrF,WACEA,EACDsF,mBAAmB,IAEpCrE,EAAE4D,IAAM,E,EAGVU,KAAKC,GAQH,GAPAvE,EAAE2D,WAAY,EACd3D,EAAE0D,SAASU,MAAKrF,WACEA,EACDsF,mBAAmB,IAEhCE,GAAUA,EAAS/B,GAEnBxC,EAAE4D,IAAIrJ,OAAS,EAAG,CACpB,MAAMqJ,EAAM5D,EAAE4D,IAAIY,QAClBxE,EAAEyE,QAAQb,EAAI,GAAIA,EAAI,GACxB,C,EAGFa,QAAQpB,EAAOE,GACb,GAAIvD,EAAE2D,UAEJ,OADA3D,EAAE4D,IAAI3E,KAAK,CAACoE,EAAOE,IACZvD,EAGT,MAAM0D,EAAW,GAEjB1D,EAAE0D,SAASU,MAAK,CAACrF,EAAI2F,KACnB,IAAIC,EACAC,EACAC,EACAC,EACAC,EACChG,EAAGsF,sBAAqBrE,EAAE0D,SAASgB,GAAOL,oBAAsBrE,GACrE0D,EAASgB,GAAS,CAChBM,UAAWjG,GAEb/E,OAAOI,KAAKiJ,GAAOhJ,SAAQ4K,IACzBN,EAAmB3G,EAAOd,iBAAiB6B,EAAI,MAAM5B,iBAAiB8H,GAAMC,QAAQ,IAAK,KACzFN,EAAeO,WAAWR,GAC1BE,EAAOF,EAAiBO,QAAQN,EAAc,IAC9CE,EAAaK,WAAW9B,EAAM4B,IAC9BF,EAAiB1B,EAAM4B,GAAQJ,EAC/BnB,EAASgB,GAAOO,GAAQ,CACtBN,mBACAC,eACAC,OACAC,aACAC,iBACAK,aAAcR,EACf,GACD,IAEJ,IACIS,EAGAf,EAJAgB,EAAY,KAEZC,EAAe,EACfC,EAAY,EAEZC,GAAQ,EAiEZ,OAhEAzF,EAAE2D,WAAY,EA+Dd3D,EAAEmE,QAAUnG,EAAON,uBA7DnB,SAASgI,IAEP,IAAI5B,EACA6B,EAFJN,GAAO,IAAIhI,MAAOuI,UAIbH,IACHA,GAAQ,EACJlC,EAAOsC,OAAOtC,EAAOsC,MAAMrD,IAGf,OAAd8C,IACFA,EAAYD,GAGV9B,EAAOO,UAETP,EAAOO,SAAStB,EAAKuB,KAAK+B,IAAI/B,KAAKgC,KAAKV,EAAOC,GAAa/B,EAAOC,SAAU,GAAI,GAAI8B,EAAY/B,EAAOC,SAAW6B,EAAO,EAAI,EAAIC,EAAY/B,EAAOC,SAAW6B,EAAMC,GAGxK5B,EAASrJ,SAAQ2L,IACf,MAAMjH,EAAKiH,EACP1B,GAAQvF,EAAGuF,MACftK,OAAOI,KAAKiJ,GAAOhJ,SAAQ4K,IACzB,GAAIX,GAAQvF,EAAGuF,KAAM,OACrBR,EAAWC,KAAK+B,IAAI/B,KAAKgC,KAAKV,EAAOC,GAAa/B,EAAOC,SAAU,GAAI,GACvEmC,EAAe3F,EAAE6D,eAAeN,EAAOE,OAAQK,GAC/C,MAAMc,aACJA,EAAYE,WACZA,EAAUD,KACVA,GACE9F,EAAGkG,GACPlG,EAAGkG,GAAMG,aAAeR,EAAee,GAAgBb,EAAaF,GACpE,MAAMQ,EAAerG,EAAGkG,GAAMG,cAE1BN,EAAaF,GAAgBQ,GAAgBN,GAAcA,EAAaF,GAAgBQ,GAAgBN,KAC1G/F,EAAGiG,UAAUzJ,MAAM0J,GAAQH,EAAaD,EACxCW,GAAa,EAETA,IAAcxL,OAAOI,KAAKiJ,GAAO9I,SACnCwE,EAAGuF,MAAO,EACViB,GAAgB,GAGdA,IAAiB7B,EAASnJ,SAC5B+J,GAAO,IAIPA,EACFtE,EAAEsE,KAAKf,EAAOgB,UAIhBxF,EAAGiG,UAAUzJ,MAAM0J,GAAQG,EAAeP,CAAI,GAC9C,IAEAP,IAEJtE,EAAEmE,QAAUnG,EAAON,sBAAsBgI,GAC3C,IAGO1F,CACT,GAIF,GAA0B,IAAtBA,EAAE0D,SAASnJ,OACb,OAAOiI,EAGT,IAAIyD,EAEJ,IAAK,IAAIlG,EAAI,EAAGA,EAAIC,EAAE0D,SAASnJ,OAAQwF,GAAK,EACtCC,EAAE0D,SAAS3D,GAAGsE,oBAChB4B,EAAkBjG,EAAE0D,SAAS3D,GAAGsE,oBAC3BrE,EAAE0D,SAAS3D,GAAGsE,oBAAsBrE,EAa7C,OAVKiG,IACHA,EAAkBjG,GAGC,SAAjBmD,EACF8C,EAAgB/B,OAEhB+B,EAAgBxB,QAAQzE,EAAEqD,MAAOrD,EAAEuD,QAG9Bf,CACT,E,aAj4BA,SAAsB7E,GACpB,MAAM0E,EAAMpF,KAYZ,OAJIU,GACF0E,EAAItB,GAAG,gBAPT,SAASmF,EAAaC,GAChBA,EAAEjM,SAAW+C,OACjBU,EAAS0B,KAAKpC,KAAMkJ,GACpB9D,EAAI+D,IAAI,eAAgBF,GAC1B,IAMOjJ,IACT,E,OA8PA,WACE,IAAIoJ,EACJ,MAAM9J,EAAWF,IAEjB,IAAK,IAAIiK,EAAI,EAAGA,EAAI3F,UAAIpG,OAAQ+L,GAAK,EAAG,CACtCD,EAAeC,EAAC3F,aAAApG,QAAD+L,OAACC,EAAA5F,UAAD2F,GAEf,IAAK,IAAIvG,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC,GAAwB,iBAAbsG,EAAuB,CAChC,MAAMG,EAAUjK,EAASnB,cAAc,OAGvC,IAFAoL,EAAQ1G,UAAYuG,EAEbG,EAAQC,YACbxJ,KAAK8C,GAAG2G,YAAYF,EAAQC,WAEhC,MAAO,GAAIJ,aAAoBpI,EAC7B,IAAK,IAAIqE,EAAI,EAAGA,EAAI+D,EAAS9L,OAAQ+H,GAAK,EACxCrF,KAAK8C,GAAG2G,YAAYL,EAAS/D,SAG/BrF,KAAK8C,GAAG2G,YAAYL,EAG1B,CAEA,OAAOpJ,IACT,E,SAEA,SAAkB0J,GAEhB,OADArH,EAAEqH,GAAQC,OAAO3J,MACVA,IACT,E,KAtqBA,SAAc4J,EAAOnI,GACnB,GAAyB,IAArBiC,UAAUpG,QAAiC,iBAAVsM,EAEnC,OAAI5J,KAAK,GAAWA,KAAK,GAAG6J,aAAaD,QACzC,EAIF,IAAK,IAAI9G,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC,GAAyB,IAArBY,UAAUpG,OAEZ0C,KAAK8C,GAAGvE,aAAaqL,EAAOnI,QAG5B,IAAK,MAAMqI,KAAYF,EACrB5J,KAAK8C,GAAGgH,GAAYF,EAAME,GAC1B9J,KAAK8C,GAAGvE,aAAauL,EAAUF,EAAME,IAK3C,OAAO9J,IACT,E,yBAw1BA,SAAkBsC,GAChB,MAAMlE,EAAW,GAEjB,IAAK,IAAI0E,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMzE,EAAa2B,KAAK8C,GAAG1E,SAE3B,IAAK,IAAIiH,EAAI,EAAGA,EAAIhH,EAAWf,OAAQ+H,GAAK,EACrC/C,IAAYD,EAAEhE,EAAWgH,IAAI0E,GAAGzH,IACnClE,EAAS4D,KAAK3D,EAAWgH,GAG/B,CAEA,OAAOhD,EAAEjE,EACX,E,gBA1CA,SAAiBkE,GACf,IAAI0H,EAAUhK,KAEd,YAAwB,IAAbsC,EACFD,EAAE,KAGN2H,EAAQD,GAAGzH,KACd0H,EAAUA,EAAQC,QAAQ3H,GAAU4H,GAAG,IAGlCF,EACT,E,IAxWA,SAAa5D,EAAO3E,GAClB,MAAMV,EAASF,IACf,IAAIiC,EAEJ,GAAyB,IAArBY,UAAUpG,OAAc,CAC1B,GAAqB,iBAAV8I,EAGJ,CAEL,IAAKtD,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChC,IAAK,MAAMkF,KAAQ5B,EACjBpG,KAAK8C,GAAGxE,MAAM0J,GAAQ5B,EAAM4B,GAIhC,OAAOhI,IACT,CAVE,GAAIA,KAAK,GAAI,OAAOe,EAAOd,iBAAiBD,KAAK,GAAI,MAAME,iBAAiBkG,EAWhF,CAEA,GAAyB,IAArB1C,UAAUpG,QAAiC,iBAAV8I,EAAoB,CAEvD,IAAKtD,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChC9C,KAAK8C,GAAGxE,MAAM8H,GAAS3E,EAGzB,OAAOzB,IACT,CAEA,OAAOA,IACT,E,KA5dA,SAAc3C,EAAKoE,GACjB,IAAIK,EAEJ,QAAqB,IAAVL,EAAuB,CAEhC,GADAK,EAAK9B,KAAK,IACL8B,EAAI,OAET,GAAIA,EAAGqI,wBAA0B9M,KAAOyE,EAAGqI,uBACzC,OAAOrI,EAAGqI,uBAAuB9M,GAGnC,MAAM+M,EAAUtI,EAAG+H,aAAc,QAAOxM,KAExC,OAAI+M,QAIJ,CACF,CAGA,IAAK,IAAItH,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpChB,EAAK9B,KAAK8C,GACLhB,EAAGqI,yBAAwBrI,EAAGqI,uBAAyB,IAC5DrI,EAAGqI,uBAAuB9M,GAAOoE,EAGnC,OAAOzB,IACT,E,QAaA,WACE,MAAM8B,EAAK9B,KAAK,GAChB,IAAK8B,EAAI,OACT,MAAMuI,EAAU,GAEhB,GAAIvI,EAAGuI,QACL,IAAK,MAAMD,KAAWtI,EAAGuI,QACvBA,EAAQD,GAAWtI,EAAGuI,QAAQD,QAGhC,IAAK,IAAItH,EAAI,EAAGA,EAAIhB,EAAGwI,WAAWhN,OAAQwF,GAAK,EAAG,CAChD,MAAMyH,EAAOzI,EAAGwI,WAAWxH,GAEvByH,EAAK/G,KAAKd,QAAQ,UAAY,IAChC2H,GAnNaG,EAmNOD,EAAK/G,KAAKF,MAAM,SAAS,GAlN5CkH,EAAOC,cAAcxC,QAAQ,SAAS,CAACyC,EAAOC,IAAUA,EAAMC,kBAkNXL,EAAK9I,MAE7D,CArNJ,IAAqB+I,EAwNnB,IAAK,MAAMnN,KAAOgN,EACK,UAAjBA,EAAQhN,GAAkBgN,EAAQhN,IAAO,EAAgC,SAAjBgN,EAAQhN,GAAiBgN,EAAQhN,IAAO,EAAc6K,WAAWmC,EAAQhN,MAAyB,EAAfgN,EAAQhN,KAAUgN,EAAQhN,IAAQ,GAGnL,OAAOgN,CACT,E,iBA6wBA,WACE,OAAOrK,KAAK6K,QACd,E,KAlXA,SAAcnK,GACZ,OAAKA,GACLV,KAAK5C,SAAQ,CAAC0E,EAAI2F,KAChB/G,EAASoK,MAAMhJ,EAAI,CAACA,EAAI2F,GAAO,IAE1BzH,MAJeA,IAKxB,E,MA8XA,WACE,IAAK,IAAI8C,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMhB,EAAK9B,KAAK8C,GAEhB,GAAoB,IAAhBhB,EAAGmB,SAAgB,CACrB,IAAK,IAAIoC,EAAI,EAAGA,EAAIvD,EAAGzD,WAAWf,OAAQ+H,GAAK,EACzCvD,EAAGzD,WAAWgH,GAAG0F,YACnBjJ,EAAGzD,WAAWgH,GAAG0F,WAAWC,YAAYlJ,EAAGzD,WAAWgH,IAI1DvD,EAAGmJ,YAAc,EACnB,CACF,CAEA,OAAOjL,IACT,E,GApTA,SAAYyH,GACV,QAAqB,IAAVA,EAAuB,OAAOzH,KACzC,MAAM1C,EAAS0C,KAAK1C,OAEpB,GAAImK,EAAQnK,EAAS,EACnB,OAAO+E,EAAE,IAGX,GAAIoF,EAAQ,EAAG,CACb,MAAMyD,EAAc5N,EAASmK,EAC7B,OAA4BpF,EAAxB6I,EAAc,EAAY,GACrB,CAAClL,KAAKkL,IACjB,CAEA,OAAO7I,EAAE,CAACrC,KAAKyH,IACjB,E,OAvGA,SAAgB/G,GAEd,OAAO2B,EADQJ,EAAYjC,KAAMU,GAEnC,E,KA+TA,SAAc4B,GACZ,MAAM6I,EAAgB,GAEtB,IAAK,IAAIrI,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMsI,EAAQpL,KAAK8C,GAAG/E,iBAAiBuE,GAEvC,IAAK,IAAI+C,EAAI,EAAGA,EAAI+F,EAAM9N,OAAQ+H,GAAK,EACrC8F,EAAcnJ,KAAKoJ,EAAM/F,GAE7B,CAEA,OAAOhD,EAAE8I,EACX,E,sCAn3BA,WAA8B,QAAAE,EAAA3H,UAAApG,OAATqI,EAAO1E,UAAAoK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAP3F,EAAO2F,GAAA5H,UAAA4H,GAC1B,MAAMzF,EAAalE,EAAUgE,EAAQG,KAAIC,GAAKA,EAAEzC,MAAM,QACtD,OAAOrB,EAAYjC,MAAM8B,GAChB+D,EAAW1D,QAAOoJ,GAAazJ,EAAGkE,UAAUwF,SAASD,KAAYjO,OAAS,IAChFA,OAAS,CACd,E,OAwaA,WACE,MAAMyD,EAASF,IAEf,OAAIb,KAAK,KAAOe,EACPA,EAAO0K,YAGZzL,KAAK1C,OAAS,EACT4K,WAAWlI,KAAK0L,IAAI,WAGtB,IACT,E,KAmCA,WACE,IAAK,IAAI5I,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGxE,MAAMqN,QAAU,OAG1B,OAAO3L,IACT,E,KAwEA,SAAcwC,GACZ,QAAoB,IAATA,EACT,OAAOxC,KAAK,GAAKA,KAAK,GAAG6C,UAAY,KAGvC,IAAK,IAAIC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGD,UAAYL,EAGtB,OAAOxC,IACT,E,MAwDA,WACE,IACI8C,EADA8I,EAAQ5L,KAAK,GAGjB,GAAI4L,EAAO,CAGT,IAFA9I,EAAI,EAEuC,QAAnC8I,EAAQA,EAAMC,kBACG,IAAnBD,EAAM3I,WAAgBH,GAAK,GAGjC,OAAOA,CACT,CAGF,E,YAgGA,SAAqBR,GACnB,MAAMwJ,EAAQzJ,EAAEC,GAEhB,IAAK,IAAIQ,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC,GAAqB,IAAjBgJ,EAAMxO,OACRwO,EAAM,GAAGf,WAAWgB,aAAa/L,KAAK8C,GAAIgJ,EAAM,GAAGE,kBAC9C,GAAIF,EAAMxO,OAAS,EACxB,IAAK,IAAI+H,EAAI,EAAGA,EAAIyG,EAAMxO,OAAQ+H,GAAK,EACrCyG,EAAMzG,GAAG0F,WAAWgB,aAAa/L,KAAK8C,GAAGmJ,WAAU,GAAOH,EAAMzG,GAAG2G,YAI3E,E,aA1BA,SAAsB1J,GACpB,MAAM4J,EAAS7J,EAAEC,GAEjB,IAAK,IAAIQ,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC,GAAsB,IAAlBoJ,EAAO5O,OACT4O,EAAO,GAAGnB,WAAWgB,aAAa/L,KAAK8C,GAAIoJ,EAAO,SAC7C,GAAIA,EAAO5O,OAAS,EACzB,IAAK,IAAI+H,EAAI,EAAGA,EAAI6G,EAAO5O,OAAQ+H,GAAK,EACtC6G,EAAO7G,GAAG0F,WAAWgB,aAAa/L,KAAK8C,GAAGmJ,WAAU,GAAOC,EAAO7G,GAI1E,E,GAvJA,SAAY/C,GACV,MAAMvB,EAASF,IACTvB,EAAWF,IACX0C,EAAK9B,KAAK,GAChB,IAAImM,EACArJ,EACJ,IAAKhB,QAA0B,IAAbQ,EAA0B,OAAO,EAEnD,GAAwB,iBAAbA,EAAuB,CAChC,GAAIR,EAAGsK,QAAS,OAAOtK,EAAGsK,QAAQ9J,GAClC,GAAIR,EAAGuK,sBAAuB,OAAOvK,EAAGuK,sBAAsB/J,GAC9D,GAAIR,EAAGwK,kBAAmB,OAAOxK,EAAGwK,kBAAkBhK,GAGtD,IAFA6J,EAAc9J,EAAEC,GAEXQ,EAAI,EAAGA,EAAIqJ,EAAY7O,OAAQwF,GAAK,EACvC,GAAIqJ,EAAYrJ,KAAOhB,EAAI,OAAO,EAGpC,OAAO,CACT,CAEA,GAAIQ,IAAahD,EACf,OAAOwC,IAAOxC,EAGhB,GAAIgD,IAAavB,EACf,OAAOe,IAAOf,EAGhB,GAAIuB,EAASW,UAAYX,aAAoBtB,EAAM,CAGjD,IAFAmL,EAAc7J,EAASW,SAAW,CAACX,GAAYA,EAE1CQ,EAAI,EAAGA,EAAIqJ,EAAY7O,OAAQwF,GAAK,EACvC,GAAIqJ,EAAYrJ,KAAOhB,EAAI,OAAO,EAGpC,OAAO,CACT,CAEA,OAAO,CACT,E,qHA+HA,SAAcQ,GACZ,OAAItC,KAAK1C,OAAS,EACZgF,EACEtC,KAAK,GAAGuM,oBAAsBlK,EAAErC,KAAK,GAAGuM,oBAAoBxC,GAAGzH,GAC1DD,EAAE,CAACrC,KAAK,GAAGuM,qBAGblK,EAAE,IAGPrC,KAAK,GAAGuM,mBAA2BlK,EAAE,CAACrC,KAAK,GAAGuM,qBAC3ClK,EAAE,IAGJA,EAAE,GACX,E,QAEA,SAAiBC,GACf,MAAMkK,EAAU,GAChB,IAAI1K,EAAK9B,KAAK,GACd,IAAK8B,EAAI,OAAOO,EAAE,IAElB,KAAOP,EAAGyK,oBAAoB,CAC5B,MAAME,EAAO3K,EAAGyK,mBAEZjK,EACED,EAAEoK,GAAM1C,GAAGzH,IAAWkK,EAAQxK,KAAKyK,GAClCD,EAAQxK,KAAKyK,GAEpB3K,EAAK2K,CACP,CAEA,OAAOpK,EAAEmK,EACX,E,IAxgBA,WAAsB,QAAAE,EAAAhJ,UAAApG,OAANqG,EAAI1C,UAAAyL,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhJ,EAAIgJ,GAAAjJ,UAAAiJ,GAClB,IAAKC,EAAWC,EAAgBC,EAAUC,GAAWpJ,EAE9B,mBAAZA,EAAK,MACbiJ,EAAWE,EAAUC,GAAWpJ,EACjCkJ,OAAiBvD,GAGdyD,IAASA,GAAU,GACxB,MAAMC,EAASJ,EAAUtJ,MAAM,KAE/B,IAAK,IAAIR,EAAI,EAAGA,EAAIkK,EAAO1P,OAAQwF,GAAK,EAAG,CACzC,MAAMmK,EAAQD,EAAOlK,GAErB,IAAK,IAAIuC,EAAI,EAAGA,EAAIrF,KAAK1C,OAAQ+H,GAAK,EAAG,CACvC,MAAMvD,EAAK9B,KAAKqF,GAChB,IAAI6H,EAQJ,IANKL,GAAkB/K,EAAGqL,cACxBD,EAAWpL,EAAGqL,cAAcF,GACnBJ,GAAkB/K,EAAGsL,oBAC9BF,EAAWpL,EAAGsL,kBAAkBH,IAG9BC,GAAYA,EAAS5P,OACvB,IAAK,IAAI+L,EAAI6D,EAAS5P,OAAS,EAAG+L,GAAK,EAAGA,GAAK,EAAG,CAChD,MAAMgE,EAAUH,EAAS7D,GAErByD,GAAYO,EAAQP,WAAaA,GAG1BA,GAAYO,EAAQP,UAAYO,EAAQP,SAASQ,WAAaD,EAAQP,SAASQ,YAAcR,GAFtGhL,EAAGpE,oBAAoBuP,EAAOI,EAAQE,cAAeR,GACrDG,EAASM,OAAOnE,EAAG,IAITyD,IACVhL,EAAGpE,oBAAoBuP,EAAOI,EAAQE,cAAeR,GACrDG,EAASM,OAAOnE,EAAG,GAEvB,CAEJ,CACF,CAEA,OAAOrJ,IACT,E,OA0JA,WACE,GAAIA,KAAK1C,OAAS,EAAG,CACnB,MAAMyD,EAASF,IACTvB,EAAWF,IACX0C,EAAK9B,KAAK,GACVyN,EAAM3L,EAAG4L,wBACTlQ,EAAO8B,EAAS9B,KAChBmQ,EAAY7L,EAAG6L,WAAanQ,EAAKmQ,WAAa,EAC9CC,EAAa9L,EAAG8L,YAAcpQ,EAAKoQ,YAAc,EACjDC,EAAY/L,IAAOf,EAASA,EAAO+M,QAAUhM,EAAG+L,UAChDE,EAAajM,IAAOf,EAASA,EAAOiN,QAAUlM,EAAGiM,WACvD,MAAO,CACLE,IAAKR,EAAIQ,IAAMJ,EAAYF,EAC3BO,KAAMT,EAAIS,KAAOH,EAAaH,EAElC,CAEA,OAAO,IACT,E,GAjSA,WAAqB,QAAAO,EAAAzK,UAAApG,OAANqG,EAAI1C,UAAAkN,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJzK,EAAIyK,GAAA1K,UAAA0K,GACjB,IAAKxB,EAAWC,EAAgBC,EAAUC,GAAWpJ,EASrD,SAAS0K,EAAgBnF,GACvB,MAAMjM,EAASiM,EAAEjM,OACjB,IAAKA,EAAQ,OACb,MAAMqR,EAAYpF,EAAEjM,OAAOsR,eAAiB,GAM5C,GAJID,EAAU5L,QAAQwG,GAAK,GACzBoF,EAAUE,QAAQtF,GAGhB7G,EAAEpF,GAAQ8M,GAAG8C,GAAiBC,EAAShC,MAAM7N,EAAQqR,OAAgB,CACvE,MAAMrE,EAAU5H,EAAEpF,GAAQgN,UAE1B,IAAK,IAAIZ,EAAI,EAAGA,EAAIY,EAAQ3M,OAAQ+L,GAAK,EACnChH,EAAE4H,EAAQZ,IAAIU,GAAG8C,IAAiBC,EAAShC,MAAMb,EAAQZ,GAAIiF,EAErE,CACF,CAEA,SAASG,EAAYvF,GACnB,MAAMoF,EAAYpF,GAAKA,EAAEjM,QAASiM,EAAEjM,OAAOsR,eAAsB,GAE7DD,EAAU5L,QAAQwG,GAAK,GACzBoF,EAAUE,QAAQtF,GAGpB4D,EAAShC,MAAM9K,KAAMsO,EACvB,CAjCuB,mBAAZ3K,EAAK,MACbiJ,EAAWE,EAAUC,GAAWpJ,EACjCkJ,OAAiBvD,GAGdyD,IAASA,GAAU,GA8BxB,MAAMC,EAASJ,EAAUtJ,MAAM,KAC/B,IAAI+B,EAEJ,IAAK,IAAIvC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMhB,EAAK9B,KAAK8C,GAEhB,GAAK+J,EAaH,IAAKxH,EAAI,EAAGA,EAAI2H,EAAO1P,OAAQ+H,GAAK,EAAG,CACrC,MAAM4H,EAAQD,EAAO3H,GAChBvD,EAAGsL,oBAAmBtL,EAAGsL,kBAAoB,IAC7CtL,EAAGsL,kBAAkBH,KAAQnL,EAAGsL,kBAAkBH,GAAS,IAChEnL,EAAGsL,kBAAkBH,GAAOjL,KAAK,CAC/B8K,WACAS,cAAec,IAEjBvM,EAAGrE,iBAAiBwP,EAAOoB,EAAiBtB,EAC9C,MArBA,IAAK1H,EAAI,EAAGA,EAAI2H,EAAO1P,OAAQ+H,GAAK,EAAG,CACrC,MAAM4H,EAAQD,EAAO3H,GAChBvD,EAAGqL,gBAAerL,EAAGqL,cAAgB,IACrCrL,EAAGqL,cAAcF,KAAQnL,EAAGqL,cAAcF,GAAS,IACxDnL,EAAGqL,cAAcF,GAAOjL,KAAK,CAC3B8K,WACAS,cAAekB,IAEjB3M,EAAGrE,iBAAiBwP,EAAOwB,EAAa1B,EAC1C,CAcJ,CAEA,OAAO/M,IACT,E,KAgDA,WACE,MAAMoF,EAAMpF,KAAK,QAAA0O,EAAAhL,UAAApG,OADFqG,EAAI1C,UAAAyN,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhL,EAAIgL,GAAAjL,UAAAiL,GAEnB,IAAKC,EAAW/B,EAAgBC,EAAUC,GAAWpJ,EAOrD,SAASkL,IAA0B,QAAAC,EAAApL,UAAApG,OAAXyR,EAAS9N,UAAA6N,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAATD,EAASC,GAAAtL,UAAAsL,GAC/BlC,EAAShC,MAAM9K,KAAM+O,GACrB3J,EAAI+D,IAAIyF,EAAW/B,EAAgBgC,EAAa9B,GAE5C8B,EAAYvB,kBACPuB,EAAYvB,SAEvB,CAGA,MAfuB,mBAAZ3J,EAAK,MACbiL,EAAW9B,EAAUC,GAAWpJ,EACjCkJ,OAAiBvD,GAYnBuF,EAAYvB,UAAYR,EACjB1H,EAAItB,GAAG8K,EAAW/B,EAAgBgC,EAAa9B,EACxD,E,YAuHA,SAAqBkC,GACnB,GAAIjP,KAAK1C,OAAS,EAAG,CACnB,GAAI2R,EAAgB,CAClB,MAAMC,EAASlP,KAAKkP,SACpB,OAAOlP,KAAK,GAAGmP,aAAejH,WAAWgH,EAAOhP,iBAAiB,eAAiBgI,WAAWgH,EAAOhP,iBAAiB,iBACvH,CAEA,OAAOF,KAAK,GAAGmP,YACjB,CAEA,OAAO,IACT,E,WAtCA,SAAoBF,GAClB,GAAIjP,KAAK1C,OAAS,EAAG,CACnB,GAAI2R,EAAgB,CAClB,MAAMC,EAASlP,KAAKkP,SACpB,OAAOlP,KAAK,GAAGoP,YAAclH,WAAWgH,EAAOhP,iBAAiB,iBAAmBgI,WAAWgH,EAAOhP,iBAAiB,eACxH,CAEA,OAAOF,KAAK,GAAGoP,WACjB,CAEA,OAAO,IACT,E,OA0YA,SAAgB9M,GACd,MAAM2H,EAAU,GAEhB,IAAK,IAAInH,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACT,OAAvB9C,KAAK8C,GAAGiI,aACNzI,EACED,EAAErC,KAAK8C,GAAGiI,YAAYhB,GAAGzH,IAAW2H,EAAQjI,KAAKhC,KAAK8C,GAAGiI,YAE7Dd,EAAQjI,KAAKhC,KAAK8C,GAAGiI,aAK3B,OAAO1I,EAAE4H,EACX,E,QAEA,SAAiB3H,GACf,MAAM2H,EAAU,GAEhB,IAAK,IAAInH,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,IAAI4G,EAAS1J,KAAK8C,GAAGiI,WAErB,KAAOrB,GACDpH,EACED,EAAEqH,GAAQK,GAAGzH,IAAW2H,EAAQjI,KAAK0H,GAEzCO,EAAQjI,KAAK0H,GAGfA,EAASA,EAAOqB,UAEpB,CAEA,OAAO1I,EAAE4H,EACX,E,QAxKA,SAAiBb,GACf,MAAM9J,EAAWF,IACjB,IAAI0D,EACAuC,EAEJ,IAAKvC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChC,GAAwB,iBAAbsG,EAAuB,CAChC,MAAMG,EAAUjK,EAASnB,cAAc,OAGvC,IAFAoL,EAAQ1G,UAAYuG,EAEf/D,EAAIkE,EAAQlL,WAAWf,OAAS,EAAG+H,GAAK,EAAGA,GAAK,EACnDrF,KAAK8C,GAAGiJ,aAAaxC,EAAQlL,WAAWgH,GAAIrF,KAAK8C,GAAGzE,WAAW,GAEnE,MAAO,GAAI+K,aAAoBpI,EAC7B,IAAKqE,EAAI,EAAGA,EAAI+D,EAAS9L,OAAQ+H,GAAK,EACpCrF,KAAK8C,GAAGiJ,aAAa3C,EAAS/D,GAAIrF,KAAK8C,GAAGzE,WAAW,SAGvD2B,KAAK8C,GAAGiJ,aAAa3C,EAAUpJ,KAAK8C,GAAGzE,WAAW,IAItD,OAAO2B,IACT,E,UAEA,SAAmB0J,GAEjB,OADArH,EAAEqH,GAAQ2F,QAAQrP,MACXA,IACT,E,KAiEA,SAAcsC,GACZ,GAAItC,KAAK1C,OAAS,EAAG,CACnB,MAAMwE,EAAK9B,KAAK,GAEhB,OAAIsC,EACER,EAAGwN,wBAA0BjN,EAAEP,EAAGwN,wBAAwBvF,GAAGzH,GACxDD,EAAE,CAACP,EAAGwN,yBAGRjN,EAAE,IAGPP,EAAGwN,uBAA+BjN,EAAE,CAACP,EAAGwN,yBACrCjN,EAAE,GACX,CAEA,OAAOA,EAAE,GACX,E,QAEA,SAAiBC,GACf,MAAMiN,EAAU,GAChB,IAAIzN,EAAK9B,KAAK,GACd,IAAK8B,EAAI,OAAOO,EAAE,IAElB,KAAOP,EAAGwN,wBAAwB,CAChC,MAAME,EAAO1N,EAAGwN,uBAEZhN,EACED,EAAEmN,GAAMzF,GAAGzH,IAAWiN,EAAQvN,KAAKwN,GAClCD,EAAQvN,KAAKwN,GAEpB1N,EAAK0N,CACP,CAEA,OAAOnN,EAAEkN,EACX,E,KAxwBA,SAAcnJ,EAAO3E,GACnB,GAAyB,IAArBiC,UAAUpG,QAAiC,iBAAV8I,EAG9B,CAEL,IAAK,IAAItD,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC,GAAyB,IAArBY,UAAUpG,OAEZ0C,KAAK8C,GAAGsD,GAAS3E,OAGjB,IAAK,MAAMgO,KAAYrJ,EACrBpG,KAAK8C,GAAG2M,GAAYrJ,EAAMqJ,GAKhC,OAAOzP,IACT,CAhBE,OAAIA,KAAK,GAAWA,KAAK,GAAGoG,GAkBvBpG,IACT,E,OAw0BA,WACE,IAAK,IAAI8C,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChC9C,KAAK8C,GAAGiI,YAAY/K,KAAK8C,GAAGiI,WAAWC,YAAYhL,KAAK8C,IAG9D,OAAO9C,IACT,E,WA52BA,SAAoBuK,GAClB,IAAK,IAAIzH,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAG4M,gBAAgBnF,GAG1B,OAAOvK,IACT,E,YAtDA,WAAiC,QAAA2P,EAAAjM,UAAApG,OAATqI,EAAO1E,UAAA0O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPjK,EAAOiK,GAAAlM,UAAAkM,GAC7B,MAAM/J,EAAalE,EAAUgE,EAAQG,KAAIC,GAAKA,EAAEzC,MAAM,QAItD,OAHAtD,KAAK5C,SAAQ0E,IACXA,EAAGkE,UAAU6E,UAAUhF,EAAW,IAE7B7F,IACT,E,WAwGA,SAAoB3C,GAClB,IAAK,IAAIyF,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMhB,EAAK9B,KAAK8C,GAEZhB,EAAGqI,wBAA0BrI,EAAGqI,uBAAuB9M,KACzDyE,EAAGqI,uBAAuB9M,GAAO,YAC1ByE,EAAGqI,uBAAuB9M,GAErC,CACF,E,6BA28BA,WAA6B,QAAAwS,EAAAnM,UAAApG,OAANqG,EAAI1C,UAAA4O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJnM,EAAImM,GAAApM,UAAAoM,GACzB,IAAK5B,EAAM3H,EAAUC,EAAQ9F,GAAYiD,EAErB,IAAhBA,EAAKrG,QAAkC,mBAAXkJ,KAC7B0H,EAAM3H,EAAU7F,EAAU8F,GAAU7C,GAGvC,MAAMyB,EAAMpF,KAEZ,YAAoB,IAATkO,EACL9I,EAAI9H,OAAS,EAAU8H,EAAI,GAAG2I,WAC3B,KAGF3I,EAAI2K,SAAS7B,OAAM5E,EAAW/C,EAAUC,EAAQ9F,EACzD,E,SA3IA,WACE,MAAMK,EAASF,IAAY,QAAAmP,EAAAtM,UAAApG,OADRqG,EAAI1C,UAAA+O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJtM,EAAIsM,GAAAvM,UAAAuM,GAEvB,IAAK/B,EAAMD,EAAK1H,EAAUC,EAAQ9F,GAAYiD,EAQ9C,OANoB,IAAhBA,EAAKrG,QAAkC,mBAAXkJ,IAC9B9F,EAAW8F,GACV0H,EAAMD,EAAK1H,EAAU7F,EAAU8F,GAAU7C,QAGtB,IAAX6C,IAAwBA,EAAS,SACrCxG,KAAKmH,MAAK,WACf,MAAMrF,EAAK9B,KACX,IAAIkQ,EACAC,EACAC,EACAC,EACAC,EACAC,EACA1C,EAEAE,EAEAyC,EAAavC,EAAM,GAAa,IAARA,EACxBwC,EAAcvC,EAAO,GAAc,IAATA,EAsB9B,QApBsB,IAAX1H,IACTA,EAAS,SAGPgK,IACFN,EAAapO,EAAG+L,UAEXtH,IACHzE,EAAG+L,UAAYI,IAIfwC,IACFN,EAAcrO,EAAGiM,WAEZxH,IACHzE,EAAGiM,WAAaG,KAIf3H,EAAU,OAEXiK,IACFJ,EAAStO,EAAG4O,aAAe5O,EAAGqN,aAC9BmB,EAASxJ,KAAK+B,IAAI/B,KAAKgC,IAAImF,EAAKmC,GAAS,IAGvCK,IACFJ,EAAUvO,EAAG6O,YAAc7O,EAAGsN,YAC9BmB,EAAUzJ,KAAK+B,IAAI/B,KAAKgC,IAAIoF,EAAMmC,GAAU,IAG9C,IAAIhI,EAAY,KACZmI,GAAcF,IAAWJ,IAAYM,GAAa,GAClDC,GAAeF,IAAYJ,IAAaM,GAAc,GA2C1D1P,EAAON,uBAzCP,SAASgI,EAAOL,QAAI,IAAJA,OAAO,IAAIhI,MAAOuI,WACd,OAAdN,IACFA,EAAYD,GAGd,MAAMvB,EAAWC,KAAK+B,IAAI/B,KAAKgC,KAAKV,EAAOC,GAAa9B,EAAU,GAAI,GAChEmC,EAA0B,WAAXlC,EAAsBK,EAAW,GAAMC,KAAKC,IAAIF,EAAWC,KAAKE,IAAM,EAC3F,IAAIK,EACAmJ,IAAY3C,EAAYqC,EAAaxH,GAAgB4H,EAASJ,IAC9DO,IAAa1C,EAAaoC,EAAczH,GAAgB6H,EAAUJ,IAElEK,GAAcF,EAASJ,GAAcrC,GAAayC,IACpDxO,EAAG+L,UAAYyC,EACfjJ,GAAO,GAGLmJ,GAAcF,EAASJ,GAAcrC,GAAayC,IACpDxO,EAAG+L,UAAYyC,EACfjJ,GAAO,GAGLoJ,GAAeF,EAAUJ,GAAepC,GAAcwC,IACxDzO,EAAGiM,WAAawC,EAChBlJ,GAAO,GAGLoJ,GAAeF,EAAUJ,GAAepC,GAAcwC,IACxDzO,EAAGiM,WAAawC,EAChBlJ,GAAO,GAGLA,EACE3G,GAAUA,KAIZ8P,IAAY1O,EAAG+L,UAAYA,GAC3B4C,IAAa3O,EAAGiM,WAAaA,GACjChN,EAAON,sBAAsBgI,GAC/B,GAGF,GACF,E,UAGA,WAA4B,QAAAmI,EAAAlN,UAAApG,OAANqG,EAAI1C,UAAA2P,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJlN,EAAIkN,GAAAnN,UAAAmN,GACxB,IAAK5C,EAAK1H,EAAUC,EAAQ9F,GAAYiD,EAEpB,IAAhBA,EAAKrG,QAAkC,mBAAXkJ,KAC7ByH,EAAK1H,EAAU7F,EAAU8F,GAAU7C,GAGtC,MAAMyB,EAAMpF,KAEZ,YAAmB,IAARiO,EACL7I,EAAI9H,OAAS,EAAU8H,EAAI,GAAGyI,UAC3B,KAGFzI,EAAI2K,cAASzG,EAAW2E,EAAK1H,EAAUC,EAAQ9F,EACxD,E,KA3kBA,WACE,MAAMK,EAASF,IAEf,IAAK,IAAIiC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMhB,EAAK9B,KAAK8C,GAES,SAArBhB,EAAGxD,MAAMqN,UACX7J,EAAGxD,MAAMqN,QAAU,IAGiD,SAAlE5K,EAAOd,iBAAiB6B,EAAI,MAAM5B,iBAAiB,aAErD4B,EAAGxD,MAAMqN,QAAU,QAEvB,CAEA,OAAO3L,IACT,E,SA4TA,SAAkBsC,GAChB,OAAOtC,KAAK8Q,QAAQxO,GAAU2D,IAAIjG,KAAK+Q,QAAQzO,GACjD,E,KAkdA,WACE,MAAMiD,EAAMvF,KAEZ,IAAK,IAAI8C,EAAI,EAAGA,EAAIyC,EAAIjI,OAAQwF,GAAK,EAC/ByC,EAAIzC,GAAGsE,qBACT7B,EAAIzC,GAAGsE,oBAAoBH,MAGjC,E,OAtxBA,WACE,MAAMlG,EAASF,IACf,OAAIb,KAAK,GAAWe,EAAOd,iBAAiBD,KAAK,GAAI,MAC9C,EACT,E,cA2DA,SAAcgR,GACZ,QAAoB,IAATA,EACT,OAAOhR,KAAK,GAAKA,KAAK,GAAGiL,YAAYxI,OAAS,KAGhD,IAAK,IAAIK,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGmI,YAAc+F,EAGxB,OAAOhR,IACT,E,YAzkBA,WAAiC,QAAAiR,EAAAvN,UAAApG,OAATqI,EAAO1E,UAAAgQ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPvL,EAAOuL,GAAAxN,UAAAwN,GAC7B,MAAMrL,EAAalE,EAAUgE,EAAQG,KAAIC,GAAKA,EAAEzC,MAAM,QACtDtD,KAAK5C,SAAQ0E,IACX+D,EAAWzI,SAAQmO,IACjBzJ,EAAGkE,UAAUmL,OAAO5F,EAAU,GAC9B,GAEN,E,8CA2KA,SAAmB6F,GACjB,IAAK,IAAItO,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGxE,MAAM8S,UAAYA,EAG5B,OAAOpR,IACT,E,WAEA,SAAoBuG,GAClB,IAAK,IAAIzD,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGxE,MAAM+S,mBAAyC,iBAAb9K,EAAyB,GAAEA,MAAeA,EAGtF,OAAOvG,IACT,E,cA2LA,SAAuBU,GACrB,MAAM0E,EAAMpF,KAYZ,OAJIU,GACF0E,EAAItB,GAAG,iBAPT,SAASmF,EAAaC,GAChBA,EAAEjM,SAAW+C,OACjBU,EAAS0B,KAAKpC,KAAMkJ,GACpB9D,EAAI+D,IAAI,gBAAiBF,GAC3B,IAMOjJ,IACT,E,gBA9BA,SAAyBU,GACvB,MAAM0E,EAAMpF,KAYZ,OAJIU,GACF0E,EAAItB,GAAG,mBAPT,SAASmF,EAAaC,GAChBA,EAAEjM,SAAW+C,OACjBU,EAAS0B,KAAKpC,KAAMkJ,GACpB9D,EAAI+D,IAAI,kBAAmBF,GAC7B,IAMOjJ,IACT,E,QA1CA,WACE,MAAMe,EAASF,IAAY,QAAAyQ,EAAA5N,UAAApG,OADTqG,EAAI1C,UAAAqQ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5N,EAAI4N,GAAA7N,UAAA6N,GAEtB,MAAMvE,EAASrJ,EAAK,GAAGL,MAAM,KACvBgL,EAAY3K,EAAK,GAEvB,IAAK,IAAIb,EAAI,EAAGA,EAAIkK,EAAO1P,OAAQwF,GAAK,EAAG,CACzC,MAAMmK,EAAQD,EAAOlK,GAErB,IAAK,IAAIuC,EAAI,EAAGA,EAAIrF,KAAK1C,OAAQ+H,GAAK,EAAG,CACvC,MAAMvD,EAAK9B,KAAKqF,GAEhB,GAAItE,EAAOhB,YAAa,CACtB,MAAMyR,EAAM,IAAIzQ,EAAOhB,YAAYkN,EAAO,CACxCwE,OAAQnD,EACRoD,SAAS,EACTC,YAAY,IAEd7P,EAAGyM,cAAgB5K,EAAKxB,QAAO,CAACyP,EAAMC,IAAcA,EAAY,IAChE/P,EAAGgQ,cAAcN,GACjB1P,EAAGyM,cAAgB,UACZzM,EAAGyM,aACZ,CACF,CACF,CAEA,OAAOvO,IACT,E,IA9NA,SAAayB,GACX,QAAqB,IAAVA,EAAuB,CAEhC,MAAMK,EAAK9B,KAAK,GAChB,IAAK8B,EAAI,OAET,GAAIA,EAAGiQ,UAA0C,WAA9BjQ,EAAGjE,SAAS4M,cAA4B,CACzD,MAAMuH,EAAS,GAEf,IAAK,IAAIlP,EAAI,EAAGA,EAAIhB,EAAGmQ,gBAAgB3U,OAAQwF,GAAK,EAClDkP,EAAOhQ,KAAKF,EAAGmQ,gBAAgBnP,GAAGrB,OAGpC,OAAOuQ,CACT,CAEA,OAAOlQ,EAAGL,KACZ,CAGA,IAAK,IAAIqB,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMhB,EAAK9B,KAAK8C,GAEhB,GAAI7B,MAAMc,QAAQN,IAAUK,EAAGiQ,UAA0C,WAA9BjQ,EAAGjE,SAAS4M,cACrD,IAAK,IAAIpF,EAAI,EAAGA,EAAIvD,EAAGoQ,QAAQ5U,OAAQ+H,GAAK,EAC1CvD,EAAGoQ,QAAQ7M,GAAG8M,SAAW1Q,EAAMiB,QAAQZ,EAAGoQ,QAAQ7M,GAAG5D,QAAU,OAGjEK,EAAGL,MAAQA,CAEf,CAEA,OAAOzB,IACT,E,MAEA,SAAeyB,GACb,OAAOzB,KAAKoS,IAAI3Q,EAClB,E,MA2OA,WACE,MAAMV,EAASF,IAEf,OAAIb,KAAK,KAAOe,EACPA,EAAOsR,WAGZrS,KAAK1C,OAAS,EACT4K,WAAWlI,KAAK0L,IAAI,UAGtB,IACT,ICvjBA3O,OAAOI,KAAKmV,GAASlV,SAASmV,IACT,MAAfA,IACJD,EAAUlP,GAAGmP,GAAcD,EAAQC,GAAW,IAGhD,IAAAlQ,EAAeiQ,ECPf,SAASE,EAAOC,GACd,OAAOA,EAAM,GAAK,EAAI,IAAMA,EAAM,EAAI,CACxC,CAEA,SAASC,EAAKC,EAAO1L,EAAM2L,GACzB,OAAQ,EAAIA,GAAUD,EAAQC,EAAS3L,CACzC,CAMA,SAAS4L,EAAY/J,EAAKD,EAAKiK,GAC7B,OAAOA,EAAQhK,EAAMA,EAAMgK,EAAQjK,EAAMA,EAAMiK,CACjD,CAEA,SAASC,EAAsBC,GAC7B,OAAQA,GAAW,KAAO,IAAMA,GAAW,KAAMA,CACnD,CAUA,SAASC,EAAeC,EAAKC,GAC3B,MAAO,CAAED,EAAI,GAAKC,EAAO,GAAG,GAAKD,EAAI,GAAKC,EAAO,GAAG,GAAKD,EAAI,GAAKC,EAAO,GAAG,GAAID,EAAI,GAAKC,EAAO,GAAG,GAAKD,EAAI,GAAKC,EAAO,GAAG,GAAKD,EAAI,GAAKC,EAAO,GAAG,GAAID,EAAI,GAAKC,EAAO,GAAG,GAAKD,EAAI,GAAKC,EAAO,GAAG,GAAKD,EAAI,GAAKC,EAAO,GAAG,GAC5N,CAEA,MAAMC,EAAc,CAAE,CAAE,UAAW,UAAW,WAAa,CAAE,MAAO,MAAO,OAAS,CAAE,UAAW,UAAW,YAAeC,EAAc,CAAE,CAAE,oBAAqB,oBAAqB,oBAAsB,EAAG,kBAAmB,mBAAoB,oBAAsB,CAAE,oBAAqB,mBAAoB,qBAAwBC,EAAkB,CAAE,OAAQ,IAAK,SAEjX,SAASC,EAAYC,EAAKC,EAAOC,GAC/B,OAAQ,KAAO,IAAM,IAAMF,IAAQ,IAAM,IAAMC,IAAU,EAAI,IAAMC,KAAU,CAC/E,CAEA,SAASC,EAAeC,GACtB,OAAOL,EAAYM,EAAaD,EAAO,IAAKC,EAAaD,EAAO,IAAKC,EAAaD,EAAO,IAC3F,CAEA,SAASE,EAAYC,GACnB,OAAOA,GAAQ,GAAK,GACtB,CAEA,SAASC,EAAcD,GACrB,OAAOA,GAAQ,EAAI,GACrB,CAEA,SAASE,EAAaF,GACpB,OAAO,IAAMA,CACf,CAgBA,SAASG,EAAcH,GACrB,OAAO,IAAMI,GAVf,SAAqBJ,GACnB,OAAOd,EAAe,CAAEmB,EAAWN,EAAYC,IAAQK,EAAWJ,EAAcD,IAAQK,EAAWH,EAAaF,KAAUX,EAC5H,CAQoBiB,CAAYN,GAAM,GAAK,KAAO,EAClD,CAEA,SAASO,EAAWC,GAClB,OAAO,IA2BT,SAAiBC,GACf,MAAMC,EAAMD,EAAKA,EAAKA,EACtB,OAAOC,EAAM,IAAM,MAAQA,GAAO,IAAMD,EAAK,IAAM,iBACrD,CA9BeE,EAASH,EAAQ,IAAM,IACtC,CAEA,SAASI,EAAWC,GAClB,OAAO,IAAMT,GAAKS,EAAI,KAAO,EAC/B,CAEA,SAASR,EAAWS,GAClB,MAAMC,EAAaD,EAAe,IAClC,OAAOC,GAAc,WAAaA,EAAa,MAAQ,IAAM,IAAMhO,KAAKiO,KAAKD,EAAa,MAAQ,MAAO,IAC3G,CAEA,SAASjB,EAAagB,GACpB,MAAMC,EAAaD,EAAe,IAClC,IAAIhB,EAAe,EACnB,OAAOA,EAAeiB,GAAc,SAAW,MAAQA,EAAa,MAAQhO,KAAKiO,IAAID,EAAY,EAAI,KAAO,KAhF5FhM,EAiFP,EAjFYD,EAiFT,KAjFciK,EAiFThM,KAAKkO,MAAM,IAAMnB,IAhFnB/K,EAAMA,EAAMgK,EAAQjK,EAAMA,EAAMiK,EADjD,IAAkBhK,EAAKD,EAAKiK,CAkF5B,CAMA,SAASqB,GAAKc,GACZ,OAAOA,EAAI,IAAM,MAAQnO,KAAKiO,IAAIE,EAAG,EAAI,IAAM,kBAAoBA,EAAI,IAAM,GAC/E,CAOA,MAAMC,GACJ,WAAOC,CAAKC,EAA8BC,EAA0DC,EAAsBC,EAAcC,QAAlH,IAAVJ,MAbL9B,QAaoD,IAAjB+B,MAAoB,IAAMvO,KAAKE,GAAKsN,EAAW,IAAM,UAAoB,IAAfgB,MAAkB,SAAY,IAARC,MAAW,QAAwB,IAArBC,OAAwB,GAC9J,MAAMC,EAAML,EAAYM,EAAK,QAAUD,EAAI,GAAK,QAAUA,EAAI,IAAM,QAAUA,EAAI,GAAIE,GAAM,QAAUF,EAAI,GAAK,SAAWA,EAAI,GAAK,QAAUA,EAAI,GAAIG,GAAM,QAAUH,EAAI,GAAK,QAAUA,EAAI,GAAK,QAAUA,EAAI,GAAII,EAAI,GAAKN,EAAW,GAAIxP,EAAI8P,GAAK,GAAKnD,EAAK,IAAK,IAAK,IAAMmD,EAAI,KAAOnD,EAAK,KAAM,IAAK,IAAMmD,EAAI,KACnT,IAAIC,EAAIN,EAAwB,EAAIK,GAAK,EAAI,EAAI,IAAM/O,KAAKiP,MAAMV,EAAoB,IAAM,KAC5FS,EAAIA,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,EAC5B,MAAME,EAAKH,EAAGI,EAAO,CAAEH,GAAK,IAAMJ,GAAM,EAAII,EAAGA,GAAK,IAAMH,GAAM,EAAIG,EAAGA,GAAK,IAAMF,GAAM,EAAIE,GAAKzM,EAAI,GAAK,EAAIgM,EAAoB,GAAIa,EAAK7M,EAAIA,EAAIA,EAAIA,EAAG8M,EAAM,EAAID,EAAIE,EAAKF,EAAKb,EAAoB,GAAKc,EAAMA,EAAMrP,KAAKuP,KAAK,EAAIhB,GAAoBiB,EAAIhC,EAAWgB,GAAmBF,EAAW,GAAImB,EAAI,KAAOzP,KAAK0P,KAAKF,GAAIG,EAAM,KAAO3P,KAAKiO,IAAIuB,EAAG,IAAKI,EAAMD,EAAKE,EAAc,CAAE7P,KAAKiO,IAAIqB,EAAKH,EAAK,GAAKP,EAAK,IAAK,KAAM5O,KAAKiO,IAAIqB,EAAKH,EAAK,GAAKN,EAAK,IAAK,KAAM7O,KAAKiO,IAAIqB,EAAKH,EAAK,GAAKL,EAAK,IAAK,MAAQgB,EAAO,CAAE,IAAMD,EAAY,IAAMA,EAAY,GAAK,OAAQ,IAAMA,EAAY,IAAMA,EAAY,GAAK,OAAQ,IAAMA,EAAY,IAAMA,EAAY,GAAK,QAC1oB,OAAO,IAAIzB,GAAkBoB,GAAI,EAAIM,EAAK,GAAKA,EAAK,GAAK,IAAMA,EAAK,IAAMH,EAAKA,EAAKC,EAAK3Q,EAAGiQ,EAAIC,EAAMG,EAAItP,KAAKiO,IAAIqB,EAAI,KAAMG,EAC/H,CACAzZ,YAAYwZ,EAAGO,EAAIJ,EAAKC,EAAK3Q,EAAGiQ,EAAIC,EAAMG,EAAIU,EAAQP,GACpDvW,KAAKsW,EAAIA,EAAGtW,KAAK6W,GAAKA,EAAI7W,KAAKyW,IAAMA,EAAKzW,KAAK0W,IAAMA,EAAK1W,KAAK+F,EAAIA,EAAG/F,KAAKgW,GAAKA,EAChFhW,KAAKiW,KAAOA,EAAMjW,KAAKoW,GAAKA,EAAIpW,KAAK8W,OAASA,EAAQ9W,KAAKuW,EAAIA,CACjE,EAGFrB,GAAkB6B,QAAU7B,GAAkBC,OAE9C,MAAM6B,GACJla,YAAYma,EAAKC,EAAQ7R,EAAG8R,EAAGC,EAAGC,EAAGC,EAAOC,EAAOC,GACjDxX,KAAKiX,IAAMA,EAAKjX,KAAKkX,OAASA,EAAQlX,KAAKqF,EAAIA,EAAGrF,KAAKmX,EAAIA,EAAGnX,KAAKoX,EAAIA,EAAGpX,KAAKqX,EAAIA,EACnFrX,KAAKsX,MAAQA,EAAOtX,KAAKuX,MAAQA,EAAOvX,KAAKwX,MAAQA,CACvD,CACAC,SAASC,GACP,MAAMC,EAAK3X,KAAKsX,MAAQI,EAAMJ,MAAOM,EAAK5X,KAAKuX,MAAQG,EAAMH,MAAOM,EAAK7X,KAAKwX,MAAQE,EAAMF,MAAOM,EAAUhR,KAAK0P,KAAKmB,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GAChJ,OAAO,KAAO/Q,KAAKiO,IAAI+C,EAAS,IAClC,CACA,cAAOC,CAAQhE,GACb,OAAOiD,GAAMgB,2BAA2BjE,EAAMmB,GAAkB6B,QAClE,CACA,iCAAOiB,CAA2BjE,EAAMkE,GACtC,MAAMxE,GAAS,MAAQM,IAAS,EAAGL,EAAO,IAAMK,EAAMmE,EAAO9D,GAAY,SAAWL,IAAS,IAAKoE,EAAS/D,EAAWX,GAAQ2E,EAAQhE,EAAWV,GAAO2E,EAAI,UAAYH,EAAO,UAAYC,EAAS,UAAYC,EAAOxD,EAAI,MAAQsD,EAAO,MAAQC,EAAS,MAAQC,EAAO7B,EAAI,UAAY2B,EAAO,UAAYC,EAAS,UAAYC,EAAOE,EAAK,QAAUD,EAAI,QAAUzD,EAAI,QAAU2B,EAAGgC,GAAM,QAAUF,EAAI,SAAWzD,EAAI,QAAU2B,EAAGiC,GAAM,QAAUH,EAAI,QAAUzD,EAAI,QAAU2B,EAAGkC,EAAKR,EAAkBhC,KAAK,GAAKqC,EAAII,EAAKT,EAAkBhC,KAAK,GAAKsC,EAAII,EAAKV,EAAkBhC,KAAK,GAAKuC,EAAII,EAAM9R,KAAKiO,IAAIkD,EAAkB7B,GAAKtP,KAAK+R,IAAIJ,GAAM,IAAK,KAAMK,EAAMhS,KAAKiO,IAAIkD,EAAkB7B,GAAKtP,KAAK+R,IAAIH,GAAM,IAAK,KAAMK,EAAMjS,KAAKiO,IAAIkD,EAAkB7B,GAAKtP,KAAK+R,IAAIF,GAAM,IAAK,KAAMK,EAAK,IAAMxG,EAAOiG,GAAMG,GAAOA,EAAM,OAAQK,EAAK,IAAMzG,EAAOkG,GAAMI,GAAOA,EAAM,OAAQI,EAAK,IAAM1G,EAAOmG,GAAMI,GAAOA,EAAM,OAAQhW,GAAK,GAAKiW,GAAM,GAAKC,EAAKC,GAAM,GAAIC,GAAKH,EAAKC,EAAK,EAAIC,GAAM,EAAGE,GAAK,GAAKJ,EAAK,GAAKC,EAAK,GAAKC,GAAM,GAAIG,GAAM,GAAKL,EAAK,GAAKC,EAAKC,GAAM,GAAII,EAAc,IAAMxS,KAAKyS,MAAMJ,EAAGpW,GAAK+D,KAAKE,GAAIiQ,EAAMqC,EAAc,EAAIA,EAAc,IAAMA,GAAe,IAAMA,EAAc,IAAMA,EAAaE,EAAavC,EAAMnQ,KAAKE,GAAK,IAAKyS,EAAKJ,EAAKpB,EAAkBxB,IAAKpR,EAAI,IAAMyB,KAAKiO,IAAI0E,EAAKxB,EAAkBpB,GAAIoB,EAAkBlS,EAAIkS,EAAkB1B,GAAIY,EAAI,EAAIc,EAAkBlS,EAAIe,KAAK0P,KAAKnR,EAAI,MAAQ4S,EAAkBpB,GAAK,GAAKoB,EAAkBnB,OAAQ4C,EAAWzC,EAAM,MAAQA,EAAM,IAAMA,EAAKhC,EAAI,IAAM,IAAM,KAAOnO,KAAKC,IAAI2S,EAAW5S,KAAKE,GAAK,IAAM,GAAK,MAAQiR,EAAkBjC,GAAKiC,EAAkBvB,IAAM5P,KAAK0P,KAAKzT,EAAIA,EAAIoW,EAAIA,IAAMC,EAAI,MAAOO,EAAQ7S,KAAKiO,IAAIE,EAAG,IAAMnO,KAAKiO,IAAI,KAAOjO,KAAKiO,IAAI,IAAKkD,EAAkB3B,GAAI,KAAMvQ,EAAI4T,EAAQ7S,KAAK0P,KAAKnR,EAAI,KAAM+R,EAAIrR,EAAIkS,EAAkBnB,OAAQO,EAAI,GAAKvQ,KAAK0P,KAAKmD,EAAQ1B,EAAkBlS,GAAKkS,EAAkBpB,GAAK,IAAKS,GAAS,EAAI,IAAM,MAAQjS,GAAK,EAAI,KAAOA,GAAIuU,EAAQ,EAAI,MAAQ9S,KAAK+S,IAAI,EAAI,MAAQzC,GAAIG,EAAQqC,EAAQ9S,KAAKC,IAAIyS,GAAahC,EAAQoC,EAAQ9S,KAAKgT,IAAIN,GACx/D,OAAO,IAAIxC,GAAMC,EAAKlR,EAAGV,EAAG8R,EAAGC,EAAGC,EAAGC,EAAOC,EAAOC,EACrD,CACA,cAAOuC,CAAQ1U,EAAGU,EAAGiU,GACnB,OAAOhD,GAAMiD,2BAA2B5U,EAAGU,EAAGiU,EAAG9E,GAAkB6B,QACrE,CACA,iCAAOkD,CAA2B5U,EAAGU,EAAGiU,EAAG/B,GACzC,MAAMd,EAAI,EAAIc,EAAkBlS,EAAIe,KAAK0P,KAAKnR,EAAI,MAAQ4S,EAAkBpB,GAAK,GAAKoB,EAAkBnB,OAAQM,EAAIrR,EAAIkS,EAAkBnB,OAAQ6C,EAAQ5T,EAAIe,KAAK0P,KAAKnR,EAAI,KAAMgS,EAAI,GAAKvQ,KAAK0P,KAAKmD,EAAQ1B,EAAkBlS,GAAKkS,EAAkBpB,GAAK,IAAK2C,EAAaQ,EAAIlT,KAAKE,GAAK,IAAKsQ,GAAS,EAAI,IAAM,MAAQjS,GAAK,EAAI,KAAOA,GAAIuU,EAAQ,EAAI,MAAQ9S,KAAK+S,IAAI,EAAI,MAAQzC,GAAIG,EAAQqC,EAAQ9S,KAAKC,IAAIyS,GAAahC,EAAQoC,EAAQ9S,KAAKgT,IAAIN,GAC3b,OAAO,IAAIxC,GAAMgD,EAAGjU,EAAGV,EAAG8R,EAAGC,EAAGC,EAAGC,EAAOC,EAAOC,EACnD,CACA,cAAO0C,CAAQ5C,EAAOC,EAAOC,GAC3B,OAAOR,GAAMmD,2BAA2B7C,EAAOC,EAAOC,EAAOtC,GAAkB6B,QACjF,CACA,iCAAOoD,CAA2B7C,EAAOC,EAAOC,EAAOS,GACrD,MAAMlV,EAAIwU,EAAO4B,EAAI3B,EAAOJ,EAAItQ,KAAK0P,KAAKzT,EAAIA,EAAIoW,EAAIA,GAAIpT,GAAKe,KAAKiP,IAAI,MAAQqB,GAAK,GAAK,MAAQa,EAAkBnB,OACpH,IAAIkD,EAAIlT,KAAKyS,MAAMJ,EAAGpW,IAAM,IAAM+D,KAAKE,IACvCgT,EAAI,IAAMA,GAAK,KACf,MAAM3U,EAAIiS,GAAS,EAAI,MAAQA,EAAQ,MACvC,OAAON,GAAMiD,2BAA2B5U,EAAGU,EAAGiU,EAAG/B,EACnD,CACAmC,QACE,OAAOpa,KAAKqa,OAAOnF,GAAkB6B,QACvC,CACAsD,OAAOpC,GACL,MAAM0B,EAAQ,IAAM3Z,KAAKkX,QAAU,IAAMlX,KAAKqF,EAAI,EAAIrF,KAAKkX,OAASpQ,KAAK0P,KAAKxW,KAAKqF,EAAI,KAAM4P,EAAInO,KAAKiO,IAAI4E,EAAQ7S,KAAKiO,IAAI,KAAOjO,KAAKiO,IAAI,IAAKkD,EAAkB3B,GAAI,KAAM,EAAI,IAAKgE,EAAOta,KAAKiX,IAAMnQ,KAAKE,GAAK,IAAKuT,EAAO,KAAOzT,KAAKC,IAAIuT,EAAO,GAAK,KAAMb,EAAKxB,EAAkBpB,GAAK/P,KAAKiO,IAAI/U,KAAKqF,EAAI,IAAK,EAAI4S,EAAkBlS,EAAIkS,EAAkB1B,GAAIiE,EAAKD,GAAQ,IAAM,IAAMtC,EAAkBjC,GAAKiC,EAAkBvB,IAAK2C,EAAKI,EAAKxB,EAAkBxB,IAAKgE,EAAO3T,KAAKgT,IAAIQ,GAAOI,EAAO5T,KAAKC,IAAIuT,GAAOK,EAAQ,IAAMtB,EAAK,MAAQpE,GAAK,GAAKuF,EAAK,GAAKvF,EAAIyF,EAAO,IAAMzF,EAAIwF,GAAO1X,EAAI4X,EAAQD,EAAMvB,EAAIwB,EAAQF,EAAMzB,GAAM,IAAMK,EAAK,IAAMtW,EAAI,IAAMoW,GAAK,KAAMF,GAAM,IAAMI,EAAK,IAAMtW,EAAI,IAAMoW,GAAK,KAAMD,GAAM,IAAMG,EAAK,IAAMtW,EAAI,KAAOoW,GAAK,KAAMyB,EAAS9T,KAAK+B,IAAI,EAAG,MAAQ/B,KAAK+R,IAAIG,IAAO,IAAMlS,KAAK+R,IAAIG,KAAOV,EAAK9F,EAAOwG,IAAO,IAAMf,EAAkB7B,IAAMtP,KAAKiO,IAAI6F,EAAQ,EAAI,KAAMC,EAAS/T,KAAK+B,IAAI,EAAG,MAAQ/B,KAAK+R,IAAII,IAAO,IAAMnS,KAAK+R,IAAII,KAAOV,EAAK/F,EAAOyG,IAAO,IAAMhB,EAAkB7B,IAAMtP,KAAKiO,IAAI8F,EAAQ,EAAI,KAAMC,EAAShU,KAAK+B,IAAI,EAAG,MAAQ/B,KAAK+R,IAAIK,IAAO,IAAMpS,KAAK+R,IAAIK,KAAOV,EAAKhG,EAAO0G,IAAO,IAAMjB,EAAkB7B,IAAMtP,KAAKiO,IAAI+F,EAAQ,EAAI,KAAMC,EAAKzC,EAAKL,EAAkBhC,KAAK,GAAI+E,EAAKzC,EAAKN,EAAkBhC,KAAK,GAAIgF,EAAKzC,EAAKP,EAAkBhC,KAAK,GACpwC,OAzGJ,SAAqBoC,EAAGzD,EAAG2B,GACzB,MAAMpD,EAASE,EAAa6H,EAAU/H,EAAO,GAAG,GAAKkF,EAAIlF,EAAO,GAAG,GAAKyB,EAAIzB,EAAO,GAAG,GAAKoD,EAAG4E,EAAUhI,EAAO,GAAG,GAAKkF,EAAIlF,EAAO,GAAG,GAAKyB,EAAIzB,EAAO,GAAG,GAAKoD,EAAG6E,EAAUjI,EAAO,GAAG,GAAKkF,EAAIlF,EAAO,GAAG,GAAKyB,EAAIzB,EAAO,GAAG,GAAKoD,EAC/N,OAAOhD,EAAYM,EAAaqH,GAAUrH,EAAasH,GAAUtH,EAAauH,GAChF,CAsGWC,CAAY,WAAaN,EAAK,WAAaC,EAAK,UAAYC,EAAI,UAAYF,EAAK,UAAYC,EAAK,UAAYC,GAAK,SAAWF,EAAK,UAAYC,EAAK,WAAaC,EAC1K,CACA,iCAAOK,CAA2BjD,EAAGzD,EAAG2B,EAAG0B,GACzC,MAAMK,EAAK,QAAUD,EAAI,QAAUzD,EAAI,QAAU2B,EAAGgC,GAAM,QAAUF,EAAI,SAAWzD,EAAI,QAAU2B,EAAGiC,GAAM,QAAUH,EAAI,QAAUzD,EAAI,QAAU2B,EAAGkC,EAAKR,EAAkBhC,KAAK,GAAKqC,EAAII,EAAKT,EAAkBhC,KAAK,GAAKsC,EAAII,EAAKV,EAAkBhC,KAAK,GAAKuC,EAAII,EAAM9R,KAAKiO,IAAIkD,EAAkB7B,GAAKtP,KAAK+R,IAAIJ,GAAM,IAAK,KAAMK,EAAMhS,KAAKiO,IAAIkD,EAAkB7B,GAAKtP,KAAK+R,IAAIH,GAAM,IAAK,KAAMK,EAAMjS,KAAKiO,IAAIkD,EAAkB7B,GAAKtP,KAAK+R,IAAIF,GAAM,IAAK,KAAMK,EAAK,IAAMxG,EAAOiG,GAAMG,GAAOA,EAAM,OAAQK,EAAK,IAAMzG,EAAOkG,GAAMI,GAAOA,EAAM,OAAQI,EAAK,IAAM1G,EAAOmG,GAAMI,GAAOA,EAAM,OAAQhW,GAAK,GAAKiW,GAAM,GAAKC,EAAKC,GAAM,GAAIC,GAAKH,EAAKC,EAAK,EAAIC,GAAM,EAAGE,GAAK,GAAKJ,EAAK,GAAKC,EAAK,GAAKC,GAAM,GAAIG,GAAM,GAAKL,EAAK,GAAKC,EAAKC,GAAM,GAAII,EAAc,IAAMxS,KAAKyS,MAAMJ,EAAGpW,GAAK+D,KAAKE,GAAIiQ,EAAMqC,EAAc,EAAIA,EAAc,IAAMA,GAAe,IAAMA,EAAc,IAAMA,EAAaE,EAAavC,EAAMnQ,KAAKE,GAAK,IAAKyS,EAAKJ,EAAKpB,EAAkBxB,IAAK8E,EAAI,IAAMzU,KAAKiO,IAAI0E,EAAKxB,EAAkBpB,GAAIoB,EAAkBlS,EAAIkS,EAAkB1B,GAAIiF,EAAI,EAAIvD,EAAkBlS,EAAIe,KAAK0P,KAAK+E,EAAI,MAAQtD,EAAkBpB,GAAK,GAAKoB,EAAkBnB,OAAQ4C,EAAWzC,EAAM,MAAQA,EAAM,IAAMA,EAAKhC,EAAI,IAAM,IAAM,EAAI,GAAKnO,KAAKC,IAAI2S,EAAW5S,KAAKE,GAAK,IAAM,GAAK,MAAQiR,EAAkBjC,GAAKiC,EAAkBvB,IAAM5P,KAAK0P,KAAKzT,EAAIA,EAAIoW,EAAIA,IAAMC,EAAI,MAAOO,EAAQ7S,KAAKiO,IAAIE,EAAG,IAAMnO,KAAKiO,IAAI,KAAOjO,KAAKiO,IAAI,IAAKkD,EAAkB3B,GAAI,KAAMmF,EAAI9B,EAAQ7S,KAAK0P,KAAK+E,EAAI,KAAMG,EAAID,EAAIxD,EAAkBnB,OAAQO,EAAI,GAAKvQ,KAAK0P,KAAKmD,EAAQ1B,EAAkBlS,GAAKkS,EAAkBpB,GAAK,IAAKS,GAAS,EAAI,IAAM,MAAQiE,GAAK,EAAI,KAAOA,GAAI3B,EAAQ9S,KAAK+S,IAAI,EAAI,MAAQ6B,GAAK,MAAOnE,EAAQqC,EAAQ9S,KAAKC,IAAIyS,GAAahC,EAAQoC,EAAQ9S,KAAKgT,IAAIN,GACnrD,OAAO,IAAIxC,GAAMC,EAAKwE,EAAGF,EAAGC,EAAGE,EAAGrE,EAAGC,EAAOC,EAAOC,EACrD,CACAmE,uBAAuB1D,GACrB,MAAM0B,EAAQ,IAAM3Z,KAAKkX,QAAU,IAAMlX,KAAKqF,EAAI,EAAIrF,KAAKkX,OAASpQ,KAAK0P,KAAKxW,KAAKqF,EAAI,KAAM4P,EAAInO,KAAKiO,IAAI4E,EAAQ7S,KAAKiO,IAAI,KAAOjO,KAAKiO,IAAI,IAAKkD,EAAkB3B,GAAI,KAAM,EAAI,IAAKgE,EAAOta,KAAKiX,IAAMnQ,KAAKE,GAAK,IAAKuT,EAAO,KAAOzT,KAAKC,IAAIuT,EAAO,GAAK,KAAMb,EAAKxB,EAAkBpB,GAAK/P,KAAKiO,IAAI/U,KAAKqF,EAAI,IAAK,EAAI4S,EAAkBlS,EAAIkS,EAAkB1B,GAAIiE,EAAKD,GAAQ,IAAM,IAAMtC,EAAkBjC,GAAKiC,EAAkBvB,IAAK2C,EAAKI,EAAKxB,EAAkBxB,IAAKgE,EAAO3T,KAAKgT,IAAIQ,GAAOI,EAAO5T,KAAKC,IAAIuT,GAAOK,EAAQ,IAAMtB,EAAK,MAAQpE,GAAK,GAAKuF,EAAK,GAAKvF,EAAIyF,EAAO,IAAMzF,EAAIwF,GAAO1X,EAAI4X,EAAQD,EAAMvB,EAAIwB,EAAQF,EAAMzB,GAAM,IAAMK,EAAK,IAAMtW,EAAI,IAAMoW,GAAK,KAAMF,GAAM,IAAMI,EAAK,IAAMtW,EAAI,IAAMoW,GAAK,KAAMD,GAAM,IAAMG,EAAK,IAAMtW,EAAI,KAAOoW,GAAK,KAAMyB,EAAS9T,KAAK+B,IAAI,EAAG,MAAQ/B,KAAK+R,IAAIG,IAAO,IAAMlS,KAAK+R,IAAIG,KAAOV,EAAK9F,EAAOwG,IAAO,IAAMf,EAAkB7B,IAAMtP,KAAKiO,IAAI6F,EAAQ,EAAI,KAAMC,EAAS/T,KAAK+B,IAAI,EAAG,MAAQ/B,KAAK+R,IAAII,IAAO,IAAMnS,KAAK+R,IAAII,KAAOV,EAAK/F,EAAOyG,IAAO,IAAMhB,EAAkB7B,IAAMtP,KAAKiO,IAAI8F,EAAQ,EAAI,KAAMC,EAAShU,KAAK+B,IAAI,EAAG,MAAQ/B,KAAK+R,IAAIK,IAAO,IAAMpS,KAAK+R,IAAIK,KAAOV,EAAKhG,EAAO0G,IAAO,IAAMjB,EAAkB7B,IAAMtP,KAAKiO,IAAI+F,EAAQ,EAAI,KAAMC,EAAKzC,EAAKL,EAAkBhC,KAAK,GAAI+E,EAAKzC,EAAKN,EAAkBhC,KAAK,GAAIgF,EAAKzC,EAAKP,EAAkBhC,KAAK,GACpwC,MAAO,CAAE,WAAa8E,EAAK,WAAaC,EAAK,UAAYC,EAAI,UAAYF,EAAK,UAAYC,EAAK,UAAYC,GAAK,SAAWF,EAAK,UAAYC,EAAK,WAAaC,EAChK,EAGF,MAAMW,GACJ,sBAAOC,CAAgBC,GACrB,OAAQA,EAAQ,EAAIhV,KAAKE,KAAO,EAAIF,KAAKE,GAC3C,CACA,uBAAO+U,CAAiBlH,GACtB,MAAMC,EAAaD,EAAe,IAClC,IAAIhB,EAAe,EACnB,OAAOA,EAAeiB,GAAc,SAAW,MAAQA,EAAa,MAAQhO,KAAKiO,IAAID,EAAY,EAAI,KAAO,KAC5G,IAAMjB,CACR,CACA,0BAAOmI,CAAoBC,GACzB,MAAMC,EAAKpV,KAAKiO,IAAIjO,KAAK+R,IAAIoD,GAAY,KACzC,OAAO,IAAMzJ,EAAOyJ,GAAaC,GAAMA,EAAK,MAC9C,CACA,YAAOC,CAAMvI,GACX,MAAMwI,EAAiBnJ,EAAeW,EAAQgI,GAAUS,6BAA8BrD,EAAK4C,GAAUI,oBAAoBI,EAAe,IAAKnD,EAAK2C,GAAUI,oBAAoBI,EAAe,IAAKlD,EAAK0C,GAAUI,oBAAoBI,EAAe,IAAKrZ,GAAK,GAAKiW,GAAM,GAAKC,EAAKC,GAAM,GAAIC,GAAKH,EAAKC,EAAK,EAAIC,GAAM,EACxT,OAAOpS,KAAKyS,MAAMJ,EAAGpW,EACvB,CACA,uBAAOuZ,CAAiBvZ,EAAGoW,EAAGpT,GAC5B,OAAO6V,GAAUC,gBAAgB1C,EAAIpW,GAAK6Y,GAAUC,gBAAgB9V,EAAIhD,EAC1E,CACA,gBAAOwZ,CAAUC,EAAQC,EAAKxf,GAC5B,OAAQwf,EAAMD,IAAWvf,EAASuf,EACpC,CACA,gBAAOE,CAAUF,EAAQvH,EAAGhY,GAC1B,MAAO,CAAEuf,EAAO,IAAMvf,EAAO,GAAKuf,EAAO,IAAMvH,EAAGuH,EAAO,IAAMvf,EAAO,GAAKuf,EAAO,IAAMvH,EAAGuH,EAAO,IAAMvf,EAAO,GAAKuf,EAAO,IAAMvH,EACnI,CACA,oBAAO0H,CAAcH,EAAQI,EAAY3f,EAAQ4f,GAC/C,MAAM5H,EAAI2G,GAAUW,UAAUC,EAAOK,GAAOD,EAAY3f,EAAO4f,IAC/D,OAAOjB,GAAUc,UAAUF,EAAQvH,EAAGhY,EACxC,CACA,gBAAO6f,CAAUzE,GACf,OAAO,GAAKA,GAAKA,GAAK,GACxB,CACA,gBAAO0E,CAAUnI,EAAG0B,GAClB,MAAM0G,EAAKpB,GAAUqB,cAAc,GAAIC,EAAKtB,GAAUqB,cAAc,GAAIE,EAAKvB,GAAUqB,cAAc,GAAIG,EAAS9G,EAAI,GAAK,EAAI,EAAI,IAAK+G,EAAS/G,EAAI,GAAK,EAAI,EAAI,IAClK,GAAIA,EAAI,EAAG,CACT,MAAMgH,EAAIF,EAAQjE,EAAIkE,EAAQE,GAAK3I,EAAI0I,EAAIJ,EAAK/D,EAAIgE,GAAMH,EAC1D,OAAOpB,GAAUkB,UAAUS,GAAK,CAAEA,EAAGD,EAAGnE,GAAM,EAAG,GAAI,GAAI,EAC3D,CACA,GAAI7C,EAAI,EAAG,CACT,MAAM6C,EAAIiE,EAAQG,EAAIF,EAAQC,GAAK1I,EAAI2I,EAAIP,EAAK7D,EAAIgE,GAAMD,EAC1D,OAAOtB,GAAUkB,UAAUQ,GAAK,CAAEC,EAAGD,EAAGnE,GAAM,EAAG,GAAI,GAAI,EAC3D,CACA,CACE,MAAMoE,EAAIH,EAAQE,EAAID,EAAQlE,GAAKvE,EAAI2I,EAAIP,EAAKM,EAAIJ,GAAMC,EAC1D,OAAOvB,GAAUkB,UAAU3D,GAAK,CAAEoE,EAAGD,EAAGnE,GAAM,EAAG,GAAI,GAAI,EAC3D,CACF,CACA,sBAAOqE,CAAgB5I,EAAG6I,GACxB,IAAIvP,EAAO,EAAG,GAAI,GAAI,GAAKwP,EAAQxP,EAAMyP,EAAU,EAAGC,EAAW,EAAGC,GAAc,EAAIC,GAAQ,EAC9F,IAAK,IAAIxH,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAMmG,EAAMb,GAAUmB,UAAUnI,EAAG0B,GACnC,GAAImG,EAAI,GAAK,EAAG,SAChB,MAAMsB,EAASnC,GAAUO,MAAMM,GAC/BoB,GAAeC,GAASlC,GAAUU,iBAAiBqB,EAASI,EAAQH,MAAeE,GAAQ,EAC3FlC,GAAUU,iBAAiBqB,EAASF,EAAWM,IAAWL,EAAQjB,EAAKmB,EAAWG,IAAW7P,EAAOuO,EACpGkB,EAAUI,KAAY7P,EAAOuO,EAAKiB,EAAQjB,EAAKkB,EAAUI,EAAQH,EAAWG,EAC5EF,GAAc,EAChB,CACA,MAAO,CAAE3P,EAAMwP,EACjB,CACA,eAAOM,CAASjb,EAAGoW,GACjB,MAAO,EAAGpW,EAAE,GAAKoW,EAAE,IAAM,GAAIpW,EAAE,GAAKoW,EAAE,IAAM,GAAIpW,EAAE,GAAKoW,EAAE,IAAM,EACjE,CACA,yBAAO8E,CAAmB5F,GACxB,OAAOvR,KAAKoX,MAAM7F,EAAI,GACxB,CACA,yBAAO8F,CAAmB9F,GACxB,OAAOvR,KAAKsX,KAAK/F,EAAI,GACvB,CACA,oBAAOgG,CAAczJ,EAAG6I,GACtB,MAAMa,EAAU1C,GAAU4B,gBAAgB5I,EAAG6I,GAC7C,IAAIvP,EAAOoQ,EAAQ,GAAIX,EAAU/B,GAAUO,MAAMjO,GAAOwP,EAAQY,EAAQ,GACxE,IAAK,IAAIzB,EAAO,EAAGA,EAAO,EAAGA,IAAQ,GAAI3O,EAAK2O,KAAUa,EAAMb,GAAO,CACnE,IAAI0B,GAAU,EAAGC,EAAS,IAC1BtQ,EAAK2O,GAAQa,EAAMb,IAAS0B,EAAS3C,GAAUqC,mBAAmBrC,GAAUG,iBAAiB7N,EAAK2O,KAClG2B,EAAS5C,GAAUuC,mBAAmBvC,GAAUG,iBAAiB2B,EAAMb,OAAY0B,EAAS3C,GAAUuC,mBAAmBvC,GAAUG,iBAAiB7N,EAAK2O,KACzJ2B,EAAS5C,GAAUqC,mBAAmBrC,GAAUG,iBAAiB2B,EAAMb,MACvE,IAAK,IAAI/Z,EAAI,EAAGA,EAAI,KAAOgE,KAAK+R,IAAI2F,EAASD,IAAW,GAAIzb,IAAK,CAC/D,MAAM2b,EAAS3X,KAAKoX,OAAOK,EAASC,GAAU,GAAIE,EAAqB9C,GAAU+C,gBAAgBF,GAAShC,EAAMb,GAAUe,cAAczO,EAAMwQ,EAAoBhB,EAAOb,GAAOkB,EAASnC,GAAUO,MAAMM,GACzMb,GAAUU,iBAAiBqB,EAASF,EAAWM,IAAWL,EAAQjB,EAAK+B,EAASC,IAAWvQ,EAAOuO,EAClGkB,EAAUI,EAAQQ,EAASE,EAC7B,CACF,CACA,OAAO7C,GAAUoC,SAAS9P,EAAMwP,EAClC,CACA,iCAAOkB,CAA2BC,GAChC,MAAMC,EAAahY,KAAK+R,IAAIgG,GAAUE,EAAOjY,KAAK+B,IAAI,EAAG,MAAQiW,GAAc,IAAMA,IACrF,OAAOtM,EAAOqM,GAAW/X,KAAKiO,IAAIgK,EAAM,EAAI,IAC9C,CACA,oBAAOC,CAAcxF,EAAYtC,EAAQtC,GACvC,IAAIvP,EAAI,GAAKyB,KAAK0P,KAAK5B,GACvB,MAAMqD,EAAoB/C,GAAkB6B,QAASkI,EAAc,EAAInY,KAAKiO,IAAI,KAAOjO,KAAKiO,IAAI,IAAKkD,EAAkB3B,GAAI,KAAMkE,EAAK,KAAO1T,KAAKC,IAAIyS,EAAa,GAAK,MAAQ,IAAM,IAAMvB,EAAkBjC,GAAKiC,EAAkBvB,IAAK+D,EAAO3T,KAAKgT,IAAIN,GAAakB,EAAO5T,KAAKC,IAAIyS,GACvR,IAAK,IAAI0F,EAAiB,EAAGA,EAAiB,EAAGA,IAAkB,CACjE,MAAMC,EAAc9Z,EAAI,IAAKsU,EAAQ,IAAMzC,GAAU,IAAM7R,EAAI,EAAI6R,EAASpQ,KAAK0P,KAAK2I,GAAclK,EAAInO,KAAKiO,IAAI4E,EAAQsF,EAAa,EAAI,IAAK5F,EAAKpB,EAAkBpB,GAAK/P,KAAKiO,IAAIoK,EAAa,EAAIlH,EAAkBlS,EAAIkS,EAAkB1B,GAAK0B,EAAkBxB,IAAKkE,EAAQ,IAAMtB,EAAK,MAAQpE,GAAK,GAAKuF,EAAK,GAAKvF,EAAIyF,EAAO,IAAMzF,EAAIwF,GAAO1X,EAAI4X,EAAQD,EAAMvB,EAAIwB,EAAQF,EAAMzB,GAAM,IAAMK,EAAK,IAAMtW,EAAI,IAAMoW,GAAK,KAAMF,GAAM,IAAMI,EAAK,IAAMtW,EAAI,IAAMoW,GAAK,KAAMD,GAAM,IAAMG,EAAK,IAAMtW,EAAI,KAAOoW,GAAK,KAAMvF,EAASX,EAAe,CAAE2I,GAAUgD,2BAA2B5F,GAAK4C,GAAUgD,2BAA2B3F,GAAK2C,GAAUgD,2BAA2B1F,IAAO0C,GAAUwD,6BACjqB,GAAIxL,EAAO,GAAK,GAAKA,EAAO,GAAK,GAAKA,EAAO,GAAK,EAAG,OAAO,EAC5D,MAAMoJ,EAAKpB,GAAUqB,cAAc,GAAIC,EAAKtB,GAAUqB,cAAc,GAAIE,EAAKvB,GAAUqB,cAAc,GAAIoC,EAAMrC,EAAKpJ,EAAO,GAAKsJ,EAAKtJ,EAAO,GAAKuJ,EAAKvJ,EAAO,GAC7J,GAAIyL,GAAO,EAAG,OAAO,EACrB,GAAI,IAAMH,GAAkBpY,KAAK+R,IAAIwG,EAAMzK,GAAK,KAAM,OAAOhB,EAAO,GAAK,QAAUA,EAAO,GAAK,QAAUA,EAAO,GAAK,OAAS,EAAID,EAAeC,GACjJvO,IAAMga,EAAMzK,GAAKvP,GAAK,EAAIga,EAC5B,CACA,OAAO,CACT,CACA,iBAAOC,CAAWC,EAAYrI,EAAQ3C,GACpC,GAAI2C,EAAS,MAAQ3C,EAAQ,MAAQA,EAAQ,QAAS,OArN1D,SAAuBA,GACrB,MAAM0H,EAAYpI,EAAaS,EAAWC,IAC1C,OAAOhB,EAAY0I,EAAWA,EAAWA,EAC3C,CAkNiEuD,CAAcjL,GAC3E,MAAMiF,GAAc+F,EAAaxM,EAAsBwM,IAAe,IAAMzY,KAAKE,GAAI4N,EAAIN,EAAWC,GAAQkL,EAAc7D,GAAUoD,cAAcxF,EAAYtC,EAAQtC,GACtK,OAAI,IAAM6K,EAAoBA,EACvB9L,EAAeiI,GAAUyC,cAAczJ,EAAG4E,GACnD,CACA,iBAAOkG,CAAWH,EAAYrI,EAAQ3C,GACpC,OAAOyC,GAAMe,QAAQ6D,GAAU0D,WAAWC,EAAYrI,EAAQ3C,GAChE,EAGFqH,GAAUS,4BAA8B,CAAE,CAAE,oBAAqB,oBAAqB,sBAAwB,CAAE,qBAAsB,qBAAsB,sBAAwB,CAAE,sBAAuB,qBAAsB,uBACnOT,GAAUwD,4BAA8B,CAAE,CAAE,oBAAqB,oBAAqB,mBAAqB,EAAG,iBAAkB,mBAAoB,mBAAqB,CAAE,oBAAqB,mBAAoB,oBACpNxD,GAAUqB,cAAgB,CAAE,MAAO,MAAO,OAASrB,GAAU+C,gBAAkB,CAAE,oBAAqB,oBAAqB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,kBAAmB,mBAAoB,kBAAmB,iBAAkB,kBAAmB,mBAAoB,iBAAkB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,iBAAkB,iBAAkB,kBAAmB,iBAAkB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,iBAAkB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,iBAAkB,mBAAoB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,mBAAoB,kBAAmB,iBAAkB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,iBAAkB,mBAAoB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,iBAAkB,mBAAoB,mBAAoB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,kBAAmB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,iBAAkB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,mBAAoB,iBAAkB,iBAAkB,mBAAoB,mBAAoB,kBAAmB,kBAAmB,iBAAkB,mBAAoB,mBAAoB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,mBAAoB,kBAAmB,kBAAmB,mBAAoB,kBAAmB,mBAAoB,iBAAkB,mBAAoB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,iBAAkB,kBAAmB,kBAAmB,iBAAkB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,iBAAkB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,iBAAkB,iBAAkB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,kBAAmB,iBAAkB,kBAAmB,iBAAkB,mBAEz3J,MAAMgB,GACJ,WAAOC,CAAK3I,EAAKC,EAAQ2I,GACvB,OAAO,IAAIF,GAAI/D,GAAU0D,WAAWrI,EAAKC,EAAQ2I,GACnD,CACA,cAAO9H,CAAQhE,GACb,OAAO,IAAI4L,GAAI5L,EACjB,CACAqG,QACE,OAAOpa,KAAK+T,IACd,CACA,OAAIkD,GACF,OAAOjX,KAAK8f,WACd,CACA,OAAI7I,CAAI8I,GACN/f,KAAKggB,iBAAiBpE,GAAU0D,WAAWS,EAAQ/f,KAAKigB,eAAgBjgB,KAAKkgB,cAC/E,CACA,UAAIhJ,GACF,OAAOlX,KAAKigB,cACd,CACA,UAAI/I,CAAOiJ,GACTngB,KAAKggB,iBAAiBpE,GAAU0D,WAAWtf,KAAK8f,YAAaK,EAAWngB,KAAKkgB,cAC/E,CACA,QAAIL,GACF,OAAO7f,KAAKkgB,YACd,CACA,QAAIL,CAAKO,GACPpgB,KAAKggB,iBAAiBpE,GAAU0D,WAAWtf,KAAK8f,YAAa9f,KAAKigB,eAAgBG,GACpF,CACAtjB,YAAYiX,GACV/T,KAAK+T,KAAOA,EACZ,MAAMsM,EAAMrJ,GAAMe,QAAQhE,GAC1B/T,KAAK8f,YAAcO,EAAIpJ,IAAKjX,KAAKigB,eAAiBI,EAAInJ,OAAQlX,KAAKkgB,aAAehM,EAAcH,GAChG/T,KAAK+T,KAAOA,CACd,CACAiM,iBAAiBjM,GACf,MAAMsM,EAAMrJ,GAAMe,QAAQhE,GAC1B/T,KAAK8f,YAAcO,EAAIpJ,IAAKjX,KAAKigB,eAAiBI,EAAInJ,OAAQlX,KAAKkgB,aAAehM,EAAcH,GAChG/T,KAAK+T,KAAOA,CACd,CACAuM,oBAAoBC,GAClB,MAAMC,EAAaxJ,GAAMe,QAAQ/X,KAAKoa,SAASuB,uBAAuB4E,GAAKE,EAAazJ,GAAMsE,2BAA2BkF,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAItL,GAAkBC,QACxL,OAAOwK,GAAIC,KAAKa,EAAWxJ,IAAKwJ,EAAWvJ,OAAQvC,EAAW6L,EAAW,IAC3E,EAGF,MAAME,GACJ,gBAAOC,CAAUC,EAAaC,GAC5B,MAAMC,EAAUnB,GAAI5H,QAAQ6I,GAAcG,EAAQpB,GAAI5H,QAAQ8I,GAAcG,GAzTrDje,EAyT6F+d,EAAQ7J,IAzTlGkC,EAyTuG4H,EAAM9J,IAxTlI,IAAMnQ,KAAK+R,IAAI/R,KAAK+R,IAAI9V,EAAIoW,GAAK,MAwTuG8H,EAAkBna,KAAKgC,IAAI,GAAKkY,EAAqB,IAAKE,EAAYnO,EAAsB+N,EAAQ7J,IAAMgK,GA7ThOrB,EA6ToQkB,EAAQ7J,IA5T9RlE,EA4TmSgO,EAAM9J,IA5T9Q2I,IAAS,IAAM,GAAK,IADxD,IAA2BA,EAIA7c,EAAGoW,EA0T1B,OAAOwG,GAAIC,KAAKsB,EAAWJ,EAAQ5J,OAAQ4J,EAAQjB,MAAMzF,OAC3D,CACA,aAAO+G,CAAOvB,EAAMwB,EAAIxO,GACtB,MAAMyO,EAAMX,GAAMY,SAAS1B,EAAMwB,EAAIxO,GAAS2O,EAASvK,GAAMe,QAAQsJ,GAAMG,EAAUxK,GAAMe,QAAQ6H,GACnG,OAAOD,GAAIC,KAAK2B,EAAOtK,IAAKuK,EAAQtK,OAAQhD,EAAc0L,IAAOxF,OACnE,CACA,eAAOkH,CAAS1B,EAAMwB,EAAIxO,GACxB,MAAM4O,EAAUxK,GAAMe,QAAQ6H,GAAO6B,EAAQzK,GAAMe,QAAQqJ,GAAKM,EAAQF,EAAQlK,MAAOqK,EAAQH,EAAQjK,MAAOqK,EAAQJ,EAAQhK,MAAOF,EAAQoK,GAASD,EAAMnK,MAAQoK,GAAS9O,EAAQ2E,EAAQoK,GAASF,EAAMlK,MAAQoK,GAAS/O,EAAQ4E,EAAQoK,GAASH,EAAMjK,MAAQoK,GAAShP,EAC7Q,OAAOoE,GAAMkD,QAAQ5C,EAAOC,EAAOC,GAAO4C,OAC5C,EAGF,MAAMyH,GACJ,mBAAOC,CAAaC,EAAOC,GACzB,OAAOD,EAAQlP,EAAY,EAAG,IAAKkP,GAAQC,EAAQnP,EAAY,EAAG,IAAKmP,GAAQH,GAASI,UAAU3N,EAAWyN,GAAQzN,EAAW0N,GAClI,CACA,gBAAOC,CAAUC,EAAIC,GACnB,MAAMC,EAAUF,EAAKC,EAAKD,EAAKC,EAC/B,OAAQC,EAAU,KAAOA,IAAYD,EAAKD,EAAKC,GAAM,EACvD,CACA,cAAOC,CAAQvC,EAAMwC,GACnB,GAAIxC,EAAO,GAAKA,EAAO,IAAK,OAAQ,EACpC,MAAMyC,EAAQhO,EAAWuL,GAAO0C,EAASF,GAASC,EAAQ,GAAK,EAAGE,EAAeX,GAASI,UAAUM,EAAQD,GAAQG,EAAQ3b,KAAK+R,IAAI2J,EAAeH,GACpJ,GAAIG,EAAeH,GAASI,EAAQ,IAAK,OAAQ,EACjD,MAAMC,EAAc/N,EAAW4N,GAAU,GACzC,OAAOG,EAAc,GAAKA,EAAc,KAAO,EAAIA,CACrD,CACA,aAAOC,CAAO9C,EAAMwC,GAClB,GAAIxC,EAAO,GAAKA,EAAO,IAAK,OAAQ,EACpC,MAAM0C,EAASjO,EAAWuL,GAAOyC,GAASC,EAAS,GAAKF,EAAQ,EAAGG,EAAeX,GAASI,UAAUM,EAAQD,GAAQG,EAAQ3b,KAAK+R,IAAI2J,EAAeH,GACrJ,GAAIG,EAAeH,GAASI,EAAQ,IAAK,OAAQ,EACjD,MAAMC,EAAc/N,EAAW2N,GAAS,GACxC,OAAOI,EAAc,GAAKA,EAAc,KAAO,EAAIA,CACrD,CACA,oBAAOE,CAAc/C,EAAMwC,GACzB,MAAMQ,EAAchB,GAASO,QAAQvC,EAAMwC,GAC3C,OAAOQ,EAAc,EAAI,IAAMA,CACjC,CACA,mBAAOC,CAAajD,EAAMwC,GACxB,MAAMU,EAAalB,GAASc,OAAO9C,EAAMwC,GACzC,OAAOU,EAAa,EAAI,EAAIA,CAC9B,EAGF,MAAMC,GACJ,iBAAOC,CAAWC,GAChB,MAAMC,EAAYrc,KAAKkO,MAAMkO,EAAIjM,MAAQ,IAAMnQ,KAAKkO,MAAMkO,EAAIjM,MAAQ,IAAKmM,EAAetc,KAAKkO,MAAMkO,EAAIhM,QAAU,GAAImM,EAAavc,KAAKkO,MAAMkO,EAAIrD,MAAQ,GAC3J,OAAOsD,GAAaC,GAAgBC,CACtC,CACA,oBAAOC,CAAcJ,GACnB,OAAOF,GAAgBC,WAAWC,GAAOvD,GAAIC,KAAKsD,EAAIjM,IAAKiM,EAAIhM,OAAQ,IAAMgM,CAC/E,EAGF,MAAMK,GACJ,kBAAOC,CAAY7f,GACjB,OAAO,IAAI4f,GAAa5f,EAAKH,MAAQ,GAAIG,EAAK8f,QAAS9f,EAAKkc,KAAMlc,EAAK+f,eAAgB,EAAI/f,EAAKggB,WAAYhgB,EAAKigB,iBAAkBjgB,EAAKkgB,cAAelgB,EAAKmgB,cAC9J,CACAhnB,YAAY0G,EAAMigB,EAAS5D,EAAM6D,EAAcC,EAAYC,EAAkBC,EAAeC,GAC1F,GAAI9jB,KAAKwD,KAAOA,EAAMxD,KAAKyjB,QAAUA,EAASzjB,KAAK6f,KAAOA,EAAM7f,KAAK0jB,aAAeA,EACpF1jB,KAAK2jB,WAAaA,EAAY3jB,KAAK4jB,iBAAmBA,EAAkB5jB,KAAK6jB,cAAgBA,EAC7F7jB,KAAK8jB,cAAgBA,EAAe9jB,KAAK+jB,SAAW,IAAIC,KAAML,GAAcC,EAAkB,MAAM,IAAIK,MAAO,SAAQzgB,iEACvH,IAAKmgB,GAAcE,EAAe,MAAM,IAAII,MAAO,SAAQzgB,8DAC3D,GAAImgB,IAAeE,EAAe,MAAM,IAAII,MAAO,SAAQzgB,6DAC7D,CACA0gB,QAAQC,GACN,OAAOnkB,KAAKokB,OAAOD,GAAQ/J,OAC7B,CACAgK,OAAOD,GACL,MAAME,EAAerkB,KAAK+jB,SAASxiB,IAAI4iB,GACvC,GAAI,MAAQE,EAAc,OAAOA,EACjC,MAAMxE,EAAO7f,KAAKskB,QAAQH,GAASI,EAASvkB,KAAKyjB,QAAQU,GAAQC,OAAOvE,GACxE,OAAO7f,KAAK+jB,SAASS,KAAO,GAAKxkB,KAAK+jB,SAASU,QAASzkB,KAAK+jB,SAASviB,IAAI2iB,EAAQI,GAClFA,CACF,CACAD,QAAQH,GACN,MAAMO,EAAqBP,EAAOQ,cAAgB,EAClD,GAAI3kB,KAAK8jB,cAAe,CACtB,MAAMA,EAAgB9jB,KAAK8jB,cAAcK,GAASS,EAAQd,EAAcc,MAAOC,EAAQf,EAAce,MAAOpC,EAAQqB,EAAcrB,MAAOqC,EAAWhB,EAAcgB,SAAUC,EAAejB,EAAciB,aAAcC,EAAShlB,KAAK2jB,WAAWQ,GAAQG,QAAQH,GAASc,EAAY,WAAaH,GAAY,YAAcA,IAAaX,EAAOe,QAAU,WAAaJ,GAAYX,EAAOe,OAAQC,EAASF,EAAYL,EAAQC,EAAOO,EAAUH,EAAYJ,EAAQD,EAAOS,EAAWrlB,KAAKwD,OAAS2hB,EAAO3hB,KAAM8hB,EAAenB,EAAOe,OAAS,GAAK,EAAGK,EAAYJ,EAAOtB,cAAc2B,YAAYrB,EAAOQ,eAAgBc,EAAYL,EAAQvB,cAAc2B,YAAYrB,EAAOQ,eAAgBe,EAAeP,EAAOtF,KAAKsE,GAC5rB,IAAIwB,EAAQ9D,GAASC,aAAakD,EAAQU,IAAiBH,EAAYG,EAAenC,GAAaqC,eAAeZ,EAAQO,GAC1H,MAAMM,EAAeT,EAAQvF,KAAKsE,GAClC,IAAI2B,EAAQjE,GAASC,aAAakD,EAAQa,IAAiBJ,EAAYI,EAAetC,GAAaqC,eAAeZ,EAAQS,GAC1H,OAAOf,IAAuBiB,EAAQpC,GAAaqC,eAAeZ,EAAQO,GAC1EO,EAAQvC,GAAaqC,eAAeZ,EAAQS,KAAcK,EAAQH,GAASL,GAAgB7C,IAAUqD,EAAQjT,EAAY,EAAG,IAAK8S,EAAQlD,EAAQ6C,IAChJQ,EAAQH,GAASL,GAAgB7C,IAAUkD,EAAQ9S,EAAY,EAAG,IAAKiT,EAAQrD,EAAQ6C,KACxF,IAAMK,GAASA,EAAQ,GAAKL,EAAe,GAAKK,EAAQ,GAAIG,EAAQhf,KAAK+B,IAAIid,EAAOH,EAAQlD,EAAQ6C,KAAkBK,EAAQ,GAC9HG,EAAQhf,KAAKgC,IAAIgd,EAAOH,EAAQlD,EAAQ6C,IAAiB,IAAMQ,GAASA,EAAQ,KAAOf,EAAeO,EAAe,GAAKK,EAAQ,GAClIG,EAAQhf,KAAK+B,IAAIid,EAAOH,EAAQlD,EAAQ6C,KAAkBK,EAAQ,GAAIG,EAAQhf,KAAKgC,IAAIgd,EAAOH,EAAQlD,EAAQ6C,IAAiBQ,EAAQR,EAAe,EAAI,GAAK,IAC/JD,EAAWM,EAAQG,CACrB,CACA,CACE,IAAIvB,EAASvkB,KAAK6f,KAAKsE,GACvB,GAAI,MAAQnkB,KAAK2jB,WAAY,OAAOY,EACpC,MAAMS,EAAShlB,KAAK2jB,WAAWQ,GAAQG,QAAQH,GAAS4B,EAAe/lB,KAAK6jB,cAAc2B,YAAYrB,EAAOQ,eAC7G,GAAI9C,GAASC,aAAakD,EAAQT,IAAWwB,IAAiBxB,EAAShB,GAAaqC,eAAeZ,EAAQe,IAC3GrB,IAAuBH,EAAShB,GAAaqC,eAAeZ,EAAQe,IACpE/lB,KAAK0jB,cAAgB,IAAMa,GAAUA,EAAS,KAAOA,EAAS1C,GAASC,aAAa,GAAIkD,IAAWe,EAAe,GAAK,IACvH/lB,KAAK4jB,iBAAkB,CACrB,MAAOoC,EAAKC,GAAO,CAAEjmB,KAAK2jB,WAAY3jB,KAAK4jB,mBAAqBsC,EAASC,GAAW,CAAEH,EAAI7B,GAAQG,QAAQH,GAAS8B,EAAI9B,GAAQG,QAAQH,KAAYiC,EAAOC,GAAS,CAAEvf,KAAK+B,IAAIqd,EAASC,GAAUrf,KAAKgC,IAAIod,EAASC,IACnN,GAAItE,GAASC,aAAasE,EAAO7B,IAAWwB,GAAgBlE,GAASC,aAAauE,EAAO9B,IAAWwB,EAAc,OAAOxB,EACzH,MAAM+B,EAAczE,GAASO,QAAQgE,EAAOL,GAAeQ,EAAa1E,GAASc,OAAO0D,EAAON,GAAeS,EAAa,GAE3H,OADC,IAAMF,GAAeE,EAAWxkB,KAAKskB,IAAe,IAAMC,GAAcC,EAAWxkB,KAAKukB,GAClFhD,GAAakD,2BAA2BP,IAAY3C,GAAakD,2BAA2BN,GAAWG,EAAc,EAAI,IAAMA,EAAc,IAAME,EAAWlpB,OAASkpB,EAAW,GAAKD,EAAa,EAAI,EAAIA,CACrN,CACA,OAAOhC,CACT,CACF,CACA,qBAAOqB,CAAeZ,EAAQ3C,GAC5B,MAAMqE,EAAc7E,GAASe,cAAcoC,EAAQ3C,GAAQsE,EAAa9E,GAASiB,aAAakC,EAAQ3C,GAAQuE,EAAe/E,GAASC,aAAa4E,EAAa1B,GAAS6B,EAAchF,GAASC,aAAa6E,EAAY3B,GACzN,GAAIzB,GAAakD,2BAA2BzB,GAAS,CACnD,MAAM8B,EAAuBhgB,KAAK+R,IAAI+N,EAAeC,GAAe,IAAMD,EAAevE,GAASwE,EAAcxE,EAChH,OAAOuE,GAAgBvE,GAASuE,GAAgBC,GAAeC,EAAuBJ,EAAcC,CACtG,CACA,OAAOE,GAAexE,GAASwE,GAAeD,EAAeD,EAAaD,CAC5E,CACA,iCAAOD,CAA2B5G,GAChC,OAAO/Y,KAAKkO,MAAM6K,GAAQ,EAC5B,CACA,gCAAOkH,CAA0BlH,GAC/B,OAAO/Y,KAAKkO,MAAM6K,IAAS,EAC7B,CACA,4BAAOmH,CAAsBnH,GAC3B,OAAO0D,GAAakD,2BAA2B5G,KAAU0D,GAAawD,0BAA0BlH,GAAQ,GAAKA,CAC/G,EAGF,IAAIoH,IAEH,SAASA,GACRA,EAAQA,EAAQC,WAAa,GAAK,aAAcD,EAAQA,EAAQE,QAAU,GAAK,UAC/EF,EAAQA,EAAQG,WAAa,GAAK,aAAcH,EAAQA,EAAQI,QAAU,GAAK,UAC/EJ,EAAQA,EAAQK,WAAa,GAAK,aAAcL,EAAQA,EAAQM,SAAW,GAAK,WAChFN,EAAQA,EAAQO,QAAU,GAAK,UAAWP,EAAQA,EAAQQ,QAAU,GAAK,UACzER,EAAQA,EAAQS,YAAc,GAAK,aACrC,CANC,CAMCT,KAAYA,GAAU,KAExB,MAAMU,GACJ7qB,YAAY8qB,EAAKC,EAAQC,EAAQC,GAC/B/nB,KAAK4nB,IAAMA,EAAK5nB,KAAK6nB,OAASA,EAAQ7nB,KAAK8nB,OAASA,EAAQ9nB,KAAK+nB,KAAOA,CAC1E,CACAvC,YAAYb,GACV,OAAOA,IAAkB,EAAI3kB,KAAK4nB,IAAMjD,EAAgB,EAAIjS,EAAK1S,KAAK4nB,IAAK5nB,KAAK6nB,QAASlD,IAAiB,GAAK,GAAKA,EAAgB,GAAKjS,EAAK1S,KAAK6nB,OAAQ7nB,KAAK8nB,QAASnD,EAAgB,GAAK,IAAMA,EAAgB,EAAIjS,EAAK1S,KAAK8nB,OAAQ9nB,KAAK+nB,MAAOpD,EAAgB,IAAM,IAAM3kB,KAAK+nB,IACzR,EAGF,MAAMC,GACJlrB,YAAY8nB,EAAOC,EAAOpC,EAAOqC,EAAUC,GACzC/kB,KAAK4kB,MAAQA,EAAO5kB,KAAK6kB,MAAQA,EAAO7kB,KAAKyiB,MAAQA,EAAOziB,KAAK8kB,SAAWA,EAC5E9kB,KAAK+kB,aAAeA,CACtB,EAGF,SAASkD,GAAW9D,GAClB,OAAOA,EAAO+D,UAAYjB,GAAQM,UAAYpD,EAAO+D,UAAYjB,GAAQO,OAC3E,CAEA,SAASW,GAAahE,GACpB,OAAOA,EAAO+D,UAAYjB,GAAQC,UACpC,CAsBA,SAASkB,GAAcC,EAAWlE,GAChC,MAAMmE,EAAUD,EAAU/H,oBAL5B,SAAoC6D,GAClC,OAAOjP,GAAkBC,UAAK,OAAQ,EAAQgP,EAAOe,OAAS,GAAK,QAAI,OAAQ,EACjF,CAGgDqD,CAA2BpE,IACzE,OAAOZ,GAAakD,2BAA2B4B,EAAUxI,QAAU0D,GAAawD,0BAA0BuB,EAAQzI,MAAQ0D,GAAayD,sBAAsBqB,EAAUxI,MAAQ0D,GAAayD,sBAAsBsB,EAAQzI,KAC5N,CAEA,MAAM2I,GACJ,qBAAOC,CAAepR,GACpB,OAAOA,EAAE6N,OAASsD,GAAsBE,cAAgBF,GAAsBG,UAChF,EAGFH,GAAsBI,uBAAyB,GAAIJ,GAAsBK,uBAAyBtF,GAAaC,YAAY,CACzHhgB,KAAM,4BACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAKA,EAAEyR,eAAeC,SAASlJ,OACnC2I,GAAsBQ,yBAA2BzF,GAAaC,YAAY,CAC5EhgB,KAAM,8BACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,GAAKA,EAAE4R,iBAAiBF,SAASlJ,OACrC2I,GAAsBU,wBAA0B3F,GAAaC,YAAY,CAC3EhgB,KAAM,6BACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,GAAKA,EAAE8R,gBAAgBJ,SAASlJ,OACpC2I,GAAsBY,uBAAyB7F,GAAaC,YAAY,CAC1EhgB,KAAM,4BACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAEgS,eAAeN,SAASlJ,OACnC2I,GAAsBc,8BAAgC/F,GAAaC,YAAY,CACjFhgB,KAAM,oCACNigB,QAASpM,GAAKA,EAAEkS,sBAChB1J,KAAMxI,GAAKA,EAAEkS,sBAAsBR,SAASlJ,OAC1C2I,GAAsB7E,WAAaJ,GAAaC,YAAY,CAC9DhgB,KAAM,aACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,EAAI,GAC1BxB,cAAc,IACZ8E,GAAsBgB,aAAejG,GAAaC,YAAY,CAChEhgB,KAAM,gBACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BvB,WAAYtM,GAAKmR,GAAsB7E,WACvCE,cAAe,IAAI8D,GAAc,EAAG,EAAG,IAAK,KAC1Ca,GAAsBiB,QAAUlG,GAAaC,YAAY,CAC3DhgB,KAAM,UACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,EAAI,GAC1BxB,cAAc,IACZ8E,GAAsBG,WAAapF,GAAaC,YAAY,CAC9DhgB,KAAM,cACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,EAAI,GAC1BxB,cAAc,IACZ8E,GAAsBE,cAAgBnF,GAAaC,YAAY,CACjEhgB,KAAM,iBACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,IACZ8E,GAAsBkB,uBAAyBnG,GAAaC,YAAY,CAC1EhgB,KAAM,2BACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,EAAI,IAC1BxB,cAAc,IACZ8E,GAAsBmB,oBAAsBpG,GAAaC,YAAY,CACvEhgB,KAAM,wBACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,IACZ8E,GAAsBoB,iBAAmBrG,GAAaC,YAAY,CACpEhgB,KAAM,oBACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,IACZ8E,GAAsBqB,qBAAuBtG,GAAaC,YAAY,CACxEhgB,KAAM,yBACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,IACZ8E,GAAsBsB,wBAA0BvG,GAAaC,YAAY,CAC3EhgB,KAAM,4BACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,IACZ8E,GAAsBuB,UAAYxG,GAAaC,YAAY,CAC7DhgB,KAAM,aACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BvB,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBwB,eAAiBzG,GAAaC,YAAY,CAClEhgB,KAAM,kBACNigB,QAASpM,GAAKA,EAAEkS,sBAChB1J,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,IACZ8E,GAAsByB,iBAAmB1G,GAAaC,YAAY,CACpEhgB,KAAM,qBACNigB,QAASpM,GAAKA,EAAEkS,sBAChB1J,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BvB,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,MAC1Ca,GAAsB0B,eAAiB3G,GAAaC,YAAY,CAClEhgB,KAAM,kBACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,KACzBsD,GAAsB2B,iBAAmB5G,GAAaC,YAAY,CACpEhgB,KAAM,qBACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BvB,WAAYtM,GAAKmR,GAAsB0B,eACvCrG,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsB4B,QAAU7G,GAAaC,YAAY,CAC3DhgB,KAAM,UACNigB,QAASpM,GAAKA,EAAEkS,sBAChB1J,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BvB,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,IAAK,EAAG,IAAK,KAC5Ca,GAAsB6B,eAAiB9G,GAAaC,YAAY,CAClEhgB,KAAM,kBACNigB,QAASpM,GAAKA,EAAEkS,sBAChB1J,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BvB,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,KACxCa,GAAsB8B,OAAS/G,GAAaC,YAAY,CAC1DhgB,KAAM,SACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAK,IACTmR,GAAsB+B,MAAQhH,GAAaC,YAAY,CACzDhgB,KAAM,QACNigB,QAASpM,GAAKA,EAAEgS,eAChBxJ,KAAMxI,GAAK,IACTmR,GAAsBgC,YAAcjH,GAAaC,YAAY,CAC/DhgB,KAAM,eACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,IACZ8E,GAAsBiC,QAAUlH,GAAaC,YAAY,CAC3DhgB,KAAM,UACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAK8Q,GAAa9Q,GAAKA,EAAE6N,OAAS,IAAM,EAAI7N,EAAE6N,OAAS,GAAK,GAClExB,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,IAC5C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBkC,iBAAkBlC,GAAsBiC,QAAS,GAAI,UAAU,KACzHjC,GAAsBmC,UAAYpH,GAAaC,YAAY,CAC7DhgB,KAAM,aACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAK8Q,GAAa9Q,GAAKA,EAAE6N,OAAS,GAAK,GAAK7N,EAAE6N,OAAS,GAAK,IAClEvB,WAAYtM,GAAKmR,GAAsBiC,QACvC5G,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBkC,iBAAmBnH,GAAaC,YAAY,CACpEhgB,KAAM,oBACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAK4Q,GAAW5Q,GAAK+Q,GAAc/Q,EAAEuT,eAAgBvT,GAAK8Q,GAAa9Q,GAAKA,EAAE6N,OAAS,GAAK,GAAK7N,EAAE6N,OAAS,GAAK,GACvHxB,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBkC,iBAAkBlC,GAAsBiC,QAAS,GAAI,UAAU,KACzHjC,GAAsBqC,mBAAqBtH,GAAaC,YAAY,CACtEhgB,KAAM,uBACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAK4Q,GAAW5Q,GAAKkM,GAAaqC,eAAe4C,GAAsBkC,iBAAiB7K,KAAKxI,GAAI,KAAO8Q,GAAa9Q,GAAKA,EAAE6N,OAAS,EAAI,IAAM7N,EAAE6N,OAAS,GAAK,GACrKvB,WAAYtM,GAAKmR,GAAsBkC,iBACvC7G,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBsC,eAAiBvH,GAAaC,YAAY,CAClEhgB,KAAM,kBACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BvB,WAAYtM,GAAKmR,GAAsB0B,eACvCrG,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,MAC1Ca,GAAsBuC,UAAYxH,GAAaC,YAAY,CAC7DhgB,KAAM,YACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,IAC5C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBwC,mBAAoBxC,GAAsBuC,UAAW,GAAI,UAAU,KAC7HvC,GAAsByC,YAAc1H,GAAaC,YAAY,CAC/DhgB,KAAM,eACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,GAAK8Q,GAAa9Q,GAAKA,EAAE6N,OAAS,GAAK,IAAM7N,EAAE6N,OAAS,GAAK,IACnEvB,WAAYtM,GAAKmR,GAAsBuC,UACvClH,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBwC,mBAAqBzH,GAAaC,YAAY,CACtEhgB,KAAM,sBACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,IACJ,MAAM6T,EAAc7T,EAAE6N,OAAS,GAAK,GACpC,GAAIiD,GAAa9Q,GAAI,OAAOA,EAAE6N,OAAS,GAAK,GAC5C,IAAK+C,GAAW5Q,GAAI,OAAO6T,EAC3B,IAAI3G,EAjNR,SAAiCtN,EAAKC,EAAQ2I,EAAMsL,GAClD,IAAI5G,EAAS1E,EAAMuL,EAAkBzL,GAAIC,KAAK3I,EAAKC,EAAQ2I,GAC3D,GAAIuL,EAAgBlU,OAASA,EAAQ,CACnC,IAAImU,EAAaD,EAAgBlU,OACjC,KAAMkU,EAAgBlU,OAASA,GAAU,CACvCqN,GAAU4G,GAAoB,EAAI,EAClC,MAAMG,EAAoB3L,GAAIC,KAAK3I,EAAKC,EAAQqN,GAChD,GAAI8G,EAAaC,EAAkBpU,OAAQ,MAC3C,GAAIpQ,KAAK+R,IAAIyS,EAAkBpU,OAASA,GAAU,GAAI,MACtDpQ,KAAK+R,IAAIyS,EAAkBpU,OAASA,GAAUpQ,KAAK+R,IAAIuS,EAAgBlU,OAASA,KAAYkU,EAAkBE,GAC9GD,EAAavkB,KAAK+B,IAAIwiB,EAAYC,EAAkBpU,OACtD,CACF,CACA,OAAOqN,CACT,CAmMiBgH,CAAwBlU,EAAE4R,iBAAiBhS,IAAKI,EAAE4R,iBAAiB/R,OAAQgU,GAAc7T,EAAE6N,QACxG,OAAOX,EAAS6D,GAAc/Q,EAAE4R,iBAAiB7E,OAAOG,GAASlN,GAAIkN,CAAM,EAE7Eb,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBwC,mBAAoBxC,GAAsBuC,UAAW,GAAI,UAAU,KAC7HvC,GAAsBgD,qBAAuBjI,GAAaC,YAAY,CACxEhgB,KAAM,yBACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,GAAK4Q,GAAW5Q,GAAKkM,GAAaqC,eAAe4C,GAAsBwC,mBAAmBnL,KAAKxI,GAAI,KAAOA,EAAE6N,OAAS,GAAK,GAChIvB,WAAYtM,GAAKmR,GAAsBwC,mBACvCnH,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBiD,SAAWlI,GAAaC,YAAY,CAC5DhgB,KAAM,WACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,GAAK8Q,GAAa9Q,GAAKA,EAAE6N,OAAS,GAAK,GAAK7N,EAAE6N,OAAS,GAAK,GAClExB,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,IAC5C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBkD,kBAAmBlD,GAAsBiD,SAAU,GAAI,UAAU,KAC3HjD,GAAsBmD,WAAapI,GAAaC,YAAY,CAC9DhgB,KAAM,cACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,GAAK8Q,GAAa9Q,GAAKA,EAAE6N,OAAS,GAAK,GAAK7N,EAAE6N,OAAS,GAAK,IAClEvB,WAAYtM,GAAKmR,GAAsBiD,SACvC5H,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBkD,kBAAoBnI,GAAaC,YAAY,CACrEhgB,KAAM,qBACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,IACJ,GAAI8Q,GAAa9Q,GAAI,OAAOA,EAAE6N,OAAS,GAAK,GAC5C,IAAK+C,GAAW5Q,GAAI,OAAOA,EAAE6N,OAAS,GAAK,GAC3C,MAAM0G,EAAaxD,GAAc/Q,EAAE8R,gBAAgB/E,OAAO/M,EAAEuT,eAAe/K,MAAOxI,GAAIwU,EAAcxU,EAAE8R,gBAAgB/E,OAAOwH,GAC7H,OAAO5I,GAAgBM,cAAcuI,GAAahM,IAAI,EAExD6D,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBkD,kBAAmBlD,GAAsBiD,SAAU,GAAI,UAAU,KAC3HjD,GAAsBsD,oBAAsBvI,GAAaC,YAAY,CACvEhgB,KAAM,wBACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,GAAK8Q,GAAa9Q,GAAKA,EAAE6N,OAAS,EAAI,IAAM+C,GAAW5Q,GAAKkM,GAAaqC,eAAe4C,GAAsBkD,kBAAkB7L,KAAKxI,GAAI,KAAOA,EAAE6N,OAAS,GAAK,GACtKvB,WAAYtM,GAAKmR,GAAsBkD,kBACvC7H,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBuD,MAAQxI,GAAaC,YAAY,CACzDhgB,KAAM,QACNigB,QAASpM,GAAKA,EAAE2U,aAChBnM,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,IAC5C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsByD,eAAgBzD,GAAsBuD,MAAO,GAAI,UAAU,KACrHvD,GAAsB0D,QAAU3I,GAAaC,YAAY,CAC3DhgB,KAAM,WACNigB,QAASpM,GAAKA,EAAE2U,aAChBnM,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,IAC3BvB,WAAYtM,GAAKmR,GAAsBuD,MACvClI,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsByD,eAAiB1I,GAAaC,YAAY,CAClEhgB,KAAM,kBACNigB,QAASpM,GAAKA,EAAE2U,aAChBnM,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BxB,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsByD,eAAgBzD,GAAsBuD,MAAO,GAAI,UAAU,KACrHvD,GAAsB2D,iBAAmB5I,GAAaC,YAAY,CACpEhgB,KAAM,qBACNigB,QAASpM,GAAKA,EAAE2U,aAChBnM,KAAMxI,GAAKA,EAAE6N,OAAS,GAAK,GAC3BvB,WAAYtM,GAAKmR,GAAsByD,eACvCpI,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsB4D,aAAe7I,GAAaC,YAAY,CAChEhgB,KAAM,gBACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCqM,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsB4D,aAAc5D,GAAsB6D,gBAAiB,GAAI,WAAW,KAC9H7D,GAAsB6D,gBAAkB9I,GAAaC,YAAY,CACnEhgB,KAAM,oBACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCqM,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsB4D,aAAc5D,GAAsB6D,gBAAiB,GAAI,WAAW,KAC9H7D,GAAsB8D,eAAiB/I,GAAaC,YAAY,CAClEhgB,KAAM,mBACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,IAAM,GACnCsM,WAAYtM,GAAKmR,GAAsB6D,gBACvCzI,iBAAkBvM,GAAKmR,GAAsB4D,aAC7CvI,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsB+D,sBAAwBhJ,GAAaC,YAAY,CACzEhgB,KAAM,2BACNigB,QAASpM,GAAKA,EAAEyR,eAChBjJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCsM,WAAYtM,GAAKmR,GAAsB6D,gBACvCzI,iBAAkBvM,GAAKmR,GAAsB4D,aAC7CvI,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,MAC1Ca,GAAsBgE,eAAiBjJ,GAAaC,YAAY,CAClEhgB,KAAM,kBACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCqM,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBgE,eAAgBhE,GAAsBiE,kBAAmB,GAAI,WAAW,KAClIjE,GAAsBiE,kBAAoBlJ,GAAaC,YAAY,CACrEhgB,KAAM,sBACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCqM,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBgE,eAAgBhE,GAAsBiE,kBAAmB,GAAI,WAAW,KAClIjE,GAAsBkE,iBAAmBnJ,GAAaC,YAAY,CACpEhgB,KAAM,qBACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,GAAK,GACXsM,WAAYtM,GAAKmR,GAAsBiE,kBACvC7I,iBAAkBvM,GAAKmR,GAAsBgE,eAC7C3I,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBmE,wBAA0BpJ,GAAaC,YAAY,CAC3EhgB,KAAM,6BACNigB,QAASpM,GAAKA,EAAE4R,iBAChBpJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCsM,WAAYtM,GAAKmR,GAAsBiE,kBACvC7I,iBAAkBvM,GAAKmR,GAAsBgE,eAC7C3I,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,MAC1Ca,GAAsBoE,cAAgBrJ,GAAaC,YAAY,CACjEhgB,KAAM,iBACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCqM,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBoE,cAAepE,GAAsBqE,iBAAkB,GAAI,WAAW,KAChIrE,GAAsBqE,iBAAmBtJ,GAAaC,YAAY,CACpEhgB,KAAM,qBACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCqM,cAAc,EACdC,WAAYtM,GAAKmR,GAAsBC,eAAepR,GACtDwM,cAAe,IAAI8D,GAAc,EAAG,EAAG,EAAG,GAC1C7D,cAAezM,GAAK,IAAI2Q,GAAcQ,GAAsBoE,cAAepE,GAAsBqE,iBAAkB,GAAI,WAAW,KAChIrE,GAAsBsE,gBAAkBvJ,GAAaC,YAAY,CACnEhgB,KAAM,oBACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,IAAM,GACnCsM,WAAYtM,GAAKmR,GAAsBqE,iBACvCjJ,iBAAkBvM,GAAKmR,GAAsBoE,cAC7C/I,cAAe,IAAI8D,GAAc,IAAK,EAAG,GAAI,MAC3Ca,GAAsBuE,uBAAyBxJ,GAAaC,YAAY,CAC1EhgB,KAAM,4BACNigB,QAASpM,GAAKA,EAAE8R,gBAChBtJ,KAAMxI,GAAK8Q,GAAa9Q,GAAK,GAAK,GAClCsM,WAAYtM,GAAKmR,GAAsBqE,iBACvCjJ,iBAAkBvM,GAAKmR,GAAsBoE,cAC7C/I,cAAe,IAAI8D,GAAc,EAAG,IAAK,EAAG,MAG9C,MAAMqF,GACJ,cAAOjV,CAAQhE,GACb,MAAMmP,EAAMvD,GAAI5H,QAAQhE,GACxB,OAAOiZ,GAAalM,QAAQoC,EAC9B,CACA,cAAOpC,CAAQoC,GACb,OAAO,IAAI8J,GAAa9J,EAAIjM,IAAKiM,EAAIhM,OAAQgM,EAC/C,CACA,uBAAO+J,CAAiBhW,EAAKC,GAC3B,OAAO,IAAI8V,GAAa/V,EAAKC,EAAQ8V,GAAaE,eAAejW,EAAKC,GACxE,CACApa,YAAYma,EAAKC,EAAQ6R,GACvB/oB,KAAKiX,IAAMA,EAAKjX,KAAKkX,OAASA,EAAQlX,KAAK+oB,SAAWA,EAAU/oB,KAAKmtB,MAAQ,IAAInJ,GACnF,CACA,qBAAOkJ,CAAejW,EAAKC,GACzB,IAAIkW,EAAmBzN,GAAIC,KAAK3I,EAAKC,EAAQ,IAAKmW,EAAgBvmB,KAAK+R,IAAIuU,EAAiBlW,OAASA,GACrG,IAAK,IAAIuL,EAAQ,EAAGA,EAAQ,GAAIA,GAAS,EAAG,CAC1C,GAAI3b,KAAKkO,MAAMkC,KAAYpQ,KAAKkO,MAAMoY,EAAiBlW,QAAS,OAAOkW,EACvE,MAAME,EAAS3N,GAAIC,KAAK3I,EAAKC,EAAQ,GAAKuL,GAAQ8K,EAAczmB,KAAK+R,IAAIyU,EAAOpW,OAASA,GACzFqW,EAAcF,IAAkBA,EAAgBE,EAAaH,EAAmBE,GAChF,MAAME,EAAc7N,GAAIC,KAAK3I,EAAKC,EAAQ,GAAKuL,GAAQgL,EAAmB3mB,KAAK+R,IAAI2U,EAAYtW,OAASA,GACxGuW,EAAmBJ,IAAkBA,EAAgBI,EAAkBL,EAAmBI,EAC5F,CACA,OAAOJ,CACT,CACAvN,KAAKA,GACH,IAAI9L,EAAO/T,KAAKmtB,MAAM5rB,IAAIse,GAC1B,YAAO,IAAW9L,IAASA,EAAO4L,GAAIC,KAAK5f,KAAKiX,IAAKjX,KAAKkX,OAAQ2I,GAAMzF,QACxEpa,KAAKmtB,MAAM3rB,IAAIqe,EAAM9L,IAAQA,CAC/B,CACAqQ,OAAOvE,GACL,OAAOF,GAAI5H,QAAQ/X,KAAK6f,KAAKA,GAC/B,EAGF,MAAM6N,GACJ,SAAOC,CAAG5Z,GACR,OAAO,IAAI2Z,GAAY3Z,GAAM,EAC/B,CACA,gBAAO6Z,CAAU7Z,GACf,OAAO,IAAI2Z,GAAY3Z,GAAM,EAC/B,CACA,iBAAO8Z,CAAWC,GAChB,OAAOJ,GAAYK,yBAAwB,EAAID,EACjD,CACA,wBAAOE,CAAkBF,GACvB,OAAOJ,GAAYK,yBAAwB,EAAID,EACjD,CACA,8BAAOC,CAAwBE,EAASH,GACtC,MAAMrK,EAAU,IAAIiK,GAAYI,EAAOrD,QAASwD,GAChD,GAAIH,EAAO/C,UAAW,CACpB,MAAMmD,EAAI,IAAIR,GAAYI,EAAO/C,UAAWkD,GAC5CxK,EAAQ0K,GAAKD,EAAEE,EACjB,CACA,GAAIN,EAAOrC,SAAU,CACnB,MAAMyC,EAAI,IAAIR,GAAYI,EAAOrC,SAAUwC,GAC3CxK,EAAQ4K,GAAKH,EAAEE,EACjB,CACA,GAAIN,EAAO/B,MAAO,CAChB,MAAMmC,EAAI,IAAIR,GAAYI,EAAO/B,MAAOkC,GACxCxK,EAAQsI,MAAQmC,EAAEE,EACpB,CACA,GAAIN,EAAOQ,QAAS,CAClB,MAAMJ,EAAI,IAAIR,GAAYI,EAAOQ,QAASL,GAC1CxK,EAAQ8K,GAAKL,EAAEK,EACjB,CACA,GAAIT,EAAOU,eAAgB,CACzB,MAAMN,EAAI,IAAIR,GAAYI,EAAOU,eAAgBP,GACjDxK,EAAQgL,GAAKP,EAAEO,EACjB,CACA,OAAOhL,CACT,CACA3mB,YAAYiX,EAAM2a,GAChB,MAAMxL,EAAMvD,GAAI5H,QAAQhE,GAAOkD,EAAMiM,EAAIjM,IAAKC,EAASgM,EAAIhM,OAC3DwX,GAAa1uB,KAAKouB,GAAKpB,GAAaC,iBAAiBhW,EAAKC,GAASlX,KAAKmuB,GAAKnB,GAAaC,iBAAiBhW,EAAKC,EAAS,GACzHlX,KAAKquB,GAAKrB,GAAaC,iBAAiBhW,EAAM,GAAIC,EAAS,GAAIlX,KAAKuuB,GAAKvB,GAAaC,iBAAiBhW,EAAKnQ,KAAKgC,IAAIoO,EAAS,GAAI,IAClIlX,KAAKyuB,GAAKzB,GAAaC,iBAAiBhW,EAAKnQ,KAAKgC,IAAIoO,EAAS,EAAG,MAAQlX,KAAKouB,GAAKpB,GAAaC,iBAAiBhW,EAAKnQ,KAAK+B,IAAI,GAAIqO,IACpIlX,KAAKmuB,GAAKnB,GAAaC,iBAAiBhW,EAAK,IAAKjX,KAAKquB,GAAKrB,GAAaC,iBAAiBhW,EAAM,GAAI,IACpGjX,KAAKuuB,GAAKvB,GAAaC,iBAAiBhW,EAAK,GAAIjX,KAAKyuB,GAAKzB,GAAaC,iBAAiBhW,EAAK,IAC9FjX,KAAK+rB,MAAQiB,GAAaC,iBAAiB,GAAI,GACjD,EAGF,MAAM0B,GACJ,WAAIlE,GACF,OAAOzqB,KAAKoG,MAAMqkB,OACpB,CACA,aAAIE,GACF,OAAO3qB,KAAKoG,MAAMukB,SACpB,CACA,oBAAID,GACF,OAAO1qB,KAAKoG,MAAMskB,gBACpB,CACA,sBAAIG,GACF,OAAO7qB,KAAKoG,MAAMykB,kBACpB,CACA,aAAIE,GACF,OAAO/qB,KAAKoG,MAAM2kB,SACpB,CACA,eAAIE,GACF,OAAOjrB,KAAKoG,MAAM6kB,WACpB,CACA,sBAAID,GACF,OAAOhrB,KAAKoG,MAAM4kB,kBACpB,CACA,wBAAIQ,GACF,OAAOxrB,KAAKoG,MAAMolB,oBACpB,CACA,YAAIC,GACF,OAAOzrB,KAAKoG,MAAMqlB,QACpB,CACA,cAAIE,GACF,OAAO3rB,KAAKoG,MAAMulB,UACpB,CACA,qBAAID,GACF,OAAO1rB,KAAKoG,MAAMslB,iBACpB,CACA,uBAAII,GACF,OAAO9rB,KAAKoG,MAAM0lB,mBACpB,CACA,SAAIC,GACF,OAAO/rB,KAAKoG,MAAM2lB,KACpB,CACA,WAAIG,GACF,OAAOlsB,KAAKoG,MAAM8lB,OACpB,CACA,kBAAID,GACF,OAAOjsB,KAAKoG,MAAM6lB,cACpB,CACA,oBAAIE,GACF,OAAOnsB,KAAKoG,MAAM+lB,gBACpB,CACA,cAAIxI,GACF,OAAO3jB,KAAKoG,MAAMud,UACpB,CACA,gBAAI6F,GACF,OAAOxpB,KAAKoG,MAAMojB,YACpB,CACA,WAAIC,GACF,OAAOzpB,KAAKoG,MAAMqjB,OACpB,CACA,aAAIM,GACF,OAAO/pB,KAAKoG,MAAM2jB,SACpB,CACA,kBAAIC,GACF,OAAOhqB,KAAKoG,MAAM4jB,cACpB,CACA,oBAAIC,GACF,OAAOjqB,KAAKoG,MAAM6jB,gBACpB,CACA,WAAIG,GACF,OAAOpqB,KAAKoG,MAAMgkB,OACpB,CACA,kBAAIC,GACF,OAAOrqB,KAAKoG,MAAMikB,cACpB,CACA,UAAIC,GACF,OAAOtqB,KAAKoG,MAAMkkB,MACpB,CACA,SAAIC,GACF,OAAOvqB,KAAKoG,MAAMmkB,KACpB,CACA,kBAAIL,GACF,OAAOlqB,KAAKoG,MAAM8jB,cACpB,CACA,oBAAIC,GACF,OAAOnqB,KAAKoG,MAAM+jB,gBACpB,CACA,kBAAIW,GACF,OAAO9qB,KAAKoG,MAAM0kB,cACpB,CACA,YAAO8D,CAAM7a,GACX,OAAO4a,GAAOE,qBAAqBnB,GAAYC,GAAG5Z,GACpD,CACA,WAAO+a,CAAK/a,GACV,OAAO4a,GAAOI,oBAAoBrB,GAAYC,GAAG5Z,GACnD,CACA,mBAAOib,CAAajb,GAClB,OAAO4a,GAAOE,qBAAqBnB,GAAYE,UAAU7Z,GAC3D,CACA,kBAAOkb,CAAYlb,GACjB,OAAO4a,GAAOI,oBAAoBrB,GAAYE,UAAU7Z,GAC1D,CACA,2BAAO8a,CAAqBK,GAC1B,OAAO,IAAIP,GAAO,CAChBlE,QAASyE,EAAKd,GAAGvO,KAAK,IACtB8K,UAAWuE,EAAKd,GAAGvO,KAAK,KACxB6K,iBAAkBwE,EAAKd,GAAGvO,KAAK,IAC/BgL,mBAAoBqE,EAAKd,GAAGvO,KAAK,IACjCkL,UAAWmE,EAAKf,GAAGtO,KAAK,IACxBoL,YAAaiE,EAAKf,GAAGtO,KAAK,KAC1BmL,mBAAoBkE,EAAKf,GAAGtO,KAAK,IACjC2L,qBAAsB0D,EAAKf,GAAGtO,KAAK,IACnC4L,SAAUyD,EAAKb,GAAGxO,KAAK,IACvB8L,WAAYuD,EAAKb,GAAGxO,KAAK,KACzB6L,kBAAmBwD,EAAKb,GAAGxO,KAAK,IAChCiM,oBAAqBoD,EAAKb,GAAGxO,KAAK,IAClCkM,MAAOmD,EAAKnD,MAAMlM,KAAK,IACvBqM,QAASgD,EAAKnD,MAAMlM,KAAK,KACzBoM,eAAgBiD,EAAKnD,MAAMlM,KAAK,IAChCsM,iBAAkB+C,EAAKnD,MAAMlM,KAAK,IAClC8D,WAAYuL,EAAKX,GAAG1O,KAAK,IACzB2J,aAAc0F,EAAKX,GAAG1O,KAAK,IAC3B4J,QAASyF,EAAKX,GAAG1O,KAAK,IACtBkK,UAAWmF,EAAKX,GAAG1O,KAAK,IACxBmK,eAAgBkF,EAAKT,GAAG5O,KAAK,IAC7BoK,iBAAkBiF,EAAKT,GAAG5O,KAAK,IAC/BuK,QAAS8E,EAAKT,GAAG5O,KAAK,IACtBwK,eAAgB6E,EAAKT,GAAG5O,KAAK,IAC7ByK,OAAQ4E,EAAKX,GAAG1O,KAAK,GACrB0K,MAAO2E,EAAKX,GAAG1O,KAAK,GACpBqK,eAAgBgF,EAAKX,GAAG1O,KAAK,IAC7BsK,iBAAkB+E,EAAKX,GAAG1O,KAAK,IAC/BiL,eAAgBoE,EAAKd,GAAGvO,KAAK,KAEjC,CACA,0BAAOkP,CAAoBG,GACzB,OAAO,IAAIP,GAAO,CAChBlE,QAASyE,EAAKd,GAAGvO,KAAK,IACtB8K,UAAWuE,EAAKd,GAAGvO,KAAK,IACxB6K,iBAAkBwE,EAAKd,GAAGvO,KAAK,IAC/BgL,mBAAoBqE,EAAKd,GAAGvO,KAAK,IACjCkL,UAAWmE,EAAKf,GAAGtO,KAAK,IACxBoL,YAAaiE,EAAKf,GAAGtO,KAAK,IAC1BmL,mBAAoBkE,EAAKf,GAAGtO,KAAK,IACjC2L,qBAAsB0D,EAAKf,GAAGtO,KAAK,IACnC4L,SAAUyD,EAAKb,GAAGxO,KAAK,IACvB8L,WAAYuD,EAAKb,GAAGxO,KAAK,IACzB6L,kBAAmBwD,EAAKb,GAAGxO,KAAK,IAChCiM,oBAAqBoD,EAAKb,GAAGxO,KAAK,IAClCkM,MAAOmD,EAAKnD,MAAMlM,KAAK,IACvBqM,QAASgD,EAAKnD,MAAMlM,KAAK,IACzBoM,eAAgBiD,EAAKnD,MAAMlM,KAAK,IAChCsM,iBAAkB+C,EAAKnD,MAAMlM,KAAK,IAClC8D,WAAYuL,EAAKX,GAAG1O,KAAK,IACzB2J,aAAc0F,EAAKX,GAAG1O,KAAK,IAC3B4J,QAASyF,EAAKX,GAAG1O,KAAK,IACtBkK,UAAWmF,EAAKX,GAAG1O,KAAK,IACxBmK,eAAgBkF,EAAKT,GAAG5O,KAAK,IAC7BoK,iBAAkBiF,EAAKT,GAAG5O,KAAK,IAC/BuK,QAAS8E,EAAKT,GAAG5O,KAAK,IACtBwK,eAAgB6E,EAAKT,GAAG5O,KAAK,IAC7ByK,OAAQ4E,EAAKX,GAAG1O,KAAK,GACrB0K,MAAO2E,EAAKX,GAAG1O,KAAK,GACpBqK,eAAgBgF,EAAKX,GAAG1O,KAAK,IAC7BsK,iBAAkB+E,EAAKX,GAAG1O,KAAK,IAC/BiL,eAAgBoE,EAAKd,GAAGvO,KAAK,KAEjC,CACA/iB,YAAYsJ,GACVpG,KAAKoG,MAAQA,CACf,CACA+oB,SACE,MAAO,IACFnvB,KAAKoG,MAEZ,EAGF,SAASgpB,GAAYrb,GACnB,MAAMwJ,EAAIzJ,EAAYC,GAAOuJ,EAAItJ,EAAcD,GAAOoF,EAAIlF,EAAaF,GAAOsb,EAAW,CAAE9R,EAAE+R,SAAS,IAAKhS,EAAEgS,SAAS,IAAKnW,EAAEmW,SAAS,KACtI,IAAK,MAAOxsB,EAAGysB,KAASF,EAASG,UAAW,IAAMD,EAAKjyB,SAAW+xB,EAASvsB,GAAK,IAAMysB,GACtF,MAAO,IAAMF,EAASI,KAAK,GAC7B,CAEA,SAASC,GAAYC,GACnB,MAAMC,EAAU,KAAOD,EAAMA,EAAI1nB,QAAQ,IAAK,KAAK3K,OAAQuyB,EAAQ,IAAMF,EAAIryB,OAAQwyB,EAAU,IAAMH,EAAIryB,OACzG,IAAKsyB,IAAYC,IAAUC,EAAS,MAAM,IAAI7L,MAAM,kBAAoB0L,GACxE,IAAIpS,EAAI,EAAGD,EAAI,EAAGnE,EAAI,EACtB,OAAOyW,GAAWrS,EAAIwS,GAAYJ,EAAIK,MAAM,EAAG,GAAGC,OAAO,IAAK3S,EAAIyS,GAAYJ,EAAIK,MAAM,EAAG,GAAGC,OAAO,IACrG9W,EAAI4W,GAAYJ,EAAIK,MAAM,EAAG,GAAGC,OAAO,KAAOJ,GAAStS,EAAIwS,GAAYJ,EAAIK,MAAM,EAAG,IACpF1S,EAAIyS,GAAYJ,EAAIK,MAAM,EAAG,IAAK7W,EAAI4W,GAAYJ,EAAIK,MAAM,EAAG,KAAOF,IAAYvS,EAAIwS,GAAYJ,EAAIK,MAAM,EAAG,IAC/G1S,EAAIyS,GAAYJ,EAAIK,MAAM,EAAG,IAAK7W,EAAI4W,GAAYJ,EAAIK,MAAM,EAAG,MAAO,KAAO,IAAM,IAAMzS,IAAM,IAAM,IAAMD,IAAM,EAAI,IAAMnE,KAAO,CACpI,CAEA,SAAS4W,GAAYtuB,GACnB,OAAOyuB,SAASzuB,EAAO,GACzB,CAEA,SAAS0uB,GAAqB3T,EAAQ4T,QAAY,IAAZA,MAAe,IACnD,MAAM3M,EAAUiK,GAAYC,GAAGnR,GAC/B,MAAO,CACLA,OAAQA,EACR6T,QAAS,CACPzB,MAAOD,GAAOC,MAAMpS,GACpBsS,KAAMH,GAAOG,KAAKtS,IAEpB8T,SAAU,CACR7F,QAAShH,EAAQ2K,GACjBrD,UAAWtH,EAAQ0K,GACnB1C,SAAUhI,EAAQ4K,GAClBC,QAAS7K,EAAQ8K,GACjBC,eAAgB/K,EAAQgL,GACxB1C,MAAOtI,EAAQsI,OAEjBqE,aAAcA,EAAatqB,KAAKC,GAIpC,SAAqByW,EAAQ+T,GAC3B,IAAI9uB,EAAQ8uB,EAAM9uB,MAClB,MAAMme,EAAOne,EAAO2f,EAAK5E,EACzB+T,EAAMC,QAAU/uB,EAAQif,GAAMC,UAAUf,EAAMwB,IAC9C,MAAMqP,EAAQ/C,GAAYC,GAAGlsB,GAAO2sB,GACpC,MAAO,CACLmC,MAAOA,EACP9uB,MAAOA,EACPmtB,MAAO,CACL2B,MAAOE,EAAM5Q,KAAK,IAClB6Q,QAASD,EAAM5Q,KAAK,KACpB8Q,eAAgBF,EAAM5Q,KAAK,IAC3B+Q,iBAAkBH,EAAM5Q,KAAK,KAE/BiP,KAAM,CACJyB,MAAOE,EAAM5Q,KAAK,IAClB6Q,QAASD,EAAM5Q,KAAK,IACpB8Q,eAAgBF,EAAM5Q,KAAK,IAC3B+Q,iBAAkBH,EAAM5Q,KAAK,KAGnC,CAzByCgR,CAAYrU,EAAQzW,KAE7D,CC9oCA,SAAS+qB,GAAOhb,GACd,MAAMyH,EAAIzW,KAAKkO,MACT+b,EAAIjb,EAAExY,OACP0zB,EAAO,GAeb,MAdoC,QAAhClb,EAAEka,MAAM,EAAG,GAAGvlB,eACjBqL,EAAIA,EAAE7N,QAAQ,IAAK,IAAI3E,MAAM,KAC7B0tB,EAAK,GAAKd,SAASpa,EAAE,GAAGka,MAA6B,MAAvBla,EAAE,GAAGrL,cAAwB,EAAI,GAAI,IACnEumB,EAAK,GAAKd,SAASpa,EAAE,GAAI,IACzBkb,EAAK,GAAKd,SAASpa,EAAE,GAAI,IACzBkb,EAAK,GAAKlb,EAAE,GAAK5N,WAAW4N,EAAE,KAAO,IAE1BA,EAAPib,EAAI,EAAOb,SAASe,OAAOnb,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMib,EAAI,EAAIE,OAAOnb,EAAE,IAAMA,EAAE,GAAK,IAAK,IACrGoa,SAASpa,EAAEka,MAAM,GAAI,IAC9BgB,EAAK,GAAMlb,GAAK,GAAM,IACtBkb,EAAK,GAAMlb,GAAK,EAAK,IACrBkb,EAAK,GAAS,IAAJlb,EACVkb,EAAK,GAAW,IAAND,GAAiB,IAANA,EAAUxT,GAAKzH,GAAK,GAAM,KAAO,IAAO,KAAS,KAAS,GAEzEkb,CACR,CAGA,SAASR,GAAM5Q,EAAMwB,EAAI8M,QAAC,IAADA,MAAI,IAC3B,MAAM3Q,EAAIzW,KAAKkO,MACf4K,EAAOA,EAAKnd,OACb2e,EAAKA,EAAG3e,OAERyrB,EADUA,EAAI,GACD,EAALA,EAASA,EACjB,MAAMrY,EAAIib,GAAOlR,GACX3K,EAAI6b,GAAO1P,GACjB,MAAc,MAAVA,EAAG,GACC,OAAmB,MAAVA,EAAG,GAAa,KAAO,KACtC7D,GAAItI,EAAE,GAAKY,EAAE,IAAMqY,EAAKrY,EAAE,IAAM,IAChC0H,GAAItI,EAAE,GAAKY,EAAE,IAAMqY,EAAKrY,EAAE,IAAM,IAChC0H,GAAItI,EAAE,GAAKY,EAAE,IAAMqY,EAAKrY,EAAE,KACzBA,EAAE,GAAK,GAAKZ,EAAE,GAAK,EAAI,GAAK,KAC3BY,EAAE,IAAM,GAAKZ,EAAE,IAAM,EAClBsI,EAAiC,MAA5BtI,EAAE,GAAKY,EAAE,IAAMqY,EAAKrY,EAAE,KAAe,IAC1CZ,EAAE,GAAK,EAAIY,EAAE,GAAKZ,EAAE,KAErB,IAGC,KAAO,WAIT,UAHJY,EAAE,IAAM,GAAKZ,EAAE,IAAM,EAClBsI,EAAiC,MAA5BtI,EAAE,GAAKY,EAAE,IAAMqY,EAAKrY,EAAE,KAC3BZ,EAAE,IAAM,EAAIsI,EAAS,IAAPtI,EAAE,IAAYY,EAAE,IAAM,EAAI0H,EAAS,IAAP1H,EAAE,IAAY,KAE1B,MAAhC0H,GAAItI,EAAE,GAAKY,EAAE,IAAMqY,EAAKrY,EAAE,IACM,IAAhC0H,GAAItI,EAAE,GAAKY,EAAE,IAAMqY,EAAKrY,EAAE,IAC3B0H,GAAItI,EAAE,GAAKY,EAAE,IAAMqY,EAAKrY,EAAE,KACzByZ,SAAS,IAAIU,MAAMna,EAAE,IAAM,GAAKZ,EAAE,IAAM,EAAI,EAAI,EACnD,CAGO,MAAMic,GAAiB,SAACC,QAAQ,IAARA,MAAW,IACxC,MAAMC,EAAQjB,GAAqBT,GAAa,IAAGyB,EAASlpB,QAAQ,IAAK,QACzE,CAAC,IAAM,IAAM,IAAM,IAAM,KAAM7K,SAAQ,CAACwV,EAAQnL,KAC9C2pB,EAAMf,QAAQzB,MAAMxoB,MAAO,UAASqB,EAAQ,KAAOioB,GACjDc,GACEpB,GAAYgC,EAAMf,QAAQzB,MAAMxoB,MAAMqjB,SACtC2F,GAAYgC,EAAMf,QAAQzB,MAAMxoB,MAAMqkB,SACtC7X,IAGJwe,EAAMf,QAAQvB,KAAK1oB,MAAO,UAASqB,EAAQ,KAAOioB,GAChDc,GACEpB,GAAYgC,EAAMf,QAAQvB,KAAK1oB,MAAMqjB,SACrC2F,GAAYgC,EAAMf,QAAQvB,KAAK1oB,MAAMqkB,SACrC7X,GAEH,IAGH,MAAMpP,EAAQ8S,GACLA,EACJhT,MAAM,IACNwC,KAAKurB,GACJA,EAAKzmB,gBAAkBymB,GAAiB,MAATA,GAAyB,MAATA,EAC1C,IAAGA,EAAK5mB,gBACT4mB,IAEL5B,KAAK,IAGJ6B,EAActpB,GACL,CAAC,WAAY,SAAU,QAAS,QAAS,cAC1C7F,QAAQovB,GAAMvpB,EAAKyC,cAAc+mB,SAASD,KAAIj0B,OAAS,EAG/DsxB,EAAQ,GACRE,EAAO,GAUb,OATA/xB,OAAOI,KAAKi0B,EAAMf,QAAQzB,MAAMxoB,OAAOhJ,SAAS4K,IAC1CspB,EAAWtpB,KACf4mB,EAAMprB,EAAM,WAAUwE,MAAWonB,GAAYgC,EAAMf,QAAQzB,MAAMxoB,MAAM4B,IAAM,IAE/EjL,OAAOI,KAAKi0B,EAAMf,QAAQvB,KAAK1oB,OAAOhJ,SAAS4K,IACzCspB,EAAWtpB,KACf8mB,EAAKtrB,EAAM,WAAUwE,MAAWonB,GAAYgC,EAAMf,QAAQvB,KAAK1oB,MAAM4B,IAAM,IAGtE,CAAE4mB,QAAOE,OAClB,ECxGA,IAAI2C,GAAY,EAKT,SAAS7wB,GAAG8wB,EAAqB5rB,QAAjB,IAAJ4rB,MAAO,mBAAiB,IAAH5rB,MAAM,oBAC5C,MAAMxI,EAASwI,EAAIxI,OACnB,OAAOo0B,EAAKzpB,QAAQ,MAAM,IAAMnC,EAAIgB,KAAKoX,MAAMpX,KAAK6qB,SAAWr0B,KACjE,CACO,MAAMs0B,GAAsB,6IAMjCnvB,OAEWovB,GAAuB,2CAE9B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG/rB,KAAI,IAAM,+CAA8C2pB,KAAK,mBAE1FhtB,OAEK,SAASqvB,GAAqBljB,GACnC,IAAImjB,EACJ,OAAOnjB,EACJtL,MAAM,IACNwC,KAAI,CAACurB,EAAM5pB,IACN4pB,EAAK3mB,MAAM,UAAsB,IAAVjD,IAAgBsqB,GACzCA,GAAW,EACH,IAAGV,EAAK5mB,iBAEX4mB,EAAK5mB,gBAEbglB,KAAK,GACV,CACO,SAASuC,GAAYn1B,GAC1B,MAAMo1B,EAASp1B,EACfE,OAAOI,KAAK80B,GAAQ70B,SAASC,IAC3B,IACE40B,EAAO50B,GAAO,I,CACd,MAAO6L,GACP,CAEF,WACS+oB,EAAO50B,E,CACd,MAAO6L,GACP,IAGN,CACO,SAASzI,GAAsBC,GAEpC,OADeG,IACDJ,sBAAsBC,EACtC,CAKO,SAASwxB,GAASxxB,EAAUyxB,GACjC,YADsC,IAALA,MAAQ,GAClC7xB,WAAWI,EAAUyxB,EAC9B,CACO,SAASC,GAAU1xB,GACxB,OAAOD,IAAsB,KAC3BA,GAAsBC,EAAS,GAEnC,CACO,SAAS2xB,KACd,OAAOjyB,KAAKiyB,KACd,CAEO,SAASC,GAAcC,GAC5B,MAAMxxB,EAASF,IACT2xB,EAAQ,GACd,IACI1vB,EACAwD,EACAmsB,EACAn1B,EAJAo1B,EAAaH,GAAOxxB,EAAOpC,SAASI,KAKxC,GAA0B,iBAAf2zB,GAA2BA,EAAWp1B,OAK/C,IAJAo1B,EAAaA,EAAWhwB,QAAQ,MAAQ,EAAIgwB,EAAWzqB,QAAQ,QAAS,IAAM,GAC9E3B,EAASosB,EAAWpvB,MAAM,KAAKnB,QAAQwwB,GAA8B,KAAfA,IACtDr1B,EAASgJ,EAAOhJ,OAEXwF,EAAI,EAAGA,EAAIxF,EAAQwF,GAAK,EAC3B2vB,EAAQnsB,EAAOxD,GAAGmF,QAAQ,QAAS,IAAI3E,MAAM,KAC7CkvB,EAAMI,mBAAmBH,EAAM,UACT,IAAbA,EAAM,QACTnpB,EACAspB,mBAAmBH,EAAMzC,MAAM,GAAGP,KAAK,OAAS,GAG1D,OAAO+C,CACT,CACO,SAASK,GAAa/wB,EAAI+a,QAAI,IAAJA,MAAO,KACtC,MAAM9b,EAASF,IACf,IAAIsS,EACA2f,EACAC,EAEJ,MAAMC,EAAWjyB,EAAOd,iBAAiB6B,EAAI,MAwC7C,OAtCIf,EAAOkyB,iBACTH,EAAeE,EAAS5hB,WAAa4hB,EAASE,gBAC1CJ,EAAaxvB,MAAM,KAAKhG,OAAS,IACnCw1B,EAAeA,EACZxvB,MAAM,MACNwC,KAAK/C,GAAMA,EAAEkF,QAAQ,IAAK,OAC1BwnB,KAAK,OAIVsD,EAAkB,IAAIhyB,EAAOkyB,gBAAiC,SAAjBH,EAA0B,GAAKA,KAE5EC,EACEC,EAASG,cACTH,EAASI,YACTJ,EAASK,aACTL,EAASM,aACTN,EAAS5hB,WACT4hB,EAAS9yB,iBAAiB,aAAa+H,QAAQ,aAAc,sBAC/DkL,EAAS4f,EAAgBzD,WAAWhsB,MAAM,MAG/B,MAATuZ,IAE0BiW,EAAxB/xB,EAAOkyB,gBAAgCF,EAAgBQ,IAEhC,KAAlBpgB,EAAO7V,OAA8B4K,WAAWiL,EAAO,KAE5CjL,WAAWiL,EAAO,KAE3B,MAAT0J,IAE0BiW,EAAxB/xB,EAAOkyB,gBAAgCF,EAAgBS,IAEhC,KAAlBrgB,EAAO7V,OAA8B4K,WAAWiL,EAAO,KAE5CjL,WAAWiL,EAAO,KAEjC2f,GAAgB,CACzB,CACO,SAASW,GAAgB52B,EAAKoN,GACnC,QAD0C,IAAPA,MAAU,IAC1B,iBAARpN,EAAkB,OAAOA,EACpC,MAAM62B,EAAc,GAEpB,IAAIC,EACJ,SAASC,EAAQpwB,GACf,GAAIyG,EAAQ3M,OAAS,EAAG,CACtB,IAAIu2B,EAAc,GAClB,IAAK,IAAIxuB,EAAI,EAAGA,EAAI4E,EAAQ3M,OAAQ+H,GAAK,EAC1BwuB,GAAH,IAANxuB,EAAwB4E,EAAQ5E,GACf,IAAGyuB,mBAAmB7pB,EAAQ5E,OAErD,MAAQ,GAAEwuB,KAAeC,mBAAmBtwB,KAC9C,CACA,OAAOswB,mBAAmBtwB,EAC5B,CACA,SAASuwB,EAAStyB,GAChB,OAAOqyB,mBAAmBryB,EAC5B,CA6BA,OA5BA1E,OAAOI,KAAKN,GAAKO,SAAS4K,IACxB,IAAIgsB,EACJ,GAAI/yB,MAAMc,QAAQlF,EAAImL,IAAQ,CAC5BgsB,EAAS,GACT,IAAK,IAAIlxB,EAAI,EAAGA,EAAIjG,EAAImL,GAAM1K,OAAQwF,GAAK,EACpC7B,MAAMc,QAAQlF,EAAImL,GAAMlF,KAA+B,iBAAjBjG,EAAImL,GAAMlF,GAMnDkxB,EAAOhyB,KAAM,GAAE4xB,EAAQ5rB,QAAW+rB,EAASl3B,EAAImL,GAAMlF,QALrD6wB,EAAa1pB,EAAQ+lB,QACrB2D,EAAW3xB,KAAKgG,GAChB2rB,EAAW3xB,KAAKivB,OAAOnuB,IACvBkxB,EAAOhyB,KAAKyxB,GAAgB52B,EAAImL,GAAMlF,GAAI6wB,KAK1CK,EAAO12B,OAAS,GAAGo2B,EAAY1xB,KAAKgyB,EAAOvE,KA9BjC,KA+BhB,MAAyB,OAAd5yB,EAAImL,IAAgC,KAAdnL,EAAImL,GACnC0rB,EAAY1xB,KAAM,GAAE4xB,EAAQ5rB,OACE,iBAAdnL,EAAImL,IAEpB2rB,EAAa1pB,EAAQ+lB,QACrB2D,EAAW3xB,KAAKgG,GAChBgsB,EAASP,GAAgB52B,EAAImL,GAAO2rB,GACrB,KAAXK,GAAeN,EAAY1xB,KAAKgyB,SACN,IAAdn3B,EAAImL,IAAuC,KAAdnL,EAAImL,GAEjD0rB,EAAY1xB,KAAM,GAAE4xB,EAAQ5rB,MAAS+rB,EAASl3B,EAAImL,OAC3B,KAAdnL,EAAImL,IAAc0rB,EAAY1xB,KAAK4xB,EAAQ5rB,GAAM,IAEvD0rB,EAAYjE,KA5CD,IA6CpB,CACO,SAAS7yB,GAASq3B,GACvB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEn3B,aAAem3B,EAAEn3B,cAAgBC,MACnF,CACO,SAASm3B,KAAe,QAAAxuB,EAAAhC,UAAApG,OAANqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GAC3B,MAAMwb,EAAKzd,EAAK,GAChBA,EAAK6J,OAAO,EAAG,GACf,MAAMoS,EAAOjc,EAEb,IAAK,IAAIb,EAAI,EAAGA,EAAI8c,EAAKtiB,OAAQwF,GAAK,EAAG,CACvC,MAAMqxB,EAAaxwB,EAAKb,GACxB,GAAIqxB,QAAiD,CACnD,MAAMC,EAAYr3B,OAAOI,KAAKJ,OAAOo3B,IACrC,IAAK,IAAIE,EAAY,EAAGC,EAAMF,EAAU92B,OAAQ+2B,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOz3B,OAAO03B,yBAAyBN,EAAYI,QAC5CjrB,IAATkrB,GAAsBA,EAAKE,aAC7BtT,EAAGmT,GAAWJ,EAAWI,GAE7B,CACF,CACF,CACA,OAAOnT,CACT,CACO,SAASpkB,KACd,IACIokB,EACAxB,EAFA+U,GAAO,EAEF,QAAAhlB,EAAAjM,UAAApG,OAHeqG,EAAI1C,UAAA0O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjM,EAAIiM,GAAAlM,UAAAkM,GAIL,kBAAZjM,EAAK,IACdgxB,EAAOhxB,EAAK,GACZyd,EAAKzd,EAAK,GACVA,EAAK6J,OAAO,EAAG,GACfoS,EAAOjc,IAEPyd,EAAKzd,EAAK,GACVA,EAAK6J,OAAO,EAAG,GACfoS,EAAOjc,GAET,IAAK,IAAIb,EAAI,EAAGA,EAAI8c,EAAKtiB,OAAQwF,GAAK,EAAG,CACvC,MAAMqxB,EAAaxwB,EAAKb,GACxB,GAAIqxB,QAAiD,CACnD,MAAMC,EAAYr3B,OAAOI,KAAKJ,OAAOo3B,IACrC,IAAK,IAAIE,EAAY,EAAGC,EAAMF,EAAU92B,OAAQ+2B,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOz3B,OAAO03B,yBAAyBN,EAAYI,QAC5CjrB,IAATkrB,GAAsBA,EAAKE,aACxBC,EAEM/3B,GAASwkB,EAAGmT,KAAa33B,GAASu3B,EAAWI,IACtDv3B,GAAOokB,EAAGmT,GAAUJ,EAAWI,KACrB33B,GAASwkB,EAAGmT,KAAa33B,GAASu3B,EAAWI,KACvDnT,EAAGmT,GAAW,GACdv3B,GAAOokB,EAAGmT,GAAUJ,EAAWI,KAE/BnT,EAAGmT,GAAWJ,EAAWI,GAPzBnT,EAAGmT,GAAWJ,EAAWI,GAU/B,CACF,CACF,CACA,OAAOnT,CACT,CACO,SAASwT,GAAcjF,GAC5B,MAAM3V,EAAI2V,EAAI1nB,QAAQ,oCAAoC,CAACmP,EAAGmG,EAAGD,EAAGnE,IAAMoE,EAAIA,EAAID,EAAIA,EAAInE,EAAIA,IACxF0b,EAAS,4CAA4CC,KAAK9a,GAChE,OAAO6a,EAASA,EAAO7E,MAAM,GAAGlqB,KAAKwQ,GAAM4Z,SAAS5Z,EAAG,MAAO,IAChE,CACO,SAASye,GAAcxX,EAAGD,EAAGnE,GAClC,MAAM0b,EAAS,CAACtX,EAAGD,EAAGnE,GACnBrT,KAAKwQ,IACJ,MAAMqZ,EAAMrZ,EAAEgZ,SAAS,IACvB,OAAsB,IAAfK,EAAIryB,OAAgB,IAAGqyB,IAAQA,CAAG,IAE1CF,KAAK,IACR,MAAQ,IAAGoF,GACb,CACO,SAASG,GAAczX,EAAGD,EAAGnE,GAClCoE,GAAK,IACLD,GAAK,IACLnE,GAAK,IACL,MAAMtQ,EAAM/B,KAAK+B,IAAI0U,EAAGD,EAAGnE,GACrBrQ,EAAMhC,KAAKgC,IAAIyU,EAAGD,EAAGnE,GACrBrD,EAAIjN,EAAMC,EAChB,IAAIkR,EACM,IAANlE,EAASkE,EAAI,EACRnR,IAAQ0U,EAAGvD,GAAMsD,EAAInE,GAAKrD,EAAK,EAC/BjN,IAAQyU,EAAGtD,GAAKb,EAAIoE,GAAKzH,EAAI,EAC7BjN,IAAQsQ,IAAGa,GAAKuD,EAAID,GAAKxH,EAAI,GACtC,MAAMib,GAAKjoB,EAAMD,GAAO,EAGxB,OADImR,EAAI,IAAGA,EAAI,EAAWA,GACnB,CAAK,GAAJA,EAFQ,IAANlE,EAAU,EAAIA,GAAK,EAAIhP,KAAK+R,IAAI,EAAIkY,EAAI,IAE/BA,EACrB,CACO,SAASkE,GAAcjb,EAAG3C,EAAG0Z,GAClC,MAAMhrB,GAAK,EAAIe,KAAK+R,IAAI,EAAIkY,EAAI,IAAM1Z,EAChC6d,EAAKlb,EAAI,GACT3B,EAAItS,GAAK,EAAIe,KAAK+R,IAAKqc,EAAK,EAAK,IACvC,IAAIC,EACAC,OAAOC,MAAMrb,SAAmB,IAANA,EAC5Bmb,EAAO,CAAC,EAAG,EAAG,GACLD,GAAM,EAAGC,EAAO,CAACpvB,EAAGsS,EAAG,GACzB6c,GAAM,EAAGC,EAAO,CAAC9c,EAAGtS,EAAG,GACvBmvB,GAAM,EAAGC,EAAO,CAAC,EAAGpvB,EAAGsS,GACvB6c,GAAM,EAAGC,EAAO,CAAC,EAAG9c,EAAGtS,GACvBmvB,GAAM,EAAGC,EAAO,CAAC9c,EAAG,EAAGtS,GACvBmvB,GAAM,IAAGC,EAAO,CAACpvB,EAAG,EAAGsS,IAChC,MAAMjB,EAAI2Z,EAAIhrB,EAAI,EAClB,OAAOovB,EAAKrvB,KAAKwQ,GAAMxP,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,IAAKhC,KAAKkO,MAAM,KAAOsB,EAAIc,OACzE,CACO,SAASke,GAActb,EAAG3C,EAAG8B,GAClC,MAAMoc,EAAM,CACVvb,IACA3C,EAAG,EACH0Z,EAAG,GAECyE,EAAWne,EAAXme,EAAcrc,EAKpB,OAHAoc,EAAIxE,GAAM,EAAIyE,GAASA,EAAS,EAChCD,EAAIle,EAAIke,EAAIxE,GAAKwE,EAAIxE,EAAI,EAAKyE,EAAQA,GAAUD,EAAIxE,EAAI,GAAc,EAARwE,EAAIxE,EAAQ,EAAY,EAARwE,EAAIxE,GAASwE,EAAIle,EAExF,CAACke,EAAIvb,EAAGub,EAAIle,EAAGke,EAAIxE,EAC5B,CACO,SAAS0E,GAAczb,EAAG3C,EAAG0Z,GAClC,MAAMyE,EAAM,CACVxb,IACA3C,EAAG,EACH8B,EAAG,GAECoc,EAAcxE,EAEd9b,EAFWoC,GAEEke,EAAQ,GAAMA,EAAQ,EAAIA,GAI7C,OAHAC,EAAIrc,EAAIoc,EAAQtgB,EAChBugB,EAAIne,EAAIke,EAAQ,EAAK,EAAItgB,EAAKugB,EAAIrc,EAAIqc,EAAIne,EAEnC,CAACme,EAAIxb,EAAGwb,EAAIne,EAAGme,EAAIrc,EAC5B,CAEA,MAAMuc,GAAsBC,IAC1B,MAAMC,EAAMZ,MAAiBW,GACvBE,EAAW,CAACD,EAAI,GAAIA,EAAI,GAAI9uB,KAAK+B,IAAI,EAAG+sB,EAAI,GAAK,MACjDE,EAAU,CAACF,EAAI,GAAIA,EAAI,GAAI9uB,KAAK+B,IAAI,EAAG+sB,EAAI,GAAK,MAGtD,MAAO,CAAEG,MAFKhB,MAAiBE,MAAiBY,IAEhCG,KADHjB,MAAiBE,MAAiBa,IACzB,EAEjB,SAASG,KACd,IAAItG,EACAgG,EAAI,QAAA1kB,EAAAvN,UAAApG,OAFiCqG,EAAI1C,UAAAgQ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvN,EAAIuN,GAAAxN,UAAAwN,GAU7C,GAPoB,IAAhBvN,EAAKrG,QACPqyB,EAAMhsB,EAAK,GACXgyB,EAAMf,GAAcjF,IACK,IAAhBhsB,EAAKrG,SACdq4B,EAAMhyB,EACNgsB,EAAMoF,MAAiBY,KAEpBA,EAAK,MAAO,GACjB,MAAM/G,MAAEA,EAAKE,KAAEA,GAASoC,GAAevB,GACjCuG,EAAeR,GAAmBC,GAClCQ,EAAmBT,GAAmBd,GAAchG,EAAM,qBAC1DwH,EAAkBV,GAAmBd,GAAc9F,EAAK,qBAW9D,OAVA/xB,OAAOI,KAAKyxB,GAAOxxB,SAASC,IACtBA,EAAIm0B,SAAS,cACf5C,EAAO,GAAEvxB,SAAau3B,GAAchG,EAAMvxB,IAC5C,IAEFN,OAAOI,KAAK2xB,GAAM1xB,SAASC,IACrBA,EAAIm0B,SAAS,cACf1C,EAAM,GAAEzxB,SAAau3B,GAAc9F,EAAKzxB,IAC1C,IAEK,CACLg5B,IAAK,CACH,mBAAoB,wBACpB,uBAAwB,4BACxB,yBAA0B,8BAC1B,wBAAyB,8BAE3BC,GAAI,CACF,mBAAoB,uBACpB,uBAAwB,2BACxB,yBAA0B,6BAC1B,wBAAyB,6BAE3B1H,MAAO,CACL,mBAAoBe,EACpB,yBAA0BuG,EAAaH,MACvC,wBAAyBG,EAAaF,KACtC,uBAAwBL,EAAIlG,KAAK,MACjC,wBAAyB0G,EAAiBJ,MAC1C,uBAAwBI,EAAiBH,KACzC,sBAAuBpB,GAAchG,EAAM,oBAAoBa,KAAK,SACjEb,GAELE,KAAM,CACJ,wBAAyBsH,EAAgBL,MACzC,uBAAwBK,EAAgBJ,KACxC,sBAAuBpB,GAAc9F,EAAK,oBAAoBW,KAAK,SAChEX,GAGT,CAEO,SAASyH,GAAYC,EAAU35B,GACpCE,OAAOI,KAAKN,GAAKO,SAASC,IACpBT,GAASC,EAAIQ,KACfN,OAAOI,KAAKN,EAAIQ,IAAMD,SAASq5B,IACG,mBAArB55B,EAAIQ,GAAKo5B,KAClB55B,EAAIQ,GAAKo5B,GAAU55B,EAAIQ,GAAKo5B,GAAQC,KAAKF,GAC3C,IAGJA,EAASn5B,GAAOR,EAAIQ,EAAI,GAE5B,CAEO,SAASs5B,KACd,MAAM/0B,EAAM,GAAG,QAAAyJ,EAAA3H,UAAApG,OADeqG,EAAI1C,UAAAoK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3H,EAAI2H,GAAA5H,UAAA4H,GAMlC,OAJA3H,EAAKvG,SAASw5B,IACR31B,MAAMc,QAAQ60B,GAAMh1B,EAAII,QAAQ20B,MAAgBC,IAC/Ch1B,EAAII,KAAK40B,EAAI,IAEbh1B,CACT,C,yEArWO,SAA8BsF,GAEnC,OADerG,IACDF,qBAAqBuG,EACrC,E,qJAoWO,SAA6B4mB,QAAM,IAANA,MAAS,IAC3C,MAAM+I,EAAmBh6B,IACvB,IAAIgF,EAAM,GAIV,OAHA9E,OAAOI,KAAKN,GAAKO,SAASC,IACxBwE,GAAQ,GAAExE,KAAOR,EAAIQ,KAAO,IAEvBwE,CAAG,EAENi1B,EAAYb,GAAwBnI,EAAOrD,SAE3CA,EAAU,CACb,SACDoM,EAAgBC,EAAUlI,OACzB,iDACE7xB,OAAOI,KAAK2wB,GAAQhoB,KAAKixB,GAAe,cAAaA,MAAcjJ,EAAOiJ,QAC5E,IACA,SACDF,EAAgBC,EAAUhI,MACzB,IACA,oBACD+H,EAAgBC,EAAUT,KAC1B,IACC,kBACDQ,EAAgBC,EAAUR,IAC1B,KACA7G,KAAK,IAEDuH,EAAW,GAEjBj6B,OAAOI,KAAK2wB,GAAQ1wB,SAAS25B,IAC3B,MAAME,EAAanJ,EAAOiJ,GAC1BC,EAASD,GAAad,GAAwBgB,EAAW,IAI3D,IAAIC,EAAO,GAqIX,OAnIAn6B,OAAOI,KAAK2wB,GAAQ1wB,SAAS25B,IAC3B,MAAMnI,MAAEA,EAAKE,KAAEA,EAAIuH,IAAEA,EAAGC,GAAEA,GAAOU,EAASD,GAEpCI,EAAkB,yzCAsClBC,EAAkB,qxCAuClBC,EACU,UAAdN,EACII,EACc,UAAdJ,EACAK,EACAP,EAAgBjI,GAChB0I,EACU,UAAdP,EACII,EACc,UAAdJ,EACAK,EACAP,EAAgB/H,GAEtBoI,GAAQ,CACL,UAASH,MACVM,EACC,+CACA,IACA,UAASN,kBAA0BA,yBAAiCA,MACrEO,EACC,+CACA,IACA,eAAcP,iBAAyBA,wBAAgCA,uBAA+BA,MACvGF,EAAgBR,GACf,IACA,cAAaU,gBAAwBA,uBAA+BA,sBAA8BA,MACnGF,EAAgBP,GACf,IAGA,eAAcS,MACd,gCAA+BjJ,EAAOiJ,MACtC,IAGA,aAAYA,MACZ,8BAA6BjJ,EAAOiJ,MACpC,IAGA,iBAAgBA,MAChB,kCAAiCjJ,EAAOiJ,MACxC,IAGA,iBAAgBA,MAChB,uCAAsCnI,EAAM,iCAC5C,KACDa,KAAK,GAAG,IAGJ,GAAEhF,IAAUyM,GACtB,E,mQAtkBO,WAEL,OADAzF,IAAa,EACNA,EACT,ICLA,IAAI8F,GCCAC,GDsCJ,SAASC,KAIP,OAHKF,KACHA,GAvCJ,WACE,MAAMx2B,EAASF,IACTvB,EAAWF,IAEjB,MAAO,CACLs4B,SACE,iBAAkB32B,GACjBA,EAAO42B,eAAiBr4B,aAAoByB,EAAO42B,eAGtDC,gBACI72B,EAAO82B,cACT,mBAAoB92B,EAAOvB,WAC3BuB,EAAOvB,UAAUs4B,gBAAkB,EAErCC,gBAAkB,WAChB,IAAIC,GAAkB,EACtB,IACE,MAAMC,EAAOl7B,OAAOuE,eAAe,GAAI,UAAW,CAEhDC,MACEy2B,GAAkB,CACpB,IAEFj3B,EAAOtD,iBAAiB,sBAAuB,KAAMw6B,E,CACrD,MAAO/uB,GACP,CAEF,OAAO8uB,CACT,CAdkB,GAgBlBE,qBACS,yBAA0Bn3B,EAGvC,CAIco3B,IAELZ,EACT,CC8GA,MAAMa,GAAa,MACjB,MAAM94B,EAAWF,IACjB,IAEE,OAAOi5B,QACL/4B,GACEA,EAAS9B,MACT8B,EAAS9B,KAAKkQ,uBACdpO,EAAS9B,KAAKkQ,wBAAwB4qB,MAAQ,E,CAElD,MAAOpvB,GACP,OAAO,CACT,CACD,EAbkB,GAenB,SAASqvB,GAAUC,EAAgBC,GAIjC,YAJ0B,IAATD,MAAY,SAAS,IAALC,MAAQL,IACpCZ,KAAoBiB,IACvBjB,GAxKJ,SAAmBkB,GAAqB,IAApBj5B,UAAEA,QAAW,IAAAi5B,EAAG,GAAEA,EACpC,MAAMnB,EAAUE,KACV12B,EAASF,IACT83B,EAAW53B,EAAOvB,UAAUm5B,SAC5BC,EAAKn5B,GAAasB,EAAOvB,UAAUC,UAEnCo5B,EAAS,CACbxC,KAAK,EACLyC,SAAS,EACTC,eAAe,EACfC,SAAS,EACTC,QAAQ,EACRC,MAAM,EACNC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,SAAS,EACTC,OAAO,EACPC,SAAS,EACTC,UAAW14B,EAAO04B,QAClBC,UAAU,EACVC,YAAa54B,EAAO64B,UACpBC,MAAM,GAGFC,EAAc/4B,EAAOV,OAAOi4B,MAC5ByB,EAAeh5B,EAAOV,OAAO25B,OAE7BlB,EAAUF,EAAGluB,MAAM,+BACzB,IAAIyuB,EAAOP,EAAGluB,MAAM,wBACpB,MAAMwuB,EAAON,EAAGluB,MAAM,2BAChBuuB,GAAUE,GAAQP,EAAGluB,MAAM,+CAC3B2uB,EAAKT,EAAGl2B,QAAQ,UAAY,GAAKk2B,EAAGl2B,QAAQ,aAAe,EAC3D02B,EAAOR,EAAGl2B,QAAQ,UAAY,EAC9B42B,EAAUV,EAAGl2B,QAAQ,WAAa,GAAKk2B,EAAGl2B,QAAQ,aAAe,EACjE82B,EAAuB,UAAbb,EACVe,EAAWd,EAAGnuB,cAAc/H,QAAQ,aAAe,EACnDm3B,EACU,oBAAPI,IACY,oBAAZC,cACqB,IAArBA,QAAQC,eACgB,IAAxBD,QAAQC,SAASF,GAC1B,IAAIV,EAAqB,aAAbZ,EA0GZ,OAxFGQ,GACDI,GACAhC,EAAQG,OAjBU,CAClB,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAMYh1B,QAAS,GAAEo3B,KAAeC,MAAmB,IAEzDZ,EAAOP,EAAGluB,MAAM,uBACXyuB,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAGVV,EAAOQ,GAAKA,EACZR,EAAOO,KAAOA,EACdP,EAAOS,QAAUA,EAGbR,IACFD,EAAOuB,GAAK,UACZvB,EAAOwB,UAAYvB,EAAQ,GAC3BD,EAAOC,SAAU,EACjBD,EAAOE,cAAgBH,EAAGnuB,cAAc/H,QAAQ,WAAa,IAE3Dy2B,GAAQF,GAAUC,KACpBL,EAAOuB,GAAK,MACZvB,EAAOxC,KAAM,GAGX4C,IAAWC,IACbL,EAAOwB,UAAYpB,EAAO,GAAGhxB,QAAQ,KAAM,KAC3C4wB,EAAOI,QAAS,GAEdE,IACFN,EAAOwB,UAAYlB,EAAK,GAAGlxB,QAAQ,KAAM,KACzC4wB,EAAOM,MAAO,GAEZD,IACFL,EAAOwB,UAAYnB,EAAK,GAAKA,EAAK,GAAGjxB,QAAQ,KAAM,KAAO,KAC1D4wB,EAAOK,MAAO,GAGZL,EAAOxC,KAAOwC,EAAOwB,WAAazB,EAAGl2B,QAAQ,aAAe,GACvB,OAAnCm2B,EAAOwB,UAAU/2B,MAAM,KAAK,KAC9Bu1B,EAAOwB,UAAYzB,EAAGnuB,cAAcnH,MAAM,YAAY,GAAGA,MAAM,KAAK,IAKxEu1B,EAAOyB,YAEFrB,GAAUE,GAAQD,KAClBN,EAAGluB,MAAM,gCAAiC3J,EAAOvB,UAAU+6B,aAE7Dx5B,EAAOP,YAAcO,EAAOP,WAAW,8BAA8B4L,QACxEysB,EAAO2B,QAAU3B,EAAOyB,QACxBzB,EAAO0B,WAAa1B,EAAOyB,QAG3BzB,EAAOG,UAAYH,EAAOxC,KAAOwC,EAAOC,UAAYY,GAAYG,EAC5DhB,EAAOG,UACTH,EAAOa,SAAWA,EAClBb,EAAOgB,KAAOA,EACdhB,EAAOU,MAAQA,EACfV,EAAOW,QAAUA,EACbX,EAAOU,QACTV,EAAOuB,GAAK,SAEVvB,EAAOW,UACTX,EAAOuB,GAAK,YAKhBvB,EAAO4B,WAAa15B,EAAO25B,kBAAoB,EAK/C7B,EAAO8B,mBAAqB,WAC1B,IAAIvJ,EAOJ,OANIrwB,EAAOP,YAAcO,EAAOP,WAHpB,iCAGsC4L,UAChDglB,EAAQ,SAENrwB,EAAOP,YAAcO,EAAOP,WAPrB,gCAOsC4L,UAC/CglB,EAAQ,QAEHA,C,EAIFyH,CACT,CAmBuB+B,CAAWpC,IAEzBhB,EACT,CChLA,MAAMqD,GACJ/9B,YAAYmN,QAAO,IAAPA,MAAU,IACPjK,KACR86B,cAAgB7wB,EADRjK,KAER+6B,gBAAkB,EACzB,CAEAj3B,GAAGkJ,EAAQK,EAAS2tB,GAClB,MAAMC,EAAOj7B,KACb,GAAuB,mBAAZqN,EAAwB,OAAO4tB,EAC1C,MAAMC,EAASF,EAAW,UAAY,OAKtC,OAJAhuB,EAAO1J,MAAM,KAAKlG,SAAS6P,IACpBguB,EAAKF,gBAAgB9tB,KAAQguB,EAAKF,gBAAgB9tB,GAAS,IAChEguB,EAAKF,gBAAgB9tB,GAAOiuB,GAAQ7tB,EAAQ,IAEvC4tB,CACT,CAEAE,KAAKnuB,EAAQK,EAAS2tB,GACpB,MAAMC,EAAOj7B,KACb,GAAuB,mBAAZqN,EAAwB,OAAO4tB,EAC1C,SAASpsB,IACPosB,EAAK9xB,IAAI6D,EAAQ6B,GACbA,EAAYusB,gBACPvsB,EAAYusB,QACpB,QAAA11B,EAAAhC,UAAApG,OAJqBqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GAK1ByH,EAAQvC,MAAMmwB,EAAMt3B,EACtB,CAEA,OADAkL,EAAYusB,QAAU/tB,EACf4tB,EAAKn3B,GAAGkJ,EAAQ6B,EAAamsB,EACtC,CAEA7xB,IAAI6D,EAAQK,GACV,MAAM4tB,EAAOj7B,KACb,OAAKi7B,EAAKF,iBACV/tB,EAAO1J,MAAM,KAAKlG,SAAS6P,SACF,IAAZI,EACT4tB,EAAKF,gBAAgB9tB,GAAS,GACrBguB,EAAKF,gBAAgB9tB,IAC9BguB,EAAKF,gBAAgB9tB,GAAO7P,SAAQ,CAACi+B,EAAc5zB,MAE/C4zB,IAAiBhuB,GAChBguB,EAAaD,SAAWC,EAAaD,UAAY/tB,IAElD4tB,EAAKF,gBAAgB9tB,GAAOO,OAAO/F,EAAO,EAC5C,GAEJ,IAEKwzB,GAf2BA,CAgBpC,CAEAK,OACE,MAAML,EAAOj7B,KACb,IAAKi7B,EAAKF,gBAAiB,OAAOE,EAClC,IAAIjuB,EACA4E,EACArP,EACAu4B,EAAc,QAAAnrB,EAAAjM,UAAApG,OANZqG,EAAI1C,UAAA0O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjM,EAAIiM,GAAAlM,UAAAkM,GAOa,iBAAZjM,EAAK,IAAmB1C,MAAMc,QAAQ4B,EAAK,KACpDqJ,EAASrJ,EAAK,GACdiO,EAAOjO,EAAKqsB,MAAM,EAAGrsB,EAAKrG,QAC1BiF,EAAU04B,EACVH,EAAgBG,EAAKH,gBAErB9tB,EAASrJ,EAAK,GAAGqJ,OACjB4E,EAAOjO,EAAK,GAAGiO,KACfrP,EAAUoB,EAAK,GAAGpB,SAAW04B,EAC7BH,EAAgBn3B,EAAK,GAAG43B,MAAQ,GAAK53B,EAAK,GAAGsG,SAAWgxB,EAAKH,eAE/D,MAAMU,EAAcv6B,MAAMc,QAAQiL,GAAUA,EAASA,EAAO1J,MAAM,KAC5Dm4B,EAAcD,EAAY11B,KAAK8I,GAAcA,EAAU3G,QAAQ,UAAW,MAC1EyzB,EAAeF,EAAYr5B,QAAQyM,GAAcA,EAAUlM,QAAQ,WAAa,IAkBtF,OAhBA+4B,EAAYr+B,SAAS6P,IACnB,GAAIguB,EAAKF,iBAAmBE,EAAKF,gBAAgB9tB,GAAQ,CACvD,MAAMC,EAAW,GACjB+tB,EAAKF,gBAAgB9tB,GAAO7P,SAASi+B,IACnCnuB,EAASlL,KAAKq5B,EAAa,IAE7BnuB,EAAS9P,SAASi+B,IAChBA,EAAavwB,MAAMvI,EAASqP,EAAK,GAErC,KAEEkpB,GAAiBA,EAAcx9B,OAAS,GAC1Cw9B,EAAc19B,SAASu+B,IACrBA,EAAaL,KAAKI,KAAiB9pB,EAAK,IAGrCqpB,CACT,ECxFF,MAAMW,WAAwBf,GAC5B/9B,YAAYwJ,EAAa2D,QAAP,IAAN3D,MAAS,SAAW,IAAP2D,MAAU,IACjC9I,MAAM8I,GACN,MAAMgxB,EAAOj7B,KACbi7B,EAAK30B,OAASA,EAEV20B,EAAK30B,QAAU20B,EAAK30B,OAAOxC,IAC7B/G,OAAOI,KAAK89B,EAAK30B,OAAOxC,IAAI1G,SAASwR,IACnCqsB,EAAKn3B,GAAG8K,EAAWqsB,EAAK30B,OAAOxC,GAAG8K,GAAW,GAGnD,CAGAitB,gBAAgBC,EAAQC,GACtB,GAAID,EAAOx1B,OAAQ,CACjB,MAAM01B,EAAiB,GACvBj/B,OAAOI,KAAK2+B,EAAOx1B,QAAQlJ,SAAS6+B,SACM,IAA7BF,EAAeE,KAC1BD,EAAeC,GAAYj/B,GAAO,GAAI++B,EAAeE,IAAU,IAEjEj/B,GAAO++B,EAAgBD,EAAOx1B,QAC9BvJ,OAAOI,KAAK6+B,GAAgB5+B,SAAS6+B,IACnCj/B,GAAO++B,EAAeE,GAAWD,EAAeC,GAAU,GAE9D,CACF,CAEAC,iBAAiBH,GACf,MAAMvF,EAAWx2B,KACZw2B,EAAS2F,SACdp/B,OAAOI,KAAKq5B,EAAS2F,SAAS/+B,SAASg/B,IACrC,MAAMN,EAAStF,EAAS2F,QAAQC,GAE5BN,EAAOx1B,QACTtJ,GAAO++B,EAAgBD,EAAOx1B,OAChC,GAEJ,CAEA+1B,UAAUD,EAAiBE,QAAP,IAAVF,MAAa,SAAgB,IAAZE,MAAe,IACxC,MAAM9F,EAAWx2B,KACjB,IAAKw2B,EAAS2F,QAAS,OACvB,MAAML,EAA+B,iBAAfM,EAA0B5F,EAAS2F,QAAQC,GAAcA,EAC1EN,IAGDA,EAAOtF,UACTz5B,OAAOI,KAAK2+B,EAAOtF,UAAUp5B,SAASm/B,IACpC,MAAMC,EAAaV,EAAOtF,SAAS+F,GAEjC/F,EAAS+F,GADe,mBAAfC,EACkBA,EAAW9F,KAAKF,GAEhBgG,CAC7B,IAIAV,EAAOh4B,IAAM0yB,EAAS1yB,IACxB/G,OAAOI,KAAK2+B,EAAOh4B,IAAI1G,SAASq/B,IAC9BjG,EAAS1yB,GAAG24B,EAAiBX,EAAOh4B,GAAG24B,GAAiB,IAIxDX,EAAOY,QACJlG,EAASmG,aAAYnG,EAASmG,WAAa,IAChD5/B,OAAOI,KAAK2+B,EAAOY,OAAOt/B,SAASw/B,IACjC7/B,OAAOI,KAAK2+B,EAAOY,MAAME,IAAUx/B,SAASy/B,IAC1C,MAAMxvB,EAAUyuB,EAAOY,MAAME,GAASC,GACjCrG,EAASmG,WAAWE,KAAWrG,EAASmG,WAAWE,GAAY,IAC/DrG,EAASmG,WAAWE,GAAUD,KAAUpG,EAASmG,WAAWE,GAAUD,GAAW,IACtFpG,EAASmG,WAAWE,GAAUD,GAAS56B,KAAKqL,EAAQqpB,KAAKF,GAAU,GACnE,KAIFsF,EAAOgB,QACThB,EAAOgB,OAAOpG,KAAKF,EAAnBsF,CAA6BQ,GAEjC,CAEAS,WAAWC,QAAa,IAAbA,MAAgB,IACzB,MAAMxG,EAAWx2B,KACZw2B,EAAS2F,SACdp/B,OAAOI,KAAKq5B,EAAS2F,SAAS/+B,SAASg/B,IACrC,MAAME,EAAeU,EAAcZ,IAAe,GAClD5F,EAAS6F,UAAUD,EAAYE,EAAa,GAEhD,CAEA,qBAAWW,CAAWA,GACNj9B,KACHk9B,KADGl9B,KAERk9B,IAAID,EACZ,CAEA,oBAAOE,CAAcrB,GACnB,MAAMsB,EAAQp9B,KACTo9B,EAAMl7B,UAAUi6B,UAASiB,EAAMl7B,UAAUi6B,QAAU,IACxD,MAAM34B,EAAOs4B,EAAOt4B,MAAS,GAAEzG,OAAOI,KAAKigC,EAAMl7B,UAAUi6B,SAAS7+B,UAAU+0B,OAe9E,GAdA+K,EAAMl7B,UAAUi6B,QAAQ34B,GAAQs4B,EAE5BA,EAAO16B,OACTrE,OAAOI,KAAK2+B,EAAO16B,OAAOhE,SAASC,IACjC+/B,EAAMl7B,UAAU7E,GAAOy+B,EAAO16B,MAAM/D,EAAI,IAIxCy+B,EAAOuB,QACTtgC,OAAOI,KAAK2+B,EAAOuB,QAAQjgC,SAASC,IAClC+/B,EAAM//B,GAAOy+B,EAAOuB,OAAOhgC,EAAI,IAI/By+B,EAAOwB,QAAS,KAAA53B,MAAAhC,UAAApG,OAlBUgJ,EAAM,IAAArF,MAAAyE,MAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAANU,EAAMV,EAAAlC,aAAAkC,GAmBlCk2B,EAAOwB,QAAQxyB,MAAMsyB,EAAO92B,EAC9B,CACA,OAAO82B,CACT,CAEA,UAAOF,CAAIpB,GACT,MAAMsB,EAAQp9B,KACd,GAAIiB,MAAMc,QAAQ+5B,GAEhB,OADAA,EAAO1+B,SAASga,GAAMgmB,EAAMD,cAAc/lB,KACnCgmB,EACR,IAAAztB,MAAAjM,UAAApG,OALmBgJ,EAAM,IAAArF,MAAA0O,MAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANtJ,EAAMsJ,EAAAlM,aAAAkM,GAM1B,OAAOwtB,EAAMD,cAAcrB,KAAWx1B,EACxC,EChIa,SAASi3B,GAAmBC,QAAU,IAAVA,MAAa,IACtD,MAAMC,gBAAEA,EAAiB3gC,YAAa4gC,EAAWC,QAAEA,EAAOC,IAAEA,EAAGC,WAAEA,GAAeL,EAC1ElrB,EAAU,CACdwqB,SAAgB,QAAAp3B,EAAAhC,UAAApG,OAANqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GACZ,OAAIg4B,EAAY,IAAIF,EAAYE,KAAQj6B,GACjC,IAAI+5B,KAAe/5B,E,EAE5BpC,IAAIO,GACF,QADI,IAAFA,MAAK27B,GACH37B,aAAc47B,EAAa,OAAO57B,EACtC,MAAMg8B,EAAMz7B,EAAEP,GACd,OAAmB,IAAfg8B,EAAIxgC,OACDwgC,EAAI,GAAGH,QADd,C,EAGFI,QAAQj8B,GACN,MAAM00B,EAAWlkB,EAAQ/Q,IAAIO,GAC7B,GAAI00B,GAAYA,EAASuH,QAAS,OAAOvH,EAASuH,SAEpD,GAWF,OATIF,GAAc58B,MAAMc,QAAQ87B,IAC9BA,EAAWzgC,SAASmV,IAClBD,EAAQC,GAAc,SAACzQ,QAAE,IAAFA,MAAK27B,GAC1B,MAAMjH,EAAWlkB,EAAQ/Q,IAAIO,GAAI,IAAA6N,MAAAjM,UAAApG,OADaqG,EAAI,IAAA1C,MAAA0O,MAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjM,EAAIiM,EAAAlM,aAAAkM,GAElD,GAAI4mB,GAAYA,EAASjkB,GAAa,OAAOikB,EAASjkB,MAAe5O,E,CAEtE,IAGE2O,CACT,CC3Be,SAAS0rB,GAAaR,QAAU,IAAVA,MAAa,IAChD,MAAMC,gBAAEA,EAAiB3gC,YAAa4gC,EAAWE,IAAEA,GAAQJ,EACrDlrB,EAAUtV,GACdugC,GAAmB,CACjBE,kBACA3gC,YAAa4gC,EACbE,MACAD,QAAS,YAEX,CACEM,KAAKn8B,EAAI0F,EAAS02B,GAChB,IAAIJ,EAAMz7B,EAAEP,GACZ,GAAIg8B,EAAIxgC,OAAS,GAAK4gC,EAAU,CAE9B,MAAMC,EAAc97B,EAAE67B,GAAUj0B,QAAQ,SACpCk0B,EAAY7gC,QACdwgC,EAAI32B,MAAMi3B,IACR,MAAMC,EAAWh8B,EAAE+7B,GACfC,EAASp0B,QAAQk0B,GAAa,KAAOA,EAAY,KACnDL,EAAMO,EACR,GAGN,CAIA,GAHIP,EAAIxgC,OAAS,IACfwgC,EAAMA,EAAI5zB,GAAG4zB,EAAIxgC,OAAS,KAEvBwgC,EAAIxgC,OAAQ,OACjB,IAAIk5B,EAAWsH,EAAI,GAAGQ,QACtB,IAAK9H,EAAU,CACb,MAAMlwB,EAASw3B,EAAIzzB,UACnBmsB,EAAW,IAAIkH,EAAYE,EAAK,CAAE97B,GAAIg8B,KAAQx3B,GAChD,CACA,OAAOkwB,EAASyH,KAAKz2B,E,EAEvB+2B,MAAMz8B,EAAsB0F,EAAS02B,QAA7B,IAAFp8B,MAAK27B,GACT,IAAIK,EAAMz7B,EAAEP,GACZ,IAAKg8B,EAAIxgC,OAAQ,OACjB,GAAIwgC,EAAIxgC,OAAS,EAAG,CAElB,IAAIkhC,EACJ,GAAIN,EAAU,CACZ,MAAMO,EAAYp8B,EAAE67B,GAChBO,EAAUnhC,SACZkhC,EAAYC,EAAUx0B,QAAQ6zB,GAElC,CAEEA,EADEU,GAAaA,EAAUlhC,OAAS,EAC5BkhC,EAEAV,EAAI5zB,GAAG4zB,EAAIxgC,OAAS,EAE9B,CACA,IAAIk5B,EAAWsH,EAAI,GAAGQ,QACtB,IAAK9H,EAAU,CACb,MAAMlwB,EAASw3B,EAAIzzB,UACnBmsB,EAAW,IAAIkH,EAAYE,EAAK,CAAE97B,GAAIg8B,KAAQx3B,GAChD,CACA,OAAOkwB,EAAS+H,MAAM/2B,EACxB,IAGJ,OAAO8K,CACT,CC/DA,MAAMosB,GAAiB,GCHvB,MAAMC,GAAO,SAACC,EAAKx4B,GACjB,MAAMwD,EAAQxD,GAAS,GAAG,IAAAV,MAAAhC,UAAApG,OADCqG,EAAI,IAAA1C,MAAAyE,MAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,EAAAlC,aAAAkC,GAE/B,MAAMxH,EAAWuF,GAAQ,GAEnBk7B,EAAc9hC,OAAOI,KAAKyM,GAC7B9D,KAAKyE,GACY,MAAZA,EAAK,GACHX,EAAMW,GAAcA,EAAKtC,QAAQ,IAAK,IACnC,GAED,GAAEsC,MAASX,EAAMW,QAE1BpI,QAAQoI,KAAWA,IACnBklB,KAAK,KAER,GAAI,CAAC,OAAQ,MAAO,SAAU,UAAW,OAAQ,SAAS/sB,QAAQk8B,IAAQ,EACxE,MAAQ,IAAGA,KAAOC,OAAiBp8B,OAMrC,MAAQ,IAAGm8B,KAAOC,KAJMzgC,EACrB+D,QAAQ4D,KAAQA,IAChBD,KAAKC,GAAO9E,MAAMc,QAAQgE,GAAKA,EAAE0pB,KAAK,IAAM1pB,IAC5C0pB,KAAK,QAC6CmP,KAAOn8B,MAC9D,ECVA,MAAMq8B,WAAmBlD,GACvB9+B,YAAYwJ,GAGV,QAHgB,IAANA,MAAS,IACnBnF,MAAMmF,GAEFw4B,GAAWtI,UAA8B,oBAAXz1B,OAChC,MAAM,IAAIkjB,MAAM,6EAElB,MAAM4U,EAASN,GAAU,CAAE94B,UAAW6G,EAAO7G,gBAAa6J,IACpDiuB,EAAUE,KAEVsH,EAAe/hC,GAAO,GAAIsJ,GAG1Bs3B,EAAM59B,KAEZ49B,EAAI/E,OAASA,EACb+E,EAAIrG,QAAUA,EAEd,MAAMyH,EAAIn+B,IACJiV,EAAI1W,IAEV0/B,GAAWtI,SAAWoH,EAGtB,MAAMqB,EAAW,CACfn9B,GAAI,OACJsvB,MAAO,OACP8N,OAAQ,GACR17B,KAAM,aACN27B,gBAAiB,KACjBC,mBAAmB,EACnBC,MAAM,EACNC,cAAUh2B,EACVi2B,oBAAoB,EACpBC,sBAAsB,EACtBvjB,eAAW3S,EACXm2B,kBAAcn2B,EACd7J,UAAW,KACX8yB,IAAK,KACLzE,OAAQ,CACNrD,QAAS,UACTjX,IAAK,UACLC,MAAO,UACPC,KAAM,UACNgsB,KAAM,UACNC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,UACRC,WAAY,UACZC,UAAW,UACXC,KAAM,UACNC,KAAM,UACNC,WAAY,UACZC,MAAO,UACPC,MAAO,YAyDX,OApDAxC,EAAI1B,iBAAiB+C,GAGrBrB,EAAIt3B,OAAStJ,GAAOiiC,EAAU34B,GAE9BtJ,GAAO4gC,EAAK,CAEVp6B,KAAMo6B,EAAIt3B,OAAO9C,KAEjB07B,OAAQtB,EAAIt3B,OAAO44B,OAGnB9N,MAC2B,SAArBwM,EAAIt3B,OAAO8qB,MACTyH,EAAOxC,IAAY,MAChB,KAEFuH,EAAIt3B,OAAO8qB,MAIpB2N,eACAsB,OAAQrB,EAAEx/B,UAAU8gC,OACpBxS,OAAQ8P,EAAIt3B,OAAOwnB,OACnBwR,SAAU1B,EAAIt3B,OAAOg5B,WAGnBh5B,EAAOi6B,QAAO3C,EAAIt3B,OAAOi6B,MAAQj6B,EAAOi6B,OAGxC3C,EAAIE,KAAOF,EAAIE,IAAI,KACrBF,EAAIE,IAAI,GAAG0C,GAAK5C,GAIlBA,EAAIb,aAGJa,EAAI6C,YAGA7C,EAAIt3B,OAAO+4B,OACTxG,EAAOY,SAAWmE,EAAIt3B,OAAO84B,kBAC/B/8B,EAAEyT,GAAGhS,GAAG,eAAe,KACrB85B,EAAIyB,MAAM,IAGZzB,EAAIyB,QAKDzB,CACT,CAEA8C,cAAcnQ,GACZ,IAAKA,EAAO,OACAvwB,KACR8tB,OAAOrD,QAAU8F,EADTvwB,KAER2gC,WACN,CAEAA,YACE,MAAM/C,EAAM59B,KACNV,EAAWF,IACZw+B,EAAIgD,gBACPhD,EAAIgD,cAAgBthC,EAASnB,cAAc,SAC3CmB,EAASuhC,KAAKxxB,QAAQuuB,EAAIgD,gBAG5BhD,EAAIgD,cAAc31B,YAAc2yB,EAAIkD,MAAMC,oBAAoBnD,EAAI9P,OACpE,CAEAkT,MAAMC,GACJ,MAAMrD,EAAM59B,KACNe,EAASF,IACTvB,EAAWF,IACX8hC,EAAU7+B,EAAE4+B,GAAUrD,EAAIt3B,OAAOxE,IAAIoI,GAAG,GAC9C0zB,EAAIE,IAAMoD,EACNtD,EAAIE,KAAOF,EAAIE,IAAI,KACrBF,EAAI97B,GAAK87B,EAAIE,IAAI,GACjBF,EAAI97B,GAAG0+B,GAAK5C,EACZA,EAAIuD,IAAmC,QAA7BD,EAAQx1B,IAAI,cAIxB,MAAM01B,EAAO,+BACPC,EAAQ,gCACdzD,EAAI0D,GAAK,GACLvgC,EAAOP,aACTo9B,EAAI0D,GAAGxS,KAAO/tB,EAAOP,WAAW4gC,GAChCxD,EAAI0D,GAAG1S,MAAQ7tB,EAAOP,WAAW6gC,IAEnCzD,EAAI2D,oBAAsB,SAA4BC,GAAqB,IAApBp1B,QAAEA,EAAOq1B,MAAEA,GAAOD,EACvE,IAAKp1B,EACH,OAEF,MAAM5J,EAAOlD,EAASxB,cAAc,QAChC2jC,IAAUL,GACZ5+B,EAAKwD,UAAUC,IAAI,QACnB23B,EAAI0B,UAAW,EACf1B,EAAItC,KAAK,kBAAkB,IAClBmG,IAAUJ,IACnB7+B,EAAKwD,UAAU6E,OAAO,QACtB+yB,EAAI0B,UAAW,EACf1B,EAAItC,KAAK,kBAAkB,G,EAG/BsC,EAAItC,KAAK,QACX,CAEAmF,YACE,MAAM7C,EAAM59B,UACoB,IAArB49B,EAAIt3B,OAAOi6B,OAAyB3C,EAAIt3B,OAAOi6B,MAAMmB,QAC9D9D,EAAI2C,MAAQ3C,EAAIt3B,OAAOi6B,MAEvB3C,EAAI2C,MAAQ3C,EAAI+D,YAAY/D,EAAIt3B,OAAOi6B,MAE3C,CAEAqB,qBACE,MAAM7gC,EAASF,IACTvB,EAAWF,IACjB,IAAK2B,EAAOP,WAAY,OACxB,MAAMo9B,EAAM59B,KACNwC,EAAOlD,EAASxB,cAAc,QAChC8/B,EAAI0D,GAAGxS,MAAQ8O,EAAI0D,GAAG1S,QACxBgP,EAAI0D,GAAGxS,KAAKrxB,iBAAiB,SAAUmgC,EAAI2D,qBAC3C3D,EAAI0D,GAAG1S,MAAMnxB,iBAAiB,SAAUmgC,EAAI2D,sBAE1C3D,EAAI0D,GAAGxS,MAAQ8O,EAAI0D,GAAGxS,KAAK1iB,SAC7B5J,EAAKwD,UAAUC,IAAI,QACnB23B,EAAI0B,UAAW,EACf1B,EAAItC,KAAK,kBAAkB,IAClBsC,EAAI0D,GAAG1S,OAASgP,EAAI0D,GAAG1S,MAAMxiB,UACtC5J,EAAKwD,UAAU6E,OAAO,QACtB+yB,EAAI0B,UAAW,EACf1B,EAAItC,KAAK,kBAAkB,GAE/B,CAEAuG,sBAEE,IADehhC,IACHL,WAAY,OACxB,MAAMo9B,EAAM59B,KACR49B,EAAI0D,GAAGxS,MAAM8O,EAAI0D,GAAGxS,KAAKpxB,oBAAoB,SAAUkgC,EAAI2D,qBAC3D3D,EAAI0D,GAAG1S,OAAOgP,EAAI0D,GAAG1S,MAAMlxB,oBAAoB,SAAUkgC,EAAI2D,oBACnE,CAEAO,YAAYC,GACV,MAAMnE,EAAM59B,KACC,SAAT+hC,EACFnE,EAAIgE,sBAEJhE,EAAIiE,sBACJx/B,EAAE,QAAQ0/B,EAAO,WAAa,eAAe,QAC7CnE,EAAI0B,SAAWyC,EAEnB,CAEAC,iBAAiBthC,GACf,MAAMk9B,EAAM59B,KACZ49B,EAAIqE,OAAOC,gBACTtE,EAAIt3B,OAAO2V,UACX2hB,EAAIt3B,OAAOm5B,aACX,CAAE0C,iBAAkB,CAAErgC,GAAI87B,EAAIE,IAAI,MACjCh8B,IACC87B,EAAIE,IAAMz7B,EAAEP,GACZ87B,EAAIE,IAAI,GAAG0C,GAAK5C,EAChBA,EAAIwE,aAAetgC,EAAGugC,YACtBzE,EAAI97B,GAAK87B,EAAIE,IAAI,GACbp9B,GAAUA,GAAU,IAE1B,QAEJ,CAEA2+B,KAAK4B,GACH,MAAMrD,EAAM59B,KAEZ49B,EAAI+C,YACJ/C,EAAIoD,MAAMC,GAEV,MAAM5B,EAAOA,KACX,GAAIzB,EAAI/f,YAAa,OAErB+f,EAAIE,IAAIwE,SAAS,2BAGb1E,EAAIuD,KACN9+B,EAAE,QAAQkI,KAAK,MAAO,YAIW,IAAxBqzB,EAAIt3B,OAAOg5B,SACpB1B,EAAI0B,SAAWj9B,EAAE,QAAQkgC,SAAS,QAElC3E,EAAIkE,YAAYlE,EAAIt3B,OAAOg5B,UAI7B,MAAMv+B,EAASF,IACfE,EAAOtD,iBAAiB,WAAW,KACjCmgC,EAAIyC,QAAS,EACbzC,EAAItC,KAAK,WACTsC,EAAItC,KAAK,cAAc,EAAM,IAE/Bv6B,EAAOtD,iBAAiB,UAAU,KAChCmgC,EAAIyC,QAAS,EACbzC,EAAItC,KAAK,UACTsC,EAAItC,KAAK,cAAc,EAAK,IAI9BsC,EAAIE,IAAIwE,SAAS,mBAGjBjgC,EAAE,QAAQmgC,YAAY,UAAUF,SAAS1E,EAAIxM,OAGzCwM,EAAIt3B,OAAOi5B,oBAAoC,QAAd3B,EAAIxM,OACvC/uB,EAAE,QAAQigC,SAAS,wBAEjB1E,EAAIt3B,OAAOk5B,sBAAsC,QAAd5B,EAAIxM,OACzC/uB,EAAE,QAAQigC,SAAS,0BAIrBlQ,IAAU,KACRwL,EAAIE,IAAI0E,YAAY,0BAA0B,IAGhD5E,EAAI/f,aAAc,EAClB+f,EAAItC,KAAK,OAAO,EASlB,OAPIsC,EAAIt3B,OAAO2V,WAAa2hB,EAAIt3B,OAAOm5B,aACrC7B,EAAIoE,kBAAiB,KACnB3C,GAAM,IAGRA,IAEKzB,CACT,CAGA6E,aACE,OAAO3D,GAAW2D,cAAW/+B,UAC/B,CAGAg/B,cACE,OAAO5D,GAAW4D,eAAYh/B,UAChC,CAEAi/B,cAAcC,EAAMhiC,GAClB,MAAMg9B,EAAM59B,KACZ,OAAK49B,EAAIjB,YAAeiB,EAAIjB,WAAWiG,IAChChF,EAAIjB,WAAWiG,GAAMhiC,IADyB,EAEvD,CAGA,KAAIyB,GACF,OAAOA,CACT,CAEA,eAAWrB,GACT,OAAOqB,CACT,CAEA,YAAWA,GACT,OAAOA,CACT,CAEA,iBAAWw2B,GACT,OAAON,IACT,CAEA,kBAAWhB,GACT,OAAOE,IACT,CAEA,gBAAW2F,GACT,OAAOxB,EACT,CAEA,iBAAWiH,GACT,OAAOhI,EACT,EAGFiE,GAAWH,KAAOA,GAClBG,GAAWd,aAAeA,GAC1Bc,GAAWvB,mBAAqBA,GAEhCuB,GAAW2D,WF3WX,SAAoBK,GAClB,MAAMhE,EAAa9+B,KACbe,EAASF,IACTvB,EAAWF,IACjB,OAAO,IAAI2jC,SAAQ,CAACC,EAASC,KAC3B,MAAMrF,EAAMkB,EAAWtI,SACvB,IAAI0M,EACAC,EACAC,EACJ,GAAKN,EAAL,CAcA,GAA4B,iBAAjBA,EAA2B,CACpC,MAAMO,EAAmBP,EAAap4B,MAAM,iBAC5C,GACEo4B,EAAapgC,QAAQ,KAAO,GAC5B2gC,GACAA,EAAiB,GAAG/lC,SAAWwlC,EAAaxlC,OAC5C,CACA,IAAKsgC,GAAQA,IAAQA,EAAIt3B,OAAO64B,gBAM9B,YALA8D,EACE,IAAIhf,MACF,0FAKNif,EAAc,GAAEtF,EAAIt3B,OAAO64B,mBAAmB2D,KAAgBA,WAChE,MACEI,EAAaJ,CAEjB,KAAmC,mBAAjBA,EAChBM,EAAaN,EAGbK,EAAYL,EAGd,GAAIM,EAAY,CACd,MAAMtH,EAASsH,EAAWtE,GAAY,GACtC,IAAKhD,EAIH,YAHAmH,EACE,IAAIhf,MAAM,gFAKd,GAAI6a,EAAW58B,UAAUi6B,SAAW2C,EAAW58B,UAAUi6B,QAAQL,EAAOt4B,MAEtE,YADAw/B,IAIF1F,EAAQxB,GAERkH,GACF,CACA,GAAIG,EAAW,CACb,MAAMrH,EAASqH,EACf,IAAKrH,EAEH,YADAmH,EAAO,IAAIhf,MAAM,uEAInB,GAAI6a,EAAW58B,UAAUi6B,SAAW2C,EAAW58B,UAAUi6B,QAAQL,EAAOt4B,MAEtE,YADAw/B,IAIF1F,EAAQxB,GAERkH,GACF,CACA,GAAIE,EAAY,CACd,GAAIxE,GAAeh8B,QAAQwgC,IAAe,EAExC,YADAF,IAGFtE,GAAe18B,KAAKkhC,GACpB,MAAMI,EAAa,IAAIP,SAAQ,CAACQ,EAAeC,KAC7CC,MAAMP,GACHQ,MAAM7hC,GAAQA,EAAImP,SAClB0yB,MAAMC,IACL,MACMC,EAAoB,gCADPhjC,OAGbijC,EAAWvkC,EAASnB,cAAc,UACxC0lC,EAAShhC,UAAa,UAAS+gC,qEAAoFD,EAAclhC,UACjIJ,EAAE,QAAQsH,OAAOk6B,GAEjB,MAAM3B,EAAkBnhC,EAAO6iC,UACxB7iC,EAAO6iC,GACdvhC,EAAEwhC,GAAUh5B,SAEZ,MAAMixB,EAASoG,EAAgBpD,GAAY,GAEtChD,GAQDgD,EAAW58B,UAAUi6B,SAAW2C,EAAW58B,UAAUi6B,QAAQL,EAAOt4B,OAMxE85B,EAAQxB,GALNyH,KARAC,EACE,IAAIvf,MAAO,kDAAiDif,UAcjD,IAEhBY,OAAOC,IACNP,EAAaO,EAAI,GACjB,IAEAC,EAAY,IAAIjB,SAASkB,IAC7BR,MACEP,EACGj7B,QAAQ,WAAY21B,EAAIuD,IAAM,WAAa,QAC3Cl5B,QAAQ,MAAO21B,EAAIuD,IAAM,WAAa,SAExCuC,MAAM7hC,GAAQA,EAAImP,SAClB0yB,MAAMQ,IACL,MAAMC,EAAU7kC,EAASnB,cAAc,SACvCgmC,EAAQthC,UAAYqhC,EACpB7hC,EAAE,QAAQsH,OAAOw6B,GAEjBF,GAAc,IAEfH,OAAM,KACLG,GAAc,GACd,IAGNlB,QAAQqB,IAAI,CAACd,EAAYU,IACtBN,MAAK,KACJV,GAAS,IAEVc,OAAOC,IACNd,EAAOc,EAAI,GAEjB,CA9IA,MAFEd,EAAO,IAAIhf,MAAM,8CAInB,SAASqZ,EAAQxB,GACfgD,EAAW5B,IAAIpB,GAEX8B,IACFA,EAAI/B,gBAAgBC,EAAQ8B,EAAIt3B,QAChCs3B,EAAIvB,UAAUP,GAElB,CAqIA,GAEJ,EEgNAgD,GAAW4D,YAAc,SAAqBvG,GAC5C,OAAO4G,QAAQqB,IAAIjI,EAAQr2B,KAAKg2B,GAAWgD,GAAW2D,WAAW3G,KACnE,EChXA,IAAAuI,GAAe,CACb7gC,KAAM,SACN65B,OAAQ,CACN9E,cAEFz0B,GAAI,CACFu7B,OACE,MAAM//B,EAAWF,IACXy5B,EAASN,KACT1yB,EAAa,GACbrD,EAAOlD,EAASxB,cAAc,QAC9BwmC,EAAgBhlC,EAASxB,cAC7B,sDAEG0E,IAEHq2B,EAAO0B,YACP1B,EAAOxC,KACPiO,GAC0B,sBAA1BA,EAAcrW,SAEdpoB,EAAW7D,KAAK,wBAIlB6D,EAAW7D,KAAM,sBAAqB8E,KAAKoX,MAAM2a,EAAO4B,eAEpD5B,EAAOuB,KAAOvB,EAAOG,QACvBnzB,EAAW7D,KAAM,UAAS62B,EAAOuB,MACxBvB,EAAOG,UAChBnzB,EAAW7D,KAAK,kBACZ62B,EAAOuB,IACTv0B,EAAW7D,KAAM,UAAS62B,EAAOuB,OAGjCvB,EAAOY,SACT5zB,EAAW7D,KAAK,kBAEd62B,EAAOc,WACT9zB,EAAW7D,KAAK,oBAIlB6D,EAAWzI,SAASmO,IAClB/I,EAAKwD,UAAUC,IAAIsF,EAAU,IAEjC,IC/CJg5B,GAAe,CACb/gC,KAAM,UACN65B,OAAQ,CACN5F,gBCHJ+M,GAAe,CACbhhC,KAAM,QACNpC,MAAO,CACL0/B,UAEFzD,OAAQ,CACNyD,WCLJ2D,GAAe,CACbjhC,KAAM,SACNs5B,SACE,MAAMc,EAAM59B,KACZ49B,EAAI8G,QAAU,KACZ,IAAK9G,EAAI97B,GAAI,MAAO,CAAEw2B,MAAO,EAAG0B,OAAQ,EAAG9rB,KAAM,EAAGD,IAAK,GACzD,MAAM02B,EAAS/G,EAAIE,IAAI6G,UAChBrM,EAAO0B,EAAQ9rB,EAAMD,GAAO,CACjC2vB,EAAI97B,GAAGsN,YACPwuB,EAAI97B,GAAGqN,aACPw1B,EAAOz2B,KACPy2B,EAAO12B,KAMT,OAJA2vB,EAAItF,MAAQA,EACZsF,EAAI5D,OAASA,EACb4D,EAAI1vB,KAAOA,EACX0vB,EAAI3vB,IAAMA,EACH,CAAEqqB,QAAO0B,SAAQ9rB,OAAMD,MAAK,C,EAGvCnK,GAAI,CACFu7B,OACE,MAAMzB,EAAM59B,KACNe,EAASF,IAGf+8B,EAAI8G,UAGJ3jC,EAAOtD,iBACL,UACA,KACEmgC,EAAItC,KAAK,SAAS,IAEpB,GAIFv6B,EAAOtD,iBAAiB,qBAAqB,KAC3CmgC,EAAItC,KAAK,oBAAoB,G,EAGjCsJ,oBACE,MAAMtlC,EAAWF,IACFm5B,KAEJY,OACT75B,EAAS9B,KAAKuQ,WAAa,EAC3BzN,YAAW,KACThB,EAAS9B,KAAKuQ,WAAa,CAAC,GAC3B,G,EAGP7I,SACclF,KACR0kC,SACN,IC2bJ,IAAAG,GAAe,CACbrhC,KAAM,QACN8C,OAAQ,CACNoxB,MAAO,CAELoN,6BAA8B,EAE9BC,oBAAoB,EAEpBC,SAAS,EACTC,aAAc,IACdC,sBAAsB,EAEtBC,aAAa,EACbC,oBACE,qKACFC,wBAAwB,EACxBC,eAAe,EACfC,gBAAgB,EAChBC,oBACE,6aACFC,yBACE,kIAGN3I,SACE,MACMvF,EAAUE,KAChBz6B,GAFYgD,KAEA,CACV0lC,YAAa,CACX/yB,MAAO4kB,EAAQG,MAAQ,aAAeH,EAAQK,cAAgB,cAAgB,YAC9E+N,KAAMpO,EAAQG,MAAQ,YAAcH,EAAQK,cAAgB,cAAgB,YAC5EgO,IAAKrO,EAAQG,MAAQ,WAAaH,EAAQK,cAAgB,YAAc,Y,EAI9E9zB,GAAI,CACFu7B,KAphBJ,WACE,MAAMzB,EAAM59B,KACN64B,EAASN,KACThB,EAAUE,KACV12B,EAASF,IACTvB,EAAWF,IACXkH,EAASs3B,EAAIt3B,OAAOoxB,MACpBmO,EAAYv/B,EAAQ,GAAEs3B,EAAIxM,oBAOhC,IAAI0U,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAC,EACAC,EAEAC,EACAC,EACAC,EAiKAC,EA/JJ,SAASC,EAAqB7kC,GAC5B,MAAM7E,EAASoF,EAAEP,GACXmI,EAAUhN,EAAOgN,QAAQ3D,EAAO8+B,qBACtC,GAAInoC,EAAO+M,QAAQ,oBAAoB1M,OACrC,OAAO,KAET,IAAIspC,EAOJ,GANI3pC,EAAO8M,GAAGzD,EAAO8+B,uBACnBwB,EAAY3pC,GAEVgN,EAAQ3M,OAAS,IACnBspC,EAAYA,EAAYA,EAAU3gC,IAAIgE,GAAWA,GAE/C28B,GAAaA,EAAUtpC,OAAS,EAAG,CACrC,MAAMupC,EAAe,GACrB,IAAIC,EACJ,IAAK,IAAIhkC,EAAI,EAAGA,EAAI8jC,EAAUtpC,OAAQwF,GAAK,EACpCgkC,IACHD,EAAa7kC,KAAK4kC,EAAU9jC,KAE1B8jC,EAAU18B,GAAGpH,GAAGy/B,SAAS,qCACzBqE,EAAU18B,GAAGpH,GAAGy/B,SAAS,kCAEzBuE,GAAqB,IAI3BF,EAAYvkC,EAAEwkC,EAChB,CACA,OAAOD,GAAa3pC,CACtB,CAEA,SAAS8pC,EAAuBjlC,GAE9B,OADoBA,EAAGmI,QAAQ,iBACZ3M,OAAS,CAC9B,CAEA,SAAS0pC,IACFX,GACLA,EAAiB/D,SAAS,eAC5B,CACA,SAAS2E,IACFZ,IACLA,EAAiB7D,YAAY,gBAC7B6D,EAAmB,KACrB,CAqBA,SAASa,EAAapJ,EAAKzlB,EAAGzD,GACvBkpB,IACLyI,EAAa3I,EAAIuJ,YAAYrK,OAAOc,EAAKE,EAAKzlB,EAAGzD,GACnD,CAEA,SAASwyB,IACFb,IACLA,EAAW17B,SACX07B,OAAaj9B,EACbk9B,OAAel9B,EACjB,CACA,SAAS+9B,EAAiBvlC,GAExB,GADA0kC,EA9BF,SAA2B1kC,GACzB,MAAMwlC,EAAiBhhC,EAAOk/B,oBACxB1H,EAAMz7B,EAAEP,GACd,GAAIg8B,EAAI/zB,GAAGu9B,GACT,OAAIxJ,EAAIyE,SAAS,cAGVzE,EAET,GAAIA,EAAI7zB,QAAQq9B,GAAgBhqC,OAAS,EAAG,CAC1C,MAAMiqC,EAAezJ,EAAI7zB,QAAQq9B,GAAgBp9B,GAAG,GACpD,OAAIq9B,EAAahF,SAAS,cAGnBgF,CACT,CACA,OAAO,CACT,CAaiBC,CAAkB1lC,IAC5B0kC,GAAwC,IAAxBA,EAAalpC,OAEhC,YADAkpC,OAAel9B,GAGIy9B,EAAuBP,IAM1CjmC,aAAakmC,GACbA,EAAgBnmC,YAAW,KACzB8mC,IACAF,EAAaV,EAAcV,EAAaC,EAAY,GACnD,MAPHqB,IACAF,EAAaV,EAAcV,EAAaC,GAQ5C,CACA,SAAS0B,IACPlnC,aAAakmC,GACbW,GACF,CACA,SAASM,IACFnB,IAAcC,GAAiBP,EAKlCmB,KAJA7mC,aAAakmC,GACbS,EAAaV,EAAcV,EAAaC,GACxCzlC,WAAW8mC,EAAc,GAI7B,CA4BA,SAASO,IACPtlC,EAAE,iBAAiBmgC,YAAY,gBAC3BqD,GACF6B,GAEJ,CAjKI7O,EAAOxC,KAAOwC,EAAOyB,SAEvBv5B,EAAOtD,iBAAiB,cAAc,SAkLxC,IAAImqC,GAAoB,EACpBC,EAAoB,KAExB,MAAMC,EAAwB,kCAC9B,IAAIC,GAAuB,EACvBC,EAAuB,KA0M3B,SAASC,EAAkBzkC,EAAM0F,GAC/B00B,EAAItC,KAAK,CACPtuB,OAAQxJ,EACRoO,KAAM,CAAC1I,IAEX,CAIA,SAASg/B,EAAoBh/B,GAC3B++B,EAAkB,+BAAgC/+B,EACpD,CACA,SAASi/B,EAAmBj/B,GAC1B++B,EAAkB,6BAA8B/+B,EAClD,CACA,SAASk/B,EAAkBl/B,GACzB++B,EAAkB,2BAA4B/+B,EAChD,CACA,SAASm/B,EAAqBn/B,GAC5B++B,EAAkB,qBAAsB/+B,EAC1C,CACA,SAASo/B,EAAoBp/B,GAC3B++B,EAAkB,oBAAqB/+B,EACzC,CACA,SAASq/B,EAAmBr/B,GAC1B++B,EAAkB,mBAAoB/+B,EACxC,CAEA,MAAM6uB,IAAkBR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACvDC,GAAyBlR,EAAQQ,iBAAkB,CAAEyQ,SAAS,EAAMz7B,SAAS,GAC7E27B,IAAiBnR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACtDG,GAAwBpR,EAAQQ,iBAAkB,CAAEyQ,SAAS,EAAOz7B,SAAS,GAEnFzN,EAAS7B,iBAAiB,SA3B1B,SAAkByL,GAChB++B,EAAkB,QAAS/+B,EAC7B,IAyB6C,GAEzCquB,EAAQQ,iBACVz4B,EAAS7B,iBAAiBmgC,EAAI8H,YAAY/yB,MAAOu1B,EAAqBS,GACtErpC,EAAS7B,iBAAiBmgC,EAAI8H,YAAYC,KAAMwC,EAAoBO,GACpEppC,EAAS7B,iBAAiBmgC,EAAI8H,YAAYE,IAAKwC,EAAmBM,GAElEppC,EAAS7B,iBAAiBmgC,EAAI8H,YAAY/yB,MAAO01B,EAAsBI,GACvEnpC,EAAS7B,iBAAiBmgC,EAAI8H,YAAYC,KAAM2C,EAAqBvQ,GACrEz4B,EAAS7B,iBAAiBmgC,EAAI8H,YAAYE,IAAK2C,EAAoBxQ,KAEnEz4B,EAAS7B,iBACPmgC,EAAI8H,YAAY/yB,OACfzJ,IACCg/B,EAAoBh/B,GACpBm/B,EAAqBn/B,EAAE,IAEzB,GAEF5J,EAAS7B,iBACPmgC,EAAI8H,YAAYC,MACfz8B,IACCi/B,EAAmBj/B,GACnBo/B,EAAoBp/B,EAAE,IAExB,GAEF5J,EAAS7B,iBACPmgC,EAAI8H,YAAYE,KACf18B,IACCk/B,EAAkBl/B,GAClBq/B,EAAmBr/B,EAAE,IAEvB,IAIAquB,EAAQG,OACVkG,EAAI95B,GAAG,SA7GT,SAAqBoF,GACnB,MAAM0/B,EAAc1/B,GAAKA,EAAEuI,QAAuB,gBAAbvI,EAAEuI,OACjCo3B,EAAc3/B,GAAKA,EAAEuI,QAAuB,gBAAbvI,EAAEuI,OAEjCs2B,EAAuB7+B,GAAKA,EAAEuI,QAAuB,yBAAbvI,EAAEuI,OAChD,IAAIq3B,EAAoB1C,EA8BxB,OA7BIJ,GAAiB98B,EAAEjM,SAAW+oC,EAE9B8C,IADEF,GAAeC,GAAed,GAKzBA,IACTe,GAAoB,GAElBxiC,EAAO0+B,SAAW1+B,EAAO4+B,sBAAwBgB,IACnD4C,GAAoB,GAElBA,IACF5/B,EAAE6/B,2BACF7/B,EAAE8/B,kBACF9/B,EAAE+/B,kBAGA3iC,EAAO0+B,UACTmB,EAAiB7lC,YACf,KACE4lC,GAAe,CAAK,GAEtBrN,EAAOxC,KAAOwC,EAAOE,cAAgB,IAAM,MAG/CqN,GAAe,EACfJ,EAAgB,MAER8C,CACV,IA0EElL,EAAI95B,GAAG,cAhRT,SAA0BoF,GACxB,OAAKA,EAAEggC,YACPjD,GAAU,EACVC,GAAe,EACfE,GAAe,EACfM,OAAcp9B,EACVJ,EAAEigC,cAAc7rC,OAAS,GACvB+oC,GAAkBY,KACf,IAEL/9B,EAAEkgC,QAAQ9rC,OAAS,GAAK+oC,GAC1BY,IAEE3gC,EAAO0+B,UACLmB,GAAgB5lC,aAAa4lC,GACjCA,EAAiB7lC,YAAW,KACtB4I,GAAKA,EAAEkgC,SAAWlgC,EAAEkgC,QAAQ9rC,OAAS,IACzC4oC,GAAe,EACfh9B,EAAE+/B,iBACF7C,GAAe,EACf/jC,EAAE6G,EAAEjM,QAAQ4G,QAAQ,UAAWqF,GAC/B00B,EAAItC,KAAK,UAAWpyB,GAAE,GACrB5C,EAAO2+B,eAEZe,EAAgB98B,EAAEjM,OAClB6oC,EAAc58B,EAAEigC,cAAc,GAAGE,MACjCtD,EAAc78B,EAAEigC,cAAc,GAAGG,MACjC1B,EAAoB1+B,EAAEjM,OAAO+M,QAC3B,wEAEF+9B,EAAqC,QAAdnK,EAAIxM,OAAmBloB,EAAEjM,OAAO+M,QAAQ89B,GAC3DF,IACFC,EAAoBD,EAAkB59B,QAAQ,sBAG5C1D,EAAO6+B,cACTkB,EAAmBM,EAAqBX,GACpCK,IAAqBU,EAAuBV,GAC9CW,IACSX,IACTC,EAAgBhmC,WAAW0mC,EAAW,MAGtCnB,GACFwB,EAAiBrB,IAEZ,GACT,IAkOEpI,EAAI95B,GAAG,aAjOT,SAAyBoF,GACvB,IAAKA,EAAEggC,UAAW,OAClB,IAAIxR,EACAjgB,EACA8xB,GAAqB,EAEV,cAAXrgC,EAAEsgC,OACJ9R,EAAQxuB,EAAEigC,cAAc,GACxB1xB,EAAWnR,EAAOw+B,8BAGpB,MAAM2E,EAAgBvgC,EAAEigC,cAAc,GAAGE,MACnCK,EAAgBxgC,EAAEigC,cAAc,GAAGG,MAYzC,QAV2B,IAAhB5C,IACTA,KACEA,GAAe5/B,KAAK+R,IAAI6wB,EAAgB3D,GAAej/B,KAAK+R,IAAI4wB,EAAgB3D,MAIhFiC,IAA0BrB,GAAekB,GAAqBC,IAC5D3+B,EAAEyI,YAAYzI,EAAE+/B,kBAGjBvC,GAAekB,GAAqBC,EAAmB,CAC1D,MAIM8B,EAJmBrqC,EAASsqC,iBAChC1gC,EAAEigC,cAAc,GAAGU,QACnB3gC,EAAEigC,cAAc,GAAGW,SAEa9/B,QAChC,uEAEE2/B,GAAY9B,EAAkBr8B,SAASm+B,KACzCtnC,EAAEsnC,GAAU9lC,QAAQ,QAAS,eAC7BmiC,EAAgB2D,EAEpB,CAEA,GAAIlyB,GAAYigB,EAAO,CACrB,MAAM2R,EAAQ3R,EAAM2R,MACdC,EAAQ5R,EAAM4R,OAChBxiC,KAAK+R,IAAIwwB,EAAQvD,GAAeruB,GAAY3Q,KAAK+R,IAAIywB,EAAQvD,GAAetuB,KAC9EwuB,GAAU,EAEd,MACEA,GAAU,EAEZ,GAAIA,EAAS,CAGX,GAFAG,GAAe,EAEX2B,EAAsB,CACxB,MAAM6B,EAAmBtqC,EAASsqC,iBAChC1gC,EAAEigC,cAAc,GAAGU,QACnB3gC,EAAEigC,cAAc,GAAGW,SAErB9B,EAAuB4B,EAAiB5/B,QAAQ89B,GAE9CE,GACA3B,GACAA,EAAiB,KAAO2B,EAExBuB,GAAqB,EACZvB,GACT1nC,YAAW,KACT+lC,EAAmBM,EAAqBqB,GACxChB,GAAW,GAGjB,CACI1gC,EAAO0+B,SACTzkC,aAAa4lC,GAEX7/B,EAAO6+B,aAAeoE,IACxBhpC,aAAa+lC,GACbW,KAEEpB,GACF4B,GAEJ,CACF,IAkJE7J,EAAI95B,GAAG,YAjJT,SAAwBoF,GACtB,QAAKA,EAAEggC,YACPxC,OAAcp9B,EACds+B,GAAoB,EACpBC,EAAoB,KACpBE,GAAuB,EACvBxnC,aAAa+lC,GACb/lC,aAAa4lC,GACT6B,IACF3lC,EAAE2lC,GAAsBnkC,QAAQ,QAAS,wBACzCmkC,EAAuB,MAErB1oC,EAAS3B,gBAAkBuL,EAAEjM,QAC3BqJ,EAAO6+B,aAAa8B,IACpBpB,GACF6B,IAEK,IAELphC,EAAO6+B,cACT6B,IACA1mC,WAAW2mC,EAAc,IAEvBpB,GACF6B,KAEGphC,EAAO4+B,sBAAwBgB,GAAiBE,KAC/Cl9B,EAAEyI,YAAYzI,EAAE+/B,iBACpB7C,GAAe,EACR,KAGX,IAkHE9mC,EAAS7B,iBAAiB,eA3S5B,WACEuoC,EAAgB,KAGhBzlC,aAAa+lC,GACb/lC,aAAa4lC,GACT7/B,EAAO6+B,aACT8B,IAIEpB,GACF6B,GAEJ,GA6R8D,CAAEc,SAAS,KAC9DliC,EAAO6+B,cAChBvH,EAAI95B,GAAG,cA7UT,SAAyBoF,GACvB,MAAM6gC,EAAepD,EAAqBz9B,EAAEjM,QACxC8sC,IACFA,EAAazH,SAAS,gBAClB,UAAWp5B,GAAiB,IAAZA,EAAE8gC,OACpB1pC,YAAW,KACT+B,EAAE,iBAAiBmgC,YAAY,eAAe,GAC7C,IAIHqD,IACFC,EAAc58B,EAAEmgC,MAChBtD,EAAc78B,EAAEogC,MAChBjC,EAAiBn+B,EAAEjM,OAAQiM,EAAEmgC,MAAOngC,EAAEogC,OAE1C,IA8TE1L,EAAI95B,GAAG,aA7TT,WACOwC,EAAO++B,wBACVhjC,EAAE,iBAAiBmgC,YAAY,gBAE7BqD,GACF4B,GAEJ,IAuTE7J,EAAI95B,GAAG,WAAY6jC,GACnBroC,EAAS7B,iBAAiB,gBAAiBkqC,EAAe,CAAEa,SAAS,KAEvElpC,EAAS7B,iBAAiB,eAAgByL,IAEtC5C,EAAOy+B,qBACNlM,EAAOxC,KACNwC,EAAOC,SACPD,EAAOY,SACN14B,EAAO64B,WAAa74B,EAAO64B,UAAUqQ,WAExC/gC,EAAE+/B,iBAEApD,IACEQ,GAAkBY,IACtBS,IACF,GAEJ,ICzWM,SAAUwC,GAAMC,EAAaj4B,QAAA,IAAAA,MAA0B,IA6B3D,IA5BA,IAAMk4B,EAxHR,SAAeD,GAIb,IAHA,IAAMC,EAAqB,GACvBtnC,EAAI,EAEDA,EAAIqnC,EAAI7sC,QAAQ,CACrB,IAAM+zB,EAAO8Y,EAAIrnC,GAEjB,GAAa,MAATuuB,GAAyB,MAATA,GAAyB,MAATA,EAKpC,GAAa,OAATA,EAKJ,GAAa,MAATA,EAKJ,GAAa,MAATA,EAKJ,GAAa,MAATA,EA+BJ,GAAa,MAATA,EAuCJ+Y,EAAOpoC,KAAK,CAAEwnC,KAAM,OAAQ/hC,MAAO3E,EAAGrB,MAAO0oC,EAAIrnC,WAvCjD,CACE,IAAIunC,EAAQ,EACRC,EAAU,GAGd,GAAe,MAAXH,EAFA9kC,EAAIvC,EAAI,GAGV,MAAM,IAAIynC,UAAU,oCAAAC,OAAoCnlC,IAG1D,KAAOA,EAAI8kC,EAAI7sC,QACb,GAAe,OAAX6sC,EAAI9kC,GAAR,CAKA,GAAe,MAAX8kC,EAAI9kC,IAEN,GAAc,KADdglC,EACiB,CACfhlC,IACA,K,OAEG,GAAe,MAAX8kC,EAAI9kC,KACbglC,IACmB,MAAfF,EAAI9kC,EAAI,IACV,MAAM,IAAIklC,UAAU,uCAAAC,OAAuCnlC,IAI/DilC,GAAWH,EAAI9kC,I,MAjBbilC,GAAWH,EAAI9kC,KAAO8kC,EAAI9kC,KAoB9B,GAAIglC,EAAO,MAAM,IAAIE,UAAU,yBAAAC,OAAyB1nC,IACxD,IAAKwnC,EAAS,MAAM,IAAIC,UAAU,sBAAAC,OAAsB1nC,IAExDsnC,EAAOpoC,KAAK,CAAEwnC,KAAM,UAAW/hC,MAAO3E,EAAGrB,MAAO6oC,IAChDxnC,EAAIuC,C,KAlEN,CAIE,IAHA,IAAI7B,EAAO,GACP6B,EAAIvC,EAAI,EAELuC,EAAI8kC,EAAI7sC,QAAQ,CACrB,IAAMmtC,EAAON,EAAIO,WAAWrlC,GAE5B,KAEGolC,GAAQ,IAAMA,GAAQ,IAEtBA,GAAQ,IAAMA,GAAQ,IAEtBA,GAAQ,IAAMA,GAAQ,KAEd,KAATA,GAMF,MAJEjnC,GAAQ2mC,EAAI9kC,I,CAOhB,IAAK7B,EAAM,MAAM,IAAI+mC,UAAU,6BAAAC,OAA6B1nC,IAE5DsnC,EAAOpoC,KAAK,CAAEwnC,KAAM,OAAQ/hC,MAAO3E,EAAGrB,MAAO+B,IAC7CV,EAAIuC,C,MA/BJ+kC,EAAOpoC,KAAK,CAAEwnC,KAAM,QAAS/hC,MAAO3E,EAAGrB,MAAO0oC,EAAIrnC,YALlDsnC,EAAOpoC,KAAK,CAAEwnC,KAAM,OAAQ/hC,MAAO3E,EAAGrB,MAAO0oC,EAAIrnC,YALjDsnC,EAAOpoC,KAAK,CAAEwnC,KAAM,eAAgB/hC,MAAO3E,IAAKrB,MAAO0oC,EAAIrnC,YAL3DsnC,EAAOpoC,KAAK,CAAEwnC,KAAM,WAAY/hC,MAAO3E,EAAGrB,MAAO0oC,EAAIrnC,M,CA8FzD,OAFAsnC,EAAOpoC,KAAK,CAAEwnC,KAAM,MAAO/hC,MAAO3E,EAAGrB,MAAO,KAErC2oC,CACT,CAiBiBO,CAAMR,GACbS,EAAoB14B,EAAO24B,SAA3BA,OAAW,IAAHD,EAAG,KAAIA,EACjBE,EAAiB,KAAAN,OAAKO,GAAa74B,EAAQ84B,WAAa,OAAW,OACnEnW,EAAkB,GACpBx3B,EAAM,EACNyF,EAAI,EACJmoC,EAAO,GAELC,EAAa,SAAC1B,GAClB,GAAI1mC,EAAIsnC,EAAO9sC,QAAU8sC,EAAOtnC,GAAG0mC,OAASA,EAAM,OAAOY,EAAOtnC,KAAKrB,K,EAGjE0pC,EAAc,SAAC3B,GACnB,IAAM/nC,EAAQypC,EAAW1B,GACzB,QAAclgC,IAAV7H,EAAqB,OAAOA,EAC1B,IAAAmpC,EAA4BR,EAAOtnC,GAA3BsoC,EAAQR,EAAApB,KAAE/hC,EAAKmjC,EAAAnjC,MAC7B,MAAM,IAAI8iC,UAAU,cAAAC,OAAcY,EAAQ,QAAAZ,OAAO/iC,EAAK+iC,sBAAchB,G,EAGhE6B,EAAc,WAGlB,IAFA,IACI5pC,EADAozB,EAAS,GAELpzB,EAAQypC,EAAW,SAAWA,EAAW,iBAC/CrW,GAAUpzB,EAEZ,OAAOozB,C,EAGF/xB,EAAIsnC,EAAO9sC,QAAQ,CACxB,IAAM+zB,EAAO6Z,EAAW,QAClB1nC,EAAO0nC,EAAW,QAClBZ,EAAUY,EAAW,WAE3B,GAAI1nC,GAAQ8mC,EAAZ,CACE,IAAIgB,EAASja,GAAQ,IAEa,IAA9BwZ,EAASnoC,QAAQ4oC,KACnBL,GAAQK,EACRA,EAAS,IAGPL,IACFpW,EAAO7yB,KAAKipC,GACZA,EAAO,IAGTpW,EAAO7yB,KAAK,CACVwB,KAAMA,GAAQnG,IACdiuC,OAAMA,EACNC,OAAQ,GACRjB,QAASA,GAAWQ,EACpBU,SAAUN,EAAW,aAAe,I,KAlBxC,CAuBA,IAAMzpC,EAAQ4vB,GAAQ6Z,EAAW,gBACjC,GAAIzpC,EACFwpC,GAAQxpC,OAUV,GANIwpC,IACFpW,EAAO7yB,KAAKipC,GACZA,EAAO,IAGIC,EAAW,QACxB,CACQI,EAASD,IAAf,IACMI,EAAOP,EAAW,SAAW,GAC7BQ,EAAUR,EAAW,YAAc,GACnCK,EAASF,IAEfF,EAAY,SAEZtW,EAAO7yB,KAAK,CACVwB,KAAMioC,IAASC,EAAUruC,IAAQ,IACjCitC,QAASmB,IAASC,EAAUZ,EAAiBY,EAC7CJ,OAAMA,EACNC,OAAMA,EACNC,SAAUN,EAAW,aAAe,I,MAKxCC,EAAY,M,EAGd,OAAOtW,CACT,CAoBM,SAAU8W,GACdxB,EACAj4B,GAEA,OAQI,SACJk4B,EACAl4B,QAAA,IAAAA,MAAqC,IAErC,IAAM05B,EAAUC,GAAM35B,GACd04B,EAA+C14B,EAAO45B,OAAtDA,OAAS,IAAHlB,EAAG,SAACvyB,GAAc,OAAAA,CAAA,EAACuyB,EAAEmB,EAAoB75B,EAAO85B,SAA3BA,OAAW,IAAHD,GAAOA,EAG5C3/B,EAAUg+B,EAAOtkC,KAAI,SAACmmC,GAC1B,GAAqB,iBAAVA,EACT,OAAO,IAAIC,OAAO,OAAA1B,OAAOyB,EAAM3B,QAAO,MAAMsB,EAEhD,IAEA,OAAO,SAACh6B,GAGN,IAFA,IAAIq5B,EAAO,GAEFnoC,EAAI,EAAGA,EAAIsnC,EAAO9sC,OAAQwF,IAAK,CACtC,IAAMmpC,EAAQ7B,EAAOtnC,GAErB,GAAqB,iBAAVmpC,EAAX,CAKA,IAAMxqC,EAAQmQ,EAAOA,EAAKq6B,EAAMzoC,WAAQ8F,EAClC6iC,EAA8B,MAAnBF,EAAMT,UAAuC,MAAnBS,EAAMT,SAC3Cvb,EAA4B,MAAnBgc,EAAMT,UAAuC,MAAnBS,EAAMT,SAE/C,GAAIvqC,MAAMc,QAAQN,GAAlB,CACE,IAAKwuB,EACH,MAAM,IAAIsa,UACR,aAAAC,OAAayB,EAAMzoC,KAAI,sCAI3B,GAAqB,IAAjB/B,EAAMnE,OAAc,CACtB,GAAI6uC,EAAU,SAEd,MAAM,IAAI5B,UAAU,aAAAC,OAAayB,EAAMzoC,KAAI,qB,CAG7C,IAAK,IAAI6B,EAAI,EAAGA,EAAI5D,EAAMnE,OAAQ+H,IAAK,CACrC,IAAMiZ,EAAUwtB,EAAOrqC,EAAM4D,GAAI4mC,GAEjC,GAAID,IAAc5/B,EAAQtJ,GAAcspC,KAAK9tB,GAC3C,MAAM,IAAIisB,UACR,iBAAAC,OAAiByB,EAAMzoC,KAAI,gBAAAgnC,OAAeyB,EAAM3B,QAAO,gBAAAE,OAAelsB,EAAO,MAIjF2sB,GAAQgB,EAAMX,OAAShtB,EAAU2tB,EAAMV,M,OAM3C,GAAqB,iBAAV9pC,GAAuC,iBAAVA,GAaxC,IAAI0qC,EAAJ,CAEA,IAAME,EAAgBpc,EAAS,WAAa,WAC5C,MAAM,IAAIsa,UAAU,aAAAC,OAAayB,EAAMzoC,KAAIgnC,mBAAW6B,GAHxC,MAbd,CACQ/tB,EAAUwtB,EAAO7a,OAAOxvB,GAAQwqC,GAEtC,GAAID,IAAc5/B,EAAQtJ,GAAcspC,KAAK9tB,GAC3C,MAAM,IAAIisB,UACR,aAAAC,OAAayB,EAAMzoC,KAAI,gBAAAgnC,OAAeyB,EAAM3B,QAAO,gBAAAE,OAAelsB,EAAO,MAI7E2sB,GAAQgB,EAAMX,OAAShtB,EAAU2tB,EAAMV,M,OA7CvCN,GAAQgB,C,CAuDZ,OAAOhB,C,CAEX,CAtFSqB,CAAoBpC,GAAMC,EAAKj4B,GAAUA,EAClD,CAqKA,SAAS64B,GAAaZ,GACpB,OAAOA,EAAIliC,QAAQ,4BAA6B,OAClD,CAKA,SAAS4jC,GAAM35B,GACb,OAAOA,GAAWA,EAAQq6B,UAAY,GAAK,GAC7C,CA0DA,SAASC,GACPvB,EACA9tC,EACA+U,GAEA,OAqCI,SACJk4B,EACAjtC,EACA+U,QAAA,IAAAA,MAAmC,IAenC,IAZE,IAAA04B,EAME14B,EAAOu6B,OANTA,OAAS,IAAH7B,GAAQA,EACdmB,EAKE75B,EAAOS,MALTA,OAAQ,IAAHo5B,GAAOA,EACZW,EAIEx6B,EAAO0zB,IAJTA,OAAM,IAAH8G,GAAOA,EACVC,EAGEz6B,EAAO45B,OAHTA,OAAS,IAAHa,EAAG,SAACt0B,GAAc,OAAAA,CAAA,EAACs0B,EACzBC,EAEE16B,EAAO84B,UAFTA,OAAY,IAAH4B,EAAG,MAAKA,EACjBC,EACE36B,EAAO46B,SACLC,EAAa,IAAAvC,OAAIO,QAFV,IAAH8B,EAAG,GAAEA,GAEmC,OAC5CG,EAAc,IAAAxC,OAAIO,GAAaC,GAAa,KAC9CiC,EAAQt6B,EAAQ,IAAM,GAGNu6B,EAAA,EAAAC,EAAA/C,EAAA8C,EAAAC,EAAA7vC,OAAA4vC,IAAQ,CAAvB,IAAMjB,EAAKkB,EAAAD,GACd,GAAqB,iBAAVjB,EACTgB,GAASlC,GAAae,EAAOG,QACxB,CACL,IAAMX,EAASP,GAAae,EAAOG,EAAMX,SACnCC,EAASR,GAAae,EAAOG,EAAMV,SAEzC,GAAIU,EAAM3B,QAGR,GAFIntC,GAAMA,EAAK6E,KAAKiqC,GAEhBX,GAAUC,EACZ,GAAuB,MAAnBU,EAAMT,UAAuC,MAAnBS,EAAMT,SAAkB,CACpD,IAAM4B,EAAyB,MAAnBnB,EAAMT,SAAmB,IAAM,GAC3CyB,GAAS,MAAAzC,OAAMc,EAAMd,eAAOyB,EAAM3B,QAAOE,eAAOe,GAAMf,OAAGc,EAAM,OAAAd,OAAMyB,EAAM3B,QAAOE,eAAOe,EAAM,KAAAf,OAAI4C,E,MAEnGH,GAAS,MAAAzC,OAAMc,EAAMd,YAAIyB,EAAM3B,QAAOE,YAAIe,EAAM,KAAAf,OAAIyB,EAAMT,cAGrC,MAAnBS,EAAMT,UAAuC,MAAnBS,EAAMT,SAClCyB,GAAS,OAAAzC,OAAOyB,EAAM3B,QAAO,KAAAE,OAAIyB,EAAMT,SAAW,KAElDyB,GAAS,IAAAzC,OAAIyB,EAAM3B,QAAO,KAAAE,OAAIyB,EAAMT,eAIxCyB,GAAS,MAAAzC,OAAMc,GAAMd,OAAGe,EAAM,KAAAf,OAAIyB,EAAMT,S,EAK9C,GAAI5F,EACG6G,IAAQQ,GAAS,GAAAzC,OAAGwC,EAAc,MAEvCC,GAAU/6B,EAAQ46B,SAAiB,MAAAtC,OAAMuC,EAAa,KAAzB,QACxB,CACL,IAAMM,EAAWjD,EAAOA,EAAO9sC,OAAS,GAClCgwC,EACgB,iBAAbD,EACHL,EAAYtqC,QAAQ2qC,EAASA,EAAS/vC,OAAS,KAAO,OACzCgM,IAAb+jC,EAEDZ,IACHQ,GAAS,MAAAzC,OAAMwC,EAAWxC,cAAMuC,EAAe,QAG5CO,IACHL,GAAS,MAAAzC,OAAMwC,EAAWxC,YAAIuC,EAAa,K,CAI/C,OAAO,IAAIb,OAAOe,EAAOpB,GAAM35B,GACjC,CA1GSq7B,CAAerD,GAAMe,EAAM/4B,GAAU/U,EAAM+U,EACpD,CAuHM,SAAUs7B,GACdvC,EACA9tC,EACA+U,GAEA,OAAI+4B,aAAgBiB,OAvKtB,SAAwBjB,EAAc9tC,GACpC,IAAKA,EAAM,OAAO8tC,EAMlB,IAJA,IAAMwC,EAAc,0BAEhBhmC,EAAQ,EACRimC,EAAaD,EAAY3Y,KAAKmW,EAAKzuB,QAChCkxB,GACLvwC,EAAK6E,KAAK,CAERwB,KAAMkqC,EAAW,IAAMjmC,IACvB6jC,OAAQ,GACRC,OAAQ,GACRC,SAAU,GACVlB,QAAS,KAEXoD,EAAaD,EAAY3Y,KAAKmW,EAAKzuB,QAGrC,OAAOyuB,CACT,CAmJqC0C,CAAe1C,EAAM9tC,GACpD8D,MAAMc,QAAQkpC,GA/IpB,SACE2C,EACAzwC,EACA+U,GAEA,IAAM27B,EAAQD,EAAM9nC,KAAI,SAACmlC,GAAS,OAAAuC,GAAavC,EAAM9tC,EAAM+U,GAASsK,MAAlC,IAClC,OAAO,IAAI0vB,OAAO,MAAA1B,OAAMqD,EAAMpe,KAAK,KAAO,KAAEoc,GAAM35B,GACpD,CAwIkC47B,CAAc7C,EAAM9tC,EAAM+U,GACnDs6B,GAAevB,EAAM9tC,EAAM+U,EACpC,CCxmBA,MAAM67B,GAAU,CACdC,MAAO,GACPC,aACE,GAA6B,IAAzBF,GAAQC,MAAM1wC,OAAc,OACXywC,GAAQC,MAAMzmC,OACnC2mC,E,EAEFC,YAAa,GACbC,mBACE,GAAmC,IAA/BL,GAAQI,YAAY7wC,OAAc,OACtC,MAAM4wC,EAAeH,GAAQI,YAAYE,OACnCpM,OAAEA,EAAMqM,SAAEA,EAAQC,OAAEA,GAAWL,EAErC,IAAI1mC,EAAUy6B,EAAO37B,OAAOkB,SACgB,IAAxCy6B,EAAO37B,OAAOkoC,wBAAiChnC,GAAU,GAE9C,SAAX+mC,GACFtM,EAAOniC,KAAK,CAAE0H,UAASinC,gBAAgB,IAE1B,SAAXF,GACFtM,EAAOyM,SAASJ,EAAU,CAAE9mC,UAASinC,gBAAgB,G,EAGzDE,OAAOzlC,GACL,GAAI6kC,GAAQa,cAAe,OAG3B,IAAIC,EAAQ3lC,EAAE2lC,MACdd,GAAQe,cAAgBf,GAAQc,MAChCd,GAAQc,MAAQA,EAEhBd,GAAQgB,aAAc,EACtBhB,GAAQE,aAERY,EAAQd,GAAQc,MACXA,IAAOA,EAAQ,IAVR7uC,KAYRgvC,MAAM5xC,SAAS6xC,IACjB,MAAMhN,EAASgN,EAAKhN,OACpB,IAAIiN,EAAYL,EAAMI,EAAKruC,IAM3B,IALKsuC,GAAaD,EAAK3oC,OAAOmoC,iBAC5BS,EAAY,CACV3c,IAAK0c,EAAKhN,OAAOviC,QAAQ,MAGxBwvC,EAAW,OAChB,MAAMZ,EAAWY,EAAU3c,UAAOjpB,EAElC,IAAI9B,EAAUy6B,EAAO37B,OAAOkB,SACgB,IAAxCy6B,EAAO37B,OAAOkoC,wBAAiChnC,GAAU,GAEzD8mC,IAAarM,EAAO1P,MAClB0P,EAAOviC,QAAQgD,QAAQ4rC,IAAa,EAElCrM,EAAOkN,gBACTlN,EAAOniC,KAAK,CAAE0H,UAASinC,gBAAgB,IAEvCV,GAAQI,YAAYnsC,KAAK,CACvBusC,OAAQ,OACRtM,WAGKA,EAAOkN,gBAEhBlN,EAAOyM,SAASJ,EAAU,CAAE9mC,UAASinC,gBAAgB,IAErDV,GAAQI,YAAY3/B,QAAQ,CAC1B+/B,OAAQ,OACRD,WACArM,WAGN,G,EAGJmN,cAAcC,EAAQH,GACpB,MAAMnuC,EAASF,IACTyuC,EAAWtyC,GAAO,GAAI+wC,GAAQc,OAAS,GAAI,CAC/CQ,CAACA,GAASH,IAEZnB,GAAQc,MAAQS,EAChBvuC,EAAOrB,QAAQC,aAAa2vC,EAAU,G,EAExCttC,KAAKqtC,EAAQH,EAAW3c,GACtB,MAAMxxB,EAASF,IACTvB,EAAWF,IAYjB,GAVuB,QAAnBmzB,EAAIgd,QAAQ,IAEF,MADZhd,EAAMA,EAAItqB,QAAQ,MAAO,OAEvBsqB,EAAMjzB,EAASX,SAASI,MAChByyB,SAAS,SACfe,EAAMjzB,EAASX,SAASI,KAAKuE,MAAM,OAAO,KAK3CyqC,GAAQgB,YAIX,YAHAhB,GAAQC,MAAMhsC,MAAK,KACjB+rC,GAAQ/rC,KAAKqtC,EAAQH,EAAW3c,EAAI,IAIxCwb,GAAQe,cAAgBf,GAAQc,MAChC,MAAMS,EAAWtyC,GAAO,GAAI+wC,GAAQe,eAAiB,GAAI,CACvDO,CAACA,GAASH,IAEZnB,GAAQc,MAAQS,EAChBvuC,EAAOrB,QAAQE,UAAU0vC,EAAU,GAAI/c,E,EAEzCtqB,QAAQonC,EAAQH,EAAW3c,GACzB,MAAMxxB,EAASF,IAKf,GAJuB,QAAnB0xB,EAAIgd,QAAQ,KAEdhd,EAAMA,EAAItqB,QAAQ,MAAO,MAEtB8lC,GAAQgB,YAIX,YAHAhB,GAAQC,MAAMhsC,MAAK,KACjB+rC,GAAQ9lC,QAAQonC,EAAQH,EAAW3c,EAAI,IAI3Cwb,GAAQe,cAAgBf,GAAQc,MAChC,MAAMS,EAAWtyC,GAAO,GAAI+wC,GAAQe,eAAiB,GAAI,CACvDO,CAACA,GAASH,IAEZnB,GAAQc,MAAQS,EAChBvuC,EAAOrB,QAAQC,aAAa2vC,EAAU,GAAI/c,E,EAE5C1yB,GAAG4H,GACD,MAAM1G,EAASF,IACfktC,GAAQgB,aAAc,EACtBhuC,EAAOrB,QAAQG,GAAG4H,E,EAEpB3H,OACE,MAAMiB,EAASF,IACfktC,GAAQgB,aAAc,EACtBhuC,EAAOrB,QAAQI,M,EAEjBivC,aAAa,EACbD,cAAe,GACfD,MAAO,GACPD,eAAe,EACfvP,KAAKzB,GACH,MAAM78B,EAASF,IACTvB,EAAWF,IACjB2uC,GAAQc,MAAQ9tC,EAAOrB,QAAQmvC,MAC/BxsC,EAAEtB,GAAQ+C,GAAG,QAAQ,KACnBxD,YAAW,KACTytC,GAAQa,eAAgB,CAAK,GAC5B,EAAE,IAGHtvC,EAASkwC,YAAsC,aAAxBlwC,EAASkwC,aAClCzB,GAAQa,eAAgB,GAG1BvsC,EAAEtB,GAAQ+C,GAAG,WAAYiqC,GAAQY,OAAOjY,KAAKkH,GAC/C,GC5JF,SAAS6R,GAAUlyB,GACjB,MAAM0kB,EAAS1kB,GACTugB,IAAEA,EAAG4R,WAAEA,EAAU9R,IAAEA,EAAGt3B,OAAEA,GAAW27B,EACnC1K,EAAUE,KACVoB,EAASN,KACf,IAAIoX,GAAY,EACZ1J,GAAU,EACd,MAAM2J,EAAe,GACrB,IAAIlJ,EAGAmJ,EACAC,EAEAC,EAGAC,EACAC,EACAC,EAEAC,EAZAC,EAAiB,GACjBC,EAAkB,GAGlBC,GAAqB,EAErBC,EAAmB,GACnBC,EAAoB,GAOxB,MAAMC,EAA+BnqC,EAAQ,GAAEs3B,EAAIxM,+BAC7Csf,EAAgCpqC,EAAQ,GAAEs3B,EAAIxM,gCAC9Cuf,EAA4BrqC,EAAQ,GAAEs3B,EAAIxM,4BAC1Cwf,EAA2BtqC,EAAQ,GAAEs3B,EAAIxM,2BAEzCyf,EAAkBjT,EAAIuD,IAAM,eAAiB,cAC7C2P,EAA4BlT,EAAIuD,IAClC,2FACA,oFA2QJ,SAAS4P,EAAwBrY,GAA+C,IAA9C7xB,SAAEA,EAAQ4xB,MAAEA,EAAKuY,WAAEA,EAAUC,OAAEA,QAAQ,IAAAvY,EAAG,GAAEA,EAC5E,MAAMxpB,EAAS,CAAC,WAAY,YAAa,mBAAoB,WAC7D,IAAmB,IAAf8hC,IAAsC,IAAfA,EACzB,IAAK,IAAIluC,EAAI,EAAGA,EAAIqtC,EAAiB7yC,OAAQwF,GAAK,EAAG,CACnD,MAAMhB,EAAKquC,EAAiBrtC,GACxBhB,GAAMA,EAAGA,MACQ,IAAfkvC,GAAqBlvC,EAAGA,GAAGkE,UAAUC,IAAI,8BAC1B,IAAf+qC,GAAsBlvC,EAAGA,GAAGkE,UAAU6E,OAAO,6BAErD,CAEEomC,GAAUd,EAAiB7yC,QAAU6yC,EAAiB,IAAMA,EAAiB,GAAGruC,KAElFquC,EAAiB,GAAGruC,GAAGovC,YAAcf,EAAiB,GAAGruC,GAAG8L,YAE9D,IAAK,IAAI9K,EAAI,EAAGA,EAAIqtC,EAAiB7yC,OAAQwF,GAAK,EAAG,CACnD,MAAMhB,EAAKquC,EAAiBrtC,GAC5B,GAAIhB,GAAMA,EAAGA,GAAI,EACXA,EAAGyJ,WAAczJ,EAAGqvC,cAAiB1Y,IACvC32B,EAAGA,GAAGkE,UAAUC,IAAInE,EAAGyJ,WACvBzJ,EAAGqvC,cAAe,GAEhBrvC,EAAGyJ,WAAaktB,GAClB32B,EAAGA,GAAGkE,UAAU6E,OAAO/I,EAAGyJ,WAE5B,IAAK,IAAIlG,EAAI,EAAGA,EAAI6J,EAAO5R,OAAQ+H,GAAK,EAAG,CACzC,MAAM+rC,EAAYliC,EAAO7J,GACrBvD,EAAGsvC,KACD3Y,EACF32B,EAAGA,GAAGxD,MAAM8yC,GAAa,GACS,mBAAlBtvC,EAAGsvC,GACnBtvC,EAAGA,GAAGxD,MAAM8yC,GAAatvC,EAAGsvC,GAAWvqC,GAEvC/E,EAAGA,GAAGxD,MAAM8yC,GAAatvC,EAAGsvC,GAGlC,CACF,CACF,CACF,CAEA,SAASC,EAAiBnoC,GACxB,IAAKA,EAAEggC,UAAW,OAClB,MAAMoI,EAAmBhrC,EAAQ,GAAEs3B,EAAIxM,mBAEpCkf,IACAgB,GACD3B,GACC/R,EAAI2T,UAAY3T,EAAI2T,SAASzvC,KAC7BmgC,EAAOkN,iBAGN9sC,EAAE6G,EAAEjM,QAAQ+M,QAAQ,mCAAmC1M,OAAS,GAElE+E,EAAE6G,EAAEjM,QAAQ+M,QAAQ,qCAAqC1M,OAAS,GAClEgJ,EAAOkrC,uBAAyB,GAChC5T,EAAItF,OAAShyB,EAAOkrC,yBAGtBvL,GAAU,EACV0J,GAAY,EACZjJ,OAAcp9B,EACdsmC,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACxEyG,EAAiB1d,KACjB2d,EAAgB/N,EAAO+N,cACzB,CACA,SAASyB,EAAgBvoC,GACvB,IAAKA,EAAEggC,UAAW,OAClB,IAAKyG,EAAW,OAChB,MAAMtG,EAAmB,cAAXngC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC9DC,EAAmB,cAAXpgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MAOpE,QAN2B,IAAhB5C,IACTA,KACKA,GAAe5/B,KAAK+R,IAAIywB,EAAQsG,EAAah7B,GAAK9N,KAAK+R,IAAIwwB,EAAQuG,EAAav3B,KAClFgxB,EAAQuG,EAAav3B,IAAMulB,EAAIuD,KAC/BkI,EAAQuG,EAAav3B,GAAKulB,EAAIuD,KAE/BuF,GAAex9B,EAAEwoC,oBAAsB9T,EAAI+T,iBAE7C,YADAhC,GAAY,GAGd,IAAK1J,EAAS,CAEZ,IAAI2L,GAAS,EACb,MAAM30C,EAASoF,EAAE6G,EAAEjM,QAEbs0C,EAAWt0C,EAAO+M,QAAQ,aAC5BunC,EAASj0C,OAAS,KACfsgC,EAAIuD,KAAOoQ,EAASM,KAAK,0BAA0Bv0C,OAAS,IAAGs0C,GAAS,GACzEhU,EAAIuD,KAAOoQ,EAASM,KAAK,2BAA2Bv0C,OAAS,IAAGs0C,GAAS,IAG/ExB,EAAiBnzC,EAAO+M,QAAQ,UAE9BomC,EAAe7N,SAAS,iBACxBtlC,EAAO+M,QAAQ,+BAA+B1M,OAAS,KAEvDs0C,GAAS,GACXvB,EAAkBvS,EAAI+T,KAAK,kBACvBxB,EAAgB/yC,OAAS,IAC3B+yC,EAAkBA,EAAgBnmC,GAAGmmC,EAAgB/yC,OAAS,IAEhE,IAAIw0C,EAAgBlC,EAAav3B,EAAIylB,EAAI6G,SAASz2B,KAAOyiC,EAWzD,GAVAd,EAAqB/R,EAAIxF,QAEvBwZ,EADElU,EAAIuD,IAEJyO,EAAav3B,EACbylB,EAAI6G,SAASz2B,KAAO4vB,EAAI,GAAG/vB,YAAc8hC,EAAqBc,GAEhDf,EAAav3B,EAAIylB,EAAI6G,SAASz2B,KAAOyiC,EAEnDmB,IAAeF,GAAS,GACG,IAA3BvB,EAAgB/yC,QAA0C,IAA1B8yC,EAAe9yC,SAAcs0C,GAAS,GACtEA,EAEF,YADAjC,GAAY,GAIVc,IACFR,EAAgBG,EAAeyB,KAAK,uBACP,IAAzB5B,EAAc3yC,SAChB2yC,EAAgB5tC,EAAE,0CAClB+tC,EAAezmC,OAAOsmC,KAGtBS,IACFR,EAAiBG,EAAgBwB,KAAK,wBACR,IAA1B3B,EAAe5yC,SACjB4yC,EAAiB7tC,EAAE,2CACnBguC,EAAgB1mC,OAAOumC,KAIvBF,IACFO,EAAmBb,EAAWmC,KAAK,mBACnCrB,EAAoBd,EAAWmC,KAAK,oBAChCrB,EAAkBlzC,OAAS,IAC7BkzC,EAAoBA,EAAkBtmC,GAAGsmC,EAAkBlzC,OAAS,IAGtE6yC,EAtZN,WACE,MAAM5qC,EAAM,GACNwsC,EAAWnU,EAAIuD,KAAO,EAAI,EAC1B6Q,EACJzB,EAAiBhO,SAAS,wBACzBgO,EAAiBhO,SAAS,kBAC1BgO,EAAiBhO,SAAS,8BACvB0P,EAAoB1B,EAAiBhO,SAAS,gBAC9C2P,EAAwB3B,EAAiBhO,SAAS,0BAClD4P,EACJ5B,EAAiBhO,SAAS,6BACzBgO,EAAiBhO,SAAS,iBACzBgO,EAAiBhO,SAAS,sBACxB6P,EACJ5B,EAAkBjO,SAAS,wBAC1BiO,EAAkBjO,SAAS,kBAC3BiO,EAAkBjO,SAAS,8BACxB8P,EAAqB7B,EAAkBjO,SAAS,gBAChD+P,EAAyB9B,EAAkBjO,SAAS,0BACpDgQ,EACJ/B,EAAkBjO,SAAS,6BAC1BiO,EAAkBjO,SAAS,iBAC1BiO,EAAkBjO,SAAS,sBACzBiQ,EAAYP,IAAsBC,EAClCO,EAAUJ,IAAuBC,EACjCI,EAAsBnC,EAAiBsB,KAC3C,wEAEIc,EAAuBnC,EAAkBqB,KAC7C,wEAEF,IAAIe,EACAC,EAsOJ,OApOIvsC,EAAOwsC,2BAKPF,EAHArC,EAAiBhO,SAAS,YAC1BgO,EAAiBsB,KAAK,yBAAyBv0C,OAEvBizC,EAAiBsB,KAAK,SAASA,KAAK,sBAAsB3nC,GAAG,GAE7DqmC,EACrBsB,KAAK,iBACLA,KAAK,sBACL3nC,GAAG,GAMN2oC,EAHArC,EAAkBjO,SAAS,YAC3BiO,EAAkBqB,KAAK,yBAAyBv0C,OAEtBkzC,EAAkBqB,KAAK,SAASA,KAAK,sBAAsB3nC,GAAG,GAE9DsmC,EACvBqB,KAAK,iBACLA,KAAK,sBACL3nC,GAAG,GAEJ0oC,EAAsBt1C,QACxBq1C,EAAqBxrC,MAAMrF,IACpBO,EAAEP,GAAIygC,SAAS,WACpBzgC,EAAGixC,oBAAsBH,EAAsBpjC,KAAK,SAAS,GAAGJ,YAAW,KAIjFsjC,EAAoBvrC,MAAM6rC,IACxB,MAAMC,EAAS5wC,EAAE2wC,GACXE,EAAcD,EAAO1Q,SAAS,aAC9B4Q,EAASF,EAAO1Q,SAAS,QACzB6Q,EAAUH,EAAO1Q,SAAS,SAC1B8Q,EAAOJ,EAAO1Q,SAAS,aAC7B,IAAK6Q,GAAWC,IAASrB,EAAyB,OAClD,IAAKQ,GAAaS,EAAO1Q,SAAS,gBAAiB,OACnD,MAAMzgC,EAAK,CACTA,GAAIkxC,GAEN,GAAIR,EAAW,CACb,GAAIY,EAAS,OACb,GAAIH,EAAO1Q,SAAS,eASlB,OARIh9B,EAAI7C,QAAQZ,GAAM,GAAGyD,EAAIvD,KAAKF,GAClCA,EAAGwxC,SAAW,eACdL,EAAOpB,KAAK,qBAAqB1qC,MAAMosC,IACrChuC,EAAIvD,KAAK,CACPF,GAAIyxC,EACJniC,UAAYvK,GAAc,cAAwB,IAAXA,EAAiBkrC,OACxD,GAIR,CACA,GAAIU,IACGD,GACCS,EAAO1Q,SAAS,iBACdh9B,EAAI7C,QAAQZ,GAAM,GAAGyD,EAAIvD,KAAKF,GAClCA,EAAG0xC,QAAU,GAGbL,GAaF,OAZI5tC,EAAI7C,QAAQZ,GAAM,GAAGyD,EAAIvD,KAAKF,GAClCA,EAAG0xC,QAAW3sC,GAAa,EAAIA,GAAY,SAC3CosC,EAAOpB,KAAK,cAAc1qC,MAAMosC,IAC9BhuC,EAAIvD,KAAK,CACPF,GAAIyxC,EACJ,mBAAoB1C,EACpBz/B,UAAYvK,GACT,mBAAkBA,6FAAoGA,yGACrH,EAAI,EAAIA,MAEZ,IAKR,GAAIwsC,EA+BF,OA9BI9tC,EAAI7C,QAAQZ,GAAM,GAAGyD,EAAIvD,KAAKF,GAC7B0wC,GAAcC,IACbP,GACEC,IACFrwC,EAAGyJ,UAAY,iCAEjBzJ,EAAGsP,UAAavK,GACb,cACC,IAAMA,EAAWkrC,kEAGrBjwC,EAAGsP,UAAavK,GAAc,cAAa,IAAMA,EAAWkrC,QAG3DS,GAAaC,IAChB3wC,EAAGyJ,UAAY,gCACfzJ,EAAGsP,UAAavK,GACb,cAAa,IAAMA,EAAWkrC,4BAC7B,EAAIlrC,6CAGN2rC,GAAaC,IACf3wC,EAAGsP,UAAavK,GAAc,cAAa,IAAMA,EAAWkrC,YAE1DS,IAAcC,IAChB3wC,EAAGsP,UAAavK,GACb,cACC,IAAMA,EAAWkrC,wBACIlrC,8CAI7B,GAAIosC,EAAO1Q,SAAS,eAAgB,OACpC,MAAMkR,EACJR,EAAO1Q,SAAS,YAAc0Q,EAAOhpC,QAAQ,yBAAyB3M,OAKxE,GAJIiI,EAAI7C,QAAQZ,GAAM,GAAGyD,EAAIvD,KAAKF,KAC7BoxC,GAAgBA,IAAgBO,KACnC3xC,EAAG0xC,QAAW3sC,GAAa,EAAIA,GAAY,KAEzC4sC,EAAW,CACb,IAAIC,EAAkB5xC,EACtB,GAAIqxC,GAAUP,EAAsBt1C,QAAUgJ,EAAOwsC,yBAA0B,CAC7E,MAAMa,EAAS,CAAE7xC,GAAI8wC,EAAsB,IAC3Cc,EAAkBC,EAClBpuC,EAAIvD,KAAK2xC,EACX,CACAD,EAAgBtiC,UAAavK,IAC3B,IAAI+sC,EAAqB/sC,EAAW6sC,EAAgB5xC,GAAG+xC,oBAEvD,OAD0B,IAAtBhb,EAAO4B,aAAkBmZ,EAAqB9sC,KAAKkO,MAAM4+B,IACzDV,GAAejB,EACT,eAAc2B,qGAEhB,eAAcA,UAA2B,CAErD,KAEFjB,EAAqBxrC,MAAM6rC,IACzB,MAAMC,EAAS5wC,EAAE2wC,GACXE,EAAcD,EAAO1Q,SAAS,aAC9B4Q,EAASF,EAAO1Q,SAAS,QACzB6Q,EAAUH,EAAO1Q,SAAS,SAC1B8Q,EAAOJ,EAAO1Q,SAAS,aAC7B,IAAK6Q,GAAWC,IAASjB,EAA0B,OACnD,MAAMtwC,EAAK,CACTA,GAAIkxC,GAEN,GAAIP,EAAS,CACX,GAAIW,EAAS,OAGb,GAFI7tC,EAAI7C,QAAQZ,GAAM,GAAGyD,EAAIvD,KAAKF,GAE9BmxC,EAAO1Q,SAAS,eAkBlB,OAjBAzgC,EAAG0xC,QAAU,EACb1xC,EAAGwxC,SAAW,eACdL,EAAOpB,KAAK,qBAAqB1qC,MAAMosC,IACrChuC,EAAIvD,KAAK,CACPF,GAAIyxC,EACJ,mBAAoBzC,EACpB0C,QAAU3sC,GAAaA,GAAY,EACnCuK,UAAYvK,GACT,mBACC,EAAIA,6FAEJA,EAAW,6CAEX,EAAIA,6DACsD,GAAiB,GAAXA,MACpE,GAIR,CACA,GAAIwsC,EAgCF,OA/BI9tC,EAAI7C,QAAQZ,GAAM,GAAGyD,EAAIvD,KAAKF,GAC7B0wC,GAAcC,IACbH,GACEC,IACFzwC,EAAGyJ,UAAY,iCAEjBzJ,EAAGsP,UAAavK,GACb,eACS,IAAMA,EAAZ,KAAwBkrC,kEAG9BjwC,EAAGsP,UAAavK,GAAc,eAAqB,IAAMA,EAAZ,KAAwBkrC,QAGpES,GAAaC,IAChB3wC,EAAGsP,UAAavK,GACb,eAAqB,IAAMA,EAAZ,KAAwBkrC,4BACtC,EAAIlrC,6CAGN2rC,IAAcC,IAChB3wC,EAAGyJ,UAAY,gCACfzJ,EAAGsP,UAAavK,GACb,eACS,IAAMA,EAAZ,KAAwBkrC,wBACLlrC,kDAEvB2rC,GAAaC,IACf3wC,EAAGsP,UAAavK,GAAc,eAAqB,IAAMA,EAAZ,KAAwBkrC,QAKzE,GAAIkB,EAAO1Q,SAAS,eAAgB,OACpC,MAAMkR,EACJR,EAAO1Q,SAAS,YAAciO,EAAkBpyC,SAAS,yBAAyBd,OAKpF,GAJIiI,EAAI7C,QAAQZ,GAAM,GAAGyD,EAAIvD,KAAKF,KAC7BoxC,GAAgBA,IAAgBO,KACnC3xC,EAAG0xC,QAAW3sC,GAAaA,GAAY,GAErC4sC,EAAW,CACb,IAAIC,EAAkB5xC,EACtB,GAAIqxC,GAAUN,EAAwBv1C,QAAUgJ,EAAOwsC,yBAA0B,CAC/E,MAAMa,EAAS,CAAE7xC,GAAI+wC,EAAwB,IAC7Ca,EAAkBC,EAClBpuC,EAAIvD,KAAK2xC,EACX,CACAD,EAAgBtiC,UAAavK,IAC3B,IAAIitC,EAAuBJ,EAAgB5xC,GAAGixC,oBAAsB,EAAIlsC,GAExE,OAD0B,IAAtBgyB,EAAO4B,aAAkBqZ,EAAuBhtC,KAAKkO,MAAM8+B,IAC3DZ,GAAeb,EACT,eAAcyB,qGAEhB,eAAcA,UAA6B,CAEvD,KAEKvuC,CACT,CA+IyBwuC,IAIjB1xC,EAAE,mBAAmB/E,OAAS,GAAKsgC,EAAIoW,OACzCpW,EAAIoW,MAAMzV,MAAMl8B,EAAE,mBAEtB,CACA6G,EAAE+qC,qBAAsB,EACxBhO,GAAU,EACVrI,EAAIsW,8BAA+B,EACnChrC,EAAE+/B,iBAGF,MAAM8I,EAAWnU,EAAIuD,KAAO,EAAI,EAGhC2O,GAAezG,EAAQuG,EAAav3B,EAAIu4B,GAA4BmB,EAChEjC,EAAc,IAAGA,EAAc,GACnC,MAAMqE,EAAartC,KAAKgC,IAAIhC,KAAK+B,IAAIinC,EAAcD,EAAoB,GAAI,GAGrEuE,EAAe,CACnBD,aACAttC,SAAUstC,EACVE,cAAejE,EAAe,GAC9BkE,eAAgBjE,EAAgB,GAChCkE,gBAAiBhE,EAAiB,GAClCiE,iBAAkBhE,EAAkB,IAEtC1S,EAAIj6B,QAAQ,iBAAkBuwC,GAC9BnS,EAAO3G,KAAK,gBAAiB8Y,GAG7B,IAAIK,EAAuB3E,EAAciC,EACrC2C,GAAyB5E,EAAc,EAAID,EAAqB,GAAKkC,EACpEnU,EAAIuD,KAIPsT,EAAuB3tC,KAAK+B,IAAI4rC,GAAuB5E,GACvD6E,EAAwB5tC,KAAK+B,IAAI6rC,EAAuB,KAJxDD,EAAuB3tC,KAAKgC,IAAI2rC,EAAsB5E,GACtD6E,EAAwB5tC,KAAKgC,IAAI4rC,EAAuB,IAKhC,IAAtB7b,EAAO4B,aACTga,EAAuB3tC,KAAKkO,MAAMy/B,GAClCC,EAAwB5tC,KAAKkO,MAAM0/B,IAGrCzS,EAAO0S,iBAAkB,EACzBtyC,EAAE,CAAC+tC,EAAe,GAAIC,EAAgB,KAAK/N,SAAS,yBAEpD8N,EAAeh/B,UAAW,eAAcqjC,YACpChE,IAA8BR,EAAc,GAAG3xC,MAAMk1C,QAAU,EAAI,EAAIW,GAEzD,QAAdvW,EAAIxM,OACNif,EAAgBj/B,UAAW,eAAcsjC,YAEvChE,IAA+BR,EAAe,GAAG5xC,MAAMk1C,QAAU,EAAI,EAAIW,GAGxEnE,GAELe,EAAyB,CAAElqC,SAAUstC,GACvC,CACA,SAASS,EAAe1rC,GACtB,IAAKA,EAAEggC,UAAW,OAElB,GADAtL,EAAIsW,8BAA+B,GAC9BvE,IAAc1J,EAGjB,OAFA0J,GAAY,OACZ1J,GAAU,GAGZ0J,GAAY,EACZ1J,GAAU,EACVhE,EAAO0S,iBAAkB,EACzB,MAAME,EAASxyC,EAAE,CAAC+tC,EAAe,GAAIC,EAAgB,KAErD,GADAwE,EAAOrS,YAAY,yBACC,IAAhBsN,EAOF,OANA+E,EAAOzjC,UAAU,IACb6+B,GAAiBA,EAAc3yC,OAAS,GAAG2yC,EAAcplC,SACzDqlC,GAAkBA,EAAe5yC,OAAS,GAAG4yC,EAAerlC,cAC5DmlC,GACFe,EAAyB,CAAEtY,OAAO,KAItC,MAAMqc,EAAWziB,KAAQ0d,EACzB,IAAIgF,GAAc,GAGfD,EAAW,KAAOhF,EAAc,IAChCgF,GAAY,KAAOhF,EAAcD,EAAqB,KAEvDO,EACG5N,YAAY,gBACZF,SAAU,aAAyB,QAAd1E,EAAIxM,MAAkB,sBAAwB,KACtEif,EACG7N,YAAY,iBACZF,SAAS,gBACT0S,WAAW,eACV/E,IAAeA,EAAc,GAAG3xC,MAAMk1C,QAAU,IAChDtD,IAAgBA,EAAe,GAAG5xC,MAAMk1C,QAAU,IAClDxD,IACF/N,EAAOgT,kBAAkB1E,EAAkB,QAC3CtO,EAAOgT,kBAAkBzE,EAAmB,WAAW,IAEzDuE,GAAc,GAIhBF,EAAOvS,SAAS,mDACZzJ,EAAOxC,MAET+Z,EAAe,GAAGc,YAAcd,EAAe,GAAGxiC,YAEpDinC,EAAOzjC,UAAU,IAEb4+B,GACFe,EAAyB,CACvBlqC,SAAUkuC,EAAc,EAAI,EAC5B/D,YAAY,EACZC,SAAUpY,EAAOxC,MAGrBia,GAAqB,EACrBrO,EAAOkN,iBAAkB,EAGzB,MAAMiF,EAAe,CACnBC,cAAejE,EAAe,GAC9BkE,eAAgBjE,EAAgB,GAChCkE,gBAAiBhE,EAAiB,GAClCiE,iBAAkBhE,EAAkB,IAGlCuE,GAEF9S,EAAOiT,aAAe7E,EAAgB,GAAG8E,OAAOlI,MAChDhL,EAAOmT,YAAc/E,EAAgB,GAGrCpO,EAAOoT,aAAa,YAAajF,EAAgBG,EAAkB,UAAW,OAAQ,CACpFtD,MAAOmD,EAAe,GAAG+E,OAAOlI,MAChCqI,WAAW,IAEbrT,EAAOoT,aACL,WACAhF,EACAG,EACA,WACA,UACA,CAAEvD,MAAOoD,EAAgB,GAAG8E,OAAOlI,MAAOqI,WAAW,GACrDlF,EAAe,IAGjBtS,EAAIj6B,QAAQ,yBAA0BuwC,GACtCnS,EAAO3G,KAAK,wBAAyB8Y,KAErCtW,EAAIj6B,QAAQ,wBAAyBuwC,GACrCnS,EAAO3G,KAAK,uBAAwB8Y,IAGtChE,EAAemF,eAAc,KAC3BV,EAAOrS,YAAY,mDACfwN,GACFe,EAAyB,CAAEtY,OAAO,EAAMuY,YAAY,IAEtDV,GAAqB,EACrBrO,EAAOkN,iBAAkB,EACrB4F,GAE4B,IAA1B9S,EAAOviC,QAAQpC,QACjB2kC,EAAOviC,QAAQ8O,QAAQyzB,EAAO1P,KAEhC0P,EAAOviC,QAAQ2uC,MACfpM,EAAOuT,cAGHlvC,EAAOmoC,gBACTV,GAAQjuC,OAIVmiC,EAAOoT,aAAa,WAAYjF,EAAgBG,EAAkB,UAAW,OAAQ,CACnFtD,MAAOmD,EAAe,GAAG+E,OAAOlI,MAChCqI,WAAW,IAEbrT,EAAOoT,aAAa,UAAWhF,EAAiBG,EAAmB,WAAY,UAAW,CACxFvD,MAAOoD,EAAgB,GAAG8E,OAAOlI,MACjCqI,WAAW,IAKbrT,EAAOoT,aAAa,eAAgBjF,EAAgBG,EAAkB,OAAQ,CAC5E+E,WAAW,IAEbrT,EAAOwT,WAAWrF,GACdJ,GACF/N,EAAOyT,aAAanF,GAGtBzS,EAAIj6B,QAAQ,wBAAyBuwC,GACrCnS,EAAO3G,KAAK,uBAAwB8Y,GAEpCnS,EAAO3G,KAAK,eAAgB2G,EAAOiT,aAAcjT,EAAO0T,cAAe1T,GAEnE37B,EAAOsvC,qBACT3T,EAAOniC,KAAKmiC,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAAI,CAAEu4C,SAAS,MAGpE/X,EAAIj6B,QAAQ,uBAAwBuwC,GACpCnS,EAAO3G,KAAK,sBAAuB8Y,IAEjCnE,GAAiBA,EAAc3yC,OAAS,GAAG2yC,EAAcplC,SACzDqlC,GAAkBA,EAAe5yC,OAAS,GAAG4yC,EAAerlC,QAAQ,GAE5E,EAEA,WACE,MAAMktB,IACsB,eAA1B6F,EAAI8H,YAAY/yB,QAA0B4kB,EAAQQ,kBAC9C,CAAEyQ,SAAS,EAAMz7B,SAAS,GAEhC+wB,EAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GAChD6F,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,EAC7B,CAWAkB,GAEA7T,EAAOn+B,GAAG,iBAZV,WACE,MAAMi0B,IACsB,eAA1B6F,EAAI8H,YAAY/yB,QAA0B4kB,EAAQQ,kBAC9C,CAAEyQ,SAAS,EAAMz7B,SAAS,GAEhC+wB,EAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACjD6F,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,EAC9B,GAKF,CC5qBe,SAASmB,GAASC,EAAW/I,EAAO/6B,GACjD,MAAM+vB,EAASjiC,KACTud,EAAI0vB,EAAMA,MAAM8I,SAChB7a,EAAuB,YAAd8a,EAA0B,WAAa,OAYtD,GAXI9jC,EAAQ+jC,SAAWhU,EAAO37B,OAAOmoC,iBACnCv8B,EAAQvS,cAAe,EACvBuS,EAAQxS,SAAU,GASH,mBAAN6d,EAAkB,CAC3B0kB,EAAOkN,iBAAkB,EACzB,MAAM+G,EAAc34B,EAAEnb,KAAK6/B,EAAQ,CACjCA,SACA7gB,GAAI6rB,EACJjK,QAZJ,SAAyBkT,EAAaC,QAAe,IAAfA,MAAkB,IACtDlU,EAAOkN,iBAAkB,EACzBlN,EAAO/G,GAAQgb,EAAal5C,GAAO,GAAIkV,EAASikC,GAClD,EAUIlT,OATJ,WACEhB,EAAOkN,iBAAkB,CAC3B,EAQI6G,YACApY,IAAKqE,EAAOrE,MAEd,OAAIsY,GAAsC,iBAAhBA,GACxBjU,EAAOkN,iBAAkB,EAClBlN,EAAO/G,GAAQgb,EAAahkC,IAE9B+vB,CACT,CACA,OAAOA,EAAO/G,GAAQ3d,EAAGrL,EAC3B,CClCA,SAASkkC,GAAanU,EAAQkM,EAAakI,EAAYj1B,EAAIxB,EAAMojB,EAASC,EAAQ+S,GAChF,MAAMhI,EAAQ,GAEV/sC,MAAMc,QAAQs0C,GAChBrI,EAAMhsC,QAAQq0C,GACLA,GAAoC,mBAAfA,GAC9BrI,EAAMhsC,KAAKq0C,GAETlI,IACEltC,MAAMc,QAAQosC,GAChBH,EAAMhsC,QAAQmsC,GAEdH,EAAMhsC,KAAKmsC,IAIf,SAAS1hC,IACP,GAAqB,IAAjBuhC,EAAM1wC,OAER,YADA0lC,IAGgBgL,EAAMzmC,QAEdnF,KAAK6/B,EAAQ,CACrBA,SACA7gB,KACAxB,OACAojB,UACEv2B,G,EAEFw2B,SACEA,G,EAEF+S,YACApY,IAAKqE,EAAOrE,KAEhB,CACAnxB,EACF,CAEe,SAAS6pC,GAAkBl1B,EAAIxB,EAAMojB,EAASC,EAAQ+S,GACnE,MAAM/T,EAASjiC,KACf,SAASu2C,IACHn1B,GAAMA,EAAG6rB,QAAUhL,EAAO37B,OAAOkwC,mBAAqBp1B,EAAG6rB,MAAMwJ,cACjExU,EAAOkN,iBAAkB,EACzBiH,GACEnU,EACAA,EAAO37B,OAAOkwC,kBACdp1B,EAAG6rB,MAAMwJ,YACTr1B,EACAxB,GACA,KACEqiB,EAAOkN,iBAAkB,EACzBnM,GAAS,IAEX,KACEC,GAAQ,GAEV+S,IAGFhT,GAEJ,CAEMpjB,GAAQA,EAAKqtB,QAAUhL,EAAO37B,OAAOowC,mBAAqB92B,EAAKqtB,MAAM0J,cACvE1U,EAAOkN,iBAAkB,EACzBiH,GACEnU,EACAA,EAAO37B,OAAOowC,kBACd92B,EAAKqtB,MAAM0J,YACXv1B,EACAxB,GACA,KACEqiB,EAAOkN,iBAAkB,EACzBoH,GAAgB,IAElB,KACEtT,GAAQ,GAEV+S,IAGFO,GAIN,CCvFe,SAASK,GAAe3U,EAAQ/G,GAC7C,IAAK+G,EAAOgN,KACV,MAAM,IAAIhrB,MACP,iJAAgJiX,SAGvJ,CCNe,SAAS2b,GAAe5U,EAAQhmB,EAAW+mB,EAASC,GACjE,SAAS6T,EAAeC,GACtBA,EACGrT,MAAM39B,IAELi9B,EAAQ,CAAE/mB,UAAWlW,EAAEixC,SAAWjxC,EAAEkxC,UAAYlxC,GAAI,IAErD+9B,OAAOC,IAEN,MADAd,IACM,IAAIhf,MAAM8f,EAAK,CAAEmT,MAAOnT,GAAM,GAE1C,CACA,GAAI9nB,aAAqB8mB,QAEvB,YADA+T,EAAe76B,GAGjB,MAAMk7B,EAAuBl7B,EAAU7Z,KAAK6/B,GACxCkV,aAAgCpU,QAClC+T,EAAeK,GAEfnU,EAAQ,CAAE/mB,UAAWk7B,GAEzB,CCHA,SAASC,GAAQnV,EAAQngC,EAAIu1C,QAAc,IAAdA,MAAiB,IAC5C,MAAM/3C,EAAWF,IACX0+B,EAAMz7B,EAAEP,GACR87B,EAAMqE,EAAOrE,IACbqR,EAAOhN,EAAOgN,KACd/8B,EAAUlV,IACd,EACA,CACEwK,QAASy6B,EAAO37B,OAAOkB,QACvBinC,gBAAgB,EAChB9uC,cAAc,EACdD,SAAS,EACT43C,cAAerV,EAAO37B,OAAOixC,YAC7BC,gBAAgB,EAChBC,WAAW,EACXC,sBAAsB,EACtBC,aAAc1V,EAAO37B,OAAOqxC,aAC5B7zC,GAAI,IAENuzC,GAGIO,EAAsB3V,EAAO37B,OAAOkrC,uBAAyB,EAC7DqG,EACJD,GACA1lC,EAAQ+6B,OACR/6B,EAAQ+6B,MAAMA,SACkB,IAA/B/6B,EAAQ+6B,MAAMA,MAAM6K,QACoB,mBAA/B5lC,EAAQ+6B,MAAMA,MAAM6K,QAC1B5lC,EAAQ+6B,MAAMA,MAAM6K,OAAOla,EAAKqE,IAEtC,IAAI8V,EACAC,EAIAC,EAHAC,EAA0B,EAE1BC,EAAsBlW,EAAOiT,aAAakD,MAiB9C,GAfKD,GACH,4DACG70C,MAAM,KACNlG,SAASi7C,IAENpW,EAAOiT,cACPjT,EAAOiT,aAAajI,OACpBhL,EAAOiT,aAAajI,MAAMoL,KAE1BF,GAAsB,EACtBF,EAAYI,EACd,IAIFF,EAAqB,CACvB,MAAMG,EACJrW,EAAOiT,aAAakD,OAASnW,EAAOiT,aAAajI,MAAMsL,eAAiB3a,EAAIqa,GAAW12C,MACnFi3C,EAAcvW,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAC3D,IAAIq4C,EAAgB1T,EAAOwW,kBAAkBD,IACxC7C,GAAiB6C,IACpB7C,EAAgB,CACdpjB,IAAKimB,EACLvN,KAAMuN,EAAYl1C,MAAM,KAAK,GAC7BkvB,MAAOF,GAAckmB,GACrBvL,MAAO,CACLhC,KAAMuN,EAAYl1C,MAAM,KAAK,GAC7BivB,IAAKimB,KAKXvW,EAAOyW,YAAYJ,EACrB,CAEA,MAAMtI,EAAgB/N,EAAO+N,cAEvB2I,EAAU1W,EAAOnE,IACjB8a,EAAW9a,EACX+a,EAAS3mC,EAAQslC,gBAAkBtlC,EAAQolC,eAAiBplC,EAAQulC,UAC1E,IAAIqB,EAEApJ,EACAqJ,EACAC,EAGJ,GADA/W,EAAOkN,iBAAkB,EACD,IAApByJ,EAASt7C,OAEX,OADA2kC,EAAOkN,iBAAkB,EAClBlN,EAGL2W,EAASt7C,QAEX2kC,EAAOgX,oBAAoBL,GAGzB5I,IACF+I,EAAeH,EAASx6C,SAAS,WACjCsxC,EAAazN,EAAOyN,WACQ,IAAxBqJ,EAAaz7C,QAAgBs7C,EAAS,IAAMA,EAAS,GAAGzD,SAE1D4D,EAAeH,EAAS,GAAGzD,OAAO+D,YAMpChnC,EAAQ+6B,OACR/6B,EAAQ+6B,MAAMA,OACd/6B,EAAQ+6B,MAAMA,MAAMkM,YACnBjnC,EAAQ+6B,MAAMA,MAAMmM,gBAErBlnC,EAAQ+6B,MAAMA,MAAMmM,cAAgB,CAClCC,OAAQvb,EAAI,KAKhB,MAAMwb,EAAeX,EAAQv6C,SAAS,SAAS+D,QAAQo3C,GAAeA,IAAeX,EAAS,KAG9F,IAAIY,EAcAC,EACA9B,EACA+B,EARJ,GAPI1J,IACFwJ,EAAiB9J,EACdtxC,SAAS,WACT+D,QAAQw3C,GAAiBA,IAAiBZ,EAAa,MAIxD7mC,EAAQslC,gBAAkB8B,EAAah8C,OAAS,EAElD,OADA2kC,EAAOkN,iBAAkB,EAClBlN,EAOT,GAAI2V,IAAwB1lC,EAAQulC,UAAW,CAC7C,IAAK,IAAI30C,EAAI,EAAGA,EAAIw2C,EAAah8C,OAAQwF,GAAK,EACvCi1C,IAAgBuB,EAAax2C,GAAGkD,UAAUwF,SAAS,iBACtDusC,EAAeuB,EAAax2C,IAMhC,GAFA22C,GAAY5B,GAAYE,EAEpB0B,GAEE1B,EACF,IAAK,IAAIj1C,EAAI,EAAGA,EAAIw2C,EAAah8C,OAAQwF,GAAK,EACxCw2C,EAAax2C,GAAGkD,UAAUwF,SAAS,wBACrCwsC,EAAoBsB,EAAax2C,IAMzC60C,EACE8B,GACAvnC,EAAQylC,cACR/Z,EAAItF,OAAS2J,EAAO37B,OAAOkrC,wBAC3BuG,CACJ,CACI0B,IACFC,GAAgB1B,GAAqBL,GAAgBzlC,EAAQulC,WAAavlC,EAAQolC,eAIpF,IAAIsC,EAAkB,OA6CtB,GA5CI1nC,EAAQolC,eAAiBplC,EAAQulC,WAAaE,EAChDiC,EAAkB,UACT1nC,EAAQslC,iBACjBoC,EAAkB,YAEpBhB,EACGpW,YAAY,wCACZF,SACE,QAAOsX,IAAkB/B,EAAW,eAAiB,KACpD4B,EAAW,sBAAwB,KAClCC,EAAe,2BAA6B,MAEhD71C,QAAQ,gBACRA,QAAQ,gBAAiB,CAAEg2C,SAAUD,IACxC3X,EAAO3G,KAAK,cAAesd,EAAS,IACpC3W,EAAO3G,KAAK,eAAgBsd,EAAS,GAAIgB,IAErC/B,GAAY4B,KACdb,EAAS/0C,QAAQ,YAAa,CAAEi2C,KAAMjC,EAAW,SAAW,SAAUkC,OAAQL,IAC9EzX,EAAO3G,KAAK,WAAYsd,EAAS,GAAI,CACnCkB,KAAMjC,EAAW,SAAW,SAC5BmC,aAAcN,KAId1J,GAAiB+I,EAAaz7C,SAChCy7C,EACGvW,YAAY,8CACZF,SACE,UAASsX,IAAkB/B,EAAW,iBAAmB,KACxD4B,EAAW,wBAA0B,KACpCC,EAAe,6BAA+B,MAErDX,EAAal1C,QAAQ,kBAAmB,CAAEg2C,SAAUD,IACpD3X,EAAO3G,KAAK,iBAAkByd,EAAa,GAAIa,IAC3C/B,GAAY4B,IACdxX,EAAO3G,KAAK,aAAcyd,EAAa,GAAI,CACzCe,KAAMjC,EAAW,SAAW,SAC5BmC,aAAcN,KAMhBxnC,EAAQolC,eAAiBK,EACvBA,GACFmB,EAAWQ,EAAan3C,QAAQk3C,IAAYA,EAAOrzC,UAAUwF,SAAS,iBAClEwkC,IACFgJ,EAAe32C,EAAEy2C,EAAShzC,KAAKuzC,GAAWzb,EAAIqc,OAAOC,YAAYb,OAE/DP,EAASx7C,OAAS,GAAKy6C,IACzBG,EAA0BY,EAASx7C,OAAS,EAC5C+E,EAAE01C,GAAcvV,YAAY,uBAAuB3+B,QAAQ,sBAC3Do+B,EAAO3G,KAAK,oBAAqByc,GAC7B/H,IACF3tC,EAAEu7B,EAAIqc,OAAOC,YAAYnC,IAAevV,YAAY,yBACpDP,EAAO3G,KAAK,sBAAuBsC,EAAIqc,OAAOC,YAAYnC,QAI9De,EAAWQ,EAAapvC,GAAGovC,EAAah8C,OAAS,GAC7C0yC,IACFgJ,EAAe32C,EAAEu7B,EAAIqc,OAAOC,YAAYpB,WAGvC,GAAI5mC,EAAQslC,eACjBsB,EAAWQ,EAAapvC,GAAGovC,EAAah8C,OAAS,GAC7C0yC,IAEFgJ,EAAe32C,EAAEu7B,EAAIqc,OAAOC,YAAYpB,UAErC,GAAI5mC,EAAQulC,UACjBqB,EAAWQ,EAAan3C,QAAQk3C,GAAWA,IAAWT,EAAS,KAC3D5I,IACFgJ,EAAeQ,EAAer3C,QAAQg4C,GAAaA,IAAapB,EAAa,UAE1E,CACL,IAAIqB,EAAiB,GACjBC,EAAmB,GACvB,GAAIf,EAAah8C,OAAS,EAAG,CAC3B,IAAIwF,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIw2C,EAAah8C,OAAS,EAAGwF,GAAK,EAAG,CAC/C,GAAIi1C,GAAgBuB,EAAax2C,KAAOi1C,EAAc,CACpDuB,EAAapvC,GAAGpH,GAAGw/B,SAAS,uBAC5BgX,EAAapvC,GAAGpH,GAAGe,QAAQ,oBAC3Bo+B,EAAO3G,KAAK,kBAAmBge,EAAax2C,IACxCktC,IACF3tC,EAAEu7B,EAAIqc,OAAOC,YAAYnC,IAAezV,SAAS,yBACjDL,EAAO3G,KAAK,oBAAqBsC,EAAIqc,OAAOC,YAAYnC,KAE1D,QACF,CACA,MAAMuC,EAAc1c,EAAIqc,OAAOC,YAAYZ,EAAapvC,GAAGpH,IAG3Ds3C,EAAep4C,KAAKs3C,EAAax2C,IACjCm/B,EAAOoT,aACL,eACAiE,EAAax2C,GACb02C,GAAkBA,EAAe12C,GACjC,gBACAwG,EACA4I,GAEF+vB,EAAOwT,WAAW6D,EAAax2C,IAC3BktC,GAAiBsK,IACnBD,EAAiBr4C,KAAKs4C,GACtBrY,EAAOyT,aAAa4E,GAExB,CACF,CACAxB,EAAWH,EACRv6C,SAAS,SACT+D,QAAQk3C,GAAWA,IAAWT,EAAS,IAAMwB,EAAe13C,QAAQ22C,GAAU,IAC7ErJ,IACFgJ,EAAetJ,EACZtxC,SAAS,WACT+D,QACEg4C,GACCA,IAAapB,EAAa,IAAMsB,EAAiB33C,QAAQ23C,GAAoB,KAGrFD,EAAiB,GACjBC,EAAmB,EACrB,CAcA,GAZIZ,IAAavnC,EAAQulC,aACnBqB,EAASx7C,OAAS,GAAKq6C,KACzBmB,EAAWA,EAAS32C,QAAQk3C,IAAYA,EAAOrzC,UAAUwF,SAAS,kBAEhEwtC,IAAiBA,EAAa17C,OAAS,GAAKq6C,KAC9CqB,EAAeA,EAAa72C,QACzBg4C,IAAcA,EAASn0C,UAAUwF,SAAS,qBAO/Cy2B,EAAO37B,OAAOmoC,iBACbv8B,EAAQu8B,gBAAkBv8B,EAAQvS,gBAClCuS,EAAQslC,eACT,CACA,MAAM+C,EAAqBtY,EAAO37B,OAAOi0C,oBAAsB,GAC/DxM,GACE77B,EAAQolC,eACPK,GAAgBK,GACjB9lC,EAAQulC,WACRvlC,EAAQvS,aACJ,UACA,QAEJsvC,EAAKruC,GACL,CACE2xB,IAAKrgB,EAAQ+6B,MAAM1a,KAErBgoB,EAAqBtY,EAAO37B,OAAOk0C,wBAA0BtoC,EAAQ+6B,MAAM1a,IAE/E,CAEKrgB,EAAQslC,iBAEXvV,EAAOoS,cAAgBuE,EAAS,GAC5B5I,GAAiB+I,EAAaz7C,OAChC2kC,EAAOsS,gBAAkBwE,EAAa,UAE/B9W,EAAOsS,gBAIhBtS,EAAOiT,aAAehjC,EAAQ+6B,OAIhC,MAAM1a,EAAMrgB,EAAQ+6B,MAAM1a,IACtBrgB,EAAQxS,YAENwS,EAAQolC,eAAkBK,GAAgBK,IAAuB/V,EAAOviC,QAAQpC,QAChF,GACF4U,EAAQvS,cAEJg4C,GAAgBO,EAA0B,IAC5CjW,EAAOviC,QAAUuiC,EAAOviC,QAAQswB,MAAM,EAAGiS,EAAOviC,QAAQpC,OAAS46C,GACjEjW,EAAOwY,aAAexY,EAAOwY,aAAazqB,MACxC,EACAiS,EAAOwY,aAAan9C,OAAS46C,IAGjCjW,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,QAAU4U,EAAQslC,eAAiB,EAAI,IAAMjlB,EAC3E0P,EAAOwY,aAAaxY,EAAOwY,aAAan9C,QAAU4U,EAAQslC,eAAiB,EAAI,IAC7EtlC,EAAQ9L,OAAS,IACV8L,EAAQslC,gBACjBvV,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAAKi1B,EAC5C0P,EAAOwY,aAAaxY,EAAOwY,aAAan9C,OAAS,GAAK4U,EAAQ9L,OAAS,IAC9D8L,EAAQulC,WACjBxV,EAAOviC,QAAU,CAAC6yB,GAClB0P,EAAOwY,aAAe,CAACvoC,EAAQ9L,OAAS,MAExC67B,EAAOviC,QAAQsC,KAAKuwB,GACpB0P,EAAOwY,aAAaz4C,KAAKkQ,EAAQ9L,OAAS,MAG9C67B,EAAOuT,cAGP,MAAMkF,EAAe9B,EAAS3uC,QAAQ3K,GAAUhC,OAAS,EACnD+kC,EAAcuW,EAAS,GAAGvW,YA2IhC,GA1IInwB,EAAQslC,gBACNnV,IAAgBqY,EAClBrY,EAAYrB,OAAO2Z,IACjBt4C,EAAEs4C,GAAa5uC,aAAa+sC,EAAS,IAGvCF,EAAS7sC,aAAa+sC,GAEpB9I,GAAiB+I,EAAaz7C,SAC5By7C,EAAalH,KAAK,gBAAgBv0C,QACpCy7C,EAAazW,SAAS,gBAEpB0W,EAAa17C,OACfy7C,EAAahtC,aAAaitC,IAErB/W,EAAOyN,WAAWzlC,QAAQ3K,GAAUhC,QACvC2kC,EAAOnE,IAAIzuB,QAAQ4yB,EAAOyN,YAE5BA,EAAW/lC,OAAOovC,OAIlBD,EAASrsC,KAAK,SAAS,KAAOmsC,EAAS,KACrCvW,IAAgBqY,EAClBrY,EAAYrB,OAAO2Z,IACjBhC,EAAQhvC,OAAOgxC,EAAY,IAG7BhC,EAAQhvC,OAAOivC,EAAS,KAGxB5I,GAAiB+I,EAAaz7C,SAC5By7C,EAAalH,KAAK,gBAAgBv0C,QACpCy7C,EAAazW,SAAS,gBAEnBL,EAAOyN,WAAWzlC,QAAQ3K,GAAUhC,QACvC2kC,EAAOnE,IAAIzuB,QAAQ4yB,EAAOyN,YAE5BA,EAAW/lC,OAAOovC,EAAa,MAG9B2B,EAWHxoC,EAAQ+6B,OACR/6B,EAAQ+6B,MAAMA,OACd/6B,EAAQ+6B,MAAMA,MAAMkM,YACnBP,EAAS,GAAGgC,gBAEbhC,EAAS,GAAGgC,eAAgB,EAC5B3Y,EAAOoT,aACL,UACAuD,EACAG,EACAa,EACAf,EAASe,EAAkB,UAC3B1nC,EACA4mC,IAvBF7W,EAAOoT,aACL,UACAuD,EACAG,EACAa,EACAf,EAASe,EAAkB,UAC3B1nC,EACA4mC,IAqBC5mC,EAAQolC,eAAiBK,IAAiBmB,EAASx7C,OAAS,GAE/D2kC,EAAOoT,aAAa,YAAayD,EAAUE,EAAc,eAAW1vC,EAAW4I,GAC/E+vB,EAAOoT,aAAa,WAAYyD,EAAUE,EAAc,eAAW1vC,EAAW4I,GAC9E+vB,EAAOoT,aAAa,eAAgByD,EAAUE,EAAc,eAAW1vC,EAAW4I,GAClF+vB,EAAOwT,WAAWqD,GACd9I,GAAiBgJ,GAAgBA,EAAa17C,QAChD2kC,EAAOyT,aAAasD,IAEb9mC,EAAQulC,UACjBqB,EAAS3xC,MAAK,CAACkyC,EAAQ5xC,KACrB,MAAMozC,EAAax4C,EAAEg3C,GACfyB,EAAiBz4C,EAAEu7B,EAAIqc,OAAOC,YAAYW,IAG5CA,EAAWtY,SAAS,kBACtBN,EAAOoT,aAAa,YAAayD,EAAUE,EAAc,eAAW1vC,EAAW4I,GAC/E+vB,EAAOoT,aAAa,WAAYyD,EAAUE,EAAc,eAAW1vC,EAAW4I,IAEhF+vB,EAAOoT,aACL,eACAwF,EACA7B,GAAgBA,EAAa9uC,GAAGzC,GAChC,gBACA6B,EACA4I,GAEF+vB,EAAOwT,WAAWoF,GACd7K,GAAiB8K,EAAex9C,QAClC2kC,EAAOyT,aAAaoF,EACtB,IAEO5oC,EAAQslC,iBAEjBvV,EAAOoT,aAAa,eAAgByD,EAAUE,EAAc,gBAAY1vC,EAAW4I,GACnF+vB,EAAOwT,WAAWqD,GACd9I,GAAiBgJ,GAAgBA,EAAa17C,QAChD2kC,EAAOyT,aAAasD,IAKpB9mC,EAAQ+6B,MAAMA,MAAM8N,KACtB9Y,EAAO+Y,QACL9oC,EAAQ+6B,MAAMA,MAAM8N,IACpB/9C,GAAO,GAAIkV,EAAS,CAClBxS,SAAS,EACT+uC,gBAAgB,KAMlBmJ,GACF3I,EAAKgM,8BAIPhZ,EAAOoT,aACL,OACAuD,EACAG,EACAa,EACAf,EAASe,EAAkB,UAC3B1nC,EACA4mC,GAGE5mC,EAAQolC,eAAiBplC,EAAQulC,WAAaE,EAehD,OAdA1V,EAAOkN,iBAAkB,EACzBlN,EAAOoT,aAAa,WAAYuD,EAAUG,EAAca,EAAiB,UAAW1nC,GACpF0mC,EAAS5D,WAAW,eAChBhF,GAAiB+I,GACnBA,EAAa/D,WAAW,eAE1B/S,EAAOoT,aAAa,UAAWuD,EAAUG,EAAca,EAAiB,UAAW1nC,GAC/EA,EAAQolC,eAAiBplC,EAAQwlC,sBAAsBzV,EAAOyV,uBAC9DC,IACF1V,EAAOiZ,gBAAgB74C,EAAE01C,GAAe,YACpCA,EAAa5C,QAAU4C,EAAa5C,OAAOgF,UAC7ClY,EAAOgT,kBAAkB5yC,EAAE01C,EAAa5C,OAAOgF,UAAW,aAGvDlY,EAET,GAAI/vB,EAAQslC,eAEV,OADAvV,EAAOkN,iBAAkB,EAClBlN,EAQT,SAASkZ,IACPlZ,EAAOiZ,gBAAgBtC,EAAU,WAAW,GAC5C3W,EAAOiZ,gBAAgBpC,EAAU,YAAaA,EAASvW,SAAS,gBAC5DyN,IACF/N,EAAOgT,kBAAkB8D,EAAc,WAAW,GAClD9W,EAAOgT,kBAAkB+D,EAAc,YAAaA,EAAazW,SAAS,mBAG5EN,EAAOkN,iBAAkB,EACzBlN,EAAOoT,aAAa,WAAYyD,EAAUE,EAAc,UAAW,WAAY9mC,GAC/E+vB,EAAOoT,aAAa,UAAWuD,EAAUG,EAAc,OAAQ,UAAW7mC,GAE1E,IAAIkpC,GACDnZ,EAAO37B,OAAOsvC,qBAAuB3T,EAAO37B,OAAQ,GAAEs3B,EAAIxM,qBAAuBymB,EAC/EuD,IAEDxC,EAASrW,SAAS,sBAClBqW,EAASrW,SAAS,uBAClBqW,EAASrW,SAAS,sBAClBqW,EAASrW,SAAS,wBAElB6Y,GAAc,GAGbA,GACGxC,EAASruC,KAAK,cAA+C,sBAA/BquC,EAASruC,KAAK,eAEhD03B,EAAOoT,aAAa,eAAgByD,EAAUE,EAAc,gBAAY1vC,EAAW4I,GACnF+vB,EAAOwT,WAAWqD,GACd9I,GAAiBgJ,EAAa17C,QAChC2kC,EAAOyT,aAAasD,IAItB9mC,EAAQwlC,sBAAsBzV,EAAOyV,uBACzCzV,EAAO3G,KAAK,eAAgB2G,EAAOiT,aAAcjT,EAAO0T,cAAe1T,GAEnEA,EAAO37B,OAAOmoC,gBAChBV,GAAQK,kBAEZ,CACA,SAASiN,IACPpZ,EAAOiZ,gBAAgBpC,EAAU,WAAW,GAC5C7W,EAAOiZ,gBAAgBtC,EAAU,QAAQ,GACrC5I,IACF/N,EAAOgT,kBAAkB+D,EAAc,WAAW,GAClD/W,EAAOgT,kBAAkB8D,EAAc,QAAQ,GAEnD,CACA,GArDA9W,EAAOoT,aAAa,YAAayD,EAAUE,EAAc,UAAW,WAAY9mC,GAChF+vB,EAAOoT,aAAa,WAAYuD,EAAUG,EAAc,OAAQ,UAAW7mC,IAoDvEA,EAAQ1K,SAAaqwC,GAAYja,EAAItF,OAAS2J,EAAO37B,OAAOkrC,uBAoC9D2J,QApCuF,CACvF,MAAMhpB,EAAQ8P,EAAO37B,OAAQ,GAAE27B,EAAOrE,IAAIxM,sBAC1C,IAAI4f,EAAa/O,EAAO37B,OAAO0qC,WAC3B9+B,EAAQ8+B,aAAYA,EAAa9+B,EAAQ8+B,aACxCA,GAAc/O,EAAOiT,cAAgBjT,EAAOiT,aAAajI,QAC5D+D,EAAa/O,EAAOiT,aAAajI,MAAM+D,aAEpCA,GAAc/O,EAAOiT,cAAgBjT,EAAOiT,aAAajI,MAAM/6B,UAClE8+B,EAAa/O,EAAOiT,aAAajI,MAAM/6B,QAAQ8+B,YAE7CA,IACF4H,EAAS,GAAG0C,iBAAmBtK,GAG7B7e,EACF7xB,YAAW,KACT+6C,IACApZ,EAAOz6B,QACLsxC,EACAF,EACAI,EACAD,EACA,UACA/H,GACA,KACEmK,GAAgB,GAEnB,GACAhpB,IAEHkpB,IACApZ,EAAOz6B,QAAQsxC,EAAUF,EAAUI,EAAcD,EAAc,UAAW/H,GAAY,KACpFmK,GAAgB,IAGtB,CAGA,OAAOlZ,CACT,CACA,SAASsZ,GAAKtZ,EAAQuZ,EAAiBC,EAAkBC,GACvD,QAD8B,IAAVF,MAAa,SAAe,IAAXC,MAAc,KAC9CxZ,EAAOkN,kBAAoBuM,EAAkB,OAAOzZ,EACzD,MAAM37B,EAASk1C,EACTtpC,EAAUupC,GACVlpB,IAAEA,EAAGtE,QAAEA,EAAOnsB,GAAEA,EAAE65C,SAAEA,EAAQ1/B,UAAEA,EAASwjB,aAAEA,GAAiBn5B,EAEhE,IACG4L,EAAQolC,eACTplC,EAAQ+6B,OACR/6B,EAAQ+6B,MAAMA,OACd/6B,EAAQ+6B,MAAMA,MAAM2O,YACpB3Z,EAAOiT,aAAajI,OACpBhL,EAAOiT,aAAajI,MAAM2O,aAAe1pC,EAAQ+6B,MAAMA,MAAM2O,WAC7D,CAEA,GAAI1pC,EAAQ+6B,MAAM1a,MAAQ0P,EAAO1P,IAE/B,OADA0P,EAAOkN,iBAAkB,GAClB,EAGT,IAAI0M,EACF9+C,OAAOI,KAAK+U,EAAQ+6B,MAAM3mC,QAAQhJ,SAAWP,OAAOI,KAAK8kC,EAAOiT,aAAa5uC,QAAQhJ,OAYvF,GAXIu+C,GAEF9+C,OAAOI,KAAK+U,EAAQ+6B,MAAM3mC,QAAQlJ,SAAS0+C,IAErCA,KAAa7Z,EAAOiT,aAAa5uC,QACnC27B,EAAOiT,aAAa5uC,OAAOw1C,KAAe5pC,EAAQ+6B,MAAM3mC,OAAOw1C,KAE/DD,GAAa,EACf,IAGAA,EACF,QAAI3pC,EAAQ+6B,MAAMA,MAAM8N,KACf9Y,EAAO+Y,QAAQ9oC,EAAQ+6B,MAAMA,MAAM8N,IAAK7oC,GAInD,IACG2pC,GACD3pC,EAAQ+6B,MAAMA,MAAM8N,KACpB9Y,EAAOiT,aAAajI,MAAM8N,KAC1B9Y,EAAOiT,aAAa0G,aAAe1pC,EAAQ+6B,MAAM2O,WAEjD,OAAO3Z,EAAO+Y,QAAQ9oC,EAAQ+6B,MAAMA,MAAM8N,IAAK7oC,EAEnD,CAEA,GACEA,EAAQ+6B,OACR/6B,EAAQ+6B,MAAM1a,KACd0P,EAAO1P,MAAQrgB,EAAQ+6B,MAAM1a,MAC3BrgB,EAAQolC,gBAAiBplC,EAAQslC,iBAClCvV,EAAO37B,OAAOy1C,mBAGf,OADA9Z,EAAOkN,iBAAkB,GAClB,EAsBT,IAnBKj9B,EAAQ+6B,OAAS1a,IACpBrgB,EAAQ+6B,MAAQhL,EAAO+Z,cAAczpB,GACrCv1B,GAAOkV,EAAQ+6B,MAAO,CAAEA,MAAO,CAAE1a,MAAK0Y,KAAM1Y,OAY1CA,GAAOkN,GAAgBxjB,KACzBgmB,EAAOkN,iBAAkB,GAIvBlhB,EACFmpB,GAAQnV,EAAQA,EAAOga,UAAUhuB,GAAU/b,QACtC,GAAIpQ,EAETs1C,GAAQnV,EAAQA,EAAOga,UAAUn6C,GAAKoQ,QACjC,GAAIypC,EAETvE,GAAQnV,EAAQA,EAAOnE,IAAI1/B,SAAU,oBAAmBu9C,OAAczxC,GAAG,GAAIgI,QACxE,GAAI+J,GAAawjB,EAEtB,IACEwC,EAAOia,oBAAoB,CACzBC,SAAUla,EAAOngC,GACjBma,YACAwjB,eACAvtB,UACA8wB,QA7BN,SAAiBqW,EAAQ+C,GACvB,OAAOhF,GAAQnV,EAAQoX,EAAQr8C,GAAOkV,EAASkqC,GACjD,EA4BMnZ,OA3BN,WAEE,OADAhB,EAAOkN,iBAAkB,EAClBlN,CACT,G,CA0BI,MAAO8B,GAEP,MADA9B,EAAOkN,iBAAkB,EACnBpL,CACR,MACSxR,IAEL0P,EAAOoa,qBACTpa,EAAOoa,mBAAmBC,QAC1Bra,EAAOoa,oBAAqB,GAE9Bpa,EACGsa,WAAWhqB,EAAKrgB,GAChBwxB,MAAM8Y,IACLpF,GAAQnV,EAAQA,EAAOga,UAAUO,GAActqC,EAAQ,IAExD4xB,OAAM,KACL7B,EAAOkN,iBAAkB,CAAI,KAGnC,OAAOlN,CACT,CCpvBA,SAASwa,GAASxa,EAAQngC,EAAI46C,GAC5B,MAAM7jB,EAASN,KACTj5B,EAAWF,IACX0+B,EAAMz7B,EAAEP,GACR87B,EAAMqE,EAAOrE,IACbqR,EAAOhN,EAAOgN,KAEd/8B,EAAUlV,IACd,EACA,CACEwK,QAASy6B,EAAO37B,OAAOkB,QACvBinC,gBAAgB,EAChB9uC,cAAc,GAEhB+8C,GAGI9E,EAAsB3V,EAAO37B,OAAOkrC,uBAAyB,EAC7DqG,EACJD,GACA1lC,EAAQ+6B,OACR/6B,EAAQ+6B,MAAMA,SACkB,IAA/B/6B,EAAQ+6B,MAAMA,MAAM6K,QACoB,mBAA/B5lC,EAAQ+6B,MAAMA,MAAM6K,QAC1B5lC,EAAQ+6B,MAAMA,MAAM6K,OAAOla,EAAKqE,IACtC,IAAI8V,EACA4E,EAEJ,MAAM3M,EAAgB/N,EAAO+N,cAEvB4I,EAAW9a,EACXgb,EAAW7W,EAAOnE,IAAI1/B,SAAS,iBAC/Bw+C,EAAqC,IAApB9D,EAASx7C,QAAgB4U,EAAQ2jC,QAClDgH,EAAkBjF,GAAuBkB,EAASvW,SAAS,eAOjE,IAAImN,EACAqJ,EACAC,EAkCAS,EACAC,EA4EAoD,EAlGJ,GApBIlE,EAASt7C,QAEX2kC,EAAOgX,oBAAoBL,GAOzB5I,IACF+I,EAAeH,EAASx6C,SAAS,WACjCsxC,EAAazN,EAAOyN,WACQ,IAAxBqJ,EAAaz7C,QAAgBs7C,EAAS,IAAMA,EAAS,GAAGzD,SAE1D4D,EAAeH,EAAS,GAAGzD,OAAO+D,WAEpCF,EAAetJ,EAAWmC,KAAK,oBAGjC5P,EAAOkN,iBAAkB,EACD,IAApByJ,EAASt7C,QAAqC,IAApBw7C,EAASx7C,SAAiB4U,EAAQ2jC,QAE9D,OADA5T,EAAOkN,iBAAkB,EAClBlN,EAqBT,GAjBAA,EAAOgX,oBAAoBL,GAIzB1mC,EAAQ+6B,OACR/6B,EAAQ+6B,MAAMA,OACd/6B,EAAQ+6B,MAAMA,MAAMkM,YACnBjnC,EAAQ+6B,MAAMA,MAAMmM,gBAErBlnC,EAAQ+6B,MAAMA,MAAMmM,cAAgB,CAClCC,OAAQvb,EAAI,KAOZ8Z,EAAqB,CACvB,MAAM0B,EAAerX,EAAOnE,IACzB1/B,SAAS,SACT+D,QAAQo3C,GAAeA,IAAeX,EAAS,KAGlD,IAAK,IAAI91C,EAAI,EAAGA,EAAIw2C,EAAah8C,OAAQwF,GAAK,EACvCi1C,IAAgBuB,EAAax2C,GAAGkD,UAAUwF,SAAS,iBACtDusC,EAAeuB,EAAax2C,IAKhC22C,GACG5B,GACDE,GACA9V,EAAOviC,QAAQgD,QAAQwP,EAAQ+6B,MAAM1a,KACnC0P,EAAOviC,QAAQgD,QAAQq1C,EAAa5C,OAAOlI,MAAM1a,MAGlDknB,IACA5B,GACDE,GACAA,EAAa5C,QACbjjC,EAAQ+6B,MAAMA,MAAM8P,cAEpBtD,EAAWvnC,EAAQ+6B,MAAMA,MAAM8P,YAAY9R,OAAS8M,EAAa5C,OAAOlI,MAAMA,MAAMhC,KAExF,CAgDA,GA/CIwO,GAAY1B,GAAgBA,EAAa5C,SAC3CuE,EACEzX,EAAOviC,QAAQgD,QAAQwP,EAAQ+6B,MAAM1a,KACnC0P,EAAOviC,QAAQgD,QAAQq1C,EAAa5C,OAAOlI,MAAM1a,MACnD,GAIJqmB,EACGtW,SACE,QAAOsa,EAAiB,UAAY,aAAa/E,EAAW,eAAiB,KAC5E4B,EAAW,sBAAwB,KAClCC,EAAe,2BAA6B,MAEhD1E,WAAW,eACXnxC,QAAQ,gBACRA,QAAQ,gBAAiB,CAAEg2C,SAAU+C,EAAiB,UAAY,aACrE3a,EAAO3G,KAAK,cAAesd,EAAS,IACpC3W,EAAO3G,KAAK,eAAgBsd,EAAS,GAAIgE,EAAiB,UAAY,aAClE/E,GAAY4B,KACdb,EAAS/0C,QAAQ,YAAa,CAAEi2C,KAAMjC,EAAW,SAAW,SAAUkC,OAAQL,IAC9EzX,EAAO3G,KAAK,WAAYsd,EAAS,GAAI,CACnCkB,KAAMjC,EAAW,SAAW,SAC5BmC,aAAcN,KAId1J,GAAiB+I,EAAaz7C,OAAS,IACzCy7C,EACGzW,SACE,UAASsa,EAAiB,UAAY,aAAa/E,EAAW,iBAAmB,KAChF4B,EAAW,wBAA0B,KACpCC,EAAe,6BAA+B,MAElD1E,WAAW,eACd+D,EAAal1C,QAAQ,kBAAmB,CAAEg2C,SAAU+C,EAAiB,UAAY,aACjF3a,EAAO3G,KAAK,iBAAkByd,EAAa,GAAI6D,EAAiB,UAAY,aACxE/E,GAAY6B,IACdzX,EAAO3G,KAAK,aAAcyd,EAAa,GAAI,CACzCe,KAAMjC,EAAW,SAAW,SAC5BmC,aAAcN,KAOhBxnC,EAAQ8qC,OACNlE,EAAStpC,KAAK,kBAAkBlS,QAAU,EAAG,CAC3C2kC,EAAOviC,QAAQgD,QAAQwP,EAAQ+6B,MAAM1a,MAAQ,GAC/CuqB,EAAY7a,EAAOviC,QAAQpC,OAAS2kC,EAAOviC,QAAQgD,QAAQwP,EAAQ+6B,MAAM1a,KAAO,EAChF0P,EAAOviC,QAAUuiC,EAAOviC,QAAQswB,MAAM,EAAGiS,EAAOviC,QAAQgD,QAAQwP,EAAQ+6B,MAAM1a,KAAO,GACrF0P,EAAOwY,aAAexY,EAAOwY,aAAazqB,MACxC,EACAiS,EAAOviC,QAAQgD,QAAQwP,EAAQ+6B,MAAM1a,KAAO,GAE9C0c,EAAKvvC,QAAUuiC,EAAOviC,SACbuiC,EAAOviC,QAAQ,CAACuiC,EAAOviC,QAAQpC,OAAS,IACjD2kC,EAAOwY,aAAaxY,EAAOwY,aAAan9C,OAAS,GAAK4U,EAAQ9L,OAAS,IAEvE67B,EAAOviC,QAAQ8O,QAAQyzB,EAAO1P,KAC9B0P,EAAOwY,aAAajsC,QAAQ0D,EAAQ9L,OAAS,KAG/C,MAAM62C,EAAgBnE,EAAStpC,KAAK,kBACpC,IAAI0tC,EACAlN,IACFkN,EAAkB76C,EAAEu7B,EAAIqc,OAAOC,YAAY+C,KAEzCA,EAAc3/C,OAAS,IACzB2kC,EAAOoT,aACL,eACA4H,EACAC,EACA,gBACA5zC,EACA4I,GAEE+qC,EAAc,KAAOlF,IACvB4E,GAAoB,GAEtB1a,EAAOwT,WAAWwH,GACdjN,GAAiBkN,EAAgB5/C,QACnC2kC,EAAOyT,aAAawH,GAG1B,CAIF,MAAMxC,EAAe9B,EAAS3uC,QAAQ3K,GAAUhC,OAAS,EACnD+kC,EAAcuW,EAAS,GAAGvW,YAEhC,SAAS8a,IACHP,KACGlC,GAAgBrY,EACnBA,EAAYrB,OAAO2Z,IACjB1Y,EAAOnE,IAAIn0B,OAAOgxC,EAAY,IAGhC1Y,EAAOnE,IAAIn0B,OAAOivC,IAGiB,IAAnCA,EAASnsC,KAAKqsC,GAAUx7C,UACrBo9C,GAAgBrY,EACnBA,EAAYrB,OAAO2Z,IACjBt4C,EAAEs4C,GAAa5uC,aAAa+sC,EAAS,IAGvCF,EAAS7sC,aAAa+sC,IAGtB9I,GAAiB+I,EAAaz7C,SAC5By7C,EAAalH,KAAK,gBAAgBv0C,QACpCy7C,EAAazW,SAAS,gBAExByW,EAAahtC,aAAaitC,GACtBA,EAAa17C,OAAS,EACxBy7C,EAAahtC,aAAaitC,IAErB/W,EAAOyN,WAAWzlC,QAAQ3K,GAAUhC,QACvC2kC,EAAOnE,IAAIzuB,QAAQ4yB,EAAOyN,YAE5BA,EAAW/lC,OAAOovC,KAGjB2B,EAWHxoC,EAAQ+6B,OACR/6B,EAAQ+6B,MAAMA,OACd/6B,EAAQ+6B,MAAMA,MAAMkM,YACnBP,EAAS,GAAGgC,gBAEbhC,EAAS,GAAGgC,eAAgB,EAC5B3Y,EAAOoT,aACL,UACAuD,EACAG,EACA,WACA,UACA7mC,EACA4mC,IAvBF7W,EAAOoT,aACL,UACAuD,EACAG,EACA,WACA,UACA7mC,EACA4mC,EAmBN,CAEA,GAAI5mC,EAAQ2jC,QAAS,CAEnBsH,IAEIjrC,EAAQ+6B,MAAMA,MAAM8N,KACtB9Y,EAAO+Y,QACL9oC,EAAQ+6B,MAAMA,MAAM8N,IACpB/9C,GAAO,GAAIkV,EAAS,CAClBxS,SAAS,EACT+uC,gBAAgB,EAChBoH,SAAS,KAIXgC,IACFe,EAASpW,YAAY,uBAAuB3+B,QAAQ,sBACpDo+B,EAAO3G,KAAK,oBAAqBsd,EAAS,IACtC5I,IACF3tC,EAAEu7B,EAAIqc,OAAOC,YAAYtB,IAAWpW,YAAY,yBAChDP,EAAO3G,KAAK,sBAAuBsC,EAAIqc,OAAOC,YAAYtB,MAI9D3W,EAAOoT,aAAa,OAAQuD,EAAUG,EAAc,WAAY,UAAW7mC,EAAS4mC,GAChF8D,IACF3a,EAAOoT,aAAa,WAAYuD,EAAUG,EAAc,eAAWzvC,EAAW4I,GAC9E+vB,EAAOoT,aAAa,UAAWuD,EAAUG,EAAc,eAAWzvC,EAAW4I,IAE/E,MAAMkrC,EAAiBxE,EAAS7nC,QAAQ,oCAiBxC,OAhBIqsC,EAAe9/C,OAAS,GAC1B8/C,EAAej2C,MAAMk2C,IACnB,MAAMJ,EAAgB56C,EAAEg7C,GACxB,IAAIH,EACAlN,IACFkN,EAAkB76C,EAAEu7B,EAAIqc,OAAOC,YAAY+C,KAG7Chb,EAAOoT,aAAa,eAAgB4H,EAAeC,EAAiB,gBAAY5zC,GAChF24B,EAAOwT,WAAWwH,GACdjN,GAAiBkN,EAAgB5/C,QACnC2kC,EAAOyT,aAAawH,EACtB,IAGJjb,EAAOkN,iBAAkB,EAClBlN,CACT,CAGA,KAAMpJ,EAAOQ,IAAMR,EAAOO,MAASP,EAAOS,UAAYT,EAAOxC,MACvD4L,EAAO37B,OAAOmoC,gBAAkBv8B,EAAQu8B,eAC1C,GAAIv8B,EAAQvS,aAAc,CACxB,MAAM46C,EAAqBtY,EAAO37B,OAAOi0C,oBAAsB,GAC/DxM,GAAQ9lC,QACNgnC,EAAKruC,GACL,CACE2xB,IAAKrgB,EAAQ+6B,MAAM1a,KAErBgoB,EAAqBtY,EAAO37B,OAAOk0C,wBAA0BtoC,EAAQ+6B,MAAM1a,I,MAEpEuqB,EACT/O,GAAQluC,IAAIi9C,GAEZ/O,GAAQjuC,OA+Bd,GAzBIoS,EAAQvS,cACVsiC,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAAK4U,EAAQ+6B,MAAM1a,IAC1D0P,EAAOwY,aAAaxY,EAAOwY,aAAan9C,OAAS,GAAK4U,EAAQ9L,OAAS,KAEzC,IAA1B67B,EAAOviC,QAAQpC,SACjB2kC,EAAOviC,QAAQ8O,QAAQyzB,EAAO1P,KAC9B0P,EAAOwY,aAAajsC,QAAQ0D,EAAQ9L,OAAS,KAE/C67B,EAAOviC,QAAQ2uC,MACfpM,EAAOwY,aAAapM,OAEtBpM,EAAOuT,cAGPvT,EAAOoS,cAAgBuE,EAAS,GAC5B5I,GAAiB+I,EAAaz7C,OAChC2kC,EAAOsS,gBAAkBwE,EAAa,UAE/B9W,EAAOsS,gBAIhBtS,EAAOiT,aAAehjC,EAAQ+6B,OAG1BpU,EAAOQ,IAAMR,EAAOO,MAASP,EAAOS,UAAYT,EAAOxC,MACrD4L,EAAO37B,OAAOmoC,gBAAkBv8B,EAAQu8B,eAC1C,GAAIv8B,EAAQvS,aAAc,CACxB,MAAM46C,EAAqBtY,EAAO37B,OAAOi0C,oBAAsB,GAC/DxM,GAAQ9lC,QACNgnC,EAAKruC,GACL,CACE2xB,IAAKrgB,EAAQ+6B,MAAM1a,KAErBgoB,EAAqBtY,EAAO37B,OAAOk0C,wBAA0BtoC,EAAQ+6B,MAAM1a,I,MAEpEuqB,EACT/O,GAAQluC,IAAIi9C,GAEZ/O,GAAQjuC,OAiCd,SAASq7C,IAEPlZ,EAAOiZ,gBAAgBtC,EAAU,WAAW,GAC5C3W,EAAOiZ,gBAAgBpC,EAAU,QAAQ,GACrC9I,IACF/N,EAAOgT,kBAAkB8D,EAAc,WAAW,GAClD9W,EAAOgT,kBAAkB+D,EAAc,QAAQ,IAIjD/W,EAAOoT,aAAa,WAAYyD,EAAUE,EAAc,UAAW,OAAQ9mC,GAC3E+vB,EAAOoT,aAAa,UAAWuD,EAAUG,EAAc,WAAY,UAAW7mC,GAI9E+vB,EAAOoT,aAAa,eAAgByD,EAAUE,EAAc,YAAQ1vC,EAAW4I,GAC/E+vB,EAAOwT,WAAWqD,GACd9I,GAAiBgJ,EAAa17C,QAChC2kC,EAAOyT,aAAasD,GAGtB/W,EAAOkN,iBAAkB,EACzBlN,EAAO3G,KAAK,eAAgB2G,EAAOiT,aAAcjT,EAAO0T,cAAe1T,IAIrEA,EAAO37B,OAAOsvC,qBAAuB3T,EAAO37B,OAAQ,GAAEs3B,EAAIxM,oBACjC6Q,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,KAAOu6C,GACvE5V,EAAOniC,KAAKmiC,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAAI,CACrDu4C,SAAS,EACTzvC,MAAO67B,EAAOwY,aAAaxY,EAAOwY,aAAan9C,OAAS,IAAM,KAG9D2kC,EAAO37B,OAAOmoC,gBAChBV,GAAQK,kBAEZ,CAWA,GA1EA+O,IAGIjrC,EAAQ+6B,MAAMA,MAAM8N,KACtB9Y,EAAO+Y,QACL9oC,EAAQ+6B,MAAMA,MAAM8N,IACpB/9C,GAAO,GAAIkV,EAAS,CAClBxS,SAAS,EACT+uC,gBAAgB,KAOlBmJ,IAAwBiF,GAAmBF,IAC7C1N,EAAKgM,6BAA4B,GAInChZ,EAAOoT,aAAa,OAAQuD,EAAUG,EAAc,WAAY,UAAW7mC,EAAS4mC,GAGpF7W,EAAOoT,aAAa,YAAayD,EAAUE,EAAc,UAAW,OAAQ9mC,GAC5E+vB,EAAOoT,aAAa,WAAYuD,EAAUG,EAAc,WAAY,UAAW7mC,IAkD3EA,EAAQ1K,SAAaq1C,GAAmBjf,EAAItF,OAAS2J,EAAO37B,OAAOkrC,uBAuBrE2J,QAvB8F,CAC9F,IAAInK,EAAa/O,EAAO37B,OAAO0qC,WAC3B8H,EAAS,IAAMA,EAAS,GAAGwC,mBAC7BtK,EAAa8H,EAAS,GAAGwC,wBAClBxC,EAAS,GAAGwC,kBAEjBppC,EAAQ8+B,aAAYA,EAAa9+B,EAAQ8+B,aACxCA,GAAc/O,EAAO0T,eAAiB1T,EAAO0T,cAAc1I,QAC9D+D,EAAa/O,EAAO0T,cAAc1I,MAAM+D,aAGvCA,GACD/O,EAAO0T,eACP1T,EAAO0T,cAAc1I,OACrBhL,EAAO0T,cAAc1I,MAAM/6B,UAE3B8+B,EAAa/O,EAAO0T,cAAc1I,MAAM/6B,QAAQ8+B,YAxBlD/O,EAAOiZ,gBAAgBpC,EAAU,WACjC7W,EAAOiZ,gBAAgBtC,EAAU,YAAY,GACzC5I,IACF/N,EAAOgT,kBAAkB+D,EAAc,WACvC/W,EAAOgT,kBAAkB8D,EAAc,YAAY,IAuBrD9W,EAAOz6B,QAAQsxC,EAAUF,EAAUI,EAAcD,EAAc,WAAY/H,GAAY,KACrFmK,GAAgB,GAEpB,CAIA,OAAOlZ,CACT,CACA,SAASqb,GAASrb,EAAQsb,EAAYC,EAAa9B,GACjD,IAAKzZ,EAAOkN,kBAAoBuM,EAAkB,OAAOzZ,EACzD,MAAM37B,EAASi3C,EACTrrC,EAAUsrC,GACVjrB,IAAEA,EAAGtE,QAAEA,EAAOnsB,GAAEA,EAAE65C,SAAEA,EAAQ1/B,UAAEA,EAASwjB,aAAEA,GAAiBn5B,EAEhE,GACE4L,EAAQ+6B,MAAM1a,KACd0P,EAAO1P,MAAQrgB,EAAQ+6B,MAAM1a,MAC3BrgB,EAAQolC,gBAAiBplC,EAAQslC,iBAClCvV,EAAO37B,OAAOy1C,mBAGf,OADA9Z,EAAOkN,iBAAkB,GAClB,EAqBT,IAlBKj9B,EAAQ+6B,OAAS1a,IACpBrgB,EAAQ+6B,MAAQhL,EAAO+Z,cAAczpB,KAYnCA,GAAOkN,GAAgBxjB,KACzBgmB,EAAOkN,iBAAkB,GAIvBlhB,EACFwuB,GAASxa,EAAQA,EAAOga,UAAUhuB,GAAU/b,QACvC,GAAIpQ,EAET26C,GAASxa,EAAQA,EAAOga,UAAUn6C,GAAKoQ,QAClC,GAAIypC,EAETc,GAASxa,EAAQA,EAAOnE,IAAI1/B,SAAU,oBAAmBu9C,OAAczxC,GAAG,GAAIgI,QACzE,GAAI+J,GAAawjB,EAEtB,IACEwC,EAAOia,oBAAoB,CACzBC,SAAUla,EAAOngC,GACjBma,YACAwjB,eACAvtB,UACA8wB,QA7BN,SAAiBqW,EAAQ+C,GACvB,OAAOK,GAASxa,EAAQoX,EAAQr8C,GAAOkV,EAASkqC,GAClD,EA4BMnZ,OA3BN,WAEE,OADAhB,EAAOkN,iBAAkB,EAClBlN,CACT,G,CA0BI,MAAO8B,GAEP,MADA9B,EAAOkN,iBAAkB,EACnBpL,CACR,MACSxR,IAEL0P,EAAOoa,qBACTpa,EAAOoa,mBAAmBC,QAC1Bra,EAAOoa,oBAAqB,GAE9Bpa,EACGsa,WAAWhqB,EAAKrgB,GAChBwxB,MAAM8Y,IACLC,GAASxa,EAAQA,EAAOga,UAAUO,GAActqC,EAAQ,IAEzD4xB,OAAM,KACL7B,EAAOkN,iBAAkB,CAAI,KAGnC,OAAOlN,CACT,CC3hBA,MAAMwb,WAAe7hB,GACnB9+B,YAAY8gC,EAAKqR,GACf9tC,MAAM,GAAI,MAAiB,IAAT8tC,EAAuBrR,EAAMqR,IAC/C,MAAMhN,EAASjiC,KAGfiiC,EAAOyb,iBAA8B,IAATzO,EAExBhN,EAAOyb,YAET1gD,IAAO,EAAOilC,EAAQ,CACpBrE,MACAt3B,OAAQs3B,EAAIt3B,OAAO2oC,KACnB/P,OAAQtB,EAAIsB,QAAU,GACtB/R,MAAOyQ,EAAIzQ,QAIbnwB,IAAO,EAAOilC,EAAQ,CACpBrE,MACAqR,OACAI,OAAQJ,EAAKruC,GACbA,GAAIquC,EAAK3oC,OAAOq3C,SAChBr3C,OAAQ2oC,EAAK3oC,OACb44B,OAAQ+P,EAAK/P,OACbx/B,QAASuvC,EAAKvvC,QACd+6C,aAAc,GACdmD,cAAe3O,EAAK2O,cACpBzwB,MAAOyQ,EAAIzQ,MACX6iB,cAA6B,QAAdpS,EAAIxM,OAAmB6d,EAAK3oC,OAAOu3C,iBAClDC,aAAc,GACdC,eAAgB,KAKpB9b,EAAOlF,aAGPkF,EAAOkN,iBAAkB,EAGzB,IAAI+F,EAAe,GACfS,EAAgB,GA0BpB,OAzBA54C,OAAOuE,eAAe2gC,EAAQ,eAAgB,CAC5CvN,YAAY,EACZspB,cAAc,EACdx8C,IAAIy8C,QAAQ,IAARA,MAAW,IACbtI,EAAgB34C,GAAO,GAAIk4C,GAC3BA,EAAe+I,EACV/I,IACLjT,EAAO1P,IAAM2iB,EAAa3iB,IAC1B0P,EAAO3G,KAAK,cAAe2iB,EAAUtI,EAAe1T,G,EAEtD1gC,IAAGA,IACM2zC,IAGXn4C,OAAOuE,eAAe2gC,EAAQ,gBAAiB,CAC7CvN,YAAY,EACZspB,cAAc,EACdz8C,IAAGA,IACMo0C,EAETn0C,IAAIy8C,GACFtI,EAAgBsI,CAClB,IAGKhc,CACT,CAEAjB,QACE,MAAMiB,EAASjiC,KACTivC,EAAOhN,EAAOgN,KAGpBjyC,IAAO,EAAOilC,EAAQ,CACpBic,QAHe9+C,IAGGjB,cAAc,OAChC2/B,IAAKmR,EAAKnR,IACVh8B,GAAImtC,EAAKntC,GACT4tC,WAAYT,EAAKS,WACjByO,UAAWlP,EAAKkP,YAGlBlc,EAAO3G,KAAK,2BAA4B2G,EAC1C,CAEA8R,sBAAsBgF,EAAcC,EAAcvG,EAASD,EAAWwD,GACpE,MAAM/T,EAASjiC,KACTgwC,EAAgB/N,EAAO+N,cACvBoO,EAAcnc,EAAO37B,OAAOwsC,yBAElC,IAAIuL,EACAC,EACJ,SAASC,EAAgBzgB,EAAK0gB,GAC5B,MAAM/K,EAAY3V,EAAIyE,SAAS,YAAcic,EAAajc,SAAS,WAC7D2Q,EAAcpV,EAAIyE,SAAS,aAC3Bkc,GAAyBhL,IAAaP,EACtCwL,EAAU5gB,EAAI+T,KAAK,eACzB,IAAI8M,EAWJ,OATElL,GACA2K,GACAtgB,EAAIyE,SAAS,SACbmc,EAAQphD,OAAS,GACjBohD,EAAQjyC,KAAK,QAAQnP,SAErBwgC,EAAM4gB,EAAQjyC,KAAK,QACnBkyC,GAAc,GAET,CACL7gB,MACA6gB,cACAC,WAAY9gB,EAAI,GAAGiV,mBACnB8L,YAAa/gB,EAAI,GAAG+V,oBACpBJ,YACAP,cACAuL,yBAEJ,CAiDA,OAhDIzO,IACFqO,EAAY,GACZC,EAAY,GACZvF,EACG36C,SAAS,iBACTA,SAAS,qCACT+I,MAAM6rC,IACL,MAAMC,EAAS5wC,EAAE2wC,GACbC,EAAO1Q,SAAS,SAAWiQ,GAA2B,YAAdwD,GACxC/C,EAAO1Q,SAAS,UAAYkQ,GAChC4L,EAAUr8C,KAAKu8C,EAAgBtL,EAAQ8F,EAAa36C,SAAS,kBAAkB,IAI/E46C,EAAazW,SAAS,kBACtBN,EAAO37B,OAAOkrC,uBAAyB,GACvCvP,EAAOrE,IAAItF,OAAS2J,EAAO37B,OAAOkrC,wBAGpCwH,EACG56C,SAAS,iBACTA,SAAS,qCACT+I,MAAM6rC,IACL,MAAMC,EAAS5wC,EAAE2wC,GACbC,EAAO1Q,SAAS,SAAWkQ,IAAYD,GAA2B,YAAdwD,GACpD/C,EAAO1Q,SAAS,SAAWkQ,GAAyB,aAAduD,GACtC/C,EAAO1Q,SAAS,UAAYiQ,GAGhC8L,EAAUt8C,KAAKu8C,EAAgBtL,EAAQ+F,EAAa56C,SAAS,kBAAkB,IAGrF,CAACkgD,EAAWD,GAAWjhD,SAAS0hD,IAC9BA,EAAO1hD,SAAS41C,IACd,MAAM18B,EAAI08B,GACJS,UAAEA,EAAS3V,IAAEA,GAAQkV,EACrB+L,EAAWD,IAAWR,EAAYD,EAAYC,EAC9C7K,GAAa3V,EAAIyE,SAAS,UAAYwc,GAC5CA,EAAS3hD,SAAS4hD,IAChB,GAAIA,EAAWL,YAAa,CAC1B,MAAMM,EAAaD,EAAWlhB,IAAI,GAClCxnB,EAAEsoC,YAAcK,GAAaA,EAAWC,YAAkB,CAC5D,IACA,GACF,KAIC,CAAEb,YAAWC,YACtB,CAEA92C,QAAQqzC,EAAYsE,EAAYnG,EAAcD,EAAc/C,EAAWhF,EAAYtwC,GACjF,MAAMuhC,EAASjiC,KACf,GAAIiiC,EAAO37B,OAAO84C,cAShB,YARAnd,EAAO37B,OAAO84C,cAAct0C,MAAMm3B,EAAQ,CACxC4Y,EACAsE,EACAnG,EACAD,EACA/C,EACAt1C,IAIJ,MAAMsvC,EAAgB/N,EAAO+N,cACvB3Z,EAA2B,QAArB4L,EAAOrE,IAAIxM,MACvB,GAAI4f,EAAY,CACd,MAAMqO,EAA+B,8CAA6CrO,KAAcgF,IAE1FsJ,EAAyBA,KAC7Brd,EAAOnE,IAAI0E,YAAY6c,GACnBrP,GAAiB/N,EAAOyN,WAAWpyC,SACjCy7C,GACF9W,EAAOyN,WAAWrgC,QAAQ0pC,GAExBC,GACF/W,EAAOyN,WAAWrgC,QAAQ2pC,IAG1Bt4C,GAAUA,GAAU,EAkB1B,OAfe,YAAds1C,EAA0BmJ,EAAatE,GAAY0E,aAAaD,GAC7DtP,IACE+I,GAAgBoG,IAClBld,EAAOgT,kBAAkB8D,EAAc,IACvCA,EAAavW,YAAY,8CACzB2c,EAAW9vC,QAAQ0pC,IAEjBC,GAAgB6B,IAClB5Y,EAAOgT,kBAAkB+D,EAAc,IACvCA,EAAaxW,YAAY,8CACzBqY,EAAWxrC,QAAQ2pC,UAIvB/W,EAAOnE,IAAIwE,SAAS+c,EAEtB,CAGA,MAAMG,EAAyB,qBAAoBxJ,sBAEnD,IAAIqI,EACAC,EAEA9L,EACAC,EACAgN,EAEAC,EACAC,EAEJ,GAAItpB,GAAO2Z,EAAe,CAEtB/N,EAAO37B,OAAOkrC,uBAAyB,GACvCvP,EAAOrE,IAAItF,OAAS2J,EAAO37B,OAAOkrC,yBAChCwH,EAAazW,SAAS,kBACtBwW,EAAaxW,SAAS,yBACrByW,EAAazW,SAAS,yBACrBwW,EAAaxW,SAAS,oBAE1Bmd,EAAa1G,GAAgBA,EAAazW,SAAS,gBACnDod,EAAa5G,GAAgBA,EAAaxW,SAAS,gBACnDiQ,EAAYkN,IAAe1G,EAAazW,SAAS,0BACjDkQ,EAAUkN,IAAe5G,EAAaxW,SAAS,0BAC/Ckd,EAAejN,IAAcC,GAAaA,IAAYD,GAExD,MAAMsM,EAAS7c,EAAO8R,sBACpBgF,EACAC,EACAvG,EACAD,EACAwD,GAEFqI,EAAYS,EAAOT,UACnBC,EAAYQ,EAAOR,SACrB,CAEA,SAASsB,EAAe/4C,GAChBwvB,GAAO2Z,IACI,IAAbnpC,IACE4rC,IACFsG,EAAazW,SAAS,qCACtB0W,EAAa1W,SAAS,sCAEpBkQ,IACFuG,EAAazW,SAAS,uCACtB0W,EAAa1W,SAAS,yCAG1B+b,EAAUjhD,SAAS41C,IACjB,MAAMlV,EAAMkV,EAAMlV,IACZ6G,EAAuB,YAAdqR,EAA0BhD,EAAM6L,YAAc7L,EAAM4L,WAC/D5L,EAAMS,YACJT,EAAME,aAAeyM,EAEvB7hB,EAAI,GAAGx/B,MAAMuhD,YACX,YACC,eAAclb,GAAU,EAAI99B,sGAC7B,aAGFi3B,EAAI1sB,UAAW,eAAcuzB,GAAU,EAAI99B,aAE/C,IAEFy3C,EAAUlhD,SAAS41C,IACjB,MAAMlV,EAAMkV,EAAMlV,IACZ6G,EAAuB,YAAdqR,EAA0BhD,EAAM4L,WAAa5L,EAAM6L,YAC9D7L,EAAMS,YACJT,EAAME,aAAewM,EACvB5hB,EAAI1sB,UACD,eACCuzB,EAAS99B,sGAIbi3B,EAAI1sB,UAAW,eAAcuzB,EAAS99B,YAE1C,IAEJ,EAyCe,YAAdmvC,EAA0BmJ,EAAa9oB,EAAMwkB,EAAasE,GAAYI,cAAa,KArC9Etd,EAAO+N,gBACL+I,IACFA,EAAavW,YACX,yEAEFuW,EAAazW,SAAS,oCACtBlQ,IAAU,KACR2mB,EAAavW,YAAY,mCAAmC,KAG5DwW,GACFA,EAAaxW,YACX,yEAIFuW,EAAaxW,SAAS,YACtBwW,EAAa36C,SAAS,yBAAyBd,OAE/Cy7C,EAAalH,KAAK,kDAAkDzgC,UAAU,IAE9E2nC,EAAalH,KAAK,YAAYzgC,UAAU,IAGxC4nC,EAAazW,SAAS,YACtByW,EAAa56C,SAAS,yBAAyBd,OAE/C07C,EAAanH,KAAK,kDAAkDzgC,UAAU,IAE9E4nC,EAAanH,KAAK,YAAYzgC,UAAU,KAG5C6wB,EAAOnE,IAAI0E,YAAYgd,GACnB9+C,GAAUA,GAKN,IAINsvC,GAEF4P,EAAe,GACfxtB,IAAU,KAER6P,EAAOnE,IAAIwE,SAASkd,GAChBC,IAEFxd,EAAOngC,GAAGovC,YAAcjP,EAAOngC,GAAG8L,YAEpCgyC,EAAe,EAAE,KAInB3d,EAAOnE,IAAIwE,SAASkd,EAExB,CAEAM,YAAY1hB,GACKp+B,KACR+/C,SAAS3hB,EAClB,CAEA4hB,iBAAiBC,GACA59C,EAAE49C,GACVz9C,KAAK,GACd,CAEAkzC,aAAa5zC,GACI9B,KACR+/C,SAASj+C,EAClB,CAEA2zC,WAAW3zC,GACT,MAAMg8B,EAAMz7B,EAAEP,GACRqzC,EAASrX,GAAOA,EAAI,IAAMA,EAAI,GAAGqX,OAEnCA,GAAUA,EAAOlI,OAASkI,EAAOlI,MAAMA,OAASkI,EAAOlI,MAAMA,MAAMkM,UACrErb,EAAIjzB,SAFS7K,KAKR+/C,SAASj+C,EAClB,CAEAi+C,SAASj+C,GACP,IAAKA,EAAI,OACT,MAAMmgC,EAASjiC,KACT89B,EAAMz7B,EAAEP,GACK,IAAfg8B,EAAIxgC,SACRwgC,EAAI+T,KAAK,QAAQ1qC,MAAM84C,IACrB59C,EAAE49C,GACC7hD,WACA+I,MAAM+4C,IACDA,EAAS7d,cACXhgC,EAAE69C,GAAUr8C,QAAQ,oBACpBq8C,EAAS7d,YAAYtE,UACvB,GACA,IAEFD,EAAI,GAAGuE,aAAevE,EAAI,GAAGuE,YAAYtE,SAC3CD,EAAI,GAAGuE,YAAYtE,UAEhBkE,EAAO37B,OAAO65C,iBAGfle,EAAO37B,OAAO85C,0BAChB9/C,YAAW,KACTw9B,EAAIjzB,QAAQ,GACXo3B,EAAO37B,OAAO+5C,uBAEjBviB,EAAIjzB,UAER,CAEAoxC,UAAUhuB,GACR,MAAMgU,EAASjiC,KACf,GAAuB,iBAAZiuB,EACTgU,EAAOic,QAAQr7C,UAAYorB,MACtB,CACL,GAAI5rB,EAAE4rB,GAASsU,SAAS,QACtB,OAAOtU,EAETgU,EAAOic,QAAQr7C,UAAY,GAC3BR,EAAE4/B,EAAOic,SAASv0C,OAAOskB,EAC3B,CAEA,OAAOgU,EAAOqe,YAAY,QAASre,EAAOic,QAC5C,CAEAoC,YAAYC,EAAgBx4C,GAC1B,MAAMk6B,EAASjiC,KACTivC,EAAOhN,EAAOgN,KACdrR,EAAMqE,EAAOrE,IAMb4iB,EAAan+C,EAAE0F,GACfzF,EAAWi+C,EAEjB,IAAIn1C,EAAQo1C,EACT3O,KAAKvvC,GACLH,QAAQL,GAAgD,IAAzCO,EAAEP,GAAImI,QAPtB,iFAO8C3M,SAYhD,OAVI8N,EAAM9N,OAAS,IACY,iBAAlB2xC,EAAK3sC,WAEd8I,EAAQo1C,EAAW3O,KAAM,GAAE5C,EAAK3sC,YAAYA,MAE1C8I,EAAM9N,OAAS,IAEjB8N,EAAQo1C,EAAW3O,KAAM,IAAGjU,EAAIt3B,OAAOm6C,iBAAiBn+C,OAGvC,IAAjB8I,EAAM9N,OAAqB8N,GAE/BA,EAAQ62B,EAAOqe,YAAYh+C,EAAUk+C,GACjCp1C,GAA0B,IAAjBA,EAAM9N,OAAqB8N,EACpCA,GAASA,EAAM9N,OAAS,EAAU+E,EAAE+I,EAAM,SAA9C,EAEF,CAEAs1C,cAAcxhB,QAAM,IAANA,MAASl/B,KAAKk/B,QAC1B,MAAM+C,EAASjiC,KACf,IAAI2gD,EAAkB,GA0CtB,OAzCAzhB,EAAO9hC,SAAS6vC,IACd,IAAI2T,GAAe,EACnB,GAAI,SAAU3T,GAASA,EAAM4T,KAAM,CACjC,MAAMC,EAAoB7T,EAAM4T,KAAK/6C,KAAKi7C,IACxC,MAAMC,EAAShkD,GAAO,GAAIiwC,EAAO,CAC/BhC,KAAO,GAAEgC,EAAMhC,QAAQ8V,EAAS9V,OAAOhjC,QAAQ,MAAO,KAAKA,QAAQ,KAAM,KACzE2zC,WAAY3O,EAAMhC,KAClB8P,IAAKgG,IAIP,cAFOC,EAAOH,YACPG,EAAO9hB,OACP8hB,CAAM,IAEfJ,GAAe,EACfD,EAAkBA,EAAgBnW,OAAOvI,EAAOye,cAAcI,GAChE,CACA,GAAI,iBAAkB7T,EAAO,CAC3B,MAAM6T,EAAoB7T,EAAMgU,aAAan7C,KAAKo7C,IAChD,MAAMC,EAASnkD,GAAO,GAAIkkD,GAG1B,OAFAC,EAAOpE,YAAc9P,EACrBkU,EAAOC,gBAAkBnU,EAAMhC,KACxBkW,CAAM,IAEfR,EAAkBA,EAAgBnW,OAAOyC,EAAOhL,EAAOye,cAAcI,GACvE,CACA,GAAI,WAAY7T,EAAO,CACrB,MAAM6T,EAAoB7T,EAAM/N,OAAOp5B,KAAKu7C,IAC1C,MAAMC,EAAStkD,GAAO,GAAIqkD,GAE1B,OADAC,EAAOrW,KAAQ,GAAEgC,EAAMhC,QAAQqW,EAAOrW,OAAOhjC,QAAQ,MAAO,KAAKA,QAAQ,KAAM,KACxEq5C,CAAM,IAGbX,EADEC,EACgBD,EAAgBnW,OAAOvI,EAAOye,cAAcI,IAE5CH,EAAgBnW,OAAOyC,EAAOhL,EAAOye,cAAcI,GAEzE,CACM,WAAY7T,GAAY,SAAUA,GAASA,EAAM4T,MAAW,iBAAkB5T,GAClF0T,EAAgB3+C,KAAKirC,EACvB,IAEK0T,CACT,CAGA3E,cAAczpB,GACZ,IAAKA,EAAK,MAAO,GACjB,MAAMC,EAAQF,GAAcC,GACtB3zB,EAAO2zB,EAAIjvB,MAAM,KAAK,GAEtB2nC,EAAO1Y,EAAIjvB,MAAM,KAAK,GAAGA,MAAM,KAAK,GAC1C,MAAO,CACLkvB,QACA5zB,OACA0H,OALa,GAMbisB,MACA0Y,OAEJ,CAEAsW,YAAY/jB,GACV,QADoB,IAAVA,MAAa,IACG,iBAAfA,EACT,OAAOA,EAET,MAAMh6B,KAAEA,EAAIynC,KAAEA,EAAI3kC,OAAEA,EAAMksB,MAAEA,GAAUgL,EACtC,IAAKh6B,IAASynC,EACZ,MAAM,IAAIhnB,MAAM,sDAElB,MAAMge,EAASjiC,KACTitC,EAAQzpC,EAAOy+B,EAAOuf,eAAe,OAAQh+C,GAAQy+B,EAAOuf,eAAe,OAAQvW,GAEzF,IAAKgC,EACH,MAAIzpC,EACI,IAAIygB,MAAO,gCAA+BzgB,gBAE1C,IAAIygB,MAAO,gCAA+BgnB,gBAGpD,MAAM1Y,EAAM0P,EAAOwf,kBAAkBxU,EAAO,CAAE3mC,SAAQksB,UAEtD,GAAY,KAARD,EACF,MAAO,IAGT,IAAKA,EACH,MAAM,IAAItO,MAAO,wDAAuDzgB,MAE1E,OAAO+uB,CACT,CAGAkvB,kBAAkBxU,EAAKvU,GAA0B,IAAxBpyB,OAAEA,EAAMksB,MAAEA,QAAO,IAAAkG,EAAG,GAAEA,EAC7C,MAAMuS,KAAEA,GAASgC,EACXyU,EAAQ/V,GAAQV,GACtB,IAAI1Y,EACJ,IACEA,EAAMmvB,EAAMp7C,GAAU,G,CACtB,MAAOylB,GACP,MAAM,IAAI9H,MACP,wEAAuEgnB,MAASlf,EAAMuD,aAE3F,CAOA,OALIkD,IACmB,iBAAVA,EAAoBD,GAAQ,IAAGC,IACjCz1B,OAAOI,KAAKq1B,GAAOl1B,SAAQi1B,GAAQ,IAAGkB,GAAgBjB,OAG1DD,CACT,CAEAovB,gBAAgB1B,GACd,MAAMhe,EAASjiC,KACT4hD,EAASv/C,EAAE49C,GACXrE,EAAa3Z,EAAOiT,aAAajI,MAAM2O,WACvCiG,EAAQD,EAAOr3C,KAAK,MAE1B,IAAIu3C,EAaJ,OAdwB7f,EAAOye,cAAcze,EAAO/C,QAEpC9hC,SAAS6vC,IACnBA,EAAM2O,aAAeA,GAAc3O,EAAM8N,KAAO9N,EAAM8N,IAAIn6C,KAAOihD,IAEjEC,EADE7f,EAAOiT,aAAa5uC,QAAUvJ,OAAOI,KAAK8kC,EAAOiT,aAAa5uC,QAAQhJ,OAAS,EAC9D2kC,EAAOwf,kBAAkBxU,EAAO,CACjD3mC,OAAQ27B,EAAOiT,aAAa5uC,OAC5BksB,MAAOyP,EAAOiT,aAAa1iB,QAGVya,EAAMhC,KAE7B,IAEK6W,CACT,CAEAN,eAAenkD,EAAKoE,GAClB,MACMy9B,EADSl/B,KACOk/B,OAEtB,IAAI6iB,EAQJ,OAXe/hD,KAEgB0gD,cAAcxhB,GAG7B9hC,SAAS6vC,IACnB8U,GACA9U,EAAM5vC,KAASoE,IACjBsgD,EAAgB9U,EAClB,IAEK8U,CACT,CAEAtJ,kBAAkBlmB,GAChB,IAAKA,EAAK,OACV,MAAM0P,EAASjiC,KACTk/B,EAAS+C,EAAO/C,OAChByhB,EAAkB1e,EAAOye,cAAcxhB,IACvC+L,KAAEA,EAAIzY,MAAEA,EAAK5zB,KAAEA,EAAI0H,OAAEA,GAAW27B,EAAO+Z,cAAczpB,GAC3D,IAAIwvB,EAoDJ,OAnDApB,EAAgBvjD,SAAS6vC,IACvB,GAAI8U,EAAe,OACnB,MAAM5kD,EAAO,GAEP6kD,EAAe,CAAC/U,EAAMhC,MAAQ,KAUpC,IAAIgX,EAMJ,GAfIhV,EAAMiV,QACmB,iBAAhBjV,EAAMiV,MAAoBF,EAAahgD,KAAKirC,EAAMiV,OACpDjhD,MAAMc,QAAQkrC,EAAMiV,QAC3BjV,EAAMiV,MAAM9kD,SAAS+kD,IACnBH,EAAahgD,KAAKmgD,EAAU,KAMlCH,EAAa5kD,SAASglD,IAChBH,IACJA,EAAUzU,GAAa4U,EAAajlD,GAAM23B,KAAKmW,GAAQ,KAAI,IAGzDgX,EAAS,CAWX,IAAIrG,EAVJz+C,EAAKC,SAAQ,CAACilD,EAAQ56C,KACpB,GAA2B,iBAAhB46C,EAAO7+C,KAAmB,OACrC,MAAM8+C,EAAaL,EAAQx6C,EAAQ,GAEjCnB,EAAO+7C,EAAO7+C,MADZ,MAAO8+C,EACaA,EAEA1vB,mBAAmB0vB,EAC3C,IAIErV,EAAM2O,aACRA,GAAc3Q,GAAQ,KACnB3nC,MAAM,KACN0sB,MAAM,EAAGid,EAAM2O,WAAWt4C,MAAM,KAAKhG,OAAS,GAC9CmyB,KAAK,MAGVsyB,EAAgB,CACdvvB,QACA5zB,OACA0H,SACAisB,MACA0Y,KAAMA,GAAQ,IACd2Q,aACA3O,QACAzpC,KAAMypC,EAAMzpC,KAEhB,KAEKu+C,CACT,CAGAQ,wBAAwBhwB,EAAUrgB,QAAP,IAAHqgB,MAAM,SAAW,IAAPrgB,MAAU,IAC1C,IAAIswC,EAAcjwB,EAclB,MAZyB,iBAAhBiwB,GACPA,EAAY9/C,QAAQ,OAAS,GAC7BwP,GACAA,EAAQ+6B,OACR/6B,EAAQ+6B,MAAM3mC,QACdvJ,OAAOI,KAAK+U,EAAQ+6B,MAAM3mC,QAAQhJ,QAElCP,OAAOI,KAAK+U,EAAQ+6B,MAAM3mC,QAAQlJ,SAAS0+C,IACzC,MAAM2G,EAAS,IAAIvW,OAAQ,KAAI4P,MAAe,KAC9C0G,EAAcA,EAAYv6C,QAAQw6C,EAAQvwC,EAAQ+6B,MAAM3mC,OAAOw1C,IAAc,GAAG,IAG7E0G,CACT,CAEAE,mBAAmBnwB,GACjB,MACMowB,EADS3iD,KACSmtB,MAAMy1B,IAC9B,IAAIn7C,GAAQ,EACZ,IAAK,IAAI3E,EAAI,EAAGA,EAAI6/C,EAASrlD,OAAQwF,GAAK,EACpC6/C,EAAS7/C,GAAGyvB,MAAQA,IAAK9qB,EAAQ3E,IAEzB,IAAV2E,GAAiBk7C,EAASn1C,OAAO/F,EAAO,EAC9C,CAEA80C,WAAWsG,EAAY3wC,GACrB,MAAM+vB,EAASjiC,KACTsG,EAAS27B,EAAO37B,QAChBw8C,YAAEA,GAAgB5wC,EACxB,IAAIqgB,EAAMswB,EAENE,EAAWxwB,EAAI7vB,QAAQ,MAAQ,EA8BnC,OA5BE4D,EAAO08C,yBACP9wC,GACAA,EAAQ+6B,OACR/6B,EAAQ+6B,MAAMza,OACdz1B,OAAOI,KAAK+U,EAAQ+6B,MAAMza,OAAOl1B,SAEjCi1B,GAAQ,GAAEwwB,EAAW,IAAM,MAAMtvB,GAAgBvhB,EAAQ+6B,MAAMza,SAC/DuwB,GAAW,GAIXz8C,EAAO28C,0BACP/wC,GACAA,EAAQ+6B,OACR/6B,EAAQ+6B,MAAM3mC,QACdvJ,OAAOI,KAAK+U,EAAQ+6B,MAAM3mC,QAAQhJ,SAElCi1B,GAAQ,GAAEwwB,EAAW,IAAM,MAAMtvB,GAAgBvhB,EAAQ+6B,MAAM3mC,UAC/Dy8C,GAAW,GAGTxwB,EAAI7vB,QAAQ,OAAS,IACvB6vB,EAAM0P,EAAOsgB,wBAAwBhwB,EAAKrgB,IAGxC5L,EAAO48C,6BAA+B3wB,EAAI7vB,QAAQ,MAAQ,IAC5D6vB,EAAMA,EAAIjvB,MAAM,KAAK,IAEhB,IAAIy/B,SAAQ,CAACC,EAASC,KAC3B,GACE38B,EAAOq8C,WACNG,GACDvwB,EAAI7vB,QAAQ,WAAa,GACzB4D,EAAO68C,eAAezgD,QAAQ6vB,GAAO,EAErC,IAAK,IAAIzvB,EAAI,EAAGA,EAAIm/B,EAAO9U,MAAMy1B,IAAItlD,OAAQwF,GAAK,EAAG,CACnD,MAAMsgD,EAAYnhB,EAAO9U,MAAMy1B,IAAI9/C,GACnC,GAAIsgD,EAAU7wB,MAAQA,GAEhBF,KAAQ+wB,EAAUh7C,KAAO9B,EAAO+8C,iBAGlC,YADArgB,EAAQogB,EAAUn1B,QAIxB,CAGF,IAAIq1B,EADJrhB,EAAOoa,mBAAqB,IAAIkH,gBAEhC9f,MAAMlR,EAAK,CAAEixB,OAAQvhB,EAAOoa,mBAAmBmH,OAAQtoB,OAAQ,QAC5DwI,MAAM7hC,IACLyhD,EAAWzhD,EACJA,EAAImP,UAEZ0yB,MAAM+f,IACL,MAAMC,OAAEA,GAAWJ,EACnBrhB,EAAO3G,KAAK,qBAAsBgoB,GAEpB,UAAXI,GAAiC,YAAXA,GAAwBA,GAAU,KAAOA,EAAS,KAC9D,IAAXA,GAEIp9C,EAAOq8C,UAA6B,KAAjBc,IACrBxhB,EAAOygB,mBAAmBnwB,GAC1B0P,EAAO9U,MAAMy1B,IAAI5gD,KAAK,CACpBuwB,MACAnqB,KAAMiqB,KACNpE,QAASw1B,KAGbxhB,EAAO3G,KAAK,oBAAqBgoB,EAAUpxC,GAC3C8wB,EAAQygB,KAERxhB,EAAO3G,KAAK,kBAAmBgoB,EAAUpxC,GACzC+wB,EAAOqgB,GACT,IAEDxf,OAAOC,IACNd,EAAOc,EAAI,GACX,GAER,CAEAkR,kBAAkBnX,EAAK+b,EAAU8J,GAE/B7lB,EAAI0E,YAAY,8CACZqX,GACF/b,EAAIwE,SAAU,UAASuX,MAGN,IAAf8J,EACF7lB,EAAIkX,WAAW,gBACS,IAAf2O,GACT7lB,EAAIvzB,KAAK,cAAe,QAE1BuzB,EAAIj6B,QAAQ,kBAAmB,CAAEg2C,aAXlB75C,KAYRs7B,KAAK,iBAAkBwC,EAAI,GAAI+b,EACxC,CAEAqB,gBAAgBpd,EAAK+b,EAAU8J,GAE7B7lB,EAAI0E,YAAY,wCAChB1E,EAAIwE,SAAU,QAAOuX,MACF,IAAf8J,EACF7lB,EAAIkX,WAAW,gBACS,IAAf2O,GACT7lB,EAAIvzB,KAAK,cAAe,QAE1BuzB,EAAIj6B,QAAQ,gBAAiB,CAAEg2C,aARhB75C,KASRs7B,KAAK,eAAgBwC,EAAI,GAAI+b,EACtC,CAGAZ,oBAAoBn3C,GAClB,MACMsvB,EADSpxB,KACM49B,IAAIxM,MACzB,IAAIwyB,EACU,QAAVxyB,EACFwyB,EAAW,0CACQ,OAAVxyB,IACTwyB,EAAW,2CAEbvhD,EAAEP,GAAI+vC,KAAK+R,GAAU/4C,QACvB,CAEAg5C,YAAYxK,EAAQc,EAAUv6B,EAAMwB,EAAI6rB,EAAY6W,QAAP,IAAL7W,MAAQ,IAC9C,MAAMhL,EAASjiC,KACT+jD,EAAU1hD,EAAEg3C,GAAQnvC,GAAG,GACvBgvC,EAAY72C,EAAE83C,GAAUjwC,GAAG,GAC3BkrC,EAAc2O,EAAQ,GAAG5O,QAAU,GACzC,IAAIa,EACAgO,EAKJ,IAJc,SAATpkC,GAA0B,YAAPwB,GAA+B,YAATxB,GAA6B,aAAPwB,KAClE40B,EAAY,YACA,YAATp2B,GAA6B,SAAPwB,GAA4B,aAATxB,GAA8B,YAAPwB,KACnE40B,EAAY,YACVZ,IAAgBA,EAAY6O,SAAU,CACxC,MAAMC,EAAc7hD,EAAEyhD,GAClBI,EAAY5mD,SACd0mD,EAAWE,EAAY,GAAG/O,OAE9B,CACA6O,EAAW5O,EAAY4O,UAAYA,EAC/BA,GAAYA,EAASA,WACvBA,EAASA,SAAW,MAEtB,MAAMG,EAAO,CACXvmB,IAAKqE,EAAOrE,IACZqR,KAAMhN,EAAOgN,KACbhN,SACAnE,IAAKimB,EACLjiD,GAAIiiD,EAAQ,GACZA,UACA1K,OAAQ0K,EAAQ,GAChB7K,YACAiB,SAAUjB,EAAU,GACpB11C,KAAMugD,EAAQx5C,KAAK,aACnBsvC,SAAUj6B,EACVA,OACAwB,KACA40B,YACA/I,MAAOmI,EAAYnI,MAAQmI,EAAYnI,MAAQA,EAC/C+W,YAIF,OADAD,EAAQ,GAAG5O,OAASgP,EACbA,CACT,CAGA9O,aAAa30C,EAAU24C,EAAQc,EAAUv6B,EAAMwB,EAAIlP,EAAc4xC,GAC/D,QADwD,IAAP5xC,MAAU,KACtDmnC,EAAQ,OACb,MAAMpX,EAASjiC,KACT+jD,EAAU1hD,EAAEg3C,GAClB,IAAK0K,EAAQzmD,OAAQ,OACrB,MAAM47C,EAAY72C,EAAE83C,IACdlN,MAAEA,GAAU/6B,EACZkyC,EACJniB,EAAO37B,OAAO89C,0BAEZniB,EAAO37B,OAAOkrC,uBAAyB,GACvCuS,EAAQxhB,SAAS,gBACjBN,EAAOrE,IAAItF,OAAS2J,EAAO37B,OAAOkrC,wBAEhC2H,EACJ4K,EAAQ,GAAG5O,QACX4O,EAAQ,GAAG5O,OAAOlI,OAClB8W,EAAQ,GAAG5O,OAAOlI,MAAMA,OACxB8W,EAAQ,GAAG5O,OAAOlI,MAAMA,MAAMkM,UAEf,iBAAbz4C,GAA+By4C,IACjCz4C,EAAW,iBAGb,MAAM2jD,EAAa,OAAM3jD,EAAS,GAAGkK,cAAgBlK,EAASsvB,MAAM,EAAGtvB,EAASpD,UAC1EgnD,EAAa,QAAO5jD,EAAS+J,gBAEnC,IAAI05C,EAAO,GAETA,EADe,iBAAbzjD,GAA+BqjD,EAAQ,GAAG5O,OACrCn4C,GAAO+mD,EAAQ,GAAG5O,OAAQ,CAAEv1B,OAAMwB,KAAIy4B,SAAUj6B,IAEhDqiB,EAAO4hB,YAAYE,EAAQ,GAAI7K,EAAU,GAAIt5B,EAAMwB,EAAI6rB,EAAO6W,GAEvEK,EAAK7O,YAAcpjC,EAAQojC,UAE3B,MAAMxxC,GAAEA,EAAK,GAAEq3B,KAAEA,EAAO,IAAOjpB,EAAQ+6B,MAAQ/6B,EAAQ+6B,MAAMA,MAAQ,GAQrE,SAAS6I,IACHiO,EAAQ,GAAGQ,wBACfR,EAAQ,GAAGQ,uBAAwB,EAC/BzgD,GAAM/G,OAAOI,KAAK2G,GAAIxG,OAAS,IACjCymD,EAAQ,GAAGS,gBAAkB1gD,EAC7B/G,OAAOI,KAAK2G,GAAI1G,SAASwR,IACvB9K,EAAG8K,GAAa9K,EAAG8K,GAAW8nB,KAAKuL,GACnC8hB,EAAQjgD,GAAGguB,GAAqBljB,GAAY9K,EAAG8K,GAAW,KAG1DusB,GAAQp+B,OAAOI,KAAKg+B,GAAM79B,OAAS,IACrCymD,EAAQ,GAAGU,kBAAoBtpB,EAC/Bp+B,OAAOI,KAAKg+B,GAAM/9B,SAASwR,IACzBusB,EAAKvsB,GAAausB,EAAKvsB,GAAW8nB,KAAKuL,GACvC8hB,EAAQ5oB,KAAKrJ,GAAqBljB,GAAYusB,EAAKvsB,GAAW,KAGpE,CAyBA,GAjDIsD,EAAQpO,IACV9G,GAAO8G,EAAIoO,EAAQpO,IAEjBoO,EAAQipB,MACVn+B,GAAOm+B,EAAMjpB,EAAQipB,MA0CN,YAAbz6B,GACFo1C,IAEe,SAAbp1C,EAAqB,CACvB,GACE0jD,IACU,aAATxkC,IAAwBA,IAClB,YAAPwB,GACA6gB,EAAO2b,cAAcuG,EAAKlX,MAAM1a,OAC/BwxB,EAAQxhB,SAAS,qBAClB,CACA,IAAImiB,EAAeX,EAAQlS,KAAK,iBAC5B6S,EAAapnD,OAAS,IAExBonD,EAAeA,EAAaviD,QAAQwiD,GAE6B,IAA7DtiD,EAAEsiD,GAAe16C,QAAQ,yBAAyB3M,SACjD+E,EAAEsiD,GAAe56C,GAAG,4BAI3B26C,EAAa72C,UAAUo0B,EAAO2b,cAAcuG,EAAKlX,MAAM1a,KACzD,CAEA,GADAujB,IACIiO,EAAQ,GAAGa,kBAGb,OAFAb,EAAQlgD,QAAQ,cAAesgD,QAC/BliB,EAAO3G,KAAK,aAAc6oB,GAG5BJ,EAAQ,GAAGa,mBAAoB,CACjC,CACA,GACER,GACa,cAAb1jD,GACS,YAATkf,GACO,aAAPwB,EACA,CAEA,IAAIsjC,EAAeX,EAAQlS,KAAK,iBAC5B6S,EAAapnD,OAAS,IAExBonD,EAAeA,EAAaviD,QAAQwiD,GAE6B,IAA7DtiD,EAAEsiD,GAAe16C,QAAQ,yBAAyB3M,SACjD+E,EAAEsiD,GAAe56C,GAAG,4BAI3Bk4B,EAAO2b,cAAcuG,EAAKlX,MAAM1a,KAAOmyB,EAAa72C,WACtD,CACIu2C,GAAuC,cAAb1jD,GAAqC,YAATkf,GAA6B,SAAPwB,UAEvE6gB,EAAO2b,cAAcuG,EAAKlX,MAAM1a,KAGzCwxB,EAAQlgD,QAAQygD,EAAWH,GAC3BliB,EAAO3G,KAAK+oB,EAAWF,GAEN,iBAAbzjD,GAA4C,kBAAbA,IA7E5BqjD,EAAQ,GAAGQ,wBACZR,EAAQ,GAAGS,iBACbznD,OAAOI,KAAK4mD,EAAQ,GAAGS,iBAAiBpnD,SAASwR,IAC/Cm1C,EAAQ56C,IAAI2oB,GAAqBljB,GAAYm1C,EAAQ,GAAGS,gBAAgB51C,GAAW,IAGnFm1C,EAAQ,GAAGU,mBACb1nD,OAAOI,KAAK4mD,EAAQ,GAAGU,mBAAmBrnD,SAASwR,IACjDm1C,EAAQ56C,IAAI2oB,GAAqBljB,GAAYm1C,EAAQ,GAAGU,kBAAkB71C,GAAW,IAGzFm1C,EAAQ,GAAGQ,sBAAwB,KACnCR,EAAQ,GAAGS,gBAAkB,KAC7BT,EAAQ,GAAGU,kBAAoB,YACxBV,EAAQ,GAAGQ,6BACXR,EAAQ,GAAGS,uBACXT,EAAQ,GAAGU,mBA+DbtL,IACC4K,EAAQ,GAAG5O,QAAU4O,EAAQ,GAAG5O,OAAOgF,iBAClC4J,EAAQ,GAAG5O,OAAOgF,SAAShF,OAEpC4O,EAAQ,GAAG5O,OAAS,MAG1B,CAEAK,cACE,MAAMvT,EAASjiC,KACTe,EAASF,IACfohC,EAAOgN,KAAKvvC,QAAUuiC,EAAOviC,QAE3BuiC,EAAO37B,OAAOmoC,gBACdxM,EAAO37B,OAAOu+C,4BACd9jD,EAAO+jD,eAEP/jD,EAAO+jD,aAAc,YAAW7iB,EAAOgN,KAAKruC,cAAgBmkD,KAAKC,UAAU/iB,EAAOviC,SAEtF,CAEAulD,iBACE,MAAMhjB,EAASjiC,KACTe,EAASF,IAEbohC,EAAO37B,OAAOmoC,gBACdxM,EAAO37B,OAAOu+C,4BACd9jD,EAAO+jD,cACP/jD,EAAO+jD,aAAc,YAAW7iB,EAAOgN,KAAKruC,gBAE5CqhC,EAAOviC,QAAUqlD,KAAK7a,MAAMnpC,EAAO+jD,aAAc,YAAW7iB,EAAOgN,KAAKruC,eACxEqhC,EAAOgN,KAAKvvC,QAAUuiC,EAAOviC,QAEjC,CAEAwlD,eACE,MAAMjjB,EAASjiC,KACfiiC,EAAOviC,QAAU,GACbuiC,EAAOgN,OAAMhN,EAAOgN,KAAKvvC,QAAU,IACvCuiC,EAAOuT,aACT,CAEA2P,iBAAiBC,GACf,MAAMnjB,EAASjiC,KACf42C,GAAe3U,EAAQ,oBAEnBA,EAAOviC,QAAQpC,OACjB2kC,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAAK8nD,EAE5CnjB,EAAOviC,QAAQsC,KAAKojD,GAItB,MAAM5yB,MAAEA,EAAK5zB,KAAEA,EAAI0H,OAAEA,EAAMisB,IAAEA,EAAG0Y,KAAEA,GAAShJ,EAAO+Z,cAAcoJ,GAWhE,GAVInjB,EAAOiT,cACTl4C,GAAOilC,EAAOiT,aAAc,CAC1B1iB,QACA5zB,OACA0H,SACAisB,MACA0Y,SAIAhJ,EAAO37B,OAAOmoC,eAAgB,CAChC,MAAM8L,EAAqBtY,EAAO37B,OAAOi0C,oBAAsB,GAC/DxM,GAAQ9lC,QACNg6B,EAAOgN,KAAKruC,GACZ,CACE2xB,IAAK6yB,GAEP7K,EAAqBtY,EAAO37B,OAAOk0C,wBAA0B4K,EAEjE,CAGAnjB,EAAOuT,cAEPvT,EAAO3G,KAAK,iBAAkB2G,EAAOiT,aAAcjT,EACrD,CAEAojB,gBACE,MAAMpjB,EAASjiC,KACf,GAAIiiC,EAAOqjB,WACT,MAAO,CACLA,WAAYrjB,EAAOqjB,WACnBC,gBAAiBtjB,EAAOsjB,iBAG5B,MAAM3nB,IAAEA,EAAGqR,KAAEA,GAAShN,EAChB3iC,EAAWF,IACX2B,EAASF,IAETlC,EACJi/B,EAAIt3B,OAAOisB,KAAiC,iBAAnBqL,EAAIt3B,OAAOisB,KAAmC,oBAARizB,IAC3D,IAAIA,IAAI5nB,EAAIt3B,OAAOisB,KACnBjzB,EAASX,SAEf,IAGI4mD,EAHAD,EAAarjB,EAAO37B,OAAOisB,IAC3BkzB,EAAc9mD,EAASI,KAAKuE,MAAM3E,EAASK,QAAQ,GAGvD,MAAMyvC,eAAEA,EAAciX,qBAAEA,EAAoBlL,wBAAEA,GAA4BvY,EAAO37B,OACjF,IAAIi0C,mBAAEA,GAAuBtY,EAAO37B,OA8DpC,OA5DGvF,EAAO04B,SAAY14B,EAAO64B,WAAa74B,EAAO64B,UAAUqQ,WACzDwE,IACC+L,IACAD,GACD57C,EAASM,SAASyD,QAAQ,gBAG1BijD,QAAQC,KACN,sGAEFrL,EAAqB57C,EAASM,SAASqE,MAAM,cAAc,IAExDmrC,GAAmBiX,GAWlBnL,GAAsBkL,EAAY/iD,QAAQ63C,IAAuB,IACnEkL,EAAcA,EAAYI,UACxBJ,EAAY/iD,QAAQ63C,GAAsBA,EAAmBj9C,QAE3C,KAAhBmoD,IAAoBA,EAAc,MAGtCH,EADE9K,EAAwBl9C,OAAS,GAAKmoD,EAAY/iD,QAAQ83C,IAA4B,EAC3EiL,EAAYI,UACvBJ,EAAY/iD,QAAQ83C,GAA2BA,EAAwBl9C,QAG5DmoD,EAEfxjB,EAAOgjB,iBACHhjB,EAAOviC,QAAQgD,QAAQ4iD,IAAe,EACxCrjB,EAAOviC,QAAUuiC,EAAOviC,QAAQswB,MAAM,EAAGiS,EAAOviC,QAAQgD,QAAQ4iD,GAAc,GACrErjB,EAAO37B,OAAOisB,MAAQ+yB,EAC/BrjB,EAAOviC,QAAU,CAAC4lD,GAElBvX,GAAQc,OACRd,GAAQc,MAAMI,EAAKruC,KACnBmtC,GAAQc,MAAMI,EAAKruC,IAAI2xB,MAAQ0P,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAEtEgoD,EAAarjB,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAEpD2kC,EAAOviC,QAAU,CAAC+lD,EAAYniD,MAAMk3C,GAAyB,IAAM,IAAK8K,GAEtErjB,EAAOviC,QAAQpC,OAAS,EAC1BioD,GAAkB,EAElBtjB,EAAOviC,QAAU,GAEnBuiC,EAAOuT,gBA1CF8P,IACHA,EAAaG,GAEX9mD,EAASQ,QAAUmmD,EAAW5iD,QAAQ,KAAO,IAC/C4iD,GAAc3mD,EAASQ,QAErBR,EAASC,MAAQ0mD,EAAW5iD,QAAQ,KAAO,IAC7C4iD,GAAc3mD,EAASC,OAsC3BqjC,EAAOqjB,WAAaA,EACpBrjB,EAAOsjB,gBAAkBA,EAClB,CAAED,aAAYC,kBACvB,CAEAlmB,OACE,MAAM4C,EAASjiC,MACT49B,IAAEA,EAAGqR,KAAEA,GAAShN,EAChB3iC,EAAWF,IAEjB6iC,EAAOjB,QAEP,MAAMskB,WAAEA,EAAUC,gBAAEA,GAAoBtjB,EAAOojB,iBAI5CpW,GAAQhN,EAAO37B,OAAOw/C,cAA8B,QAAdloB,EAAIxM,OAC1C6d,GAAQhN,EAAO37B,OAAOy/C,aAA6B,OAAdnoB,EAAIxM,QAE1Cqe,GAAUxN,GAGZ,MAAMwM,eACJA,EAAciX,qBACdA,EAAoBM,4BACpBA,EAA2BC,2BAC3BA,GACEhkB,EAAO37B,OAEX,IAAI4uC,EACJ,GAAIjT,EAAOviC,QAAQpC,OAAS,EAAG,CAE7B,MAAM4oD,EAAUD,EAA6BX,EAAarjB,EAAOviC,QAAQ,GACzEw1C,EAAejT,EAAOwW,kBAAkByN,GACnChR,IACHA,EAAel4C,GAAOilC,EAAO+Z,cAAckK,GAAU,CACnDjZ,MAAO,CACL1a,IAAK2zB,EACLjb,KAAMib,EAAQ5iD,MAAM,KAAK,MAIjC,MAEE4xC,EAAejT,EAAOwW,kBAAkB6M,GACnCpQ,IACHA,EAAel4C,GAAOilC,EAAO+Z,cAAcsJ,GAAa,CACtDrY,MAAO,CACL1a,IAAK+yB,EACLra,KAAMqa,EAAWhiD,MAAM,KAAK,OAMpC,GAA4C,IAAxC2+B,EAAOnE,IAAI1/B,SAAS,SAASd,QAAgBgoD,GAAcrjB,EAAO37B,OAAO6/C,gBAE3ElkB,EAAOyM,SAAS4W,EAAY,CAC1BrP,SAAS,EACTqB,eAAe,EACf7I,gBAAgB,EAChBjnC,SAAS,EACT2zB,KAAM,CACJirB,YACE,IAAKb,EAAiB,QAEpBtjB,EAAO37B,OAAOsvC,qBAAuB3T,EAAO37B,OAAQ,GAAEs3B,EAAIxM,oBACjC6Q,EAAOviC,QAAQpC,OAAS,GACjD2kC,EAAOniC,KAAK,CAAE+1C,SAAS,G,EAG3BwQ,cACE,IAAKd,EAAiB,QAEpBtjB,EAAO37B,OAAOsvC,qBAAuB3T,EAAO37B,OAAQ,GAAEs3B,EAAIxM,oBACjC6Q,EAAOviC,QAAQpC,OAAS,GACjD2kC,EAAOniC,KAAK,CAAE+1C,SAAS,GAE3B,UAGC,GAAI5T,EAAOnE,IAAI1/B,SAAS,SAASd,OAAQ,CAE9C,IAAIgpD,EA8DJ,GA7DArkB,EAAOiT,aAAeA,EACtBjT,EAAOnE,IAAI1/B,SAAS,SAAS+I,MAAMkyC,IACjC,MAAM0K,EAAU1hD,EAAEg3C,GAClB,IAAIH,EACJjX,EAAOiZ,gBAAgB6I,EAAS,WAC5B9hB,EAAO+N,gBACTkJ,EAAY6K,EAAQ3lD,SAAS,WACzB86C,EAAU57C,OAAS,GAChB2kC,EAAOyN,WAAWzlC,QAAQ3K,GAAUhC,QACvC2kC,EAAOnE,IAAIzuB,QAAQ4yB,EAAOyN,YAE5BzN,EAAOgT,kBAAkBiE,EAAW,WACpCjX,EAAOyN,WAAW/lC,OAAOuvC,GACrBA,EAAU96C,SAAS,gBAAgBd,QACrC47C,EAAU5W,SAAS,gBAErByhB,EAAQ3lD,SAAS,WAAWyM,WAE5Bo3B,EAAOyN,WAAWpN,SAAS,iBACvB4W,EAAU96C,SAAS,gBAAgBd,QACrC2kC,EAAOyN,WAAWpN,SAAS,uCAK/BL,EAAOiT,cACPjT,EAAOiT,aAAajI,SACkB,IAArChL,EAAOiT,aAAajI,MAAM6K,QACoB,mBAArC7V,EAAOiT,aAAajI,MAAM6K,QAChC7V,EAAOiT,aAAajI,MAAM6K,OAAOla,EAAKqE,KAC1CA,EAAO37B,OAAOkrC,uBAAyB,IAEvCuS,EAAQzhB,SAAS,eACjByhB,EAAQlgD,QAAQ,YAAa,CAAEi2C,KAAM,WACjCZ,GAAaA,EAAU57C,QACzB47C,EAAU5W,SAAS,iBAErB2M,EAAKgM,+BAEP,MAAMsL,EAAc,CAClBtZ,MAAOhL,EAAOiT,cAEZjT,EAAOiT,cAAgBjT,EAAOiT,aAAajI,OAAShL,EAAOiT,aAAajI,MAAM/6B,SAChFlV,GAAOupD,EAAatkB,EAAOiT,aAAajI,MAAM/6B,SAEhD+vB,EAAOoS,cAAgB0P,EAAQ,GAC3B9hB,EAAO+N,eAAiBkJ,EAAU57C,SACpC2kC,EAAOsS,gBAAkB2E,EAAU,IAErCjX,EAAOgX,oBAAoB8K,GACvB9hB,EAAO+N,eAAiBkJ,EAAU57C,QACpC2kC,EAAOgX,oBAAoBC,GAEzBqN,EAAYtZ,MAAMA,MAAM8N,MAC1BuL,GAAc,EACdrkB,EAAO+Y,QAAQuL,EAAYtZ,MAAMA,MAAM8N,IAAK/9C,GAAO,GAAIupD,KAEzDtkB,EAAOoT,aAAa,OAAQ0O,EAAS7K,EAAW,eAAW5vC,EAAWi9C,GACtEtkB,EAAOoT,aAAa,WAAY0O,EAAS7K,EAAW,eAAW5vC,EAAWi9C,GAC1EtkB,EAAOoT,aAAa,UAAW0O,EAAS7K,EAAW,eAAW5vC,EAAWi9C,EAAY,IAEnFhB,EACF,GAAIU,EAA4B,EAE5BhkB,EAAO37B,OAAOsvC,qBAAuB3T,EAAO37B,OAAQ,GAAEs3B,EAAIxM,oBACjC6Q,EAAOviC,QAAQpC,OAAS,GACjD2kC,EAAOniC,KAAK,CAAE+1C,SAAS,GAE3B,MACE5T,EAAOyM,SAAS4W,EAAY,CAC1BrP,SAAS,EACTxH,gBAAgB,EAChB/uC,SAAS,EACT8H,QAASw+C,EACT7qB,KAAM,CACJkrB,eAEIpkB,EAAO37B,OAAOsvC,qBAAuB3T,EAAO37B,OAAQ,GAAEs3B,EAAIxM,oBACjC6Q,EAAOviC,QAAQpC,OAAS,GACjD2kC,EAAOniC,KAAK,CAAE+1C,SAAS,GAE3B,KAKH0P,GAAoBe,IACvBrkB,EAAOviC,QAAQsC,KAAKsjD,GACpBrjB,EAAOuT,cAEX,GAEE8P,GACA7W,GACAiX,IACE3X,GAAQc,OAAUd,GAAQc,MAAMI,EAAKruC,KAEvCmtC,GAAQqB,cAAcH,EAAKruC,GAAI,CAC7B2xB,IAAK+yB,IAGTrjB,EAAO3G,KAAK,yBAA0B2G,EACxC,CAEAlE,UACE,IAAIkE,EAASjiC,KAEbiiC,EAAO3G,KAAK,+BAAgC2G,GAG5CllC,OAAOI,KAAK8kC,GAAQ7kC,SAASopD,IAC3BvkB,EAAOukB,GAAc,YACdvkB,EAAOukB,EAAW,IAG3BvkB,EAAS,IACX,EAIFwb,GAAOv7C,UAAUwsC,SF9oBjB,SAAkB+X,EAAgBC,QAAe,IAAfA,MAAkB,IAClD,MAAMzkB,EAASjiC,KAEf,GAAIiiC,EAAO0S,gBAAiB,OAAO1S,EACnC,IAAI1P,EACAo0B,EACAnjD,EACAynC,EACAzY,EACAlsB,EACA2mC,EAWJ,GAV8B,iBAAnBwZ,EACTl0B,EAAMk0B,GAENl0B,EAAMk0B,EAAel0B,IACrBo0B,EAAcF,EAAexZ,MAC7BzpC,EAAOijD,EAAejjD,KACtBynC,EAAOwb,EAAexb,KACtBzY,EAAQi0B,EAAej0B,MACvBlsB,EAASmgD,EAAengD,QAEtB9C,GAAQynC,EAEV,OADA1Y,EAAM0P,EAAOsf,YAAY,CAAEtW,OAAMznC,OAAM8C,SAAQksB,UAC3CD,EACK0P,EAAOyM,SAASnc,EAAKm0B,GAEvBzkB,EAET,MAAMrE,EAAMqE,EAAOrE,IAEnB,GADAgZ,GAAe3U,EAAQ,YACX,MAAR1P,GAAuB,KAARA,EACjB,OAAO0P,EAGT,IAAI2kB,EAAcr0B,EAAItqB,QAAQ,KAAM,IACpC,GAAuB,MAAnB2+C,EAAY,IAA2C,IAA7BA,EAAYlkD,QAAQ,KAAY,CAC5D,MAAMmkD,EAAc5kB,EAAOiT,aAAa0G,YAAc3Z,EAAOiT,aAAajK,KAC1E2b,IAAgBC,EAAe,GAAEA,KAAiB,KAAOD,GACtD3+C,QAAQ,MAAO,KACfA,QAAQ,KAAM,IACnB,CASA,GAPEglC,EADE0Z,EACM3pD,GAAOilC,EAAO+Z,cAAc4K,GAAc,CAChD3Z,MAAOjwC,GAAO,GAAI2pD,KAGZ1kB,EAAOwW,kBAAkBmO,IAG9B3Z,EACH,OAAOhL,EAET,GAAIgL,EAAMA,OAASA,EAAMA,MAAM6Z,SAAU,CACvC,MAAMC,EAAkB9Z,EAAMA,MAAM6Z,SAC9BE,EAAcppB,EAAIoR,MAAM+X,GAC9B,IAAKC,EACH,MAAM,IAAI/iC,MACP,sCAAqC8iC,4CAG1C,GAAIC,IAAgB/kB,EAAOgN,KACzB,OAAO+X,EAAY/kB,OAAOyM,SAAS+X,EAAgBC,EAEvD,CAEA,GAAIzZ,EAAMA,MAAM8I,SACd,OAAOA,GAAS3zC,KAAK6/B,EAAQ,UAAWgL,EAAOyZ,GAGjD,MAAMx0C,EAAU,GAOhB,GANI+6B,EAAMA,MAAM/6B,QACdlV,GAAOkV,EAAS+6B,EAAMA,MAAM/6B,QAASw0C,GAErC1pD,GAAOkV,EAASw0C,GAIhBx0C,EAAQ+0C,UACNhlB,EAAO37B,OAAO4gD,cAAiBjlB,EAAO37B,OAAO4gD,cAAgBjlB,EAAOviC,QAAQpC,OAAS,GAEvF,OAAO2kC,EAAOglB,OAAOhlB,EAAQ2kB,EAAa10C,GAK5C,SAAS8wB,IACP,IAAImkB,GAAe,EAqBnB,SAASC,EAAaC,EAAeC,GACnCrlB,EAAOkN,iBAAkB,EACzB,IAAIoY,GAAkB,EAEtB,4DACGjkD,MAAM,KACNlG,SAASi7C,IACR,GAAIgP,EAAchP,GAAgB,CAChCkP,GAAkB,EAClB,MAAMC,EAAaxqD,GAAO,GAAIiwC,EAAO,CAAEA,MAAOoa,IAC9CplB,EAAOkN,iBAAkB,EACzBlN,EAAOwlB,UAAUpP,EAAemP,EAAYxqD,GAAOkV,EAASo1C,GAAiB,UAC/E,KAEAC,GACJhM,GAAKtZ,EAAQolB,EAAerqD,GAAOkV,EAASo1C,IAAiB,EAC/D,CACA,SAASI,IACPzlB,EAAOkN,iBAAkB,CAC3B,CAvCA,4DACG7rC,MAAM,KACNlG,SAASi7C,IACJpL,EAAMA,MAAMoL,KAAmB8O,IACjCA,GAAe,EACfllB,EAAOwlB,UAAUpP,EAAepL,EAAO/6B,EAAS,WAClD,IAEA+6B,EAAMA,MAAMkM,WAAalM,EAAMA,MAAMmM,gBACvCmC,GAAKtZ,EAAQ,CAAEngC,GAAImrC,EAAMA,MAAMmM,cAAcC,QAAUnnC,GAAS,GAChEi1C,GAAe,GAEjB,iDAAiD7jD,MAAM,KAAKlG,SAASuqD,IAC/D1a,EAAMA,MAAM0a,KAAkBR,IAChCA,GAAe,EACf5L,GAAKtZ,EAAQ,CAAE0lB,CAACA,GAAe1a,EAAMA,MAAM0a,IAAiBz1C,GAAS,GACvE,IAEEi1C,IAsBAla,EAAMA,MAAM2a,QACd3lB,EAAOkN,iBAAkB,EACzBlC,EAAMA,MAAM2a,MAAMxlD,KAAK6/B,EAAQ,CAC7BA,SACA7gB,GAAIlP,EAAQ+6B,MACZrtB,KAAMqiB,EAAOiT,aACblS,QAASokB,EACTnkB,OAAQykB,EACR1R,UAAW,UACXpY,SAGAqP,EAAMA,MAAM4J,gBACdA,GAAe5U,EAAQgL,EAAMA,MAAM4J,eAAgBuQ,EAAcM,GAErE,CACA,SAASzkB,IACPhB,EAAOkN,iBAAkB,CAC3B,CAEA,GAhEAj9B,EAAQ+6B,MAAQA,EAgEZhL,EAAO37B,OAAOkrC,uBAAyB,GAAKvE,EAAMA,MAAM8P,YAAa,CAEvE,IAAI8K,GAAgB,EAChBC,GAAe,EAoBnB,GAnBI7lB,EAAOiT,cAAgBjT,EAAOiT,aAAajI,WAEL,IAArChL,EAAOiT,aAAajI,MAAM6K,QACoB,mBAArC7V,EAAOiT,aAAajI,MAAM6K,QAChC7V,EAAOiT,aAAajI,MAAM6K,OAAOla,EAAKqE,KACzCA,EAAOiT,aAAajI,QAAUA,EAAMA,MAAM8P,aACzC9a,EAAOiT,aAAajI,MAAMhC,OAASgC,EAAMA,MAAM8P,YAAY9R,OAE7D4c,GAAgB,IAGhB5lB,EAAOiT,aAAajI,MAAM8P,aACzB9a,EAAOiT,aAAajI,MAAM8P,cAAgB9P,EAAMA,MAAM8P,aACrD9a,EAAOiT,aAAajI,MAAM8P,YAAY9R,OAASgC,EAAMA,MAAM8P,YAAY9R,OAEzE4c,GAAgB,EAChBC,GAAe,IAGfD,GAAkBC,GAAgBpB,EAAgBjP,UA2BpD,OA1BAxV,EAAOyM,SACL,CAAEzD,KAAMgC,EAAMA,MAAM8P,YAAY9R,KAAM3kC,OAAQ2mC,EAAM3mC,QAAU,IAC9D,CACEkB,SAAS,EACTiwC,UAAWiP,EAAgBjP,UAC3BH,cAAeoP,EAAgBpP,cAC/BE,eAAgBkP,EAAgBlP,eAChC/I,gBAAiBiY,EAAgBzQ,QACjCv2C,SAAUgnD,EAAgBzQ,QAC1B9a,KAAM,CACJkrB,cACEpkB,EAAOyM,SACL+X,EACAzpD,GAAO,GAAI0pD,EAAiB,CAC1Bl/C,SAAS,EACTiwC,WAAW,EACXH,eAAe,EACfE,gBAAgB,EAChB93C,SAAUgnD,EAAgBzQ,QAC1BxH,gBAAiBiY,EAAgBzQ,UAGvC,KAIChU,CAEX,CA6BA,OA3BAqU,GAAkBl0C,KAChB6/B,EACAgL,EACAhL,EAAOiT,cACP,KACMjI,EAAMA,MAAM9Q,QACdyB,EACG8E,YACCzhC,MAAMc,QAAQkrC,EAAMA,MAAM9Q,SAAW8Q,EAAMA,MAAM9Q,QAAU,CAAC8Q,EAAMA,MAAM9Q,UAEzEuH,MAAK,KACJV,GAAS,IAEVc,OAAM,KACLb,GAAQ,IAGZD,GACF,IAEF,KACEC,GAAQ,GAEV,WAIKhB,CACT,EE0aAwb,GAAOv7C,UAAU6lD,YFt4CjB,SAAqB3hD,QAAK,IAALA,MAAQ,IAC3B,MAAM67B,EAASjiC,KAEf,OADA42C,GAAe3U,EAAQ,eAChBA,EAAOyM,SAASzM,EAAOiT,aAAa3iB,IAAK,CAC9CuwB,aAAa,EACbxL,eAAe,EACflxC,SAEJ,EEg4CAq3C,GAAOv7C,UAAU84C,QC54CjB,SAAiB+F,EAAUtF,QAAW,IAAXA,MAAc,IACvC,MAAMxZ,EAASjiC,KACTkS,EAAUlV,GACd,CACEwK,QAASy6B,EAAO37B,OAAOkB,QACvBinC,gBAAgB,EAChB/uC,SAAS,EACTsoD,aAAc,KACdnS,SAAS,EACT/xC,GAAI,IAEN23C,GAGF,IAAIvG,EACAS,EACAzjC,EAAQ+6B,QAEL/6B,EAAQ2jC,SAAW3jC,EAAQ+6B,QAAUhL,EAAOiT,eAC/CS,EAAgB1T,EAAO0T,cACvB1T,EAAOiT,aAAehjC,EAAQ+6B,OAE5B/6B,EAAQ2jC,SACVX,EAAehjC,EAAQ+6B,MACvB0I,EAAgB1T,EAAOiT,eAEvBA,EAAejT,EAAOiT,aACjBS,IAAeA,EAAgB1T,EAAO0T,gBAIzC1T,EAAO37B,OAAOmoC,gBAAkBv8B,EAAQu8B,iBAAmBv8B,EAAQslC,gBACrEzJ,GAAQ9L,EAAO37B,OAAO2hD,oBACpBhmB,EAAOgN,KAAKruC,GACZ,CACE2xB,IAAKrgB,EAAQ+6B,MAAM1a,MAEpB0P,EAAO37B,OAAOi0C,oBAAsB,IACnCtY,EAAO37B,OAAOk0C,wBACdtoC,EAAQ+6B,MAAM1a,KAKhBrgB,EAAQxS,UACVuiC,EAAOviC,QAAQoH,KAAK+B,IAAIo5B,EAAOviC,QAAQpC,OAAS,EAAG,IAAM4U,EAAQ+6B,MAAM1a,IACvE0P,EAAOuT,gBAKX,MAAM0S,EAAgB7lD,EAAE6P,EAAQ81C,cAAgB/lB,EAAOoS,eACvD,IAAI4L,EAEFA,EADEiI,EAAc5qD,QAAU4qD,EAAcrW,KAAM,IAAGkP,EAASngD,MAAMtD,OACxD4qD,EAAcrW,KAAM,IAAGkP,EAASngD,MAAMsJ,GAAG,GACxC+3B,EAAOgN,KAAK3sC,SACZ,GAAE2/B,EAAOgN,KAAK3sC,aAAay+C,EAASngD,KAEpC,IAAGmgD,EAASngD,KAEvB,MAAMunD,EAAgBlmB,EAAOrE,IAAImd,IAAIqN,KAAK,CACxCnI,QACAz4C,QAAS0K,EAAQ1K,QACjBu5C,SAAU7uC,EAAQ+6B,SAGdob,UAAEA,EAASC,UAAEA,EAASC,SAAEA,EAAQC,cAAEA,GAAkBL,EAE1D,GAAIE,GAAaA,EAAUp+C,QAAQ,SAAS3M,OAAS,GAAK4U,EAAQ+6B,MAAO,CACvE,MAAMwb,EAAoBJ,EAAUp+C,QAAQ,SAAS,GAAGkrC,OACpDsT,GAAqBv2C,EAAQ+6B,QAC/Bwb,EAAkBxb,MAAQ/6B,EAAQ+6B,MAEtC,CA8BA,GAAIob,EAAU,GAAGK,kBACf,OAAKJ,GAAcA,EAAUhrD,QACzBirD,EACFC,GAAc,KACZvmB,EAAO3G,KAAK,eAAgB2G,EAAOiT,aAAcjT,EAAO0T,cAAe1T,EAAO,IAGhFA,EAAO3G,KAAK,eAAgB2G,EAAOiT,aAAcjT,EAAO0T,cAAe1T,GAElEA,GARqCA,EAY9C,SAAS0mB,EAAQC,EAAeC,GAE9B,MAAMt2B,IAAEA,EAAGtE,QAAEA,EAAOnsB,GAAEA,EAAEma,UAAEA,EAASwjB,aAAEA,GAAiBmpB,EAEtD,SAAS5lB,EAAQ8lB,GACf7mB,EAAOkN,iBAAkB,EACpB2Z,IACoB,iBAAdA,EACTT,EAAU7lD,KAAKsmD,IAEfT,EAAU7lD,KAAK,IACXsmD,EAAUzmB,YACZymB,EAAUzmB,YAAYrB,OAAO2Z,IAC3B0N,EAAU1+C,OAAOgxC,EAAY,IAG/B0N,EAAU1+C,OAAOm/C,IAGrBT,EAAU,GAAGK,mBAAoB,EA3DrC,SAAqBI,GAEnB7mB,EAAOgX,oBAAoBoP,GAE3B,IAAIU,EAAiBV,EACI,iBAAdS,IAAwBC,EAAiB1mD,EAAEymD,IAEtDC,EAAellD,QAAQ,uBAAwBk9C,GAC/C9e,EAAO3G,KAAK,qBAAsB+sB,EAAU,GAAItH,GAE5CuH,GAAaA,EAAUhrD,SACrBirD,EACFC,GAAc,KACZvmB,EAAO3G,KAAK,eAAgB2G,EAAOiT,aAAcjT,EAAO0T,cAAe1T,GACnEA,EAAO37B,OAAO0iD,kBAChB/mB,EAAOgnB,UAAUX,EAAWD,EAAWtH,EACzC,KAGF9e,EAAO3G,KAAK,eAAgB2G,EAAOiT,aAAcjT,EAAO0T,cAAe1T,GACnEA,EAAO37B,OAAO0iD,kBAChB/mB,EAAOgnB,UAAUX,EAAWD,EAAWtH,IAI/C,CAmCImI,CAAYJ,GACd,CAMA,GAAI76B,EACF+U,EAAQ/U,QACH,GAAInsB,EACTkhC,EAAQlhC,QACH,GAAIma,GAAawjB,EAEtB,IACEwC,EAAOknB,mBAAmB,CACxBlJ,MAAOoI,EAAU,GACjBpsC,YACAwjB,eACAvtB,QAAS22C,EACT7lB,UACAC,OAlBN,WAEE,OADAhB,EAAOkN,iBAAkB,EAClBlN,CACT,G,CAiBI,MAAO8B,GAEP,MADA9B,EAAOkN,iBAAkB,EACnBpL,CACR,MACSxR,IAEL0P,EAAOoa,qBACTpa,EAAOoa,mBAAmBC,QAC1Bra,EAAOoa,oBAAqB,GAE9Bpa,EACGsa,WAAWhqB,EAAKs2B,GAChBnlB,MAAM0lB,IACLpmB,EAAQomB,EAAW,IAEpBtlB,OAAM,KACL7B,EAAOkN,iBAAkB,CAAI,IAGrC,CAEA,IAAIka,EASJ,SAASjC,EAAaC,EAAeC,GACnCqB,EAAQtB,EAAerqD,GAAOkV,EAASo1C,GACzC,CACA,SAASI,IACPzlB,EAAOkN,iBAAkB,CAC3B,CAgBA,MA7BA,wCAAwC7rC,MAAM,KAAKlG,SAASksD,IACtDvI,EAASuI,KACXD,GAAqB,EACrBV,EAAQ,CAAEW,CAACA,GAAcvI,EAASuI,IAAgBp3C,GACpD,IAUE6uC,EAAS6G,MACX7G,EAAS6G,MAAMxlD,KAAK6/B,EAAQ,CAC1BA,SACA7gB,GAAI8zB,EACJt1B,KAAM+1B,EACN3S,QAASokB,EACTnkB,OAAQykB,EACR9pB,IAAKqE,EAAOrE,MAELmjB,EAASlK,eAClBA,GAAe5U,EAAQ8e,EAASlK,eAAgBuQ,EAAcM,GACpD2B,IACVpnB,EAAOkN,iBAAkB,GAGpBlN,CACT,ED2rCAwb,GAAOv7C,UAAU+mD,UC1rCjB,SAAmBX,EAAWD,EAAWtH,GAGvC,IAAIwI,EACAjB,EAAU,KACZA,EAAU,GAAGI,mBAAoB,SAC1BJ,EAAU,GAAGI,mBAEtBJ,EAAUlqD,WAAW+I,MAAM+4C,IACrBA,EAAS7d,cACXknB,GAAuB,EACvBlnD,EAAE69C,GAAUr8C,QAAQ,mBAAoBk9C,GACxCb,EAAS7d,YAAYtE,UACvB,IAEGwrB,GACHjB,EAAUzkD,QAAQ,mBAAoBk9C,GAfzB/gD,KAiBRs7B,KAAK,kBAAmBgtB,EAAU,GAAID,EAAU,GAAItH,GAjB5C/gD,KAkBRggD,iBAAiBsI,EAAU,GAAIvH,EACxC,EDwqCAtD,GAAOv7C,UAAUulD,UEh5CjB,SAAmBxP,EAAWhL,EAAOwO,EAAkBzF,QAAP,IAAXyF,MAAc,IACjD,MAAMxZ,EAASjiC,KACT49B,EAAMqE,EAAOrE,IACb4rB,EAAwB,UAAdvR,EACVwR,EAAeD,EAAU,QAAU,QAEnCt3C,EAAUlV,GACd,CACEwK,QAASy6B,EAAO37B,OAAOkB,QACvBinC,gBAAgB,EAChB/uC,SAAS,EACToE,GAAI,GACJq3B,KAAM,IAERsgB,GAGIiO,EAAc1sD,GAAO,GAAIiwC,EAAMA,MAAMgL,IACrCuP,EAAava,EAAMA,MAEnB0c,EAAgBA,CAACvR,EAAO50C,KAC5B,MAAMM,GAAEA,EAAEq3B,KAAEA,GAASjpB,EACrB,IAAIxR,EACS,SAAT8C,IACF9C,EAAWoD,EAAGsiD,WAAajrB,EAAKirB,WAAatiD,EAAG8lD,WAAazuB,EAAKyuB,WAEvD,UAATpmD,IACF9C,EAAWoD,EAAG+lD,YAAc1uB,EAAK0uB,YAAc/lD,EAAGgmD,YAAc3uB,EAAK2uB,YAE1D,WAATtmD,IACF9C,EAAWoD,EAAGimD,aAAe5uB,EAAK4uB,aAAejmD,EAAGkmD,aAAe7uB,EAAK6uB,aAEtEtpD,GAAUA,EAAS03C,EAAM,EAG/B,SAAS6R,IAEP,MAAM7R,EAAQxa,EAAIqa,GAAWnb,OAAO4sB,GACpClC,EAAWjP,cAAgBH,EAE3B,MAAM8R,EAAQ9R,EAAMt2C,GAEpB,SAASqoD,IACP/R,EAAM7Z,OACR,CACA6Z,EAAMt0C,GAAI,GAAE2lD,SAAoB,KACzBS,IAEHjoB,EAAOgX,oBAAoBb,EAAMt2C,IAGjCs2C,EAAMta,IAAIj6B,QACP,GAAEo0C,EAAUxtC,sBAAsBwtC,EAAUxtC,wBAC7CwiC,EACAmL,GAEFnW,EAAO3G,KACJ,GAAGkuB,EAAwB,GAAd,eAAoBvR,SAAiBA,WACnDG,EAAMt2C,GACNmrC,EACAmL,IAGJnW,EAAO9G,KAAK,gBAAiBgvB,GAC7BR,EAAcvR,EAAO,OAAO,IAE9BA,EAAMt0C,GAAI,GAAE2lD,UAAqB,KAC/BxnB,EAAO94B,IAAI,gBAAiBghD,GACvB/R,EAAMgS,eACTnoB,EAAOniC,OAET6pD,EAAcvR,EAAO,QAAQ,IAG/BA,EAAMt0C,GAAI,GAAE2lD,WAAsB,KAChCrR,EAAMta,IAAIj6B,QAAS,GAAEo0C,EAAUxtC,6BAA8BwiC,EAAOmL,GACpEA,EAAM9c,KACH,GAAGkuB,EAAiC,GAAvB,uBAA4BvR,gBAC1CG,EAAMt2C,GACNmrC,EACAmL,GAEF,MAAMiS,EAAiBjS,EAAMt2C,GAAGugC,YAChCsnB,EAAcvR,EAAO,UACjBiS,GACFA,EAAetsB,UAEjB7L,IAAS,MAELm4B,GACAX,EAAYztC,WACZytC,EAAY7S,gBACZ6S,EAAY9B,QAEZ3lB,EAAO6d,YAAY1H,EAAMt2C,IAE3Bs2C,EAAMra,iBACCqa,EAAMnL,aACNua,EAAWjP,aAAa,GAC/B,IAGArmC,EAAQ+6B,QAENhL,EAAO37B,OAAOmoC,gBAAkBv8B,EAAQu8B,gBAC1CV,GAAQ/rC,KACNigC,EAAOgN,KAAKruC,GACZ,CACE2xB,IAAKrgB,EAAQ+6B,MAAM1a,IACnB6lB,MAAOH,IAERhW,EAAO37B,OAAOi0C,oBAAsB,IACnCtY,EAAO37B,OAAOk0C,wBACdtoC,EAAQ+6B,MAAM1a,KAKhBrgB,EAAQ+6B,QAAUhL,EAAOiT,eAC3BkD,EAAMnL,MAAQjwC,GAAOkV,EAAQ+6B,MAAO,CAAEmL,UACtCnW,EAAOiT,aAAekD,EAAMnL,OAI1B/6B,EAAQxS,UAAYwS,EAAQolC,gBAC9BrV,EAAOviC,QAAQsC,KAAKkQ,EAAQ+6B,MAAM1a,KAClC0P,EAAOuT,gBAIP0U,IAEFjoB,EAAOgX,oBAAoBb,EAAMt2C,IAGjCs2C,EAAMta,IAAIj6B,QACP,GAAEo0C,EAAUxtC,sBAAsBwtC,EAAUxtC,wBAC7CwiC,EACAmL,GAEFnW,EAAO3G,KACJ,GAAEmuB,SAAoBxR,SAAiBA,WACxCG,EAAMt2C,GACNmrC,EACAmL,IAKJA,EAAMna,MAAyB,IAApB/rB,EAAQ1K,UAAyC,IAApB0K,EAAQ1K,QAAmB0K,EAAQ1K,aAAU8B,EACvF,CAGA,SAASghD,EAAUC,EAAiBC,GAElC,MAAMj4B,IAAEA,EAAGtE,QAAEA,EAAOhS,UAAEA,EAASwjB,aAAEA,GAAiB8qB,EAGlD,SAASvnB,EAAQ8lB,GACXA,IACuB,iBAAdA,EACTY,EAAYz7B,QAAU66B,EACbA,EAAUzmB,YACnBymB,EAAUzmB,YAAYrB,OAAO2Z,IAC3B+O,EAAY5nD,GAAK64C,EACjB/c,EAAIE,IAAIn0B,OAAOgxC,EAAY,IAG7B+O,EAAY5nD,GAAKgnD,EAEnBmB,IAEJ,CAMA,GAAIh8B,EACF+U,EAAQ/U,QACH,GAAIhS,GAAawjB,EAEtB,IACEwC,EAAOwoB,qBAAqB,CAC1BxpB,OAAQrD,EAAI97B,GACZma,YACAwjB,eACAvtB,QAASs4C,EACTxnB,UACAC,OAhBN,WAEE,OADAhB,EAAOkN,iBAAkB,EAClBlN,CACT,G,CAeI,MAAO8B,GAEP,MADA9B,EAAOkN,iBAAkB,EACnBpL,CACR,MACSxR,GAEL0P,EAAOoa,qBACTpa,EAAOoa,mBAAmBC,QAC1Bra,EAAOoa,oBAAqB,GAE9Bpa,EACGsa,WAAWhqB,EAAKi4B,GAChB9mB,MAAMgnB,IACLhB,EAAYz7B,QAAUy8B,EACtBT,GAAe,IAEhBnmB,OAAM,KACL7B,EAAOkN,iBAAkB,CAAI,KAGjC8a,GAEJ,CAEA,IAAIU,EAYJ,SAASvD,EAAaC,EAAeC,GACnCgD,EAAUjD,EAAerqD,GAAOkV,EAASo1C,GAC3C,CACA,SAASI,IACPzlB,EAAOkN,iBAAkB,CAC3B,CAeA,MA/BA,iDAAiD7rC,MAAM,KAAKlG,SAASi7C,IAC/DqR,EAAYrR,KAAmBsS,IACjCA,GAAgB,EAChBL,EAAU,CAAEjS,CAACA,GAAgBqR,EAAYrR,IAAkBnmC,GAC7D,IAEGy4C,GAA+B,YAAd1S,GACpBgS,IAUEP,EAAY9B,OACd8B,EAAY9B,MAAMxlD,KAAK6/B,EAAQ,CAC7BA,SACA7gB,GAAIlP,EAAQ+6B,MACZrtB,KAAMqiB,EAAOiT,aACblS,QAASokB,EACTnkB,OAAQykB,EACR1R,YACApY,QAGA8rB,EAAY7S,gBACdA,GAAe5U,EAAQynB,EAAY7S,eAAgBuQ,EAAcM,GAE5DzlB,CACT,EFypCAwb,GAAOv7C,UAAUw2C,YExpCjB,SAAqBN,GACnBp7C,GAAOo7C,EAAO,CAAEgS,eAAe,IAC/BhS,EAAM7Z,OACR,EFupCAkf,GAAOv7C,UAAUpC,KDr2BjB,WACE,MAAMmiC,EAASjiC,KACT64B,EAASN,KACf,GAAI0J,EAAO0S,gBAAiB,OAAO1S,EACnC,IAAI2kB,EACAF,EACAkE,EACA3d,EACmB,iBAAnBvpC,UAAApG,QAAA,OAAAgM,EAAA5F,UAAA,IACFgjD,GAAkBhjD,UAAApG,QAAAgM,SAAA5F,UAAW,SAE7BkjD,EAAWljD,UAAApG,QAAA,OAAAgM,EAAA5F,UAAU,GACrBgjD,GAAkBhjD,UAAApG,QAAAgM,SAAA5F,UAAW,SAG/B,MAAMF,KAAEA,EAAI8C,OAAEA,EAAMksB,MAAEA,GAAUk0B,EAChC,GAAIljD,EAEF,OADAojD,EAAc3kB,EAAOsf,YAAY,CAAE/9C,OAAM8C,SAAQksB,UAC7Co0B,EACK3kB,EAAOniC,KACZ8mD,EACA5pD,GAAO,GAAI0pD,EAAiB,CAC1BljD,KAAM,KACN8C,OAAQ,KACRksB,MAAO,QAINyP,EAGT,MAAMrE,EAAMqE,EAAOrE,IACnBgZ,GAAe3U,EAAQ,QAEvB,IACIgW,EADAE,EAAsBlW,EAAOiT,aAAakD,MAY9C,GAVKD,GACH,4DACG70C,MAAM,KACNlG,SAASi7C,IACJpW,EAAOiT,aAAajI,MAAMoL,KAC5BF,GAAsB,EACtBF,EAAYI,EACd,IAGFF,IAAwBuO,EAAgB7Q,QAAS,CACnD,MAAMyC,EACJrW,EAAOiT,aAAakD,OAASnW,EAAOiT,aAAajI,MAAMsL,eAAiB3a,EAAIqa,GAAW12C,MACnFi3C,EAAcvW,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GAC3D,IAAIq4C,EAEJ,GAAI2C,GAAgBA,EAAaxa,IAAK,CACpC,MAAM+sB,EAAmBvS,EAAaxa,IAAI/sB,QAAQ,aAClD,GAAI85C,EAAiBvtD,QAAUutD,EAAiB,GAAGvsB,QAAS,CAC1D,MAAMF,EAAUysB,EAAiB,GAE5B5oB,EAAOnE,IAAI7zB,QAAQm0B,GAAS9gC,SAC/Bq4C,EAAgBvX,EAAQE,QAAQ2O,MAEpC,CACF,CAgBA,GAfK0I,IACHA,EAAgB1T,EAAOwW,kBAAkBD,KAGtC7C,GAAiB6C,IACpB7C,EAAgB,CACdpjB,IAAKimB,EACLvN,KAAMuN,EAAYl1C,MAAM,KAAK,GAC7BkvB,MAAOF,GAAckmB,GACrBvL,MAAO,CACLhC,KAAMuN,EAAYl1C,MAAM,KAAK,GAC7BivB,IAAKimB,OAINoO,GAAkE,IAAnDA,EAAY3+C,QAAQ,QAAS,IAAIxF,OAAOnF,QACrDq4C,GAAkB2C,GACrB,OAAOrW,EAGX,MAAM6oB,EAAgBpE,EAAgB1J,OAASrH,GAAiBiR,EAChE,GAAIjR,GAAiB2C,EAAc,CACjC,MAAMyS,EAAyBlyB,EAAOQ,IAAMR,EAAOO,MAASP,EAAOS,UAAYT,EAAOxC,IAChF20B,EACJ/oB,EAAO37B,OAAOmoC,iBAAqD,IAAnCiY,EAAgBjY,eAC5Cwc,EACJhpB,EAAOiT,cACPjT,EAAOiT,aAAajI,OACpBhL,EAAOiT,aAAajI,MAAM/6B,UAC2B,IAArD+vB,EAAOiT,aAAajI,MAAM/6B,QAAQu8B,gBAChCuc,GAAoBD,GAA2BE,GACjDld,GAAQjuC,OAEVmiC,EAAOiT,aAAeS,EACtB1T,EAAOviC,QAAQ2uC,MACfpM,EAAOwY,aAAapM,MACpBpM,EAAOuT,cAEHwV,GAAmBD,IAA2BE,GAChDld,GAAQjuC,OAGVmiC,EAAOyW,YAAYJ,GACfwS,GACF7oB,EAAOyM,SAASkY,EAAa,CAAEtP,eAAe,G,MAEvCgB,IACTrW,EAAOyW,YAAYJ,GACfsO,GACF3kB,EAAOyM,SAASkY,EAAa,CAAEtP,eAAe,KAGlD,OAAOrV,CACT,CACA,IAKIipB,EALAC,EAAgBlpB,EAAOnE,IACxB1/B,SAAS,iBACT2S,QAAQ,oCACR7G,GAAG,GAGN,GAAI+3B,EAAO37B,OAAOkrC,uBAAyB,EAAG,CAC5C,MAAM7rC,EAAU,GAChBs8B,EAAOnE,IAAI1/B,SAAS,SAAS+I,MAAMkyC,IACjC1zC,EAAQ3D,KAAKq3C,EAAO9tC,UAAU,IAGhC,MAAM6/C,EAAkBnpB,EAAOnE,IAAI1/B,SAAS,iBAAiB2S,QAAQ,gBAAgB7G,GAAG,GACxF,GAAIkhD,EAAgB9tD,OAAQ,CAC1B,MAAM+tD,EAA0BppB,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GACjEguD,EAA4BrpB,EAAOwW,kBAAkB4S,GAEzDC,GACAF,EAAgB,GAAGjW,QACnBmW,EAA0Bre,QAAUme,EAAgB,GAAGjW,OAAOlI,MAAMA,QAEpEke,EAAgBC,EACX1E,EAAgB7Q,UACnBqV,EAAattB,EAAItF,OAAS2J,EAAO37B,OAAOkrC,wBAG9C,CACF,CAEA,IAAKkV,EAAgB1J,OAASmO,EAAc7tD,SAAW4tD,EAAY,CACjE,MAAMK,EAAkBJ,EAAc,GAAGhW,OACzC,GACElT,EAAO37B,OAAOmoC,gBACd8c,GACAtpB,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,KAAOiuD,EAAgBte,MAAM1a,IASpE,OAPA0P,EAAOniC,KACLmiC,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GACvCN,GAAO0pD,EAAiB,CACtB1J,OAAO,EACP52C,MAAO67B,EAAOwY,aAAaxY,EAAOwY,aAAan9C,OAAS,IAAM,MAG3D2kC,EAET,GAAIspB,EAAiB,CACnB,MAAMC,EAAoBD,EAAgBte,MAmB1C,OAjBAqJ,GAAkBl0C,KAChB6/B,EACAupB,EACAvpB,EAAOiT,cACP,KACEoI,GACErb,EACA,CAAEngC,GAAIqpD,GACNnuD,GAAO0pD,EAAiB,CACtBzZ,MAAOue,IAEV,IAEH,QACA,YAGKvpB,CACT,CACF,CAaA,GAVoB,MAAhB2kB,IACFA,OAAct9C,GAEZs9C,GAAkC,MAAnBA,EAAY,IAA2C,IAA7BA,EAAYlkD,QAAQ,OAC/DkkD,IAAgB3kB,EAAOgJ,MAAQ,KAAO2b,GAAa3+C,QAAQ,KAAM,OAE9D2+C,GAAe3kB,EAAOviC,QAAQpC,OAAS,IAC1CspD,EAAc3kB,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GACrDstD,EAAgB3oB,EAAOwY,aAAaxY,EAAOwY,aAAan9C,OAAS,IAAM,IAErE4tD,IAAexE,EAAgB1J,OAAS/a,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GACjF,OAAO2kC,EAAOniC,KACZmiC,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,GACvCN,GAAO,GAAI0pD,GAAmB,GAAI,CAChC1J,OAAO,EACPx1C,SAAS,EACTpB,MAAO67B,EAAOwY,aAAaxY,EAAOwY,aAAan9C,OAAS,IAAM,MAIpE,GAAI4tD,IAAexE,EAAgB1J,MACjC,OAAO/a,EAkBT,GAdAgL,EAAQhL,EAAOwW,kBAAkBmO,GAC5B3Z,GACC2Z,IACF3Z,EAAQ,CACN1a,IAAKq0B,EACL3b,KAAM2b,EAAYtjD,MAAM,KAAK,GAC7BkvB,MAAOF,GAAcs0B,GACrB3Z,MAAO,CACLhC,KAAM2b,EAAYtjD,MAAM,KAAK,GAC7BivB,IAAKq0B,MAKR3Z,EACH,OAAOhL,EAGT,GAAIgL,EAAMA,MAAM8I,SACd,OAAOA,GAAS3zC,KAAK6/B,EAAQ,WAAYgL,EAAOyZ,GAGlD,MAAMx0C,EAAU,GAQhB,SAAS8wB,IACP,IAAImkB,GAAe,EAanB,SAASC,EAAaC,EAAeC,GACnCrlB,EAAOkN,iBAAkB,EACzBmO,GAASrb,EAAQolB,EAAerqD,GAAOkV,EAASo1C,IAAiB,EACnE,CACA,SAASI,IACPzlB,EAAOkN,iBAAkB,CAC3B,CAlBIlC,EAAMA,MAAMkM,WAAalM,EAAMA,MAAMmM,gBACvCkE,GAASrb,EAAQ,CAAEngC,GAAImrC,EAAMA,MAAMmM,cAAcC,QAAUnnC,GAC3Di1C,GAAe,GAEjB,iDAAiD7jD,MAAM,KAAKlG,SAASuqD,IAC/D1a,EAAMA,MAAM0a,KAAkBR,IAChCA,GAAe,EACf7J,GAASrb,EAAQ,CAAE0lB,CAACA,GAAe1a,EAAMA,MAAM0a,IAAiBz1C,GAClE,IAEEi1C,IASAla,EAAMA,MAAM2a,QACd3lB,EAAOkN,iBAAkB,EACzBlC,EAAMA,MAAM2a,MAAMxlD,KAAK6/B,EAAQ,CAC7BA,SACA7gB,GAAI6rB,EACJrtB,KAAMqiB,EAAOiT,aACblS,QAASokB,EACTnkB,OAAQykB,EACR1R,UAAW,WACXpY,SAGAqP,EAAMA,MAAM4J,gBACdA,GAAe5U,EAAQgL,EAAMA,MAAM4J,eAAgBuQ,EAAcM,GAErE,CACA,SAASzkB,IACPhB,EAAOkN,iBAAkB,CAC3B,CAiCA,OA/EIlC,EAAMA,MAAM/6B,QACdlV,GAAOkV,EAAS+6B,EAAMA,MAAM/6B,QAASw0C,EAAiB,CAAEtgD,MAAOwkD,GAAiB,KAEhF5tD,GAAOkV,EAASw0C,EAAiB,CAAEtgD,MAAOwkD,GAAiB,KAE7D14C,EAAQ+6B,MAAQA,EA2CZ/6B,EAAQ2jC,QACV7S,IAEAsT,GAAkBl0C,KAChB6/B,EACAgL,EACAhL,EAAOiT,cACP,KACMjI,EAAMA,MAAM9Q,QACdyB,EACG8E,YACCzhC,MAAMc,QAAQkrC,EAAMA,MAAM9Q,SAAW8Q,EAAMA,MAAM9Q,QAAU,CAAC8Q,EAAMA,MAAM9Q,UAEzEuH,MAAK,KACJV,GAAS,IAEVc,OAAM,KACLb,GAAQ,IAGZD,GACF,IAEF,KACEC,GAAQ,GAEV,YAKGhB,CACT,EC6iBAwb,GAAOv7C,UAAUw1C,qBG/3CjB,WACE,MAAMzV,EAASjiC,KACf42C,GAAe3U,EAAQ,wBACvB,MAAM1P,EAAM0P,EAAOviC,QAAQuiC,EAAOviC,QAAQpC,OAAS,IA1BrD,SAA4B2kC,GAC1B2U,GAAe3U,EAAQ,sBACvB,MAAMrE,EAAMqE,EAAOrE,IACboS,EAAgB/N,EAAO+N,cAEN/N,EAAOnE,IAAI1/B,SAAS,SAAS+D,QAAQo3C,MACtDtX,EAAOiT,eAAiBjT,EAAOiT,aAAakD,QAASnW,EAAOiT,aAAauW,QAEtElS,IAAetX,EAAOoS,gBAGhBltC,MAAMkyC,IACnB,MAAMwB,EAAax4C,EAAEg3C,GACfL,EAAe32C,EAAEu7B,EAAIqc,OAAOC,YAAYW,IAE9C5Y,EAAOoT,aAAa,eAAgBwF,EAAY7B,EAAc,gBAAY1vC,EAAW,IACrF24B,EAAOwT,WAAWoF,GACd7K,GAAiBgJ,EAAa17C,QAChC2kC,EAAOyT,aAAasD,EACtB,GAEJ,CAOE0S,CAAmBzpB,GAEnBA,EAAOviC,QAAU,CAAC6yB,GAClB0P,EAAOgN,KAAKvvC,QAAU,CAAC6yB,GACvB0P,EAAOuT,aACT,EClCA,IAAAmW,GAAe,CACbnoD,KAAM,SACN65B,OAAQ,CACNogB,WAEFjnB,SAAU,CACRrJ,MAAO,CACLy1B,IAAK,GACLgJ,UAAW,GACX3uB,WAAY,KAGhBH,SACE,MAAMtG,EAAWx2B,KACbw2B,EAASoH,IAEPpH,EAASlwB,OAAO27B,SAClBzL,EAASyL,OAAS,IAAIwb,GAAOjnB,EAASoH,IAAKpH,IAI7CA,EAASyL,OAAS,IAAIwb,GAAOjnB,EAEjC,GCrBF,SAASq1B,GAAc5c,GACrB,MAAMrR,EAAMqR,EAAKrR,IACXrG,EAAUE,KAChB,GAAIwX,EAAK6c,qBAAsB,OAC/B9uD,GAAOiyC,EAAM,CACX8c,WAAW,EACXC,eAAgB,KAChBF,sBAAsB,IAExB,MAAMG,EAAU5pD,EAAE,SACZy7B,IAAEA,GAAQmR,EAChB,IAAKnR,EAAK,OAEV,IAAIouB,EAEAvc,EACA1J,EACJ,MAAM2J,EAAe,GACrB,IAAIE,EACAxX,EAEA6zB,EACAC,EAEJ,SAASC,EAAkB96B,GACzB,IAAKA,EAAG,OAAO,KACf,GAAIA,EAAE7uB,QAAQ,MAAQ,GAAK6uB,EAAE7uB,QAAQ,OAAS,EAC5C,OAAQwtB,SAASqB,EAAG,IAAM,IAAOqM,EAAItF,MAEvC,MAAMg0B,EAAOp8B,SAASqB,EAAG,IACzB,OAAI6D,OAAOC,MAAMi3B,GAAc,KACxBA,CACT,CAMA,SAASjb,EAAiBnoC,GACxB,KAJO+lC,EAAK8c,WAAajuB,EAAIyE,SAAS,mBAAqBzE,EAAIyE,SAAS,uBAIpD,OACpBqN,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACxErD,GAAU,EACV0J,GAAY,EACZ,MAAM4c,EAAgBzuB,EAAI1/B,SAAS,gBACnC+tD,EAAWE,EAAkBE,EAAc7gD,IAAI,cAC/C0gD,EAAWC,EAAkBE,EAAc7gD,IAAI,aACjD,CACA,SAAS+lC,EAAgBvoC,GACvB,IAAKymC,EAAW,OAChBzmC,EAAE+qC,qBAAsB,EACxB,MAAM5K,EAAmB,cAAXngC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAE/DpD,IACH3N,EAAQ4zB,EAAiB,GAAGhN,WAAagN,EAAiB,GAAG98C,YAC7D0uB,EAAIwE,SAAS,iBACb2pB,EAAQvgD,IAAI,SAAU,eAGxBu6B,GAAU,EAEV/8B,EAAE+/B,iBAEF6G,EAAczG,EAAQuG,EAAav3B,EAEnC,IAAIm0C,EAAWl0B,EAAQwX,EACnBqc,IAAa/2B,OAAOC,MAAM82B,KAC5BK,EAAW1lD,KAAK+B,IAAI2jD,EAAUL,IAE5BC,IAAah3B,OAAOC,MAAM+2B,KAC5BI,EAAW1lD,KAAKgC,IAAI0jD,EAAUJ,IAEhCI,EAAW1lD,KAAKgC,IAAIhC,KAAK+B,IAAI2jD,EAAU,GAAI5uB,EAAItF,OAE/C2W,EAAK+c,eAAiBQ,EACtBP,EAAQ,GAAG3tD,MAAMuhD,YAAY,yBAA2B,GAAE2M,OAE1D1uB,EAAIj6B,QAAQ,cAAe2oD,GAC3Bvd,EAAK3T,KAAK,2BAA4B2T,EAAMud,EAC9C,CACA,SAAS5X,IAEP,GADAvyC,EAAE,QAAQqJ,IAAI,SAAU,KACnBikC,IAAc1J,EAGjB,OAFA0J,GAAY,OACZ1J,GAAU,GAGZ0J,GAAY,EACZ1J,GAAU,EAEVgmB,EAAQ,GAAG3tD,MAAMuhD,YAAY,yBAA2B,GAAE5Q,EAAK+c,oBAC/DluB,EAAI0E,YAAY,gBAClB,CAEA,SAASiqB,IACFxd,EAAK+c,iBACVG,EAAWE,EAAkBH,EAAiBxgD,IAAI,cAClD0gD,EAAWC,EAAkBH,EAAiBxgD,IAAI,cAE9CygD,IAAa/2B,OAAOC,MAAM82B,IAAald,EAAK+c,eAAiBG,IAC/Dld,EAAK+c,eAAiBllD,KAAK+B,IAAIomC,EAAK+c,eAAgBG,IAElDC,IAAah3B,OAAOC,MAAM+2B,IAAand,EAAK+c,eAAiBI,IAC/Dnd,EAAK+c,eAAiBllD,KAAKgC,IAAImmC,EAAK+c,eAAgBI,IAEtDnd,EAAK+c,eAAiBllD,KAAKgC,IAAIhC,KAAK+B,IAAIomC,EAAK+c,eAAgB,GAAIpuB,EAAItF,OAErE2zB,EAAQ,GAAG3tD,MAAMuhD,YAAY,yBAA2B,GAAE5Q,EAAK+c,oBACjE,CAEAE,EAAmBjd,EAAKnR,IAAI1/B,SAAS,wBAChC8tD,EAAiB5uD,SACpB2xC,EAAKnR,IAAIn0B,OAAO,2CAChBuiD,EAAmBjd,EAAKnR,IAAI1/B,SAAS,yBAEvC6wC,EAAKid,iBAAmBA,EAExBpuB,EAAIwE,SAAS,kBAGb,MAAMkG,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GAErDyG,EAAKnR,IAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO,uBAAwB0+B,EAAkB7I,GAC7E5K,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BhX,EAAI95B,GAAG,SAAU2oD,GACjBxd,EAAKnrC,GAAG,aAAc2oD,GAEtBxd,EAAK9T,KAAK,eAAe,KACvB2C,EAAI0E,YAAY,kBAChByM,EAAKid,iBAAiBrhD,SACtBokC,EAAKnR,IAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO,uBAAwB0+B,EAAkB7I,GAC9E5K,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,GAC5BhX,EAAIz0B,IAAI,SAAUsjD,GAClBxd,EAAK9lC,IAAI,aAAcsjD,EAAa,GAExC,C,OCvIA,cAAmB7wB,GACjB9+B,YAAY8gC,EAAK97B,EAAI4qD,QAAU,IAAVA,MAAa,IAChCvrD,MAAMurD,EAAY,CAAC9uB,IAEnB,MAAMqR,EAAOjvC,KASb,IAPYivC,EAAK3oC,OAAOq3C,SAOd,CAER,IADYt7C,EAAEP,GACLxE,OAAQ,CACf,IAAIqvD,EAAU,oDAMd,MALAA,GACgB,iBAAP7qD,EACF,iBAAgBA,8BACjB,2CAEA,IAAImiB,MAAM0oC,EAClB,CACF,CAqCA,IAAItd,EAUJ,OA5CAJ,EAAK3oC,OAAStJ,GAAO,CAAE8E,MAnBN,CACfo9B,OAAQ,GACR0tB,UAAW,IAiB0BhvB,EAAIt3B,OAAO2oC,KAAMyd,GAGpDzd,EAAK3oC,OAAO44B,OAAO5hC,OAAS,EAC9B2xC,EAAK/P,OAAS+P,EAAK3oC,OAAO44B,OAE1B+P,EAAK/P,OAAS,GAAGsL,OAAO5M,EAAIsB,OAAQ+P,EAAK3oC,OAAOsmD,WAIlD5vD,IAAO,EAAOiyC,EAAM,CAClBrR,MACAp6B,KAAMyrC,EAAK3oC,OAAO9C,KAClBqpD,KAAM5d,EAAK3oC,OAAOumD,KAClBntD,QAAS,GACTk+C,cAAe,KAIjB3O,EAAKlS,aAGLa,EAAIoR,MAAMhtC,KAAKitC,GACXA,EAAK4d,OACPjvB,EAAIoR,MAAM6d,KAAO5d,GAEfA,EAAKzrC,OACPo6B,EAAIoR,MAAMC,EAAKzrC,MAAQyrC,GAIzBA,EAAKxnC,MAAQm2B,EAAIoR,MAAMtsC,QAAQusC,GAK7BI,EADEJ,EAAKzrC,KACG,QAAOyrC,EAAKzrC,OACbyrC,EAAK4d,KACL,YAEC,QAAO5d,EAAKxnC,QAExBwnC,EAAKruC,GAAKyuC,EAELJ,EAAK3oC,OAAO+4B,MAIbzB,EAAI/f,YACNoxB,EAAK5P,OAELzB,EAAI95B,GAAG,QAAQ,KACbmrC,EAAK5P,MAAM,IAIR4P,GAXEA,CAYX,CAEAlR,UACE,IAAIkR,EAAOjvC,KACX,MAAM49B,EAAMqR,EAAKrR,IAEjBqR,EAAKnR,IAAIj6B,QAAQ,sBACjBorC,EAAK3T,KAAK,yCAA0C2T,GAEpDrR,EAAIz0B,IAAI,SAAU8lC,EAAKgM,6BAEnBhM,EAAK4d,MACPjvB,EAAIoR,MAAM6d,KAAO,YACVjvB,EAAIoR,MAAM6d,MACR5d,EAAKzrC,OACdo6B,EAAIoR,MAAMC,EAAKzrC,MAAQ,YAChBo6B,EAAIoR,MAAMC,EAAKzrC,OAExByrC,EAAKnR,IAAI,GAAGgvB,OAAS,YACd7d,EAAKnR,IAAI,GAAGgvB,OAEnBlvB,EAAIoR,MAAMxhC,OAAOowB,EAAIoR,MAAMtsC,QAAQusC,GAAO,GAGtCA,EAAK3oC,OAAO27B,QAAUgN,EAAKhN,QAC7BgN,EAAKhN,OAAOlE,UAGdkR,EAAK3T,KAAK,6BAA8B2T,GAGxClyC,OAAOI,KAAK8xC,GAAM7xC,SAAS2vD,IACzB9d,EAAK8d,GAAY,YACV9d,EAAK8d,EAAS,IAGvB9d,EAAO,IACT,CAEAgM,4BAA4B+B,GAC1B,MAAM/N,EAAOjvC,KACP49B,EAAMqR,EAAKrR,IACXovB,EAAkB/d,EAAKnR,IAAIyE,SAAS,sBACpC0qB,EACJrvB,EAAItF,OAAS2W,EAAK3oC,OAAOkrC,wBAA0BvC,EAAKnR,IAAI1/B,SAAS,gBAAgBd,YACjE,IAAV0/C,GAAyBiQ,IAA6B,IAAVjQ,GACtD/N,EAAKnR,IAAIwE,SAAS,sBACb0qB,IACH/d,EAAK3T,KAAK,2DAA4D2T,GACtEA,EAAKnR,IAAIj6B,QAAQ,kCAGnBorC,EAAKnR,IAAI0E,YAAY,sBACjBwqB,IACF/d,EAAK3T,KAAK,2DAA4D2T,GACtEA,EAAKnR,IAAIj6B,QAAQ,gCAGvB,CAEAqpD,mBACE,MAAMje,EAAOjvC,KACP49B,EAAMqR,EAAKrR,IACjBqR,EAAKgM,4BAA8BhM,EAAKgM,4BAA4BvkB,KAAKuY,GACzEA,EAAKgM,8BACDhM,EAAK3oC,OAAO6mD,uBACdtB,GAAc5c,GAEhBrR,EAAI95B,GAAG,SAAUmrC,EAAKgM,4BACxB,CAEAja,MAAMosB,GACJ,MAAMne,EAAOjvC,KACP49B,EAAMqR,EAAKrR,IACX97B,EAAKmtC,EAAK3oC,OAAOxE,IAAMsrD,EACvBtvB,EAAMz7B,EAAEP,GAGd,IAAIQ,EAYAotC,EAXwBptC,EAAV,iBAAPR,EAA4BA,GAIlCg8B,EAAIvzB,KAAK,MAAS,IAAGuzB,EAAIvzB,KAAK,QAAU,KACxCuzB,EAAIvzB,KAAK,SACL,IAAGuzB,EAAIvzB,KAAK,SAAStC,QAAQ,KAAM,KAAKA,QAAQ,UAAW,MAC5D,IAKU,QAAd21B,EAAIxM,OAAmB6d,EAAK3oC,OAAOu3C,mBACrCnO,EAAa5R,EAAI1/B,SAAS,YAAY8L,GAAG,GACf,IAAtBwlC,EAAWpyC,SACboyC,EAAartC,EAAE,iCAInBrF,GAAOiyC,EAAM,CACXnR,MACAh8B,GAAIg8B,EAAI,GACR+uB,KAAM5d,EAAK4d,MAAQ/uB,EAAIyE,SAAS,aAChCmN,aACAyO,UAAWzO,EAAaA,EAAW,QAAKpmC,EACxChH,aAGE2sC,EAAK4d,OACPjvB,EAAIoR,MAAM6d,KAAO5d,GAIfnR,GAAOA,EAAI,KACbA,EAAI,GAAGgvB,OAAS7d,GAGlBA,EAAK3T,KAAK,yBAA0B2T,EACtC,CAEA5P,KAAK+tB,GACH,MAAMne,EAAOjvC,KACbivC,EAAKjO,MAAMosB,GACPne,EAAK3oC,OAAO27B,SACVgN,EAAK3oC,OAAOkrC,uBAAyB,GACvCvC,EAAKie,mBAGLje,EAAK3oC,OAAO+mD,qBACZpe,EAAKnR,IAAIyE,SAAS,SACjB0M,EAAKnR,IAAIyE,SAAS,cAEnB0M,EAAKnR,IAAI3C,KAAK,YAAY,KACxB8T,EAAKhN,OAAO5C,MAAM,IAGpB4P,EAAKhN,OAAO5C,OAGd4P,EAAKnR,IAAIj6B,QAAQ,aACjBorC,EAAK3T,KAAK,uBAAwB2T,GAEtC,GAIFqe,GAAKpwB,IAAIugB,ICjIT,IAAA8P,GAAe,CACb/pD,KAAM,SACN8C,OAAQ,CACNknD,OAAQ,CAENC,cAAe,cAGnB3pD,GAAI,CACFu7B,QA/GJ,SAAoBzB,GAoGlBA,EAAI95B,GAAG,SAnGP,SAAsBoF,GACpB,MAAMnI,EAASF,IACT6sD,EAAarrD,EAAE6G,EAAEjM,QACjB0wD,EAAiBD,EAAW1jD,QAAQ,KACpC4jD,EAASD,EAAerwD,OAAS,EACjCi1B,EAAMq7B,GAAUD,EAAepjD,KAAK,QAG1C,GAAIqjD,IAEAD,EAAe5jD,GAAG6zB,EAAIt3B,OAAOknD,OAAOC,gBAEnCl7B,GAAOA,EAAI7vB,QAAQ,gBAAkB,GACtC,CACA,MAAMzF,EAAS0wD,EAAepjD,KAAK,UAmBnC,YAjBEgoB,GACAxxB,EAAO04B,SACP14B,EAAO04B,QAAQo0B,eACH,YAAX5wD,GAAmC,WAAXA,IAEzBiM,EAAE+/B,iBACFloC,EAAO04B,QAAQo0B,aAAa5vB,KAAK1L,EAAKt1B,IAEtCs1B,GACAxxB,EAAO64B,WACP74B,EAAO64B,UAAUk0B,SACjB/sD,EAAO64B,UAAUk0B,QAAQC,UACb,YAAX9wD,GAAmC,WAAXA,KAEzBiM,EAAE+/B,iBACFloC,EAAO64B,UAAUk0B,QAAQC,QAAQ9vB,KAAK,CAAE1L,SAG5C,CAIFx1B,OAAOI,KAAKygC,EAAIzB,SAAS/+B,SAASg/B,IAChC,MAAM4xB,EAAepwB,EAAIzB,QAAQC,GAAYoxB,OACxCQ,IACD9kD,EAAE+kD,iBACNlxD,OAAOI,KAAK6wD,GAAc5wD,SAAS8wD,IACjC,MAAMC,EAAyBT,EAAW1jD,QAAQkkD,GAAehkD,GAAG,GAChEikD,EAAuB7wD,OAAS,GAClC0wD,EAAaE,GAAe9rD,KAC1Bw7B,EACAuwB,EACAA,EAAuB9jD,UACvBnB,EAEJ,IACA,IAIJ,IAAIklD,EAAkB,GAQtB,GAPIR,IACF1kD,EAAE+/B,iBACFmlB,EAAkBT,EAAetjD,WAEnC+jD,EAAgBC,UAAYV,EAAe,IAGvCzkD,EAAE+kD,kBACFN,EAAeprB,SAAS,oBAAqBorB,EAAeprB,SAAS,oBAGxDhQ,GAAOA,EAAIj1B,OAAS,GAAgB,MAAXi1B,EAAI,IAC9Bo7B,EAAeprB,SAAS,SAAS,CAC/C,IAAI0M,EAoBJ,GAnBImf,EAAgBnf,MAAiC,YAAzBmf,EAAgBnf,KAC1CA,EAAOrR,EAAIoR,MAAMsf,QACRF,EAAgBnf,KACzBA,EAAO5sC,EAAE+rD,EAAgBnf,MAAM,GAAG6d,QAElC7d,EAAOye,EAAWzjD,QAAQ,SAAS,IAAMyjD,EAAWzjD,QAAQ,SAAS,GAAG6iD,OAEtE7d,GACAA,EAAK3oC,OAAOioD,aACVZ,EAAeprB,SAAS,SACvBorB,EAAeprB,SAAS,SAA0C,IAA/B0M,EAAKhN,OAAOviC,QAAQpC,UAErB,iBAA1B2xC,EAAK3oC,OAAOioD,UAAwBtf,EAAO5sC,EAAE4sC,EAAK3oC,OAAOioD,WAAW,GAAGzB,OACzE7d,EAAK3oC,OAAOioD,qBAAqBC,KAAWvf,EAAOA,EAAK3oC,OAAOioD,aAGvEtf,GACCrR,EAAIoR,MAAM6d,OAAM5d,EAAOrR,EAAIoR,MAAM6d,OAElC5d,IAASA,EAAKhN,OAAQ,OACvB0rB,EAAe,GAAGc,eACpBL,EAAgBhoD,MAAQunD,EAAe,GAAGc,cAExCd,EAAeprB,SAAS,QAAS0M,EAAKhN,OAAOniC,KAAKyyB,EAAK67B,GACtDnf,EAAKhN,OAAOyM,SAASnc,EAAK67B,EACjC,CACF,GAGF,CAYMM,CADY1uD,KAEd,ICpHJ2uD,GAAe,CACbnrD,KAAM,wBACNpC,MAAO,CACL6lD,OAAOhlB,EAAQ1P,EAAKrgB,GAClB,MAAMw0C,EAAkB,CACtBn0B,MACA0a,MAAO,CACLhC,KAAM1Y,EACNrgB,QAAS,IACJA,EACH+0C,YAAQ39C,KAIRhD,EAAS,IACV4L,GAwDL,MAnBuB,UAAnBA,EAAQ+0C,SACVP,EAAgBzZ,MAAM2hB,MAAQtoD,GAET,gBAAnB4L,EAAQ+0C,SACVP,EAAgBzZ,MAAM4hB,YAAcvoD,GAEf,UAAnB4L,EAAQ+0C,SACVP,EAAgBzZ,MAAM+G,MAAQ1tC,GAET,YAAnB4L,EAAQ+0C,SACV3gD,EAAO43B,SAAWhsB,EAAQm8C,WAAan8C,EAAQgsB,SAC/CwoB,EAAgBzZ,MAAM6hB,QAAUxoD,GAE9B4L,EAAQ+0C,OAAOvkD,QAAQ,UAAY,IACrC4D,EAAO43B,SAAWhsB,EAAQm8C,WAAan8C,EAAQgsB,SAC/CwoB,EAAgBzZ,MAAMwe,MAAQnlD,GAEhCA,EAAO2V,UAnDWA,CAAC7V,EAAO2oD,KACxB,MAAMC,GAAEA,EAAEC,WAAEA,EAAUnxB,IAAEA,EAAGoxB,IAAEA,GAAQH,EAWrC,OAVAE,GAAW,KACT,MAAM7B,EAAStvB,EAAIr8B,MAAMowC,KAAK,SACjBqd,EAAIjgB,KAAKnS,OAAOswB,EAAQ,CACnCmB,UAAWtsB,EAAOgN,KAAK3sC,SACvB4kD,cAAc,EACdf,iBAAiB,IAEdlkB,OAAOyM,SAASnc,EAAK,CAAEnsB,MAAO8L,EAAQ9L,MAAOqxC,WAAW,GAAO,IAG/D,KACL,GAAuB,UAAnBvlC,EAAQ+0C,OACV,OAAO+H,CAAG,qDAAoDz8B,oCAEhE,GAAuB,gBAAnBrgB,EAAQ+0C,OACV,OAAO+H,CAAG,mEAAkEz8B,oCAE9E,GAAuB,UAAnBrgB,EAAQ+0C,OACV,OAAO+H,CAAG,iEAAgEz8B,yEAE5E,GAAuB,YAAnBrgB,EAAQ+0C,OACV,OAAO+H,CAAG,yDAAwDz8B,qEAEpE,GAAIrgB,EAAQ+0C,OAAOvkD,QAAQ,UAAY,EAAG,CACxC,MAAMmrC,EAAQ37B,EAAQ+0C,OAAO3jD,MAAM,KAC7B6rD,EAAOthB,EAAM,IAAM,OACnBuhB,EAASvhB,EAAM,IAAM,QAE3B,OAAOmhB,CAAG,gDAA+CG,WAAcC,gBAAqB78B,mCAC9F,EACD,EAqBI0P,EAAOyM,SAASgY,E,EAEzBxkB,gBAAgBjmB,EAAWwjB,EAAcvtB,EAAc8wB,EAASC,QAAhB,IAAP/wB,MAAU,IACjD,MAAM+vB,EAASjiC,MACT49B,IAAEA,GAAQqE,EACV1P,EAA2B,iBAAdtW,EAAyBA,EAAYwjB,EAClD+iB,EAAcvgB,EAAOsgB,wBAAwBhwB,EAAKrgB,GACxD,SAASy5B,EAAQ0jB,GACf,IAAI9sD,EAAU2P,EAAQ3P,SAAW,GACjC,GAAuB,mBAAZA,EAAwBA,EAAUA,EAAQH,KAAK6/B,QACrD,GAAuB,iBAAZ1/B,EACd,IACEA,EAAUwiD,KAAK7a,MAAM3nC,E,CACrB,MAAOwhC,GAEP,MADAd,EAAOc,GACDA,CACR,CAEF,MAAMurB,EAAmBp7B,GAAM,GAAI3xB,EAAS,CAC1CgtD,QAASr9C,EAAQ+6B,MACjBuiB,SAAUvtB,IAENwtB,EAAiBv7B,GACrBhiB,EAAQ+6B,OAAQ/6B,EAAQ+6B,MAAM3mC,QAAe,GAC7C4L,EAAQ9L,OAAS,GACjB8L,EAAQw9C,YAAc,IAExB,IAAI/U,EACAgV,EACAz9C,EAAQiwB,kBAAoBjwB,EAAQiwB,iBAAiBrgC,KACvD64C,EAAczoC,EAAQiwB,iBAAiBrgC,IAErCoQ,EAAQiwB,kBAAoBjwB,EAAQiwB,iBAAiB4X,OACvD4V,EAAgBz9C,EAAQiwB,iBAAiB4X,MAE3Cnc,EAAI3hB,UACD6gB,OAAOuyB,EAAmBI,EAAgB,CACzCltD,QAAS+sD,EACTxtD,GAAI64C,EACJZ,KAAM4V,IAEPjsB,MAAMksB,IACL5sB,EAAQ4sB,EAAiB9tD,GAAG,IAE7BgiC,OAAOC,IAEN,MADAd,EAAOc,GACD,IAAI9f,MAAM8f,EAAK,CAAEmT,MAAOnT,GAAM,GAE1C,CACA,IAAI8rB,EACArN,GAAevgB,EAAO37B,OAAOwpD,gBAC/B7tB,EAAO9U,MAAM8P,WAAW7/B,SAAS2yD,IAC3BA,EAAOx9B,MAAQiwB,IAAaqN,EAAkBE,EAAO9zC,UAAS,IAGlEumC,GAAeqN,EACjBlkB,EAAQkkB,GACCrN,IAAgBqN,GAErB5tB,EAAOoa,qBACTpa,EAAOoa,mBAAmBC,QAC1Bra,EAAOoa,oBAAqB,GAE9Bpa,EACGsa,WAAWhqB,EAAKrgB,GAChBwxB,MAAMssB,IACL,MAAMC,EAAkBryB,EAAI3hB,UAAUiuB,MAAM8lB,GACxC/tB,EAAO37B,OAAOwpD,gBAChB7tB,EAAO9U,MAAM8P,WAAWj7B,KAAK,CAC3BuwB,IAAKiwB,EACLvmC,UAAWg0C,IAGftkB,EAAQskB,EAAgB,IAEzBnsB,OAAOC,IAEN,MADAd,IACMc,CAAG,KAGb4H,EAAQ1vB,E,EAIZwuC,qBAAoB/xB,GAA6D,IAA5Dzc,UAAEA,EAASwjB,aAAEA,EAAYvtB,QAAEA,EAAO8wB,QAAEA,EAAOC,OAAEA,QAAQ,IAAAvK,EAAG,GAAEA,EAC9D14B,KACRkiC,gBACLjmB,EACAwjB,EACAvtB,GACCpQ,IACCkhC,EAAQlhC,EAAG,GAEbmhC,E,EAIJkmB,mBAAkB+G,GAA6D,IAA5Dj0C,UAAEA,EAASwjB,aAAEA,EAAYvtB,QAAEA,EAAO8wB,QAAEA,EAAOC,OAAEA,QAAQ,IAAAitB,EAAG,GAAEA,EAC5DlwD,KACRkiC,gBACLjmB,EACAwjB,EACAvtB,GACCpQ,IACCkhC,EAAQlhC,EAAG,GAEbmhC,E,EAIJiZ,oBAAmBiU,GAA6D,IAA5Dl0C,UAAEA,EAASwjB,aAAEA,EAAYvtB,QAAEA,EAAO8wB,QAAEA,EAAOC,OAAEA,QAAQ,IAAAktB,EAAG,GAAEA,EAC7DnwD,KACRkiC,gBACLjmB,EACAwjB,EACAvtB,GACA,SAACpQ,EAAIs6C,QAAU,IAAVA,MAAa,IAChBpZ,EAAQlhC,EAAIs6C,E,GAEdnZ,EAEJ,IClMA3sB,GAAE,SAASrB,EAAEoC,EAAEkG,EAAErU,GAAG,IAAIkQ,EAAE/B,EAAE,GAAG,EAAE,IAAI,IAAI2C,EAAE,EAAEA,EAAE3C,EAAE/Z,OAAO0c,IAAI,CAAC,IAAIkU,EAAE7W,EAAE2C,KAAKjX,EAAEsU,EAAE2C,IAAI3C,EAAE,IAAI6W,EAAE,EAAE,EAAE3Q,EAAElG,EAAE2C,OAAO3C,IAAI2C,GAAG,IAAIkU,EAAEhlB,EAAE,GAAGnG,EAAE,IAAImrB,EAAEhlB,EAAE,GAAGnM,OAAOsJ,OAAO6C,EAAE,IAAI,GAAGnG,GAAG,IAAImrB,GAAGhlB,EAAE,GAAGA,EAAE,IAAI,IAAImO,IAAI2C,IAAIjX,EAAE,IAAImrB,EAAEhlB,EAAE,GAAGmO,IAAI2C,KAAKjX,EAAE,GAAGmrB,GAAG9U,EAAEnE,EAAEnK,MAAM/H,EAAEuT,GAAErB,EAAElS,EAAEwa,EAAE,CAAC,GAAG,QAAQrU,EAAElH,KAAKoX,GAAGrW,EAAE,GAAGsU,EAAE,IAAI,GAAGA,EAAE2C,EAAE,GAAG,EAAE3C,EAAE2C,GAAGZ,IAAIlQ,EAAElH,KAAKe,EAAE,CAAC,OAAOmG,C,EAAG+L,GAAE,IAAI+O,ICGtU,MAAMosC,GAAiB,EAAC,EAAO,KAAM,QAAI9mD,GAUnC0lD,GDbmV,SAAS33C,GAAG,IAAIkG,EAAEtI,GAAE1T,IAAIvB,MAAM,OAAOud,IAAIA,EAAE,IAAIyG,IAAI/O,GAAEzT,IAAIxB,KAAKud,KAAKA,EAAEjH,GAAEtW,KAAKud,EAAEhc,IAAI8V,KAAKkG,EAAE/b,IAAI6V,EAAEkG,EAAE,SAASjH,GAAG,IAAI,IAAIrB,EAAEoC,EAAEkG,EAAE,EAAErU,EAAE,GAAGkQ,EAAE,GAAGY,EAAE,CAAC,GAAGkU,EAAE,SAAS5X,GAAG,IAAIiH,IAAIjH,IAAIpN,EAAEA,EAAEjB,QAAQ,uBAAuB,MAAM+R,EAAEhY,KAAK,EAAEsU,EAAEpN,GAAG,IAAIqU,IAAIjH,GAAGpN,IAAI8Q,EAAEhY,KAAK,EAAEsU,EAAEpN,GAAGqU,EAAE,GAAG,IAAIA,GAAG,QAAQrU,GAAGoN,EAAE0D,EAAEhY,KAAK,EAAEsU,EAAE,GAAG,IAAIiH,GAAGrU,IAAIoN,EAAE0D,EAAEhY,KAAK,EAAE,GAAE,EAAGkH,GAAGqU,GAAG,KAAKrU,IAAIoN,GAAG,IAAIiH,KAAKvD,EAAEhY,KAAKub,EAAE,EAAErU,EAAEmO,GAAGkG,EAAE,GAAGjH,IAAI0D,EAAEhY,KAAKub,EAAEjH,EAAE,EAAEe,GAAGkG,EAAE,IAAIrU,EAAE,EAAE,EAAEnG,EAAE,EAAEA,EAAEuT,EAAEhZ,OAAOyF,IAAI,CAACA,IAAI,IAAIwa,GAAG2Q,IAAIA,EAAEnrB,IAAI,IAAI,IAAIguB,EAAE,EAAEA,EAAEza,EAAEvT,GAAGzF,OAAOyzB,IAAI9b,EAAEqB,EAAEvT,GAAGguB,GAAG,IAAIxT,EAAE,MAAMtI,GAAGiZ,IAAIlU,EAAE,CAACA,GAAGuD,EAAE,GAAGrU,GAAG+L,EAAE,IAAIsI,EAAE,OAAOrU,GAAG,MAAM+L,GAAGsI,EAAE,EAAErU,EAAE,IAAIA,EAAE+L,EAAE/L,EAAE,GAAGkQ,EAAEnE,IAAImE,EAAEA,EAAE,GAAGlQ,GAAG+L,EAAE,MAAMA,GAAG,MAAMA,EAAEmE,EAAEnE,EAAE,MAAMA,GAAGiZ,IAAI3Q,EAAE,GAAGA,IAAI,MAAMtI,GAAGsI,EAAE,EAAElG,EAAEnO,EAAEA,EAAE,IAAI,MAAM+L,IAAIsI,EAAE,GAAG,MAAMjH,EAAEvT,GAAGguB,EAAE,KAAK7C,IAAI,IAAI3Q,IAAIvD,EAAEA,EAAE,IAAIuD,EAAEvD,GAAGA,EAAEA,EAAE,IAAIhY,KAAK,EAAE,EAAEub,GAAGA,EAAE,GAAG,MAAMtI,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAGiZ,IAAI3Q,EAAE,GAAGrU,GAAG+L,GAAG,IAAIsI,GAAG,QAAQrU,IAAIqU,EAAE,EAAEvD,EAAEA,EAAE,GAAG,CAAC,OAAOkU,IAAIlU,C,CAAntB,CAAstB3C,IAAIkG,GAAG7Z,UAAU,KAAKpG,OAAO,EAAEigB,EAAEA,EAAE,EAAE,ECatqCmZ,MARL,SAAC8S,EAAMpjC,GAAuB,IAAAV,MAAAhC,UAAApG,OAAbc,EAAQ,IAAA6C,MAAAyE,MAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAARxH,EAAQwH,EAAAlC,aAAAkC,GACjC,MAAO,CACL4jC,OACApjC,MAAOA,GAAS,GAChBhI,SAAUu4B,GAAav4B,EAAS+D,QAAQyJ,GAAUwkD,GAAe1tD,QAAQkJ,GAAS,KAEtF,IC2BM,SAAA8wB,GAAgB2zB,EACAz+C,EACAxT,EACA4S,EACAs/C,GAEpB,MAAO,CAACD,IAAKA,EAAKz+C,KAAMA,EAAMxT,SAAUA,EAChC4S,KAAMA,EAAMs/C,IAAKA,EAAKjzD,SAFXiM,IAATsI,OAAqBtI,EAAYsI,EAAKvU,IAGlD,CC9CO,IAAMkzD,GAAQtvD,MAAMc,QACrB,SAAAyuD,GAAoBn5C,GACxB,MAAoB,iBAANA,GAA+B,iBAANA,CACzC,CCEA,SAAAo5C,GAAe7+C,EAAWxT,EAA8BiyD,GAEtD,GADAz+C,EAAK8+C,GAAK,6BACE,kBAARL,QAAwC/mD,IAAblL,EAC7B,IAAK,IAAI0E,EAAI,EAAGA,EAAI1E,EAASd,SAAUwF,EAAG,CACxC,IAAI6tD,EAAYvyD,EAAS0E,GAAG8O,UACVtI,IAAdqnD,GACFF,GAAME,EAAYvyD,EAAS0E,GAAa1E,SAAoBA,EAAS0E,GAAGutD,IAE5E,CAEJ,CAQM,SAAAr2C,GAAYq2C,EAAUl3C,EAASpT,GACnC,IAA0B3H,EAAe4S,EAAWlO,EAAhD8O,EAAkB,GAYtB,QAXUtI,IAANvD,GACF6L,EAAOuH,EACHpP,GAAShE,GAAM3H,EAAW2H,EACrBgE,GAAahE,GAAMiL,EAAOjL,EAC1BA,GAAKA,EAAEsqD,MAAOjyD,EAAW,CAAC2H,UACpBuD,IAAN6P,IACLpP,GAASoP,GAAM/a,EAAW+a,EACrBpP,GAAaoP,GAAMnI,EAAOmI,EAC1BA,GAAKA,EAAEk3C,IAAOjyD,EAAW,CAAC+a,GAC5BvH,EAAOuH,GAEZpP,GAAS3L,GACX,IAAK0E,EAAI,EAAGA,EAAI1E,EAASd,SAAUwF,EAC7BiH,GAAa3L,EAAS0E,MAAK1E,EAAS0E,GAAK45B,QAAMpzB,OAAWA,OAAWA,EAAWlL,EAAS0E,QAAIwG,IASrG,MALa,MAAX+mD,EAAI,IAAyB,MAAXA,EAAI,IAAyB,MAAXA,EAAI,IACxB,IAAfA,EAAI/yD,QAA2B,MAAX+yD,EAAI,IAAyB,MAAXA,EAAI,IAE3CI,GAAM7+C,EAAMxT,EAAUiyD,GAEjB3zB,GAAM2zB,EAAKz+C,EAAMxT,EAAU4S,OAAM1H,EAC1C,CChDA,IAAAsnD,GAAe,GCMf,MAAMC,GACJ,+FAA+FvtD,MAC7F,KAEEwtD,GACJ,0HAA0HxtD,MACxH,KAEEytD,GACJ,wGAAwGztD,MACtG,KAGE0tD,GAAcC,GACc,mBAAlBA,EAASznB,KACnBynB,EAASznB,KAAKhmC,MAAQ,kBACtBytD,EAASznB,KAYT0nB,GAAiB,WACrB,MAAM3uD,EAAU,GAAG,QAAAmD,EAAAhC,UAAApG,OADMqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GAQ7B,OANAjC,EAAKvG,SAAQ,SAACP,QAAG,IAAHA,MAAM,IAClBE,OAAOI,KAAKN,GAAKO,SAASC,IAZTmG,MAafjB,GAbeiB,EAaKnG,EAZjBmG,EACJF,MAAM,KACNwC,KAAI,CAACqrD,EAAM1pD,IACI,IAAVA,EAAoB0pD,EAAK1mD,cACtB0mD,EAAK,GAAGvmD,cAAgBumD,EAAK5hB,OAAO,KAE5C9f,KAAK,MAMwB5yB,EAAIQ,EAAI,GAExC,IAEOkF,CACT,EA8CM6uD,GAAqBC,GAEC,mBAAjBA,GACNA,GAAgBA,EAAa3uD,QAAQ,KAAO,GAAKkuD,GAAiBS,GAIvE,SAASC,GAASL,EAAUr/C,EAAM4uB,EAAIyV,EAASsb,GAC7C,MAAMC,EAAQ,GACRC,EAAS,GACT1zB,EAAU,GACV2zB,EAAS,GACTC,EAAY,GAClB,IAAIC,GAAgB,EAChBC,EAAUb,GAAWC,GACrBr/C,GAAQA,EAAKhI,OAASgI,EAAKhI,MAAMqS,YACnC41C,EAAUjgD,EAAKhI,MAAMqS,iBACdrK,EAAKhI,MAAMqS,UAClB21C,GAAgB,GAGlB,MAAME,EAAWV,GAAkBH,EAASznB,MAe5C,GAbIsoB,IACFL,EAAOzvD,MAAM06B,KACPA,EAAM2zB,MAAQwB,GAAYD,IArENpwB,KAAmC,IAAlChB,GAAEA,EAAEywB,SAAEA,EAAQv0B,MAAEA,EAAK9qB,KAAEA,GAAM4vB,EAC1D,MAAMvlB,EACqB,mBAAlBg1C,EAASznB,KAAsBynB,EAASznB,KAAOonB,GAAiBK,EAASznB,MAClFhJ,EAAGvkB,UACA6gB,OAAO7gB,EAAWi1C,GAAet/C,EAAKhI,OAAS,GAAIgI,EAAKxL,OAAS,IAAK,CACrEtE,GAAI46B,EAAM4zB,IACVlyD,SAAU6yD,EAAS7yD,WAEpBslC,MAAM39B,IACD22B,EAAM9qB,MAAQ8qB,EAAM9qB,KAAK9N,IAAMiC,GAAKA,EAAE+3B,KACxC/gC,OAAOI,KAAKu/B,EAAM9qB,KAAK9N,IAAI1G,SAASwR,IAClC7I,EAAE+3B,IAAIh6B,GAAG8K,EAAW8tB,EAAM9qB,KAAK9N,GAAG8K,GAAW,IAIjD8tB,EAAM4zB,IAAIyB,cAAgBhsD,CAAC,GAC3B,EAsDAisD,CAAsB,CAAExxB,KAAIywB,WAAUv0B,QAAO9qB,QAAO,IAEtDmsB,EAAQ/7B,MAAM06B,IA7CcA,KAE9B,MAAMzgB,EAAYygB,GAASA,EAAM4zB,KAAO5zB,EAAM4zB,IAAIyB,cAElD,GAAI91C,EAAW,CACb,MAAMna,GAAEA,EAAEg8B,IAAEA,GAAQ7hB,EAChBygB,EAAM9qB,MAAQ8qB,EAAM9qB,KAAK9N,IAAMg6B,GACjC/gC,OAAOI,KAAKu/B,EAAM9qB,KAAK9N,IAAI1G,SAASwR,IAClCkvB,EAAI30B,IAAIyF,EAAW8tB,EAAM9qB,KAAK9N,GAAG8K,GAAW,IAG5CqN,EAAU8hB,SAAS9hB,EAAU8hB,UAC7Bj8B,GAAMA,EAAGiJ,YAAYjJ,EAAGiJ,WAAWC,YAAYlJ,UAC5C46B,EAAM4zB,IAAIyB,aACnB,GAgCIE,CAAuBv1B,EAAM,IAE/Bg1B,EAAO1vD,MAAK,CAACkwD,EAAUx1B,KAzDIA,KAE7B,MAAMzgB,EAAYygB,GAASA,EAAM4zB,KAAO5zB,EAAM4zB,IAAIyB,cAClD,IAAK91C,EAAW,OAChB,MAAMk2C,EAAWjB,GAAex0B,EAAM9qB,KAAKhI,OAAS,GAAI8yB,EAAM9qB,KAAKxL,OAAS,IAC5E6V,EAAU7d,SAAWs+B,EAAM9qB,KAAKq/C,SAAS7yD,SACzCrB,OAAOsJ,OAAO4V,EAAU7V,MAAO+rD,GAC/Bl2C,EAAUy1C,QAAQ,EAmDdU,CAAsB11B,EAAM,MAI3Bo1B,EAAU,CACb,IAAKlgD,IAASA,EAAKhI,QAAUgI,EAAKhI,MAAMyoD,MAAO,OAAOb,EAEnC5/C,EAAKhI,MAAMyoD,MACnB/uD,MAAM,KAAKlG,SAASmO,IACxB0qC,GACHwb,EAAOzvD,QAAQw+B,EAAGmC,cAAc,SAAUp3B,IAE5CwyB,EAAQ/7B,QAAQw+B,EAAGmC,cAAc,UAAWp3B,IAC5CmmD,EAAO1vD,QAAQw+B,EAAGmC,cAAc,SAAUp3B,IAC1ComD,EAAU3vD,QAAQw+B,EAAGmC,cAAc,YAAap3B,GAAW,GAE/D,CAWA,OATIgmD,IAAWtb,GACb0b,EAAU3vD,MAAK,CAACkwD,EAAUx1B,KACxB,MAAM41B,EAAK51B,GAASw1B,EACfI,GACDA,EAAG1gD,MAAQ0gD,EAAG1gD,KAAKqK,WACrBq2C,EAAG1gD,KAAKqK,UAAU2mB,KAAK,YACzB,IAIgB,IAAlB6uB,EAAOn0D,QACY,IAAnBygC,EAAQzgC,QACU,IAAlBo0D,EAAOp0D,QACc,IAArBq0D,EAAUr0D,SAKRm0D,EAAOn0D,SACTk0D,EAAMC,OAAU/0B,IACd+0B,EAAOr0D,SAASyY,GAAMA,EAAE6mB,IAAO,GAG/BqB,EAAQzgC,SACVk0D,EAAMzzB,QAAWrB,IACfqB,EAAQ3gC,SAASyY,GAAMA,EAAE6mB,IAAO,GAGhCg1B,EAAOp0D,SACTk0D,EAAME,OAAS,CAACQ,EAAUx1B,KACxBg1B,EAAOt0D,SAASyY,GAAMA,EAAEq8C,EAAUx1B,IAAO,GAGzCi1B,EAAUr0D,SACZk0D,EAAMG,UAAY,CAACO,EAAUx1B,KAC3Bi1B,EAAUv0D,SAASyY,GAAMA,EAAEq8C,EAAUx1B,IAAO,IApBvC80B,CAyBX,CACA,MA6GMe,GAAcA,CAACtB,EAAUh1C,EAAWukB,EAAIyV,KAC5C,GAAIgb,GAAYA,EAASznB,MAAQqnB,GAAanuD,QAAQuuD,EAASznB,OAAS,EACtE,MAAO,GAET,MAAMprC,EAAW,GACXo0D,EAAQvB,EAAS7yD,SACvB,IAAK,IAAI0E,EAAI,EAAGA,EAAI0vD,EAAMl1D,OAAQwF,GAAK,EAAG,CACxC,MAAM2vD,EAAYD,EAAM1vD,GAClB8I,EAAQ8mD,GAAgBD,EAAWx2C,EAAWukB,EAAIyV,GAAS,GAC7Dh1C,MAAMc,QAAQ6J,GAChBxN,EAAS4D,QAAQ4J,GACRA,GACTxN,EAAS4D,KAAK4J,EAElB,CACA,OAAOxN,CAAQ,EAsBXs0D,GAAkBA,CAACzB,EAAUh1C,EAAWukB,EAAIyV,EAASsb,KACzD,IALkBN,IACXr0D,GAASq0D,IAAa,UAAWA,GAAY,SAAUA,GAAY,aAAcA,EAInF0B,CAAW1B,GACd,OAAOhgC,OAAOggC,GAEhB,GAAsB,SAAlBA,EAASznB,KACX,MAxBaopB,EAAC3B,EAAUh1C,EAAWukB,EAAIyV,KACzC,MAAM4c,EAAW5B,EAAS7qD,MAAM5C,MAAQ,UAClCsvD,GAAa72C,EAAU7d,UAAY,IAAI+D,QAAQ4wD,IACnD,IAAIC,EAAgB,UAIpB,OAHID,EAAc3sD,QAChB4sD,EAAgBD,EAAc3sD,MAAM6sD,MAAQ,WAEvCD,IAAkBH,CAAQ,IAEnC,OAAyB,IAArBC,EAAUx1D,OACLi1D,GAAYtB,EAAUh1C,EAAWukB,EAAIyV,GAEvC6c,EAAUhtD,KAAKotD,GAAgBR,GAAgBQ,EAAaj3C,EAAWukB,EAAIyV,IAAS,EAYlF2c,CAAS3B,EAAUh1C,EAAWukB,EAAIyV,GAE3C,MAAMrkC,EAzIQuhD,EAAClC,EAAUh1C,EAAWukB,EAAIyV,EAASsb,KACjD,MAAM3/C,EAAO,CAAEqK,YAAWg1C,YACpBY,EAAUb,GAAWC,GAC3Bl0D,OAAOI,KAAK8zD,EAAS7qD,OAAOhJ,SAAS0M,IACnC,MAAMspD,EAAYnC,EAAS7qD,MAAM0D,GACjC,QAAyB,IAAdspD,EACX,GAAItC,GAAYpuD,QAAQoH,IAAa,EAE9B8H,EAAKxL,QAAOwL,EAAKxL,MAAQ,IACb,aAAb0D,IAEFA,EAAW,YAEI,eAAbA,IAEFA,EAAW,gBAEG,WAAZ+nD,GAAqC,UAAb/nD,IACrB8H,EAAKhI,QAAOgI,EAAKhI,MAAQ,IAC9BgI,EAAKhI,MAAMnI,MAAQ2xD,GAEjBrC,GAAcruD,QAAQoH,IAAa,EAErC8H,EAAKxL,MAAM0D,IAA0B,IAAdspD,EAEvBxhD,EAAKxL,MAAM0D,GAAYspD,OAEpB,GAAiB,QAAbtpD,EAET8H,EAAKvU,IAAM+1D,OACN,GACqB,IAA1BtpD,EAASpH,QAAQ,MACW,IAA3BoH,EAASpH,QAAQ,OAAeoH,EAASxM,OAAS,EACnD,CAEKsU,EAAK9N,KAAI8N,EAAK9N,GAAK,IACxB,IAAI8K,EACwB,IAA1B9E,EAASpH,QAAQ,KAAaoH,EAASylC,OAAO,GAAKzd,GAAqBhoB,EAASylC,OAAO,IACtFtoC,GAAO,EACPosD,GAAU,EACVl4B,GAAO,EACPvsB,EAAUlM,QAAQ,MAAQ,GAC5BkM,EAAUtL,MAAM,KAAKlG,SAAQ,CAACk2D,EAAeC,KACpB,IAAnBA,EAAsB3kD,EAAY0kD,GAEd,SAAlBA,IAA0BrsD,GAAO,GACf,YAAlBqsD,IAA6BD,GAAU,GACrB,SAAlBC,IAA0Bn4B,GAAO,GACvC,IAGJvpB,EAAK9N,GAAG8K,GAnEU,SAACysB,EAAY3C,GAAmC,IAAjCzxB,KAAEA,EAAIosD,QAAEA,EAAOl4B,KAAEA,QAAM,IAAAzC,EAAG,GAAEA,EAC7D86B,GAAQ,EAYZ,OAVA,WACE,MAAMtqD,EAACxF,UAAApG,QAAAgM,SAAA5F,UAAU,GACby3B,GAAQq4B,IACRvsD,GAAMiC,EAAE8/B,kBACRqqB,GAASnqD,EAAE+/B,iBACfuqB,GAAQ,EAERn4B,KAAa33B,WACf,CAGF,CAqD2B+vD,CAAgBL,EAAW,CAAEnsD,OAAMosD,UAASl4B,QACnE,KAAwB,UAAbrxB,EAEgB,iBAAdspD,EACTxhD,EAAKtT,MAAQ80D,GAERxhD,EAAKhI,QAAOgI,EAAKhI,MAAQ,IAC9BgI,EAAKhI,MAAMtL,MAAQ80D,IAIhBxhD,EAAKhI,QAAOgI,EAAKhI,MAAQ,IAC9BgI,EAAKhI,MAAME,GAAYspD,EAGN,OAAbtpD,GAAsB8H,EAAKvU,KAAQk0D,IACrC3/C,EAAKvU,IAAM+1D,GAEf,IAGF,MAAM5B,EAAQF,GAASL,EAAUr/C,EAAM4uB,EAAIyV,EAASsb,GAkBpD,OAhBAC,EAAMkC,SAAW,CAACxB,EAAUx1B,KACrBw1B,GAAax1B,GACdw1B,GAAYA,EAAStgD,MAAQsgD,EAAStgD,KAAKxL,OAC7CrJ,OAAOI,KAAK+0D,EAAStgD,KAAKxL,OAAOhJ,SAASC,IACpC0zD,GAAcruD,QAAQrF,GAAO,IAC5Bq/B,EAAM9qB,OAAM8qB,EAAM9qB,KAAO,IACzB8qB,EAAM9qB,KAAKxL,QAAOs2B,EAAM9qB,KAAKxL,MAAQ,KACT,IAA7B8rD,EAAStgD,KAAKxL,MAAM/I,IAAmBA,KAAOq/B,EAAM9qB,KAAKxL,QAC3Ds2B,EAAM9qB,KAAKxL,MAAM/I,IAAO,GAC1B,GAEJ,EAGFuU,EAAKgxB,KAAO4uB,EAEL5/C,CAAI,EA+CEuhD,CAAQlC,EAAUh1C,EAAWukB,EAAIyV,EAASsb,GACjDnzD,EAAWgzD,GAAkBH,EAASznB,MACxC,GACA+oB,GAAYtB,EAAUh1C,EAAWukB,EAAIyV,GAEzC,OAAOj8B,GAAEg3C,GAAWC,GAAWr/C,EAAMxT,EAAS,EAGjC,SAASu1D,GAAKC,EAAW33C,EAAWg6B,GACjD,YAD+B,IAAJ2d,MAAO,IAC3BlB,GAAgBkB,EAAM33C,EAAWA,EAAUukB,GAAIyV,GAAS,EACjE,CCrQE,IAAA4d,GAAa,CACb11D,cAjEF,SAAuB0zD,GACrB,OAAOvyD,SAASnB,cAAc0zD,EAChC,EAgEEpzD,gBA9DF,SAAyBq1D,EAAsBC,GAC7C,OAAOz0D,SAASb,gBAAgBq1D,EAAcC,EAChD,EA6DEC,eA3DF,SAAwBhjD,GACtB,OAAO1R,SAAS00D,eAAehjD,EACjC,EA0DEijD,cAxDF,SAAuBjjD,GACrB,OAAO1R,SAAS20D,cAAcjjD,EAChC,EAuDEjF,aArDF,SAAsBhB,EAAkBmpD,EAAeC,GACrDA,GAAWA,EAAsBppD,aAAeA,GACjDopD,EAAApC,gBAAAoC,IAAApC,cAAAjwD,IAGCiJ,EAAKgB,aAAmBmoD,EAAAC,EAC1B,EAgDEnpD,YA9CF,SAAqBopD,EAAYxoD,GAC1BwoD,GACNA,EAAAppD,YAAAY,EAED,EA2CEnC,Y,SA1CY2qD,EAAWxoD,GACxBwoD,EAAA3qD,YAAAmC,EAED,EAwCEb,WAvCAA,SAAYqpD,GACb,OAAAA,EAAArpD,UAED,EAqCEiB,YApCAA,SAAWooD,GACZ,OAAAA,EAAApoD,WAED,EAkCE6lD,QAjCKA,SAAAvB,GACN,OAAAA,EAAAuB,OAED,EA+BEwC,e,SA9BYD,EAAYpjD,GACzBojD,EAAAnpD,YAAA+F,CAED,EA4BYsjD,e,SA3BUF,GACrB,OAAAA,EAAAnpD,WAED,EA0BAspD,U,SAzBcH,GACb,WAAAA,EAAAnxD,QAED,E,OACEuxD,SAAYJ,GACb,WAAAA,EAAAnxD,QAED,E,UACEwxD,SAAaL,GACb,OAAe,IAAfA,EAAAnxD,Q,GCzEF,SAAAyxD,GAAiBr9C,GAAmB,YAAa/N,IAAN+N,CAAiB,CAC5D,SAAAs9C,GAAet9C,GAAmB,YAAa/N,IAAN+N,CAAiB,CAI1D,IAAMu9C,GAAYl4B,GAAM,GAAI,GAAI,QAAIpzB,OAAWA,GAE/C,SAAAurD,GAAmBC,EAAeC,GAChC,OAAOD,EAAOz3D,MAAQ03D,EAAO13D,KAAOy3D,EAAOzE,MAAQ0E,EAAO1E,GAC5D,CAcA,SAAA2E,GAA2B52D,EAAwB62D,EAAkBC,GACnE,IAAIpyD,EAAoCzF,EAAsB83D,EAA/CrvD,EAAqB,GACpC,IAAKhD,EAAImyD,EAAUnyD,GAAKoyD,IAAUpyD,EAEtB,OADVqyD,EAAK/2D,EAAS0E,UAGAwG,KADZjM,EAAM83D,EAAG93D,OACcyI,EAAIzI,GAAOyF,GAGtC,OAAOgD,CACT,CAEA,IAAM0rD,GAA0B,CAAC,SAAU,SAAU,SAAU,UAAW,MAAO,QChCjF,SAAA4D,GAAqBlD,EAAiBx1B,GACpC,IAAIr/B,EAAaizD,EAAe5zB,EAAM4zB,IAClC+E,EAAYnD,EAAStgD,KAAmBhI,MACxCA,EAAS8yB,EAAM9qB,KAAmBhI,MAEtC,IAAKyrD,GAAazrD,IACdyrD,IAAazrD,EAAjB,CAKA,IAAKvM,KAJLg4D,EAAWA,GAAY,GACvBzrD,EAAQA,GAAS,GAGE,CACjB,IAAM0rD,EAAM1rD,EAAMvM,GACNg4D,EAASh4D,KACTi4D,KACE,IAARA,EACFhF,EAAI/xD,aAAalB,EAAK,KACL,IAARi4D,EACThF,EAAI5gD,gBAAgBrS,GApBd,MAyBFA,EAAIqtC,WAAW,GAChB4lB,EAAI/xD,aAA8BlB,EAAKi4D,GA3BhC,KA4BCj4D,EAAIqtC,WAAW,GAEvB4lB,EAAIiF,eA/BD,uCA+B0Cl4D,EAAKi4D,GA9B3C,KA+BCj4D,EAAIqtC,WAAW,GAEvB4lB,EAAIiF,eAnCC,+BAmC0Cl4D,EAAKi4D,GAEpDhF,EAAI/xD,aAA8BlB,EAAKi4D,GAIhD,CAIA,IAAKj4D,KAAOg4D,EACJh4D,KAAOuM,GACX0mD,EAAI5gD,gBAAgBrS,EApCA,CAuC1B,CAEO,IAAMm4D,GAAmB,CAAC14B,OAAQs4B,GAAa1D,OAAQ0D,ICpD9D,SAAAK,GAAqBvD,EAAiBx1B,GACpC,IAAIr/B,EAAai4D,EAAoBhF,EAAM5zB,EAAM4zB,IAC7CoF,EAAYxD,EAAStgD,KAAmBxL,MACxCA,EAASs2B,EAAM9qB,KAAmBxL,MAEtC,IAAKsvD,GAAatvD,IACdsvD,IAAatvD,EAAjB,CAIA,IAAK/I,KAFL+I,EAAQA,GAAS,GADjBsvD,EAAWA,GAAY,GAIhBtvD,EAAM/I,WACDizD,EAAYjzD,GAGxB,IAAKA,KAAO+I,EACVkvD,EAAMlvD,EAAM/I,GACNq4D,EAASr4D,KACHi4D,GAAgB,UAARj4D,GAAoBizD,EAAYjzD,KAASi4D,IAC1DhF,EAAYjzD,GAAOi4D,EAbA,CAgB1B,CAEO,IAAMK,GAAc,CAAC74B,OAAQ24B,GAAa/D,OAAQ+D,ICrBrDG,GAAyB,oBAAX70D,QAA0BA,OAAON,uBAA0BH,WACzE8xB,GAAY,SAAShvB,GAAWwyD,IAAI,WAAaA,GAAIxyD,EAAK,GAAI,EAElE,SAAAyyD,GAAsBh5D,EAAUmL,EAAcoK,GAC5CggB,IAAU,WAAav1B,EAAImL,GAAQoK,CAAK,GAC1C,CAEA,SAAA0jD,GAAqB5D,EAAiBx1B,GACpC,IAAI44B,EAAU9xD,EAAc8sD,EAAM5zB,EAAM4zB,IACpCyF,EAAY7D,EAAStgD,KAAmBtT,MACxCA,EAASo+B,EAAM9qB,KAAmBtT,MAEtC,IAAKy3D,GAAaz3D,IACdy3D,IAAaz3D,EAAjB,CAEAA,EAAQA,GAAS,GACjB,IAAI03D,EAAY,YAFhBD,EAAWA,GAAY,IAIvB,IAAKvyD,KAAQuyD,EACNz3D,EAAMkF,KACO,MAAZA,EAAK,IAA0B,MAAZA,EAAK,GACzB8sD,EAAYhyD,MAAM23D,eAAezyD,GAEjC8sD,EAAYhyD,MAAMkF,GAAQ,IAIjC,IAAKA,KAAQlF,EAEX,GADAg3D,EAAMh3D,EAAMkF,GACC,YAATA,GAAsBlF,EAAM43D,QAC9B,IAAK,IAAIC,KAAS73D,EAAM43D,QACtBZ,EAAMh3D,EAAM43D,QAAQC,GACfH,GAAaV,IAASS,EAASG,QAAgBC,IAClDN,GAAcvF,EAAYhyD,MAAO63D,EAAOb,OAG1B,WAAT9xD,GAAqB8xD,IAAQS,EAASvyD,KAC/B,MAAZA,EAAK,IAA0B,MAAZA,EAAK,GACzB8sD,EAAYhyD,MAAMuhD,YAAYr8C,EAAM8xD,GAEpChF,EAAYhyD,MAAMkF,GAAQ8xD,EA3BT,CA+B1B,CAiCO,IAAMc,GAAc,CACzBt5B,OAAQg5B,GACRpE,OAAQoE,GACR/3B,QAlCF,SAA2BrB,GACzB,IAAIp+B,EAAYkF,EAAc8sD,EAAM5zB,EAAM4zB,IAAKj5C,EAAKqlB,EAAM9qB,KAAmBtT,MAC7E,GAAK+Y,IAAO/Y,EAAQ+Y,EAAE0mB,SACtB,IAAKv6B,KAAQlF,EACVgyD,EAAYhyD,MAAMkF,GAAQlF,EAAMkF,EAErC,EA6BEqH,OA3BF,SAA0B6xB,EAAc25B,GACtC,IAAIh/C,EAAKqlB,EAAM9qB,KAAmBtT,MAClC,GAAK+Y,GAAMA,EAAExM,OAAb,CAIA,IAAIrH,EAAc8sD,EAAM5zB,EAAM4zB,IAAKxtD,EAAI,EACnCxE,EAAQ+Y,EAAExM,OAAQ+H,EAAS,EAAG0jD,EAAyB,GAC3D,IAAK9yD,KAAQlF,EACXg4D,EAAQt0D,KAAKwB,GACZ8sD,EAAYhyD,MAAMkF,GAAQlF,EAAMkF,GAInC,IADA,IAAI4C,EADQnG,iBAAiBqwD,GACE,uBAAuBhtD,MAAM,MACrDR,EAAIsD,EAAM9I,SAAUwF,GACS,IAA/BwzD,EAAQ5zD,QAAQ0D,EAAMtD,KAAY8P,IAEtC09C,EAAgB7yD,iBAAiB,iBAAiB,SAAU84D,GACvDA,EAAGt5D,SAAWqzD,KAAO19C,EACV,IAAXA,GAAcyjD,GACpB,GAfA,MAFEA,GAkBJ,GC9DA,SAASG,GAAatE,EAAUx1B,GAC9B,MAAM+5B,EAAQvE,EAAStgD,KAAK9N,GACtB4yD,EAAcxE,EAASplD,SACvB6pD,EAASzE,EAAS5B,IAClBxsD,EAAK44B,GAASA,EAAM9qB,KAAK9N,GACzBwsD,EAAM5zB,GAASA,EAAM4zB,IAE3B,GAAImG,IAAU3yD,IAIV2yD,GAASC,IAEN5yD,EAKH/G,OAAOI,KAAKs5D,GAAOr5D,SAASoG,IACrBM,EAAGN,IACNnB,EAAEs0D,GAAQxtD,IAAI3F,EAAMkzD,EACtB,IAPF35D,OAAOI,KAAKs5D,GAAOr5D,SAASoG,IAC1BnB,EAAEs0D,GAAQxtD,IAAI3F,EAAMkzD,EAAY,KAWlC5yD,GAAI,CAEN,MAAMgJ,EAAWolD,EAASplD,UAhCrB,SAASO,EAAQJ,GAAgB,IAAAvH,MAAAhC,UAAApG,OAANqG,EAAI,IAAA1C,MAAAyE,MAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,EAAAlC,aAAAkC,IATxC,SAAqBqH,EAAOtJ,EAAM+4B,GAChC,MAAMl5B,EAAOyJ,EAAMu8B,KACb1lC,EAAK44B,EAAM9qB,KAAK9N,GAElBA,GAAMA,EAAGN,IAVf,SAAuB6J,EAASJ,EAAOtJ,GACd,mBAAZ0J,GAETA,EAAQJ,KAAUtJ,EAEtB,CAMIizD,CAAc9yD,EAAGN,GAAOyJ,EAAOtJ,EAEnC,CAGI8K,CAAYxB,EAAOtJ,EAAM0J,EAAQqvB,M,EAgCjCA,EAAM5vB,SAAWA,EAEjBA,EAAS4vB,MAAQA,EAEZ+5B,EAKH15D,OAAOI,KAAK2G,GAAI1G,SAASoG,IAClBizD,EAAMjzD,IACTnB,EAAEiuD,GAAKxsD,GAAGN,EAAMsJ,EAClB,IAPF/P,OAAOI,KAAK2G,GAAI1G,SAASoG,IACvBnB,EAAEiuD,GAAKxsD,GAAGN,EAAMsJ,EAAS,GAS/B,CACF,CC3DA,MAAM+pD,GLwCA,SAAe16B,EAAiC26B,GACpD,IAAIh0D,EAAWuC,EAAW0xD,EAAO,GAE3BC,OAAyB1tD,IAAXwtD,EAAuBA,EAASjD,GAEpD,IAAK/wD,EAAI,EAAGA,EAAI0uD,GAAMl0D,SAAUwF,EAE9B,IADAi0D,EAAIvF,GAAM1uD,IAAM,GACXuC,EAAI,EAAGA,EAAI82B,EAAQ7+B,SAAU+H,EAAG,CACnC,IAAMu9B,EAAOzG,EAAQ92B,GAAGmsD,GAAM1uD,SACjBwG,IAATs5B,GACDm0B,EAAIvF,GAAM1uD,IAAmBd,KAAK4gC,EAEvC,CAGF,SAAAq0B,EAAqB3G,GACnB,IAAM1vD,EAAK0vD,EAAI1vD,GAAK,IAAM0vD,EAAI1vD,GAAK,GAC7BmF,EAAIuqD,EAAI/kD,UAAY,IAAM+kD,EAAI/kD,UAAUjI,MAAM,KAAKmsB,KAAK,KAAO,GACrE,OAAOiN,GAAMs6B,EAAInF,QAAQvB,GAAK7lD,cAAgB7J,EAAKmF,EAAG,GAAI,QAAIuD,EAAWgnD,EAC3E,CAEA,SAAA4G,EAAoBC,EAAgBC,GAClC,OAAO,WACL,GAAoB,KAAdA,EAAiB,CACrB,IAAMC,EAASL,EAAIjsD,WAAWosD,GAC9BH,EAAIhsD,YAAYqsD,EAAQF,EAC1B,C,CAEJ,CAEA,SAAAG,EAAmB56B,EAAc66B,GAC/B,IAAIz0D,EAAQ8O,EAAO8qB,EAAM9qB,UACZtI,IAATsI,GACE+iD,GAAM7xD,EAAI8O,EAAKgxB,OAAS+xB,GAAM7xD,EAAIA,EAAEu8B,QACtCv8B,EAAE45B,GACF9qB,EAAO8qB,EAAM9qB,MAGjB,IAAIxT,EAAWs+B,EAAMt+B,SAAUiyD,EAAM3zB,EAAM2zB,IAC3C,GAAY,MAARA,EACEqE,GAAQh4B,EAAM1rB,QAChB0rB,EAAM1rB,KAAO,IAEf0rB,EAAM4zB,IAAM0G,EAAI/C,cAAcv3B,EAAM1rB,WAC/B,QAAY1H,IAAR+mD,EAAmB,CAE5B,IAAMmH,EAAUnH,EAAI3tD,QAAQ,KACtB+0D,EAASpH,EAAI3tD,QAAQ,IAAK80D,GAC1B54D,EAAO44D,EAAU,EAAIA,EAAUnH,EAAI/yD,OACnCo6D,EAAMD,EAAS,EAAIA,EAASpH,EAAI/yD,OAChCshC,GAAmB,IAAb44B,IAA8B,IAAZC,EAAgBpH,EAAIrgC,MAAM,EAAGlpB,KAAKgC,IAAIlK,EAAM84D,IAAQrH,EAC5EC,EAAM5zB,EAAM4zB,IAAMqE,GAAM/iD,IAAS+iD,GAAM7xD,EAAK8O,EAAmB8+C,IAAMsG,EAAIv4D,gBAAgBqE,EAAG87B,GACvBo4B,EAAI74D,cAAcygC,GAG7F,IAFIhgC,EAAO84D,GAAKpH,EAAI/xD,aAAa,KAAM8xD,EAAIrgC,MAAMpxB,EAAO,EAAG84D,IACvDD,EAAS,GAAGnH,EAAI/xD,aAAa,QAAS8xD,EAAIrgC,MAAM0nC,EAAM,GAAGzvD,QAAQ,MAAO,MACvEnF,EAAI,EAAGA,EAAIi0D,EAAIj6B,OAAOx/B,SAAUwF,EAAGi0D,EAAIj6B,OAAOh6B,GAAG8xD,GAAWl4B,GACjE,GAAI3yB,GAAS3L,GACX,IAAK0E,EAAI,EAAGA,EAAI1E,EAASd,SAAUwF,EAAG,CACpC,IAAMqyD,EAAK/2D,EAAS0E,GACV,MAANqyD,GACF6B,EAAIvtD,YAAY6mD,EAAKgH,EAAUnC,EAAaoC,GAEhD,MACSxtD,GAAa2yB,EAAM1rB,OAC5BgmD,EAAIvtD,YAAY6mD,EAAK0G,EAAIhD,eAAet3B,EAAM1rB,OAG5C2jD,GADJ7xD,EAAK45B,EAAM9qB,KAAmBgxB,QAExB9/B,EAAEg6B,QAAQh6B,EAAEg6B,OAAO83B,GAAWl4B,GAC9B55B,EAAE2uD,QAAQ8F,EAAmBv1D,KAAK06B,GAE1C,MACEA,EAAM4zB,IAAM0G,EAAIhD,eAAet3B,EAAM1rB,MAEvC,OAAO0rB,EAAM4zB,GACf,CAEA,SAAAqH,EAAmBC,EACA1rD,EACA2rD,EACAC,EACA5C,EACAqC,GACjB,KAAOO,GAAY5C,IAAU4C,EAAU,CACrC,IAAM3C,EAAK0C,EAAOC,GACR,MAAN3C,GACF6B,EAAIjrD,aAAa6rD,EAAWN,EAAUnC,EAAIoC,GAAqBrrD,EAEnE,CACF,CAEA,SAAA6rD,EAA2Br7B,GACzB,IAAI55B,EAAQuC,EAAWuM,EAAO8qB,EAAM9qB,KACpC,QAAatI,IAATsI,EAAoB,CAEtB,IADI+iD,GAAM7xD,EAAI8O,EAAKgxB,OAAS+xB,GAAM7xD,EAAIA,EAAEi7B,UAAUj7B,EAAE45B,GAC/C55B,EAAI,EAAGA,EAAIi0D,EAAIh5B,QAAQzgC,SAAUwF,EAAGi0D,EAAIh5B,QAAQj7B,GAAG45B,GACxD,QAAuBpzB,IAAnBozB,EAAMt+B,SACR,IAAKiH,EAAI,EAAGA,EAAIq3B,EAAMt+B,SAASd,SAAU+H,EAE9B,OADTvC,EAAI45B,EAAMt+B,SAASiH,KACW,iBAANvC,GACtBi1D,EAAkBj1D,EAI1B,CACF,CAEA,SAAAk1D,EAAsBJ,EACAC,EACAC,EACA5C,GACpB,KAAO4C,GAAY5C,IAAU4C,EAAU,CACrC,IAAIG,OAAM,EAAEb,OAAiB,EAAEf,OAAc,EAAElB,EAAK0C,EAAOC,GAC3D,GAAU,MAAN3C,EACF,GAAIR,GAAMQ,EAAG9E,KAAM,CAIjB,IAHA0H,EAAkB5C,GAClBiC,EAAYL,EAAIlsD,OAAOvN,OAAS,EAChC+4D,EAAKa,EAAW/B,EAAG7E,IAAa8G,GAC3Ba,EAAI,EAAGA,EAAIlB,EAAIlsD,OAAOvN,SAAU26D,EAAGlB,EAAIlsD,OAAOotD,GAAG9C,EAAIkB,GACtD1B,GAAMsD,EAAI9C,EAAGvjD,OAAS+iD,GAAMsD,EAAIA,EAAEr1B,OAAS+xB,GAAMsD,EAAIA,EAAEptD,QACzDotD,EAAE9C,EAAIkB,GAENA,GAEJ,MACEW,EAAIhsD,YAAY4sD,EAAWzC,EAAG7E,IAGpC,CACF,CA4EA,SAAA4H,EAAoBhG,EAAiBx1B,EAAc66B,GACjD,IAAIz0D,EAAQ8/B,EACR+xB,GAAM7xD,EAAI45B,EAAM9qB,OAAS+iD,GAAM/xB,EAAO9/B,EAAE8/B,OAAS+xB,GAAM7xD,EAAI8/B,EAAK8wB,WAClE5wD,EAAEovD,EAAUx1B,GAEd,IAAM4zB,EAAM5zB,EAAM4zB,IAAO4B,EAAS5B,IAC9B6H,EAAQjG,EAAS9zD,SACjB+2D,EAAKz4B,EAAMt+B,SACf,GAAI8zD,IAAax1B,EAAjB,CACA,QAAmBpzB,IAAfozB,EAAM9qB,KAAoB,CAC5B,IAAK9O,EAAI,EAAGA,EAAIi0D,EAAIrF,OAAOp0D,SAAUwF,EAAGi0D,EAAIrF,OAAO5uD,GAAGovD,EAAUx1B,GAE5Di4B,GADJ7xD,EAAI45B,EAAM9qB,KAAKgxB,OACC+xB,GAAM7xD,EAAIA,EAAE4uD,SAAS5uD,EAAEovD,EAAUx1B,EACnD,CACIg4B,GAAQh4B,EAAM1rB,MACZ2jD,GAAMwD,IAAUxD,GAAMQ,GACpBgD,IAAUhD,GA1FpB,SAAwByC,EACAO,EACAC,EACAb,GAatB,IAZA,IAOIc,EACAC,EACAC,EATAC,EAAc,EAAGC,EAAc,EAC/BC,EAAYP,EAAM76D,OAAS,EAC3Bq7D,EAAgBR,EAAM,GACtBS,EAAcT,EAAMO,GACpBG,EAAYT,EAAM96D,OAAS,EAC3Bw7D,EAAgBV,EAAM,GACtBW,EAAcX,EAAMS,GAMjBL,GAAeE,GAAaD,GAAeI,GAC3B,MAAjBF,EACFA,EAAgBR,IAAQK,GACA,MAAfI,EACTA,EAAcT,IAAQO,GACI,MAAjBI,EACTA,EAAgBV,IAAQK,GACA,MAAfM,EACTA,EAAcX,IAAQS,GACbhE,GAAU8D,EAAeG,IAClCZ,EAAWS,EAAeG,EAAevB,GACzCoB,EAAgBR,IAAQK,GACxBM,EAAgBV,IAAQK,IACf5D,GAAU+D,EAAaG,IAChCb,EAAWU,EAAaG,EAAaxB,GACrCqB,EAAcT,IAAQO,GACtBK,EAAcX,IAAQS,IACbhE,GAAU8D,EAAeI,IAClCb,EAAWS,EAAeI,EAAaxB,GACvCP,EAAIjrD,aAAa6rD,EAAWe,EAAcrI,IAAa0G,EAAIhrD,YAAY4sD,EAAYtI,MACnFqI,EAAgBR,IAAQK,GACxBO,EAAcX,IAAQS,IACbhE,GAAU+D,EAAaE,IAChCZ,EAAWU,EAAaE,EAAevB,GACvCP,EAAIjrD,aAAa6rD,EAAWgB,EAAYtI,IAAaqI,EAAcrI,KACnEsI,EAAcT,IAAQO,GACtBI,EAAgBV,IAAQK,UAEJnvD,IAAhB+uD,IACFA,EAAcrD,GAAkBmD,EAAOK,EAAaE,IAGlDhE,GADJ4D,EAAWD,EAAYS,EAAcz7D,OAEnC25D,EAAIjrD,aAAa6rD,EAAWN,EAAUwB,EAAevB,GAAqBoB,EAAcrI,KACxFwI,EAAgBV,IAAQK,MAExBF,EAAYJ,EAAMG,IACJjI,MAAQyI,EAAczI,IAClC2G,EAAIjrD,aAAa6rD,EAAWN,EAAUwB,EAAevB,GAAqBoB,EAAcrI,MAExF4H,EAAWK,EAAWO,EAAevB,GACrCY,EAAMG,QAAYhvD,EAClB0tD,EAAIjrD,aAAa6rD,EAAYW,EAAUjI,IAAcqI,EAAcrI,MAErEwI,EAAgBV,IAAQK,MAI1BD,GAAeE,GAAaD,GAAeI,KACzCL,EAAcE,EAEhBf,EAAUC,EADqB,MAAtBQ,EAAMS,EAAU,GAAa,KAAOT,EAAMS,EAAU,GAAGvI,IACnC8H,EAAOK,EAAaI,EAAWtB,GAE5DS,EAAaJ,EAAWO,EAAOK,EAAaE,GAGlD,CAkBwBM,CAAe1I,EAAK6H,EAAuBhD,EAAoBoC,GACxE5C,GAAMQ,IACXR,GAAMzC,EAASlhD,OAAOgmD,EAAI3C,eAAe/D,EAAK,IAClDqH,EAAUrH,EAAK,KAAM6E,EAAoB,EAAIA,EAAoB73D,OAAS,EAAGi6D,IACpE5C,GAAMwD,GACfH,EAAa1H,EAAK6H,EAAuB,EAAIA,EAAuB76D,OAAS,GACpEq3D,GAAMzC,EAASlhD,OACxBgmD,EAAI3C,eAAe/D,EAAK,IAEjB4B,EAASlhD,OAAS0rB,EAAM1rB,MACjCgmD,EAAI3C,eAAe/D,EAAK5zB,EAAM1rB,MAE5B2jD,GAAM/xB,IAAS+xB,GAAM7xD,EAAI8/B,EAAK+uB,YAChC7uD,EAAEovD,EAAUx1B,EArBU,CAuB1B,CAEA,OAAO,SAAew1B,EAA2Bx1B,GAC/C,IAAI55B,EAAWwtD,EAAW5mD,EACpB6tD,EAAiC,GACvC,IAAKz0D,EAAI,EAAGA,EAAIi0D,EAAIkC,IAAI37D,SAAUwF,EAAGi0D,EAAIkC,IAAIn2D,KAoB7C,IAlSJ,SAAiB45B,GACf,YAAqBpzB,IAAdozB,EAAM2zB,GACf,CA8QS6I,CAAQhH,KACXA,EAAW+E,EAAY/E,IAGrB2C,GAAU3C,EAAUx1B,GACtBw7B,EAAWhG,EAAUx1B,EAAO66B,IAE5BjH,EAAM4B,EAAS5B,IACf5mD,EAASstD,EAAIjsD,WAAWulD,GAExBgH,EAAU56B,EAAO66B,GAEF,OAAX7tD,IACFstD,EAAIjrD,aAAarC,EAAQgzB,EAAM4zB,IAAa0G,EAAIhrD,YAAYskD,IAC5D0H,EAAatuD,EAAQ,CAACwoD,GAAW,EAAG,KAInCpvD,EAAI,EAAGA,EAAIy0D,EAAmBj6D,SAAUwF,EACxCy0D,EAAmBz0D,GAAG8O,KAAmBgxB,KAAe6uB,OAAe8F,EAAmBz0D,IAE/F,IAAKA,EAAI,EAAGA,EAAIi0D,EAAIoC,KAAK77D,SAAUwF,EAAGi0D,EAAIoC,KAAKr2D,KAC/C,OAAO45B,C,CAEX,CKnTc2C,CAAK,CAACm2B,GAAkBG,GAAaS,GD6DpC,CACbt5B,OAAQ05B,GACR9E,OAAQ8E,GACRz4B,QAASy4B,MErELpG,GAAiB,EAAC,EAAO,KAAM,QAAI9mD,GCYnC8vD,GAAQ,CACZ,CACE51D,KAAM,QACN67B,KAAOv8B,GAAMA,EACb0mC,KAAO1mC,GAAM,CAACA,GAAG+uC,KAAK5wC,MAAMc,SAC5B2vD,OAAQA,CAAC5uD,EAAGmxB,IAAM,CAACA,GAAG9xB,OAAOlB,MAAMc,SAAS8vC,MAAK,KAAQ/uC,EAAExF,OAAS,EAAIwF,EAAEd,QAAQiyB,MAClFw9B,OAAQ,SAAC3uD,EAAGuV,EAAG4b,GAAM,YAAL,IAADA,MAAI,IAAOnxB,EAAE0K,OAAO1G,KAAK+B,IAAIwP,EAAG,GAAI,KAAM,CAAC4b,GAAGolC,OAAO,EACpEpxD,QAAS,SAACnF,EAAGuV,EAAG4b,GAAM,YAAL,IAADA,MAAI,IAAOnxB,EAAE0K,OAAO1G,KAAK+B,IAAIwP,EAAG,GAAIvR,KAAKgC,MAAMuP,EAAG,MAAO,CAAC4b,GAAGolC,OAAO,EACpF1vD,OAAQ,SAAC7G,EAAGmxB,GAAM,YAAL,IAADA,MAAI,IAAOnxB,EAAEd,QAAQ,CAACiyB,GAAGolC,OAAO,EAC5ChqD,QAAS,SAACvM,EAAGmxB,GAAM,YAAL,IAADA,MAAI,IAAOnxB,EAAE0L,WAAW,CAACylB,GAAGolC,OAAO,EAChDC,KAAMA,CAACx2D,EAAGC,EAAGoW,MACVrW,EAAEC,GAAID,EAAEqW,IAAM,CAACrW,EAAEqW,GAAIrW,EAAEC,GAAG,EAE7Bw2D,OAAQ,SAACz2D,EAAGC,EAAGoW,GAAK,YAAJ,IAADA,MAAIpW,GAAMD,EAAE0K,OAAO1G,KAAK+B,IAAIsQ,EAAG,GAAI,KAAMrW,EAAE0K,OAAO1G,KAAK+B,IAAI9F,EAAG,GAAI,GAAG,EACpF8H,OAAQ,SAAC/H,EAAGmxB,EAAGlxB,GAAsB,YAArB,IAADA,MAAID,EAAEgD,KAAI,CAAC0zD,EAAGnhD,IAAMA,KACjC,CAAC4b,GACEolC,OACAl3D,QAAQW,GAAMC,EAAEyuB,SAAS1uB,KACzB22D,MAAK,CAAC12D,EAAGoW,IAAMA,EAAIpW,IACnB3F,SAASib,GAAMvV,EAAE0K,OAAO6K,EAAG,IAAG,EACnCoM,MAAQ3hB,GAAOA,EAAExF,OAAS,GAE5B,CACEkG,KAAM,SACN67B,KAAOv8B,GAAMA,EACb0mC,KAAO1mC,GACL,CAACA,GACEX,QAAQW,GAAM,CAAO,OAANA,OAAkBwG,IAANxG,GAAiB42D,OAAO52D,GAAMA,MACzD+uC,MAAM/uC,GAAM/F,OAAO48D,eAAe72D,KAAO/F,OAAOmF,YACrDwvD,OAAQA,CAAC5uD,EAAGmxB,IAAMl3B,OAAOsJ,OAAOvD,EAAGmxB,GACnCw9B,OAAQA,OACRxpD,QAASA,OACT0B,OAAQA,OACR0F,QAASA,OACTiqD,KAAMA,MAAS,GACfC,OAAQA,MAAS,GACjB1uD,OAAQA,CAAC/H,EAAGmxB,IAAM,CAACA,GAAGolC,OAAOj8D,SAASiM,UAAavG,EAAEuG,KACrDob,MAAQ3hB,GAAM/F,OAAOI,KAAK2F,GAAG1F,SAASiM,UAAavG,EAAEuG,MAEvD,CACE7F,KAAM,QACNgmC,KAAMA,KAAM,EACZnK,KAAM,SAACv8B,EAAGmxB,GAAM,YAAL,IAADA,MAAI,IACZl3B,OAAOuE,eAAe2yB,EAAG,QAAS,CAChC1yB,IAAKA,IAAMuB,EACXtB,IAAM+vB,IAEJzuB,EAAIyuB,CAAC,IAGT0C,C,EAEFy9B,OAAQ,SAAC5uD,EAAGyuB,QAAC,IAADA,MAAIzuB,EAAErB,OAChBqB,EAAErB,MAAQ8vB,C,EAEZkgC,OAAQA,MAAS,GACjBxpD,QAASA,MAAS,GAClB0B,OAAQA,MAAS,GACjB0F,QAASA,MAAS,GAClBiqD,KAAMA,MAAS,GACfC,OAAQA,MAAS,GACjB1uD,OAAQA,MAAS,GACjB4Z,MAAQ3hB,IACNA,EAAErB,WAAQ6H,CAAS,IAWzB,MAAMswD,GACJ98D,YAAY8gC,EAAK3hB,EAAW7V,EAAKsyB,QAAA,IAALtyB,MAAQ,IAAE,IAAEtE,GAAEA,EAAES,QAAEA,EAAOnE,SAAEA,QAAU,IAAAs6B,EAAG,GAAEA,EACpE,MAAMp5B,EAAWF,IACjB80B,GAAMl0B,KAAM,CACVwgC,GAAI5C,EACJx3B,MAAOA,GAAS,GAChB7D,QAASA,GAAW,GACpB3B,GAAIqb,EAAUrb,IAAMi5D,KACpBz7D,SAAUA,GAAY,GACtBgzB,MAAO,CACLiF,IAAmB,QAAduH,EAAIxM,MACTkF,GAAkB,OAAdsH,EAAIxM,OAEV9yB,MAAO2d,EAAU3d,MACjBw7D,cAAe,GACfC,gBAAiB,GACjBC,oBAAqB,GACrBC,gBAAiB,GACjBC,YAAa,GACbC,iBAAkB,GAClBC,YAAa,GACbC,kBAAmB,GACnBC,cAAe,KAGjB,MAAMC,EAAkBA,IACft+C,EAAUjc,KAAKoG,MAAOpG,KAAKw6D,qBAAoB,IAwBxD,OAAO,IAAIz3B,SAAQ,CAACC,EAASC,KArBHw3B,IACxB,IAAI13B,SAAQ,CAACC,EAASC,KACW,mBAApBw3B,EACTz3B,EAAQy3B,GACCA,aAA2B13B,QACpC03B,EACG/2B,MAAMj7B,IACLu6B,EAAQv6B,EAAO,IAEhBq7B,OAAOC,IACNd,EAAOc,EAAI,IAGfd,EACE,IAAIhf,MACF,2GAGN,IAKFy2C,CADwBH,KAErB72B,MAAMj7B,IACLzI,KAAK26D,eAAiBlyD,EAEtB,MAAMmrD,EAAO5zD,KAAKyI,SAElB,GAAI3G,EAeF,OAdA9B,KAAK08B,MAAQi3B,GAAKC,EAAM5zD,MAAM,GAC1BA,KAAK1B,QACP0B,KAAKmkC,QAAU7kC,EAASnB,cAAc,SACtC6B,KAAKmkC,QAAQthC,UAAY7C,KAAK1B,OAEhC0B,KAAK8B,GAAKA,EACV+0D,GAAM72D,KAAK8B,GAAI9B,KAAK08B,OACpB18B,KAAK8B,GAAK9B,KAAK08B,MAAM4zB,IACrBtwD,KAAK89B,IAAMz7B,EAAErC,KAAK8B,IAElB9B,KAAK81C,eACL91C,KAAK8B,GAAGugC,YAAcriC,KACtBA,KAAKghC,aACLgC,EAAQhjC,MAIN4zD,IACF5zD,KAAK08B,MAAQi3B,GAAKC,EAAM5zD,MAAM,GAC9BA,KAAK8B,GAAKxC,EAASnB,cAAc6B,KAAK08B,MAAM2zB,KAAO,OACnDwG,GAAM72D,KAAK8B,GAAI9B,KAAK08B,OACpB18B,KAAK89B,IAAMz7B,EAAErC,KAAK8B,KAEhB9B,KAAK1B,QACP0B,KAAKmkC,QAAU7kC,EAASnB,cAAc,SACtC6B,KAAKmkC,QAAQthC,UAAY7C,KAAK1B,OAGhC0B,KAAK81C,eAED91C,KAAK8B,KACP9B,KAAK8B,GAAGugC,YAAcriC,MAGxBgjC,EAAQhjC,KAAK,IAEd8jC,OAAOC,IACNd,EAAOc,EAAI,GACX,GAER,CAEAjgC,GAAG8K,EAAWvB,GACPrN,KAAK+5D,iBACV/5D,KAAK+5D,gBAAgB/3D,KAAK,CAAE4M,YAAWvB,WACzC,CAEA8tB,KAAKvsB,EAAWvB,GACTrN,KAAK+5D,iBACV/5D,KAAKg6D,oBAAoBh4D,KAAK,CAAE4M,YAAWvB,WAC7C,CAEAutD,kBACE,MAAM3/B,EAAOj7B,KACb,OAAQ2H,IACN,IAAIlG,EAAQkG,EACZ,MAAM9K,EAAM,GAUZ,OATAE,OAAOuE,eAAezE,EAAK,QAAS,CAClC0E,IAAGA,IACME,EAETD,IAAI+vB,GACF9vB,EAAQ8vB,EACR0J,EAAKy2B,QACP,IAEK70D,CAAG,CAEd,CAEAg+D,oBACE,MAAMhsB,MAAEA,EAAKisB,cAAEA,EAAaC,SAAEA,GAAa/6D,KAAKwgC,GAAGD,MAC7Cy6B,EAAS,CACbnsB,QACAksB,YAcF,OAZAC,EAAOC,QAAU,IAAIC,MAAMJ,EAAe,CACxCv5D,IAAKA,CAACtE,EAAQ+K,KACZ,MAAMnL,EAAMI,EAAO+K,GAMnB,OADAnL,EAAIs+D,WAJc5pC,IAChB10B,EAAI4E,MAAQ8vB,EACZvxB,KAAK0xD,QAAQ,IAGR70D,CAAG,IAIPm+D,CACT,CAGAI,cAAc,IAAAC,EAAAr7D,KACZ,OAAQi0B,IACN,MAAMp3B,EAAM,CAACo3B,GAAGqnC,QACd,SAACrmD,EAAGi4B,EAAIquB,EAAI3wB,EAAI9nC,GAAc,YAAb,IAADA,MAAImS,EAAEoqB,KAAK6N,IAAS,CAClC2B,MAAO/rC,EACP4uD,OAASngC,IAAOtc,EAAEy8C,OAAO5uD,EAAGyuB,GAAI8pC,EAAK3J,UACrC7mD,OAAS0mB,IAAOtc,EAAEpK,OAAO/H,EAAGyuB,GAAI8pC,EAAK3J,UACrCjtC,MAAOA,KAAOxP,EAAEwP,MAAM3hB,GAAIu4D,EAAK3J,UAC/BD,OAAQA,CAACp5C,EAAGkZ,KAAOtc,EAAEw8C,OAAO3uD,EAAGuV,EAAGkZ,GAAI8pC,EAAK3J,UAC3CzpD,QAASA,CAACoQ,EAAGkZ,KAAOtc,EAAEhN,QAAQnF,EAAGuV,EAAGkZ,GAAI8pC,EAAK3J,UAC7C/nD,OAAS4nB,IAAOtc,EAAEtL,OAAO7G,EAAGyuB,GAAI8pC,EAAK3J,UACrCriD,QAAUkiB,IAAOtc,EAAE5F,QAAQvM,EAAGyuB,GAAI8pC,EAAK3J,UACvC4H,KAAMA,CAACv2D,EAAGoW,KAAOlE,EAAEqkD,KAAKx2D,EAAGC,EAAGoW,GAAIkiD,EAAK3J,UACvC6H,OAAQA,CAACx2D,EAAGoW,KAAOlE,EAAEskD,OAAOz2D,EAAGC,EAAGoW,GAAIkiD,EAAK3J,UAC3Cx2B,OAAQ,SAACrlB,GAAc,YAAb,IAADA,MAAIA,MAAS,IAAOA,EAAE/S,GAAIu4D,EAAK3J,Q,EACxC9J,MAAO,SAAC/xC,GAA2B,YAA1B,IAADA,MAAIA,IAAMktB,QAAQE,OAAOngC,IAAO+S,EAAE/S,GAAG4gC,MAAK,IAAM23B,EAAK3J,UAAS,EACvE,GACD0H,GAAMvnB,MAAM/uC,GAAMA,EAAE0mC,KAAKvV,MAkB3B,OAhBAp3B,EAAIS,OAAS,GACbT,EAAI2+D,OAAOC,UAAY,WACrB,MAAMzpD,EAASjV,OAAOiV,OAAOhS,MAC7BgS,EAAOxE,OAAOwE,EAAOtP,QAAQ,IAAK,GAClC,IAAI+E,EAAQ,EACZ,MAAO,CACLgF,OACE,GAAIhF,EAAQuK,EAAO1U,OAAQ,CACzB,MAAM8U,EAAMJ,EAAOvK,GAEnB,OADAA,GAAS,EACF,CAAEhG,MAAO2Q,EAAK/K,MAAM,EAC7B,CACA,MAAO,CAAEA,MAAM,EACjB,E,EAGGxK,CAAG,CAEd,CAGA29D,oBAAoBkB,GAClB,MAAM3M,EAAM,CACV4M,SAAU37D,KAAKuC,QAAQgtD,QACvBqM,UAAW57D,KAAKuC,QAAQitD,SACxBR,MACA3sD,IACAw5D,IAAK77D,KAAKY,GACVsuD,IAAKlvD,KAAKwgC,GACVs7B,SAAU97D,KAAK+7D,QAAQrlC,KAAK12B,MAC5Bg8D,OAAQh8D,KAAKoxB,MACb6qC,MAAOj8D,KAAKk8D,KAAKxlC,KAAK12B,MACtBm8D,QAASn8D,KAAK0xD,OAAOh7B,KAAK12B,MAC1Bo8D,MAAOp8D,KAAKs7B,KAAK5E,KAAK12B,MACtBg7D,OAAQh7D,KAAK66D,oBACbwB,KAAMr8D,KAAK46D,kBACX98B,IAAK,GACLw+B,UAAWt8D,KAAKo7D,eAmBlB,OAjBAr+D,OAAOuE,eAAeytD,EAAIjxB,IAAK,QAAS,CACtCv8B,IAAKA,IACIvB,KAAK89B,MAGZ49B,GACF3+D,OAAOsJ,OAAO0oD,EAAK,CACjBwN,IAAKv8D,KAAK8D,GAAG4yB,KAAK12B,MAClBw8D,MAAOx8D,KAAKm7B,KAAKzE,KAAK12B,MACtBy8D,eAAiBpvD,GAAYrN,KAAKi6D,gBAAgBj4D,KAAKqL,GACvD4hD,WAAa5hD,GAAYrN,KAAKk6D,YAAYl4D,KAAKqL,GAC/CqvD,gBAAkBrvD,GAAYrN,KAAKm6D,iBAAiBn4D,KAAKqL,GACzDsvD,WAAatvD,GAAYrN,KAAKo6D,YAAYp4D,KAAKqL,GAC/CuvD,iBAAmBvvD,GAAYrN,KAAKq6D,kBAAkBr4D,KAAKqL,GAC3DwvD,aAAexvD,GAAYrN,KAAKs6D,cAAct4D,KAAKqL,KAGhD0hD,CACT,CAEAtmD,SACE,OAAOzI,KAAK26D,eAAe36D,KAAKw6D,sBAClC,CAEAl/B,KAAK93B,EAAMoO,GACJ5R,KAAK8B,IACV9B,KAAK89B,IAAIj6B,QAAQL,EAAMoO,EACzB,CAEAkkC,eACE,MAAMhY,IAAEA,GAAQ99B,KACXA,KAAK+5D,kBACV/5D,KAAK+5D,gBAAgB38D,SAAQokC,IAA4B,IAA3B5yB,UAAEA,EAASvB,QAAEA,GAASm0B,EAClD1D,EAAIh6B,GAAGguB,GAAqBljB,GAAYvB,EAAQ,IAElDrN,KAAKg6D,oBAAoB58D,SAAQ0/D,IAA4B,IAA3BluD,UAAEA,EAASvB,QAAEA,GAASyvD,EACtDh/B,EAAI3C,KAAKrJ,GAAqBljB,GAAYvB,EAAQ,IAEtD,CAEA0vD,eACE,MAAMj/B,IAAEA,GAAQ99B,KACXA,KAAK+5D,kBACV/5D,KAAK+5D,gBAAgB38D,SAAQ4/D,IAA4B,IAA3BpuD,UAAEA,EAASvB,QAAEA,GAAS2vD,EAClDl/B,EAAIh6B,GAAGguB,GAAqBljB,GAAYvB,EAAQ,IAElDrN,KAAKg6D,oBAAoB58D,SAAQ6/D,IAA4B,IAA3BruD,UAAEA,EAASvB,QAAEA,GAAS4vD,EACtDn/B,EAAI3C,KAAKrJ,GAAqBljB,GAAYvB,EAAQ,IAEtD,CAEA6vD,mBACE,MAAMn8D,EAASF,IACf,GAAIb,KAAKm9D,0BAA2B,OACpC,MAAMzL,EAASA,KACb1xD,KAAK4iC,KAAK,kBACV,MAAMgxB,EAAO5zD,KAAKyI,SAGlB,GAAImrD,EAAM,CACR,MAAMwJ,EAAWzJ,GAAKC,EAAM5zD,MAAM,GAClCA,KAAK08B,MAAQm6B,GAAM72D,KAAK08B,MAAO0gC,EACjC,GAEFp9D,KAAKm9D,0BAA4Bp8D,EAAON,uBAAsB,KACxDT,KAAKq9D,mBAAmB3L,IAC5B,IAAI4L,EAAY,IAAIt9D,KAAK85D,eACzB95D,KAAK85D,cAAgB,GACrB95D,KAAKq9D,mBAAoB,EACzBt8D,EAAOJ,qBAAqBX,KAAKm9D,kCAC1Bn9D,KAAKm9D,iCACLn9D,KAAKq9D,kBACZC,EAAUlgE,SAASmgE,GAAaA,MAChCD,EAAY,EAAE,GAElB,CAEApB,KAAKx7D,GACH,OAAO,IAAIqiC,SAASC,IAKlBhjC,KAAK85D,cAAc93D,MAJnB,WACEghC,IACItiC,GAAUA,GAChB,IAEAV,KAAKk9D,kBAAkB,GAE3B,CAEAxL,OAAOhxD,GACL,OAAIV,KAAKw9D,YAAoB,IAAIz6B,SAAQ,SAClC,IAAIA,SAASC,IAKlBhjC,KAAKq9D,mBAAoB,EACzBr9D,KAAK85D,cAAc93D,MALFu7D,KACfv6B,IACItiC,GAAUA,GAAU,IAI1BV,KAAKk9D,kBAAkB,GAE3B,CAEAO,SAAS/8D,GACP,OAAOV,KAAK0xD,OAAOhxD,EACrB,CAEAq7D,QAAQr7D,GACFV,KAAKwgC,GAAG3iB,YACVnd,EAASV,KAAKwgC,IAGhBxgC,KAAKwgC,GAAGrF,KAAK,QAAQ,KACnBz6B,EAASV,KAAKwgC,GAAG,GAErB,CAEAQ,MAAM08B,GACJ19D,KAAK4iC,KAAK,gBAAiB5iC,KAAK89B,KAC5B99B,KAAKmkC,SAAS9hC,EAAE,QAAQsH,OAAO3J,KAAKmkC,SACpCu5B,GAAaA,EAAY19D,KAAK8B,IAClC9B,KAAK4iC,KAAK,YAAa5iC,KAAK89B,IAC9B,CAEAC,UACE,GAAI/9B,KAAKw9D,YAAa,OACtB,MAAMz8D,EAASF,IACfb,KAAK4iC,KAAK,mBAEN5iC,KAAKmkC,SAAS9hC,EAAErC,KAAKmkC,SAASt5B,SAElC7K,KAAK+8D,eACL/8D,KAAK4iC,KAAK,eAEN5iC,KAAK8B,IAAM9B,KAAK8B,GAAGugC,cACrBriC,KAAK8B,GAAGugC,YAAc,YACfriC,KAAK8B,GAAGugC,aAGbriC,KAAK08B,QACP18B,KAAK08B,MAAQm6B,GAAM72D,KAAK08B,MAAO,CAAE2zB,IAAKrwD,KAAK08B,MAAM2zB,IAAKz+C,KAAM,MAG9D7Q,EAAOJ,qBAAqBX,KAAKm9D,2BACjCn9D,KAAK85D,cAAgB,GACrB95D,KAAK+5D,gBAAkB,GACvB/5D,KAAKg6D,oBAAsB,GAC3Bh6D,KAAKi6D,gBAAkB,GACvBj6D,KAAKk6D,YAAc,GACnBl6D,KAAKm6D,iBAAmB,GACxBn6D,KAAKo6D,YAAc,GACnBp6D,KAAKq6D,kBAAoB,GACzBr6D,KAAKs6D,cAAgB,GAErBtoC,GAAYhyB,MACZA,KAAKw9D,aAAc,CACrB,CAEA56B,KAAKp/B,GAAe,IAAAkC,MAAAhC,UAAApG,OAANqG,EAAI,IAAA1C,MAAAyE,MAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,EAAAlC,aAAAkC,GACZ5F,KAAKw9D,aACTx9D,KAAM,KAAIwD,KAAQpG,SAASiQ,IACzBA,KAAW1J,EAAK,GAEpB,ECtcF,SAASg6D,GAAeC,GACtB,MAAM78D,EAASF,IACTvB,EAAWF,IACXy+D,EAAcj9D,KACdk9D,EAAsB,gCAA+BD,IAG3D,IAAIE,EACgBH,EAAgBlzD,MAAM,kCAExCqzD,EAAWH,EACRt6D,MAAM,4BACNnB,QAAO,CAAC67D,EAAMv2D,IAAUA,EAAQ,IAChCgoB,KAAK,cACLnsB,MAAM,eACNnB,QAAO,CAAC67D,EAAMv2D,EAAO7F,IAAQ6F,EAAQ7F,EAAItE,OAAS,IAClDmyB,KAAK,eACLxnB,QAAQ,6BAA8B,qBACtCA,QAAQ,gCAAiC,sBACzCA,QAAQ,oBAAqB,uBAC7BA,QAAQ,sBAAuB,yBAIpC,IAUI07B,EAVArlC,EAAQ,KAWZ,GATIs/D,EAAgBl7D,QAAQ,YAAc,IACxCpE,EAAQs/D,EAAgBt6D,MAAM,WAAW,GAAGA,MAAM,YAAY,IAE5Ds6D,EAAgBl7D,QAAQ,mBAAqB,IAC/CpE,EAAQs/D,EAAgBt6D,MAAM,kBAAkB,GAAGA,MAAM,YAAY,IAKnEs6D,EAAgBl7D,QAAQ,aAAe,EAAG,CAC5C,MAAMu7D,EAAUL,EAAgBt6D,MAAM,YACtCqgC,EAAgBs6B,EAAQA,EAAQ3gE,OAAS,GAAGgG,MAAM,cAAa,GAAGb,MACpE,MACEkhC,EAAgB,gCAEbA,GAAkBA,EAAclhC,SAAQkhC,EAAgB,iCAGzDo6B,IACFp6B,EAAgBA,EACb17B,QACC,UACC,qcAac81D,4BAIhB91D,QAAQ,kBAAmB,WAIhC07B,EAAiB,UAASm6B,oBAAqCn6B,KAG/D,MAAME,EAAWvkC,EAASnB,cAAc,UACxC0lC,EAAShhC,UAAY8gC,EACrBthC,EAAE,QAAQsH,OAAOk6B,GAEjB,MAAM5nB,EAAYlb,EAAO+8D,KAczB,OAXAz7D,EAAEwhC,GAAUh5B,SACZ9J,EAAO+8D,GAAsB,YACtB/8D,EAAO+8D,GAGVx/D,IACF2d,EAAU3d,MAAQA,GAIpB2d,EAAUrb,GAAKi9D,EACR5hD,CACT,CC1FA,SAASiiD,GAAkBrM,EAAS51C,GAClC20C,GAAiBiB,GAAW51C,CAC9B,CAEA,SAASkiD,GAAoBtM,UACpBjB,GAAiBiB,EAC1B,CFkcA+H,GAAUj7B,KDzcG,SAAC6K,EAAMpjC,GAAuB,IAAAV,MAAAhC,UAAApG,OAAbc,EAAQ,IAAA6C,MAAAyE,MAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAARxH,EAAQwH,EAAAlC,aAAAkC,GACpC,MAAMw4D,EAAeznC,IAClBv4B,GAAY,IAAI+D,QAAQyJ,GAAUwkD,GAAe1tD,QAAQkJ,GAAS,KAErE,MAAa,aAAT49B,EACK40B,EAEF,CACL50B,OACApjC,MAAOA,GAAS,GAChBhI,SAAUggE,EAEd,EGFA,IAAAC,GAAe,CACb76D,KAAM,YACN65B,OAAQ,CACNu8B,aACA+D,kBACAO,qBACAC,wBAEFrhC,SACE,MAAMc,EAAM59B,KACZ49B,EAAI3hB,UAAY,CACdiiD,qBACAC,uBACAj0B,MAAM0zB,GACGD,GAAeC,GAExB9gC,OAAO7gB,EAAW7V,EAAKo7B,GAAmC,IAAjCuY,KAAEA,EAAIj4C,GAAEA,EAAES,QAAEA,EAAOnE,SAAEA,GAAUojC,EACtD,OAAO,IAAIo4B,GAAUh8B,EAAK3hB,EAAW7V,EAAO,CAAE2zC,OAAMj4C,KAAIS,UAASnE,YACnE,EAEJ,GChCFkgE,GAAe,CACb96D,KAAM,UACN65B,OAAQ,CACN39B,QAASquC,IAEXjqC,GAAI,CACFu7B,OACE0O,GAAQ1O,KAAKr/B,KACf,ICPJ,MAAMu+D,GAAK,CACTC,cAAe,GACfC,SAASxzB,EAAMyzB,GACb,MAAM9gC,EAAM59B,KAGZ,MAAM,kBAFSa,IAEiBrB,WAAeo+B,EAAI+gC,cAAc52D,UAK1D,IAAIg7B,SAAQ,CAACC,EAASC,KAC3BrF,EAAI+gC,cAAc52D,UACf02D,SAASxzB,EAAMyzB,EAAQ,CAAEA,SAAU,IACnCh7B,MAAMk7B,IACLL,GAAGC,cAAcx8D,KAAK48D,GACtBhhC,EAAItC,KAAK,+BAAgCsjC,GACzC57B,EAAQ47B,EAAI,IAEb96B,OAAO/X,IACN6R,EAAItC,KAAK,6BAA8BvP,GACvCkX,EAAOlX,EAAM,GACb,IAfG,IAAIgX,SAAQ,CAACC,EAASC,KAC3BA,EAAO,IAAIhf,MAAM,mCAAmC,G,EAiB1D46C,WAAWC,GACT,MAAMlhC,EAAM59B,KAEZ,KAAM,kBADSa,IACiBrB,aAAeo+B,EAAI+gC,cAAc52D,UAC/D,OAAO,IAAIg7B,SAAQ,CAACC,EAASC,KAC3BA,EAAO,IAAIhf,MAAM,mCAAmC,IAGxD,IAAIu6C,EAIJ,OAFsCA,EADjCM,EACI79D,MAAMc,QAAQ+8D,GAA+BA,EACjC,CAACA,GAFaP,GAAGC,cAG/Bz7B,QAAQqB,IACbo6B,EAAc14D,KACX84D,GACC,IAAI77B,SAAQ,CAACC,EAASC,KACpB27B,EACGC,aACAn7B,MAAK,KACA66B,GAAGC,cAAc97D,QAAQk8D,IAAQ,GACnCL,GAAGC,cAAchxD,OAAO+wD,GAAGC,cAAc97D,QAAQk8D,GAAM,GAEzDhhC,EAAItC,KAAK,iCAAkCsjC,GAC3C57B,GAAS,IAEVc,OAAO/X,IACN6R,EAAItC,KAAK,+BAAgCsjC,EAAK7yC,GAC9CkX,EAAOlX,EAAM,GACb,MAId,GAGF,IAAAgzC,GAAe,CACbv7D,KAAM,KACN8C,OAAQ,CACNq4D,cAAe,CACb1zB,UAAM3hC,EACNo1D,WAAOp1D,IAGXwzB,SACE,MAAMc,EAAM59B,KACNe,EAASF,IACf7D,GAAO4gC,EAAK,CACV+gC,cAAe,CACb52D,UAAW,kBAAmBhH,EAAOvB,UAAYuB,EAAOvB,UAAUm/D,mBAAgBr1D,EAClFk1D,cAAeD,GAAGC,cAClBC,SAAUF,GAAGE,SAAS/nC,KAAKkH,GAC3BihC,WAAYN,GAAGM,WAAWnoC,KAAKkH,K,EAIrC95B,GAAI,CACFu7B,OACE,MAAMt+B,EAASF,IACf,KAAM,kBAAmBE,EAAOvB,WAAY,OAC5C,MAAMo+B,EAAM59B,KACZ,GAAI49B,EAAI/E,OAAOY,SAAY14B,EAAO64B,WAAa74B,EAAO64B,UAAUqQ,SAAW,OAC3E,IAAKrM,EAAI+gC,cAAc52D,UAAW,OAClC,MAAM6lC,EAAQhQ,EAAIt3B,OAAOq4D,cAAc1zB,KACjCyzB,EAAQ9gC,EAAIt3B,OAAOq4D,cAAcD,MACvC,IAAK9wB,GAAU3sC,MAAMc,QAAQ6rC,KAAWA,EAAMtwC,OAAS,QACpC2D,MAAMc,QAAQ6rC,GAASA,EAAQ,CAACA,IACxCxwC,SAAS6tC,IAClBrN,EAAI+gC,cAAcF,SAASxzB,EAAMyzB,EAAM,GAE3C,IC9FJ,SAAS/8B,GAAYq9B,QAAW,IAAXA,MAAc,IACjC,MAAMz+B,EAAQ,CACZmB,SAAS,GAELu9B,EAAgB,IAAMD,EAAYnwB,OAAS,IAC3CqwB,EAAU,IAAMF,EAAYE,SAAW,IACvCjE,EAAU,IAAM+D,EAAY/D,SAAW,IACvCpsB,EAAQ7xC,GAAO,GAAIiiE,GAEzB,IAAIE,EAAa,GACjB,MAAMC,EAAsB,GACtBC,EAAmB,GAEzBtiE,OAAOI,KAAK89D,GAAS79D,SAASkiE,IAC5BF,EAAoBE,GAAa,GACjCD,EAAiBC,GAAa,EAAE,IAGlC,MAAMC,EAAkBD,GACfrE,EAAQqE,GAAW,CAAEzwB,MAAOtO,EAAMsO,QAYrC2wB,EAAoBA,CAACF,EAAW5+D,KAC/B2+D,EAAiBC,KAAYD,EAAiBC,GAAa,IAChED,EAAiBC,GAAWt9D,KAAKtB,EAAS,EA0B5C6/B,EAAMk/B,iBAAoB/+D,IAXIA,KAC5B3D,OAAOI,KAAKkiE,GAAkBjiE,SAASsiE,IACrC,MAAMC,EAAYN,EAAiBK,GAE/BC,EAAUj9D,QAAQhC,IAAa,GACjCi/D,EAAUnyD,OAAOmyD,EAAUj9D,QAAQhC,GAAW,EAChD,GACA,EAKFk/D,CAAqBl/D,EAAS,EAGhC,MAAMm/D,EAAc,SAACP,EAAWQ,GAC9B,QADyC,IAAXA,OAAc,GAC1B,gBAAdR,EAA6B,OACjCH,EAAa,GACb,MAAM19D,EAAQ89D,EAAeD,GA5CDS,EAACT,EAAWU,KACnCZ,EAAoBE,KAAYF,EAAoBE,GAAa,IACtEU,EAAK5iE,SAAS6iE,IACRb,EAAoBE,GAAW58D,QAAQu9D,GAAO,GAChDb,EAAoBE,GAAWt9D,KAAKi+D,EACtC,GACA,EAuCFF,CAAsBT,EAAWH,GACjC,MAIMtiE,EAAM,CACV4E,QACA05D,UANiBz6D,IACjB8+D,EAAkBF,EAAW5+D,EAAS,GAQxC,IAAKo/D,EACH,OAAOjjE,EAGT,MAAM6D,EAAY6wB,IAChB10B,EAAI4E,MAAQ8vB,CAAC,EAMf,OAHA10B,EAAIqjE,WAAax/D,EACjB8+D,EAAkBF,EAAW5+D,GAEtB7D,C,EA8CT,OA3CA0jC,EAAMsO,MAAQ,IAAIqsB,MAAMrsB,EAAO,CAC7BrtC,IAAKA,CAACvE,EAAQ+K,EAAMvG,KAxDMi+D,MA2DxB,OAFAziE,EAAO+K,GAAQvG,EAzDSi+D,EA0DL13D,EAzDRjL,OAAOI,KAAKiiE,GAAqBj9D,QAAQm9D,GAC7CF,EAAoBE,GAAW58D,QAAQg9D,IAAa,IAExDtiE,SAASkiE,IACPD,EAAiBC,IAAeD,EAAiBC,GAAWhiE,QACjE+hE,EAAiBC,GAAWliE,SAASsD,IACnCA,EAAS6+D,EAAeD,GAAW,GACnC,KAmDK,CAAI,EAEb/9D,IAAKA,CAACtE,EAAQ+K,KACZm3D,EAAWn9D,KAAKgG,GACT/K,EAAO+K,MAIlBu4B,EAAM06B,QAAU,IAAIC,MAAMD,EAAS,CACjCz5D,IAAKA,KAAM,EACXD,IAAKA,CAACtE,EAAQ+K,KACZ,GAAK/K,EAAO+K,GAGZ,OAAO63D,EAAY73D,GAAM,EAAK,IAIlCu4B,EAAMu6B,cAAgB,IAAII,MAAMD,EAAS,CACvCz5D,IAAKA,KAAM,EACXD,IAAKA,CAACtE,EAAQ+K,KACZ,GAAK/K,EAAO+K,GAGZ,OAAO63D,EAAY73D,GAAM,EAAM,IAInCu4B,EAAMw6B,SAAW,CAACoF,EAAYvuD,IACrB,IAAImxB,SAAQ,CAACC,EAASC,KAC3B,IAAKi8B,EAAQiB,GAEX,MADAl9B,IACM,IAAIhf,MAAO,6BAA4Bk8C,mBAG/Cn9B,EADek8B,EAAQiB,GAAY,CAAEtxB,MAAOtO,EAAMsO,MAAOksB,SAAUx6B,EAAMw6B,UAAYnpD,GACtE,IAIZ2uB,CACT,CCvIA,IAAA6/B,GAAe,CACb58D,KAAM,QACN65B,OAAQ,CAAEsE,gBACVvgC,MAAO,CAAEugC,iBCDX,MAAM0+B,GAAcA,KAClB,MAAMt/D,EAASF,IACf,OACEE,EAAO64B,WACP74B,EAAO64B,UAAUqQ,UACjBlpC,EAAO64B,UAAUk0B,SACjB/sD,EAAO64B,UAAUk0B,QAAQwS,SAAS,EAIhCC,GAAY,CAChBC,OACE,MAAMz/D,EAASF,IACA03B,KACJkB,SAAW14B,EAAOu/D,WAC3Bv/D,EAAOu/D,UAAUE,OAEfH,MACFt/D,EAAO64B,UAAUk0B,QAAQwS,UAAUE,M,EAGvCpY,OACE,MAAMrnD,EAASF,IACA03B,KACJkB,SAAW14B,EAAOu/D,WAC3Bv/D,EAAOu/D,UAAUlY,OAEfiY,MACFt/D,EAAO64B,UAAUk0B,QAAQwS,UAAUlY,M,EAGvCqY,UACE,MAAM7iC,EAAM59B,KACZ,IAAIw8C,EAGFA,EAFEn6C,EAAE,mBAAmB/E,OAAS,EAElB+E,EAAE,mBACbwvC,KAAK,0DACLA,KAAK,iBACCxvC,EAAE,mBAAmB/E,OAAS,EAEzB+E,EAAE,mBACbwvC,KAAK,0DACLA,KAAK,iBACCxvC,EAAE,6BAA6B/E,OAAS,EAEnC+E,EAAE,6BACbwvC,KAAK,0DACLA,KAAK,iBACCxvC,EAAE,UAAU/E,OAAS,EAChB+E,EAAE,UACbwvC,KAAK,0DACLA,KAAK,iBAEMjU,EAAIE,IACf1/B,SAAS,SACTyzC,KAAK,0DACLA,KAAK,iBAGN2K,GAAeA,EAAYl/C,OAAS,IAElCk/C,EAAYja,SAAS,SACvBia,EAAcA,EAAY9yC,OAAO,SAAStL,SAAS,6BAEjDo+C,EAAYl/C,OAAS,GAAGk/C,EAAY3uC,UAAU,EAAG,K,EAGzD6yD,aAAanwC,GACX,MAAMxvB,EAASF,IACA03B,KACJkB,SAAW14B,EAAOu/D,YACb,UAAV/vC,EACFxvB,EAAOu/D,UAAUK,oBAEjB5/D,EAAOu/D,UAAUM,gBAGjBP,OACY,UAAV9vC,EACFxvB,EAAO64B,UAAUk0B,QAAQwS,UAAUO,SAAS,CAAEviE,MAAO,SAErDyC,EAAO64B,UAAUk0B,QAAQwS,UAAUO,SAAS,CAAEviE,MAAO,U,EAI3DwiE,mBAAmBvwC,GACjB,MAAMxvB,EAASF,IACA03B,KACJkB,SAAW14B,EAAOu/D,WAC3Bv/D,EAAOu/D,UAAUS,2BAA2BxwC,GAE1C8vC,MACFt/D,EAAO64B,UAAUk0B,QAAQwS,UAAUQ,mBAAmB,CAAEvwC,S,EAG5DywC,YACE,MAAMjgE,EAASF,IACTg4B,EAASN,KACf,OAAO,IAAIwK,SAASC,IACdnK,EAAOY,SAAW14B,EAAOu/D,WAC3Bt9B,EAAQjiC,EAAOu/D,UAAUU,WAEvBX,MACFt/D,EAAO64B,UAAUk0B,QAAQwS,UAAUW,UAAUv9B,MAAMw9B,IACjDl+B,EAAQk+B,EAAKC,QAAQ,IAGzBn+B,GAAQ,EAAM,G,EAGlBo+B,gBAAgBC,QAAQ,IAARA,OAAW,GACzB,MAAMtgE,EAASF,IACA03B,KACJkB,SAAW14B,EAAOu/D,WAC3Bv/D,EAAOu/D,UAAUc,gBAAgBC,GAE/BhB,MACFt/D,EAAO64B,UAAUk0B,QAAQwS,UAAUgB,mBAAmB,CAAEC,QAASF,G,EAGrEhiC,OACE,MAAMzB,EAAM59B,KACNe,EAASF,IACTg4B,EAASN,KACTjyB,EAASs3B,EAAIt3B,OAAOk7D,UAC1B,IAAKl7D,EAAOm7D,QAAS,OACrB,MAAMC,EAAY7oC,EAAOY,SAAW14B,EAAOu/D,UACrCqB,EAAQtB,MAEVqB,GAAaC,KACXr7D,EAAOs7D,kBACTv/D,EAAEtB,GAAQ+C,GAAG,YAAay8D,GAAUE,QAAQ/pC,KAAKkH,IAE/C/E,EAAOxC,MACL/vB,EAAOu7D,mBACTtB,GAAUa,iBAAgB,GAE1Bb,GAAUa,iBAAgB,GAEA,UAAxB96D,EAAOw7D,aACTvB,GAAUG,aAAa,SAEvBH,GAAUG,aAAa,UAGvB7nC,EAAOC,UACLxyB,EAAOy7D,uBACTxB,GAAUa,iBAAgB,GAE1Bb,GAAUa,iBAAgB,GAEI,UAA5B96D,EAAO07D,iBACTzB,GAAUG,aAAa,SAEvBH,GAAUG,aAAa,WAIzBp6D,EAAO27D,oBAAsBppC,EAAOxC,KACtCkqC,GAAUO,mBAAmBx6D,EAAO27D,oBAElC37D,EAAO47D,wBAA0BrpC,EAAOC,SAC1CynC,GAAUO,mBAAmBx6D,EAAO47D,uBAExC,GAGF,IAAAC,GAAe,CACb3+D,KAAM,YACN8C,OAAQ,CACNk7D,UAAW,CACTC,SAAS,EAETG,kBAAkB,EAElBC,oBAAoB,EACpBC,aAAc,QACdG,mBAAoB,KAEpBF,wBAAwB,EACxBC,iBAAkB,QAClBE,uBAAwB,OAG5BplC,SAEEvG,GADYv2B,KACK,CACfwhE,UAAWjB,I,EAGfz8D,GAAI,CACFu7B,OAEEkhC,GAAUlhC,KAAKj9B,KADHpC,KAEd,ICjKJ,IAAAstD,GAAe,CACb9pD,KAAM,OACN8C,OAAQ,CACN2oC,KAAM,CACJ5P,MAAM,EACNguB,qBAAqB,EACrB7pD,UAAM8F,EACNujD,MAAM,EACN5qB,QAAQ,EACRssB,UAAW,KACX5L,UAAU,EACVQ,eAAgB,GAChBD,6BAA6B,EAC7BG,iBAAkB,IAClByM,gBAAgB,EAChBla,qBAAqB,EACrBmG,oBAAoB,EACpBxE,aAAa,EACbI,cAAc,EACdnG,uBAAwB,EACxB2b,uBAAuB,EACvBhN,gBAAgB,EAChBC,2BAA2B,EAC3BC,sBAAuB,EACvB+D,wBAAwB,EACxB4E,kBAAkB,EAClBhG,yBAAyB,EACzBC,0BAA0B,EAC1BkD,iBAAiB,EAEjBL,cAAc,EACdsc,2BAA2B,EAC3BC,4BAA4B,EAC5BC,uBAAwB,GACxBC,sBAAuB,EACvBxc,aAAa,EACbyc,0BAA0B,EAC1BC,2BAA2B,EAC3BC,sBAAuB,GACvBC,qBAAsB,EAEtBl0B,gBAAgB,EAChB8L,wBAAoBjxC,EACpBklC,uBAAuB,EACvBwX,6BAA6B,EAC7BxL,wBAAyB,KACzBkL,sBAAsB,EACtBO,4BAA4B,EAC5BpB,4BAA4B,EAC5BoD,mBAAoB,UAEpBzgD,SAAS,EAETq2C,kBAAkB,EAElB/K,0BAA0B,EAE1B8vB,iBAAkB,EAClBC,gBAAiB,EAEjBrsB,kBAAmB,KACnBE,kBAAmB,OAGvBrZ,OAAQ,CACNiwB,SAEFxwB,SACE,MAAMc,EAAM59B,KACZhD,GAAO4gC,EAAK,CACVoR,MAAOhyC,GAAO,GAAI,CAChB8/B,OAAMA,CAACh7B,EAAIwE,IACF,IAAIgnD,GAAK1vB,EAAK97B,EAAIwE,GAE3B/E,IAAI6rD,GACF,MAAMzU,EAAUt2C,EAAE+qD,GAClB,GAAIzU,EAAQr7C,QAAUq7C,EAAQ,GAAGmU,OAAQ,OAAOnU,EAAQ,GAAGmU,MAE7D,MAGJ/vD,OAAOuE,eAAes8B,EAAIoR,MAAO,UAAW,CAC1Cta,YAAY,EACZspB,cAAc,EACdz8C,IAAGA,IAvHT,SAAwBq8B,GACtB,MAAMklC,EAAezgE,EAAE,2BACjB0gE,EAAa1gE,EAAE,yBACf2gE,EAAa3gE,EAAE,yBACrB,IAAI4gE,EAAW5gE,EAAE,UACO,IAApB4gE,EAAS3lE,SAAc2lE,EAAWrlC,EAAIE,KAE1C,IAAI6a,EAAUsqB,EAAS7kE,SAAS,SAgBhC,GAfuB,IAAnBu6C,EAAQr7C,SACVq7C,EAAUsqB,EAAS7kE,SAAS,SAASA,SAAS,UAG5Cu6C,EAAQr7C,OAAS,GACfq7C,EAAQpW,SAAS,SAEnBoW,EAAUsqB,EAAS7kE,SAAS,oBACL,IAAnBu6C,EAAQr7C,SACVq7C,EAAUsqB,EAAS7kE,SAAS,SAASA,SAAS,sBAMhD0kE,EAAaxlE,OAAS,GAAKwlE,EAAa,GAAGhW,OAAQ,OAAOgW,EAAa,GAAGhW,OAC9E,GAAIiW,EAAWzlE,OAAS,GAAKylE,EAAW,GAAGjW,OAAQ,OAAOiW,EAAW,GAAGjW,OACxE,GAAIkW,EAAW1lE,OAAS,GAAK0lE,EAAW,GAAGlW,OAAQ,OAAOkW,EAAW,GAAGlW,OACxE,GAAInU,EAAQr7C,OAAS,EAAG,CACtB,GAAuB,IAAnBq7C,EAAQr7C,QAAgBq7C,EAAQ,GAAGmU,OAAQ,OAAOnU,EAAQ,GAAGmU,OACjE,GAAInU,EAAQr7C,OAAS,EACnB,OAAOsgC,EAAIoR,MAAM6d,IAErB,CAEF,CAuFeqW,CAAetlC,KAI1BA,EAAIqR,KAAOrR,EAAIoR,K,EAEjBlrC,GAAI,CACFu7B,OACE,MAAMzB,EAAM59B,KACZqC,EAAE,cAAc8E,MAAMimD,IACpB,GAAIA,EAAON,OAAQ,OACnB,MAAMJ,EAAarqD,EAAE+qD,GAAQ/iD,UAC7BuzB,EAAIoR,MAAMlS,OAAOswB,EAAQV,EAAW,G,EAGxC,sBAAuB,SAAgBl2B,GACrC,MAAMoH,EAAM59B,KACZw2B,EAASsH,IAAI+T,KAAK,cAAc1qC,MAAMimD,IACpC,GAAIA,EAAON,OAAQ,OACnB,MAAMJ,EAAarqD,EAAE+qD,GAAQ/iD,UAC7BuzB,EAAIoR,MAAMlS,OAAOswB,EAAQV,EAAW,G,EAGxC,wCAAyC,SAAiBl2B,GACnDA,GAAaA,EAASsH,KAC3BtH,EAASsH,IAAI+T,KAAK,cAAc1qC,MAAMimD,IACpC,MAAMne,EAAOme,EAAON,OACf7d,GACLA,EAAKlR,SAAS,GAElB,GAEFrB,MAAO,CACL,YAAa,CACX+0B,OAAO/0B,GACL,MACM0wB,EAAS1wB,EAAM4zB,IACrB,GAAIlD,EAAON,OAAQ,OACnB,MAAMJ,EAAarqD,EAAE+qD,GAAQ/iD,UAHjBrK,KAIRgvC,MAAMlS,OAAOswB,EAAQV,E,EAE3B3uB,QAAQrB,GACN,MACMuS,EADSvS,EAAM4zB,IACDxD,OACf7d,GACLA,EAAKlR,SACP,KCtKN,MAAMolC,GAAS,CACb3+C,KAAK1iB,GACH,MAAM87B,EAAM59B,KAEZ,IAAI89B,EAAMz7B,EAAEP,GAEZ,GAAIg8B,EAAIyE,SAAS,WAIf,YAHAzE,EAAMA,EAAI1/B,SAAS,WAAW+I,MAAMgzC,IAClCvc,EAAIqc,OAAOz1B,KAAK21B,EAAS,KAK7B,MAAMipB,EAAWtlC,EAAI1/B,SAAS,iBAC9B,IAAKglE,EAAS9lE,OAAQ,OAEtB,MAAM+lE,EACJD,EAAS7gC,SAAS,gCAClB3E,EAAIt3B,OAAO2zC,OAAQ,GAAErc,EAAIxM,oBACrBkyC,EAA8B,QAAd1lC,EAAIxM,QAAoBwM,EAAIt3B,OAAO2zC,OAAQ,GAAErc,EAAIxM,oBAEvE,IAAKiyC,IAAoBC,EAAe,OAExC,GACExlC,EAAI7zB,QAAQ,yBAAyB3M,OAAS,GAC9CwgC,EAAI7zB,QAAQ,yBAAyB3M,OAAS,EAE9C,OAGgB,QAAdsgC,EAAIxM,OAAmBwM,EAAIt3B,OAAO2zC,OAAQ,GAAErc,EAAIxM,qBAClDgyC,EAAS9gC,SAAS,+BAEF,QAAd1E,EAAIxM,OAAoBwM,EAAIt3B,OAAO2zC,OAAOspB,gBAC5CH,EAAS9gC,SAAS,2BAGpB,MAAMqW,EAAU7a,EAAI7zB,QAAQ,SAASC,GAAG,GAClCgE,EAAO0vB,EAAIuD,IAAMiiC,EAAShlE,SAAS,UAAYglE,EAAShlE,SAAS,SACjEsf,EAAQkgB,EAAIuD,IAAMiiC,EAAShlE,SAAS,SAAWglE,EAAShlE,SAAS,UACjEolE,EAAQJ,EAAShlE,SAAS,UAC1BqlE,EAAYL,EAAShlE,SAAS,cAC9BslE,EAAyB,IAAhBx1D,EAAK5Q,OACdqmE,EAA2B,IAAjBjmD,EAAMpgB,OAChBsmE,EAAYF,EAAS,EAAIx1D,EAAK21D,YAAW,GACzCC,EAAaH,EAAU,EAAIjmD,EAAMmmD,YAAW,GAC5CE,EAAaP,EAAMK,YAAW,GAC9BG,EAAeZ,EAASl0D,SAExB+0D,EADcb,EAAS,GAAGh0D,YAG9B8gB,SAAS8zC,EAAaE,YAAa,IACnCh0C,SAAS8zC,EAAaG,aAAc,IAChCC,EAAatmC,EAAIyE,SAAS,mBAC1B8hC,EAAUjB,EAAS7gC,SAAS,WAElC,IAAIN,EACA+N,EAOAs0B,EACAC,EANA5rB,EAAQr7C,OAAS,GAAKq7C,EAAQ,GAAGmU,SACnC7qB,EAAS0W,EAAQ,GAAGmU,OAAO7qB,OAC3B+N,EAAgB/N,GAAUA,EAAO+N,eAK/B2zB,IACFW,EAAWL,EAAmBF,GAE5BL,IACFY,EAAW,GAERZ,GAAWC,IACdW,GAAYL,EAAmBH,EAAaC,EAAaH,GAAa,GAExE,IAAIY,GAAgBP,EAAmBF,GAAc,EACjDE,EAAmBL,EAAYE,EAAaC,GAC1CS,EAAeZ,IACjBY,EAAeZ,GAEbY,EAAeT,EAAaE,EAAmBH,IACjDU,EAAeP,EAAmBH,EAAaC,GAEjDQ,EAAOC,EAAeF,GAEtBC,EAAO,EAIT,MAAMxyB,EAAWnU,EAAIuD,KAAO,EAAI,EAEhC,GAAI6O,GAA+B,QAAdpS,EAAIxM,MAAiB,CACxC,GAAIoyC,EAAMjhC,SAAS,YAAeihC,EAAMlmE,OAAS,GAAK+mE,EAAU,CAC9D,IAAII,IAAoBH,EAAWC,GAAQxyB,EAC3C,MAAM2yB,GAAoBT,EAAmBK,EAAWC,EAAOR,GAAchyB,EAE7E,GAAIqyB,GACEniC,GAAUA,EAAO37B,OAAOwsC,yBAA0B,CACpD,MAAM6xB,EAAuB7mC,EAC1Bp0B,SACAmoC,KAAK,mBACLzzC,SAAS,iBACTyzC,KAAK,sBACJ8yB,EAAqBrnE,OAAS,IAChCmnE,GAAmBE,EAAqB,GAAGzlB,WAE/C,CAEFskB,EAAM,GAAGzwB,mBAAqB0xB,EAC9BjB,EAAM,GAAG3vB,oBAAsB6wB,CACjC,CACA,IAAKhB,IAAWx1D,EAAKq0B,SAAS,YAAc8hC,GAC1C,GAAIzmC,EAAIuD,IACNjzB,EAAK,GAAG6kC,qBAAwBkxB,EAAmB/1D,EAAK,GAAGkB,aAAe,EAAK2iC,EAC/E7jC,EAAK,GAAG2lC,oBAAsB+vB,EAAY7xB,OAI1C,GAFA7jC,EAAK,GAAG6kC,oBAAsB6wB,EAC9B11D,EAAK,GAAG2lC,qBAAuBowB,EAAmB/1D,EAAK,GAAGkB,aAAe,EAEvE6yB,GACAA,EAAO37B,OAAOwsC,0BACd5kC,EAAK2jC,KAAK,eAAev0C,OAAS,GAE9B4Q,EAAK2jC,KAAK,sBAAsBv0C,OAAQ,CAC1C,MAAMshD,EAAa1wC,EAAK,GAAG6kC,mBACrB8L,EAAc3wC,EAAK,GAAG2lC,oBAC5B3lC,EAAK,GAAG6kC,mBAAqB,EAC7B7kC,EAAK,GAAG2lC,oBAAsB,EAC9B3lC,EAAK2jC,KAAK,sBAAsB,GAAGkB,mBAAqB6L,EACxD1wC,EAAK2jC,KAAK,sBAAsB,GAAGgC,oBACjCgL,EAAc3wC,EAAK2jC,KAAK,eAAe,GAAGziC,WAC9C,CAIDu0D,IAAYjmD,EAAM6kB,SAAS,aAAc8hC,IACxCzmC,EAAIuD,KACNzjB,EAAM,GAAGq1B,oBAAsB+wB,EAAa/xB,EAC5Cr0B,EAAM,GAAGm2B,qBAAwBowB,EAAmBvmD,EAAM,GAAGtO,aAAe,EAAK2iC,IAEjFr0B,EAAM,GAAGq1B,qBAAuBkxB,EAAmBvmD,EAAM,GAAGtO,aAAe,EAC3EsO,EAAM,GAAGm2B,oBAAsBiwB,IAG/BL,EAAUnmE,SAAWmmE,EAAUlhC,SAAS,YAAc8hC,KACxDZ,EAAU,GAAG1wB,mBAAqBnV,EAAIuD,IAClCsiC,EAAU,GAAGr0D,aACZq0D,EAAU,GAAGr0D,YAClBq0D,EAAU,GAAG5vB,qBAAuB4vB,EAAU,GAAG1wB,mBAErD,CAGA,GAAIswB,EAAiB,CACnB,IAAIuB,EAAYL,EACZ3mC,EAAIuD,KAAOuiC,GAAUC,GAAWH,EAAMlmE,OAAS,IAAGsnE,GAAaA,GACnEpB,EAAM93D,IAAI,CAAEwC,KAAO,GAAE02D,OACvB,C,EAEFpE,KAAK1+D,EAAI0F,EAAgBq9D,EAAuBC,QAAhC,IAAPt9D,OAAU,QAAmB,IAAbq9D,OAAgB,QAAsB,IAAfC,OAAkB,GAChE,MAAMlnC,EAAM59B,KACZ,IAAI89B,EAAMz7B,EAAEP,GACZ,MAAMijE,EAAYjnC,EAAIyE,SAAS,WAAazE,EAAIp0B,OAAO,YAAYpM,SAAWwnE,EAE9E,GADIC,IAAWjnC,EAAMA,EAAI7zB,QAAQ,cAC5B6zB,EAAIxgC,OAAQ,OACjB,GAAIwgC,EAAIyE,SAAS,iBAAkB,OACnC,IAAIh3B,EAAa,iBAAe/D,EAAU,wBAA0B,KAC7Cu9D,EACnBjnC,EAAI+T,KAAK,gCAAgCv0C,OACzCwgC,EAAI+T,KAAK,gBAAgBv0C,UAE3BiO,GAAa,wBAEXs5D,IACFt5D,GAAa,4BAEfuyB,EAAIyX,eAAc,KAChBzX,EAAI0E,YAAY,uBAAuB,IAEzC1E,EAAIwE,SAAS/2B,GACTw5D,EACFjnC,EAAI1/B,SAAS,WAAW+I,MAAM69D,IAC5B3iE,EAAE2iE,GAAOnhE,QAAQ,eACjB+5B,EAAItC,KAAK,aAAc0pC,EAAM,KAG/BlnC,EAAIj6B,QAAQ,eACZ+5B,EAAItC,KAAK,aAAcwC,EAAI,I,EAG/BsqB,KAAKtmD,EAAuB0F,EAAgBs9D,QAArC,IAAFhjE,MAAK,uBAAyB,IAAP0F,OAAU,QAAqB,IAAfs9D,OAAkB,GAC5D,MAAMlnC,EAAM59B,KACZ,IAAI89B,EAAMz7B,EAAEP,GACZ,MAAMijE,EAAYjnC,EAAIyE,SAAS,WAAazE,EAAIp0B,OAAO,YAAYpM,SAAWwnE,EAC1EC,IAAWjnC,EAAMA,EAAI7zB,QAAQ,aAC5B6zB,EAAIxgC,QACJwgC,EAAIyE,SAAS,mBACd/6B,IACFs2B,EAAIwE,SAAS,wBACbxE,EAAIyX,eAAc,KAChBzX,EAAI0E,YAAY,uBAAuB,KAG3C1E,EAAI0E,YAAY,6DACZuiC,EACFjnC,EAAI1/B,SAAS,WAAW+I,MAAM69D,IAC5B3iE,EAAE2iE,GAAOnhE,QAAQ,eACjB+5B,EAAItC,KAAK,aAAc0pC,EAAM,KAG/BlnC,EAAIj6B,QAAQ,eACZ+5B,EAAItC,KAAK,aAAcwC,EAAI,K,EAG/Boc,YAAYiK,GACV,IAAIJ,EACA7K,EACA+rB,EAaJ,GAZI9gB,EAAKjL,WAAaiL,EAAKrmB,KACzBmnC,EAAW9gB,EACXJ,EAAUI,EAAKrmB,MAEfimB,EAAU1hD,EAAE8hD,GACRJ,EAAQzmD,OAAS,IAAG2nE,EAAWlhB,EAAQ,GAAG5O,SAE5C8vB,GAAYA,EAAS/rB,WAAa+rB,EAAS/rB,UAAU57C,OAAS,EAChE47C,EAAY+rB,EAAS/rB,UACZ6K,IACT7K,EAAY6K,EAAQ3lD,SAAS,YAE1B86C,KAAcA,GAAkC,IAArBA,EAAU57C,QAC1C,OAAO47C,EAAU,E,EAEnBgsB,YAAY/qB,GACV,MAAMjB,EAAY72C,EAAE83C,GACpB,GAAIjB,EAAUjvC,QAAQ,SAAS3M,OAC7B,OAAO47C,EAAUjvC,QAAQ,SAAS,GAEpC,IAAIovC,EASJ,OARAH,EACGjvC,QAAQ,SACR4nC,KAAK,SACL1qC,MAAMrF,IACDA,GAAMA,EAAGqzC,QAAUrzC,EAAGqzC,OAAOgF,UAAYjB,EAAU,KAAOp3C,EAAGqzC,OAAOgF,WACtEd,EAASv3C,EACX,IAEGu3C,C,EAGT8rB,mBAAmBhrB,GACjB,MAAMvc,EAAM59B,KACZ,IAAIk5C,EAAY72C,EAAE83C,GAClB,GAAIjB,EAAU3W,SAAS,aACrB2W,EAAYA,EAAUrH,KAAK,WACvBqH,EAAU57C,OAAS,IACrB47C,EAAY72C,EAAE83C,GAAUtI,KAAK,iCAE3BqH,EAAU57C,OAAS,IAAM47C,EAAU57C,QACrC,OAGJ,MAAMymD,EAAU1hD,EAAEu7B,EAAIqc,OAAOirB,YAAYhsB,IACzCA,EAAU5W,SAAS,0BACnByhB,EAAQ75C,GAAG,GAAGo4B,SAAS,oCAAoCz+B,QAAQ,6BACnE+5B,EAAItC,KAAK,2BAA4ByoB,EAAQ,IAC7C7K,EAAUr1C,QAAQ,mBAClB+5B,EAAItC,KAAK,iBAAkB4d,EAAU,G,EAEvCksB,iBAAiBjrB,GACf,MAAMvc,EAAM59B,KACZ,IAAIk5C,EAAY72C,EAAE83C,GAClB,GAAIjB,EAAU3W,SAAS,aACrB2W,EAAYA,EAAUrH,KAAK,iBACvBqH,EAAU57C,OAAS,IACrB47C,EAAY72C,EAAE83C,GAAUtI,KAAK,iCAE3BqH,EAAU57C,OAAS,IAAM47C,EAAU57C,QACrC,OAGJ,MAAMymD,EAAU1hD,EAAEu7B,EAAIqc,OAAOirB,YAAYhsB,IACzCA,EAAU1W,YAAY,0BACtBuhB,EACG75C,GAAG,GACHs4B,YAAY,oCACZ3+B,QAAQ,4BACX+5B,EAAItC,KAAK,0BAA2ByoB,EAAQ,IAC5C7K,EAAUr1C,QAAQ,iBAClB+5B,EAAItC,KAAK,eAAgB4d,EAAU,G,EAErCmsB,iBAAiBlrB,GACf,MAAMvc,EAAM59B,KACZ,IAAIk5C,EAAY72C,EAAE83C,GACdjB,EAAU3W,SAAS,aACrB2W,EAAYA,EAAUrH,KAAK,iBACvBqH,EAAU57C,OAAS,IACrB47C,EAAY72C,EAAE83C,GAAUtI,KAAK,iCAE3BqH,EAAU57C,OAAS,IAAM47C,EAAU57C,UAIrC47C,EAAU3W,SAAS,0BACrB3E,EAAIqc,OAAOmrB,iBAAiBlsB,GAE5Btb,EAAIqc,OAAOkrB,mBAAmBjsB,G,EAGlCosB,mBAAmBjsB,EAAQc,EAAUorB,EAAUC,EAAcC,GAC3D,MAAM7nC,EAAM59B,KACNu3B,EAAUE,KACVssB,EAAU1hD,EAAEg3C,GACZH,EAAY72C,EAAE83C,GACdurB,EAAgBxsB,EAAUrH,KAAK,gBAC/B8zB,EAAUD,EAAcpoE,QAAU47C,EAAU3W,SAAS,iBAC3D,IAAIqjC,EAAmB,GACvB,MAAMC,EAA6BjoC,EAAIt3B,OAAO2zC,OAAO4rB,2BAC/CC,EAAoCloC,EAAIt3B,OAAO2zC,OAAO6rB,kCAE5D,IAAIC,EACAC,EAEAt1D,EACAvB,EACA82D,EACA13B,EACA23B,EAEAC,EACAC,EAEAC,EA0BAC,EACAC,EACAC,EACAC,GA3BAjB,GAAiBD,GAAYI,KAC/BS,EAAyBltB,EAAUxtC,IAAI,kCAEnC06D,GAA0BA,EAAuB1jE,QAAQ,OAAS,GACpE0jE,EAAyBl2C,SAASk2C,EAAwB,IACtDhxC,OAAOC,MAAM+wC,IAA2BV,EAAcpoE,OACxD8oE,EAAyBV,EAAc,GAAGv2D,aACjCimB,OAAOC,MAAM+wC,KACJ,QAAdxoC,EAAIxM,MAAiBg1C,EAAyB,GAC3B,OAAdxoC,EAAIxM,QAAgBg1C,EAAyB,MAE/CV,EAAcpoE,OACvB8oE,EAAyBV,EAAc,GAAGv2D,aAGxB,QAAdyuB,EAAIxM,MAAiBg1C,EAAyB,GAC3B,OAAdxoC,EAAIxM,QAAgBg1C,EAAyB,KAItDb,GAAYI,IACdC,GAAoBQ,GAUtB,SAASM,IACP3iB,EAAQlS,KAAK,iBAAiB1qC,MAAMw9C,IAClCA,EAAcgiB,qBACZhiB,EAAcj0C,aAAei0C,EAAcx1C,YAAY,GAE7D,CAEA,SAASy3D,IACqB1tB,EAAU3W,SAAS,uCAE1CgkC,GAAiBP,EAAmB,IAEvCA,GAAoBI,EAAyB,GAC7CJ,EAAmBI,EAEnB/jE,EAAEkkE,GAAe14D,UAAUu4D,EAAwB,KAC1CJ,EAAmBI,GAC5B/jE,EAAEkkE,GAAe14D,UAAU,EAAG,KAElC,CAEA,SAASg5D,IACqB3tB,EAAU3W,SAAS,uCAE1CgkC,GAAiBP,EAAmB,IACrCA,GAAoBK,EAAqB,GAAKL,EAAmBK,EACnEhkE,EAAEkkE,GAAe14D,UAAUw4D,EAAoB,KACtCL,EAAmBK,GAC5BhkE,EAAEkkE,GAAe14D,UAAU,EAAG,KAElC,CAsDA,IAAIi5D,EAA2B,KAC3BC,EAAmB,KAoHvB,SAASC,EAAa99D,GACpBq9D,EAAgBvmE,KACZkJ,GAAKA,EAAEjM,QAAUiM,EAAEjM,SAAWspE,IAGlCP,EAAmBO,EAAc14D,UACjCy4D,EAAgBN,EACZR,EA1HN,SAAmC7gB,GAIjC,GAFEzL,EAAU3W,SAAS,kBACnB2W,EAAUxvC,OAAO,YAAY64B,SAAS,iBAC1B,OACd,MAAM0kC,EACJ/tB,EAAU3W,SAAS,6BAClB2W,EAAU3W,SAAS,iBAAmB2W,EAAU3W,SAAS,sBAC5DukC,EAA2BC,EAC3B,MAAMG,EAAqBpgE,KAAKgC,IAC9Bs9D,EACAzhB,EAAcgiB,sBAAwBP,GAExCW,EAAmBjgE,KAAKgC,IAAIhC,KAAK+B,IAAIm9D,EAAmBkB,EAAoB,GAAI,GAChF,MAAMC,EACJL,EAA2B,GAAKA,EAA2B,EAE7D,GAD4B5tB,EAAU3W,SAAS,qCACtB,OACzB4jC,EAAkBjtB,EAAU3W,SAAS,0BACrC,MAAM6kC,EAAQluB,EAAUrH,KAAK,cACJ,IAArBk1B,GAA0BZ,EAC5BvoC,EAAIqc,OAAOmrB,iBAAiBlsB,EAAU,IACR,IAArB6tB,GAA2BZ,GACpCvoC,EAAIqc,OAAOkrB,mBAAmBjsB,EAAU,IAGlB,IAArB6tB,GAA0BZ,GACL,IAArBY,GAA0BI,GACL,IAArBJ,IAA2BZ,GACN,IAArBY,GAA0BI,GAET,OAAdvpC,EAAIxM,OACN8nB,EAAUrH,KAAK,iBAAiBnmC,IAAI,WAAY,IAElDwtC,EAAUrH,KAAK,UAAUnmC,IAAI,UAAW,IACxCwtC,EAAUrH,KAAK,iCAAiCnmC,IAAI,YAAa,IACjEwtC,EAAUrH,KAAK,qBAAqBnmC,IAAI,UAAW,IAC/Cu7D,GACFG,EAAM17D,IAAI,UAAW,IAEvB07D,EAAM17D,IAAI,YAAa,KACdq7D,EAAmB,GAAKA,EAAmB,IAClC,OAAdnpC,EAAIxM,OACN8nB,EAAUrH,KAAK,iBAAiBnmC,IAAI,WAAY,WAElDwtC,EAAUrH,KAAK,UAAUnmC,IAAI,UAAqC,IAAnBq7D,EAAN,IACzC7tB,EACGrH,KAAK,iCACLnmC,IACC,YACC,qBAAoB,EAAIq7D,EAAmBX,WAEhDltB,EAAUrH,KAAK,qBAAqBnmC,IAAI,UAAW,EAAuB,EAAnBq7D,GAEnDE,GACFG,EAAM17D,IAAI,UAAWq7D,GAEvBK,EAAM17D,IACJ,YACC,qBAAoB,EAAIq7D,EAAmBX,YAI5CP,IACGtuC,EAAQG,MAKF+uC,IACTlmE,aAAakmE,GACbA,EAAoB,KACpBA,EAAoBnmE,YAAW,KAC7BsmE,IACArmE,aAAakmE,GACbA,EAAoB,IAAI,GApKP,MA0JnBlmE,aAAaimE,GACbA,EAAkBlmE,YAAW,KAC3BsmE,GAAiB,GA3JE,MAuK3B,CA4CIS,CAA0Bd,GACjBd,GAlLb,WACE,MAAM6B,EACJpuB,EAAU3W,SAAS,kBACnB2W,EAAUxvC,OAAO,YAAY64B,SAAS,iBAExC,GAD4B2W,EAAU3W,SAAS,sCACpB+kC,EAAU,OAChCjB,IACHA,EAAqBlsB,EAAShrC,cAEhC,IAAIqkC,EAAUwyB,EAAmBK,EACjC,MAAMkB,EAAiBruB,EAAU3W,SAAS,8BAG1C,GAFAiR,EAAU1sC,KAAK+B,IAAI/B,KAAKgC,IAAI0qC,EAAS,GAAI,GAEpC+zB,GAA8B,IAAZ/zB,IAAoB+zB,GAA8B,IAAZ/zB,EAC3D0F,EAAUrH,KAAK,sBAAsBnmC,IAAI,UAAW,QADtD,CAIA,GAAI67D,GAA8B,IAAZ/zB,EAKpB,OAJA0F,EAAUr1C,QAAQ,0BAClB+5B,EAAItC,KAAK,wBAAyB4d,EAAU,IAC5CA,EAAU1W,YAAY,mCACtB0W,EAAUrH,KAAK,sBAAsBnmC,IAAI,UAAW,IAGtD,IAAK67D,GAA8B,IAAZ/zB,EAKrB,OAJA0F,EAAUr1C,QAAQ,0BAClB+5B,EAAItC,KAAK,wBAAyB4d,EAAU,IAC5CA,EAAU5W,SAAS,mCACnB4W,EAAUrH,KAAK,sBAAsBnmC,IAAI,UAAW,IAItDwtC,EAAUrH,KAAK,sBAAsBnmC,IAAI,UAAW8nC,GAEhDsyB,IACGvuC,EAAQG,MAKF+uC,IACTlmE,aAAakmE,GACbA,EAAoB,KACpBA,EAAoBnmE,YAAW,KAC7BumE,IACAtmE,aAAakmE,GACbA,EAAoB,IAAI,GAjFP,MAuEnBlmE,aAAaimE,GACbA,EAAkBlmE,YAAW,KAC3BumE,GAAuB,GAxEJ,MAkDzB,CAkCF,CAiIIW,GAEEzjB,EAAQxhB,SAAS,kBACjBgjC,IA9CAxhB,EAAQxhB,SAAS,2BACrB7xB,EAAe61D,EAAc71D,aAC7BvB,EAAeo3D,EAAcp3D,aAC7B82D,EAAWD,EAAmB72D,GAAgBuB,EAC9Cw1D,EACEhtB,EAAU3W,SAAS,kBACnB2W,EAAUxvC,OAAO,YAAY64B,SAAS,iBACpC0jC,EACEroC,EAAIt3B,OAAO2zC,OAAOwtB,sBACpBl5B,EAAS,QAITA,EAFOw3B,EAAoBC,EACzBpoC,EAAIt3B,OAAO2zC,OAAOytB,qBAAuB1B,GAAoBJ,EACtD,OAEA,OAEFI,EAAmBJ,EACnB,OAEA,OAGI,SAAXr3B,GAAqB23B,GACvBtoC,EAAIqc,OAAOmO,KAAKlP,GAAW,GAAM,GACjCgtB,GAAe,GACK,SAAX33B,GAAsB23B,IAC/BtoC,EAAIqc,OAAOumB,KAAKtnB,GAAW,GAAM,GAAO,GACxCgtB,GAAe,GAEjBH,EAAoBC,IAmBtB,CACA,SAAS2B,IACPrB,GAAgB,CAClB,CACA,SAAS1xB,IACPr0C,aAAakmE,GACbA,EAAoB,KACpBA,EAAoBnmE,YAAW,MACP,IAAlBgmE,IACEb,IAAoBD,EACtBqB,IAEAD,IAEFrmE,aAAakmE,GACbA,EAAoB,KACtB,GA5OqB,GA8OzB,CACA1iB,EAAQjgD,GAAG,SAAU,gBAAiBkjE,GAAc,GAGlDzvC,EAAQG,QACN8tC,GAAgBK,GACfJ,GAAmBK,KAEtBloC,EAAI95B,GAAG,qBAAsB6jE,GAC7B/pC,EAAI95B,GAAG,mBAAoB8wC,IAE7B8xB,KACIlB,GAAgBC,IAClB1hB,EAAQlS,KAAK,iBAAiB1qC,MAAMw9C,IAC9BA,EAAc92C,UAAY,GAAGm5D,EAAa5kE,KAAKuiD,EAAc,IAGrE/mB,EAAI95B,GAAG,SAAU4iE,GACjB3iB,EAAQ,GAAG6jB,6BAA+B,WACxChqC,EAAIz0B,IAAI,SAAUu9D,UACX3iB,EAAQ,GAAG6jB,6BAClB7jB,EAAQ56C,IAAI,SAAU,gBAAiB69D,GAAc,GAEnDzvC,EAAQG,QACN8tC,GAAgBK,GACfJ,GAAmBK,KAEtBloC,EAAIz0B,IAAI,qBAAsBw+D,GAC9B/pC,EAAIz0B,IAAI,mBAAoByrC,G,CAGlC,GAEF,IAAAizB,GAAe,CACbrkE,KAAM,SACNs5B,SAEEvG,GADYv2B,KACK,CACfi6C,OAAQkpB,I,EAGZ78D,OAAQ,CACN2zC,OAAQ,CACN6tB,uBAAuB,EACvBvE,gBAAgB,EAChBwE,eAAe,EACfC,kBAAkB,EAClBP,qBAAqB,EACrBC,qBAAqB,EACrBO,4BAA4B,EAC5BpC,4BAA4B,EAC5BC,mCAAmC,IAGvChiE,GAAI,CACF,oGACE,WACE,MAAM85B,EAAM59B,KACZqC,EAAE,WAAW8E,MAAMgzC,IACjBvc,EAAIqc,OAAOz1B,KAAK21B,EAAS,G,EAG/B+tB,iBAAiB/jB,GACXA,EAAKrmB,IAAI,GAAG8pC,8BACdzjB,EAAKrmB,IAAI,GAAG8pC,8B,EAGhBO,aAAahkB,GACX,MAAMvmB,EAAM59B,KACZ,GAAkB,QAAd49B,EAAIxM,MAAiB,OACzB,IAAIse,EACJ,MAAMT,EAAOkV,EAAKrmB,IAAI7zB,QAAQ,SAAS,GAAG6iD,OACpC3S,EAAWvc,EAAIqc,OAAOC,YAAYiK,GAMxC,GAFEzU,EAHGyK,EAGU93C,EAAE83C,GAAUlwC,QAAQ,YAFpBk6C,EAAKrmB,IAAI7zB,QAAQ,SAAS7L,SAAS,YAI9C+lD,EAAKrmB,IAAIyE,SAAS,cAAiB0M,EAAKhN,OAAO+N,gBAAkBmK,EAAW,CAC9E,MAAM3yC,KAAa28C,EAAKH,UAAYG,EAAKliB,OAAOviC,QAAQpC,OAAS,GACjEsgC,EAAIqc,OAAOumB,KAAK9wB,EAAYloC,EAC9B,MACEo2B,EAAIqc,OAAOmO,KAAK1Y,E,EAGpB04B,WAAWjkB,GACT,MACMjL,EAAY72C,EADNrC,KACYi6C,OAAOC,YAAYiK,IACtCjL,GAAkC,IAArBA,EAAU57C,QAFhB0C,KAGRi6C,OAAOz1B,KAAK00B,E,EAElBmvB,SAASlkB,GACP,MAAMvmB,EAAM59B,KACNk5C,EAAY72C,EAAEu7B,EAAIqc,OAAOC,YAAYiK,IAC3C,IAAKjL,GAAkC,IAArBA,EAAU57C,OAAc,OAM1C,IAAIgrE,EAUAC,EAMAC,EAnBJ5qC,EAAIqc,OAAOz1B,KAAK00B,GAIZA,EAAUrH,KAAK,gBAAgBv0C,OAAS,GAC1C47C,EAAU5W,SAAS,gBAEjB4W,EAAU3W,SAAS,kBACjB3E,EAAIt3B,OAAO2zC,OAAOguB,6BAA4BK,GAA8B,GAChFnkB,EAAKrmB,IAAIwE,SAAS,4BAKfgmC,GAA+BpvB,EAAU3W,SAAS,wBACrDgmC,GAA0B,IAM1B3qC,EAAIt3B,OAAO2zC,OAAO+tB,kBAClB7jB,EAAKrmB,IAAI+T,KAAK,0BAA0Bv0C,QACxC6mD,EAAKrmB,IAAIyE,SAAS,0BAClB4hB,EAAKrmB,IAAI+T,KAAK,wBAAwBv0C,QACtC6mD,EAAKrmB,IAAIyE,SAAS,0BAQhBimC,IALArkB,EAAKrmB,IAAI+T,KAAK,0BAA0Bv0C,QACxC6mD,EAAKrmB,IAAIyE,SAAS,0BAClB4hB,EAAKrmB,IAAI+T,KAAK,wBAAwBv0C,QACtC6mD,EAAKrmB,IAAIyE,SAAS,0BAQlB+lC,GAA+BE,GAA2BD,IAC5D3qC,EAAIqc,OAAOqrB,mBACTnhB,EAAKriD,GACLo3C,EAAU,GACVsvB,EACAF,EACAC,E,EAIN,qCAAsC,SAA0B/xC,GAC9D,MAAMoH,EAAM59B,KACZw2B,EAASsH,IAAI+T,KAAK,iCAAiC1qC,MAAMgzC,IACvDvc,EAAIqc,OAAOz1B,KAAK21B,EAAS,G,EAG7BsuB,QAAQxoB,GACN,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,iCACL1qC,MAAMgzC,IACLvc,EAAIqc,OAAOz1B,KAAK21B,EAAS,GAE/B,GAEFqT,OAAQ,CACN,iBAAkB,SAAsBE,EAAYgb,EAAax/D,GAE/D,IADYlJ,KACHsG,OAAO2zC,OAAO6tB,sBAAuB,OAC9C,GAAIzlE,EAAE6G,EAAEjM,QAAQ+M,QAAQ,aAAa1M,OAAS,EAC5C,OAEF,IAAIqrE,EAGJ,MAAMzvB,EAAYwU,EAAWzjD,QAAQ,WAC/BylC,EAAawJ,EAAUjvC,QAAQ,YAGrC0+D,EAAiBzvB,EAAUjvC,QAAQ,iBAEL,IAA1B0+D,EAAerrE,SAEb47C,EAAUjvC,QAAQ,SAAS3M,OAAS,IACtCqrE,EAAiBzvB,EAAUjvC,QAAQ,SAAS4nC,KAAK,kBAGrB,IAA1B82B,EAAerrE,QAAgBoyC,EAAWpyC,QACxCoyC,EAAW5+B,QAAQ,iBAAiBxT,OAAS,IAC/CqrE,EAAiBj5B,EAAW5+B,QAAQ,iBAAiB+gC,KAAK,kBAIhC,IAA1B82B,EAAerrE,QACb47C,EAAUpoC,QAAQ,iBAAiBxT,OAAS,IAC9CqrE,EAAiBzvB,EAAUpoC,QAAQ,iBAAiB+gC,KAAK,mBAI3D82B,GAAkBA,EAAerrE,OAAS,IAExCqrE,EAAepmC,SAAS,SAC1BomC,EAAiBA,EAAej/D,OAAO,SAAStL,SAAS,6BAEvDuqE,EAAerrE,OAAS,GAAGqrE,EAAe96D,UAAU,EAAG,KAE/D,GAEF6uB,MAAO,CACLud,OAAQ,CACN0X,UAAUj1B,GACI18B,KACRi6C,OAAOz1B,KAAKkY,EAAM4zB,IACxB,KC1yBN,MAAMsY,GAAU,CACdC,aAAaC,GACX,MAAMlrC,EAAM59B,KACN+oE,EAAY1mE,EAAEymE,GACpB,GAAkB,QAAdlrC,EAAIxM,QAAoB23C,EAAUxmC,SAAS,oBAAqB,OAEpE,GACuB,IAArBwmC,EAAUzrE,SACRyrE,EAAUxmC,SAAS,YAAawmC,EAAUxmC,SAAS,gBAErD,OAEF,IAAIymC,EAAeD,EAAUl3B,KAAK,uBAClC,MAAMo3B,EAAgBF,EAAUl3B,KAAK,aAAav0C,OAClD,GAAsB,IAAlB2rE,EAEF,YADAD,EAAan+D,SAIa,IAAxBm+D,EAAa1rE,QACfyrE,EAAU3qE,SAAS,kBAAkBuL,OAAO,4CAC5Cq/D,EAAeD,EAAUl3B,KAAK,wBACrBm3B,EAAav8D,OAAOnP,QAC7ByrE,EAAU3qE,SAAS,kBAAkBuL,OAAOq/D,GAG9C,MAAME,EAAcH,EAAUl3B,KAAK,oBACnC,IAAIs3B,EACAC,EAEJ,GAAIL,EAAUxmC,SAAS,sBAAwB2mC,GAAeA,EAAY,GACxEC,EAAkB,GAAED,EAAY,GAAG95D,gBACnCg6D,EAAsB,GAAEF,EAAY,GAAGhqB,mBAClC,CACL,MAAMmqB,EAAcH,EAAYzhE,QAChC0hE,EAAoB,IAAMF,EAAR,IAClBG,EAAiE,KAAxCxrC,EAAIuD,KAAOkoC,EAAcA,GAA5B,GACxB,CAEAj3C,IAAU,KACR42C,EAAat9D,IAAI,QAASy9D,GAAgB/3D,UAAW,eAAcg4D,SAA0B,G,EAGjG/pC,KAAKypC,GACS9oE,KACRspE,QAAQT,aAAaC,E,EAE3BtI,KAAK1+D,EAAI0F,QAAO,IAAPA,OAAU,GACjB,MACMs2B,EAAMz7B,EAAEP,GACd,GAAIg8B,EAAIyE,SAAS,kBAAmB,OACpC,MAAMh3B,EAAa,kBAAgB/D,EAAU,yBAA2B,IACxEs2B,EAAIyX,eAAc,KAChBzX,EAAI0E,YAAY,wBAAwB,IAE1C1E,EAAIwE,SAAS/2B,GACbuyB,EAAIj6B,QAAQ,gBARA7D,KASRs7B,KAAK,cAAewC,EAAI,G,EAE9BsqB,KAAKtmD,EAAI0F,QAAO,IAAPA,OAAU,GACjB,MACMs2B,EAAMz7B,EAAEP,GACTg8B,EAAIyE,SAAS,oBACd/6B,IACFs2B,EAAIwE,SAAS,yBACbxE,EAAIyX,eAAc,KAChBzX,EAAI0E,YAAY,wBAAwB,KAG5C1E,EAAI0E,YAAY,kBAChB1E,EAAIj6B,QAAQ,gBAVA7D,KAWRs7B,KAAK,cAAewC,EAAI,I,EAE9ByrC,oBAAoBlwB,GAClB,MAAMzb,EAAM59B,KACN+jD,EAAU1hD,EAAEg3C,GAClB,IAWI0sB,EACAC,EAEAt1D,EACAvB,EACA82D,EACA13B,EACAi7B,EAlBAC,EAAa1lB,EAAQ95C,QAAQ,SAAS7L,SAAS,YAmBnD,SAAS4oE,EAAa99D,GACpB,GAAI66C,EAAQxhB,SAAS,yBAA0B,OAC/C,GAAIwhB,EAAQxhB,SAAS,iBAAkB,OACvC,MAAMgkC,EAAgBvmE,KAClBkJ,GAAKA,EAAEjM,QAAUiM,EAAEjM,SAAWspE,IAGlCP,EAAmBO,EAAc14D,UACjC6C,EAAe61D,EAAc71D,aAC7BvB,EAAeo3D,EAAcp3D,aAC7B82D,EAAWD,EAAmB72D,GAAgBuB,EAC9C84D,EAAgBC,EAAWlnC,SAAS,kBAEhC0jC,EACEroC,EAAIt3B,OAAOgjE,QAAQ7B,sBACrBl5B,EAAS,QAITA,EAFOw3B,EAAoBC,EACzBpoC,EAAIt3B,OAAOgjE,QAAQ5B,qBAAuB1B,GAAoB,GACvD,OAEA,OAEFA,EAAmB,GACnB,OAEA,OAGI,SAAXz3B,GAAqBi7B,GACvB5rC,EAAI0rC,QAAQlhB,KAAKqhB,GACjBD,GAAgB,GACI,SAAXj7B,GAAsBi7B,IAC/B5rC,EAAI0rC,QAAQ9I,KAAKiJ,GACjBD,GAAgB,GAGlBzD,EAAoBC,EACtB,CAxD0B,IAAtByD,EAAWnsE,SACbmsE,EAAa1lB,EAAQlS,KAAK,aAEF,IAAtB43B,EAAWnsE,SACbmsE,EAAa1lB,EAAQ95C,QAAQ,UAAU7L,SAAS,2BAExB,IAAtBqrE,EAAWnsE,SAmDfymD,EAAQjgD,GAAG,SAAU,gBAAiBkjE,GAAc,GACpDjjB,EAAQ,GAAG2lB,uBAAyB1C,EACtC,GAEF,IAAA2C,GAAe,CACbnmE,KAAM,UACNs5B,SAEEvG,GADYv2B,KACK,CACfspE,QAASV,I,EAGbtiE,OAAQ,CACNgjE,QAAS,CACPtB,kBAAkB,EAClBP,qBAAqB,EACrBC,qBAAqB,IAGzB5jE,GAAI,CACFokE,iBAAiB/jB,GACXA,EAAKrmB,IAAI,GAAG4rC,wBACdvlB,EAAKrmB,IAAI30B,IAAI,SAAU,gBAAiBg7C,EAAKrmB,IAAI,GAAG4rC,wBAAwB,E,EAGhFvB,aAAahkB,GACX,MAAMvmB,EAAM59B,KACZ,IAAIypE,EAAatlB,EAAKrmB,IAAI7zB,QAAQ,SAAS7L,SAAS,YAC1B,IAAtBqrE,EAAWnsE,SACbmsE,EAAatlB,EAAKrmB,IAAI7zB,QAAQ,UAAU7L,SAAS,2BAEzB,IAAtBqrE,EAAWnsE,SACbmsE,EAAatlB,EAAKrmB,IAAI+T,KAAK,aAEH,IAAtB43B,EAAWnsE,SAGX6mD,EAAKrmB,IAAIyE,SAAS,cACpB3E,EAAI0rC,QAAQ9I,KAAKiJ,GAEjB7rC,EAAI0rC,QAAQlhB,KAAKqhB,G,EAGrBpB,SAASlkB,GACP,MAAMvmB,EAAM59B,KAIZ,GAHAmkD,EAAKrmB,IAAI+T,KAAK,0BAA0B1qC,MAAM2hE,IAC5ClrC,EAAI0rC,QAAQjqC,KAAKypC,EAAS,IAG1BlrC,EAAIt3B,OAAOgjE,QAAQtB,kBACnB7jB,EAAKrmB,IAAI+T,KAAK,2BAA2Bv0C,QACzC6mD,EAAKrmB,IAAIyE,SAAS,2BAClB4hB,EAAKrmB,IAAI+T,KAAK,wBAAwBv0C,QACtC6mD,EAAKrmB,IAAIyE,SAAS,uBAClB,CACA,GACE4hB,EAAKrmB,IAAI+T,KAAK,2BAA2Bv0C,QACzC6mD,EAAKrmB,IAAIyE,SAAS,2BAClB4hB,EAAKrmB,IAAI+T,KAAK,wBAAwBv0C,QACtC6mD,EAAKrmB,IAAIyE,SAAS,uBAElB,OAEF3E,EAAI0rC,QAAQC,oBAAoBplB,EAAKriD,GACvC,C,EAEFu9B,OACE,MAAMzB,EAAM59B,KACZ49B,EAAIE,IAAI+T,KAAK,0BAA0B1qC,MAAM2hE,IAC3ClrC,EAAI0rC,QAAQjqC,KAAKypC,EAAS,GAE9B,GAEFpsC,MAAO,CACLktC,OAAQ,CACNnY,OAAO/0B,GACO18B,KACRspE,QAAQjqC,KAAK3C,EAAM4zB,IACzB,KCrNNuZ,GAAe,CACbrmE,KAAM,YACNM,GAAI,CACFukE,SAASlkB,GACHA,EAAKjL,WAAaiL,EAAKjL,UAAU57C,QAAU6mD,EAAKjL,UAAUrH,KAAK,cAAcv0C,QAC/E6mD,EAAKrmB,IAAIwE,SAAS,uBAEK6hB,EAAKrmB,IAAI+T,KAAK,cAAc1vC,QAAQ2nE,GACpDznE,EAAEynE,GAAa7/D,QAAQ,SAAS,KAAOk6C,EAAKrmB,IAAI,KAEpCxgC,QACnB6mD,EAAKrmB,IAAIwE,SAAS,sBAEtB,I,OCbW,MACbxlC,YAAY8gC,EAAKE,EAAKzlB,EAAGzD,GACvB,MAAMm1D,EAAS/pE,KAEf,IAAK89B,EAAK,OAEV,MAAM5vB,KAAEA,EAAID,IAAEA,EAAGqqB,MAAEA,EAAK0B,OAAEA,GAAW8D,EAAI,GAAGpwB,wBACtCs8D,EACD3xD,EAAInK,EADH87D,EAEDp1D,EAAI3G,EAET,IAAIg8D,EAAWnjE,KAAK+B,KAAKmxB,GAAU,EAAI1B,GAAS,IAAM,GAAK,IAEvD4xC,GAAU,EACd,MAAMC,EAAgBvsC,EAAIt3B,OAAOoxB,MAAM+N,0BAA4B,GAQnE,GAPI0kC,GAAiBrsC,EAAI/zB,GAAGogE,KAC1BD,GAAU,GAERA,IACFD,EAAWnjE,KAAK+B,IAAI/B,KAAKgC,IAAIwvB,EAAO0B,GAAS,KAG1CkwC,GAAmC,WAAxBpsC,EAAIpyB,IAAI,YAOtBq+D,EAAOK,gBAAmB,eAA0B9xC,EAAQ,EAAnB0xC,QAAuChwC,EAAS,EAApBgwC,uBAPrB,CAChD,MAEMK,GAASJ,EAAW,IADtBD,EAAW1xC,EAAQ,IAAM,GAAK0xC,EAAWhwC,EAAS,IAAM,IAAM,KACbiwC,EAAW,GAChEF,EAAOK,gBAAmB,kCAAyC,EAARC,IAC7D,CA6BA,OAzBIH,GACFpsC,EAAIwE,SAAS,gBAGfynC,EAAOO,cAAgBjoE,EACpB,0BACC6nE,EAAU,qBAAuB,qBAChBD,gBAAuBA,oBACxCA,EAAW,qBACOA,EAAW,aAAaD,YAC1CA,+BAC4BD,EAAOK,2BAGvCtsC,EAAIzuB,QAAQ06D,EAAOO,eAEnBP,EAAOO,cAAc/qB,cAAa,KAC3BwqB,EAAOO,gBACRP,EAAOO,cAAc/nC,SAAS,qBAClCwnC,EAAOO,cAAchoC,SAAS,kBAC1BynC,EAAOQ,iBACTR,EAAOS,OACT,IAGKT,CACT,CAEAhsC,UACE,IAAIgsC,EAAS/pE,KACT+pE,EAAOO,eACTP,EAAOO,cAAcz/D,SAEvB9N,OAAOI,KAAK4sE,GAAQ3sE,SAASC,IAC3B0sE,EAAO1sE,GAAO,YACP0sE,EAAO1sE,EAAI,IAEpB0sE,EAAS,IACX,CAEAS,MACE,MAAMT,EAAS/pE,MACTsqE,cAAEA,GAAkBtqE,KAC1BO,aAAawpE,EAAOU,eACpBH,EAAchoC,SAAS,mBAEvBynC,EAAOU,cAAgBnqE,YAAW,KAChCypE,EAAOhsC,SAAS,GACf,KAEHusC,EAAc/qB,cAAa,KACzBh/C,aAAawpE,EAAOU,eACpBV,EAAOhsC,SAAS,GAEpB,CAEAlzB,SACE,MAAMk/D,EAAS/pE,KACX+pE,EAAOQ,kBACXR,EAAOU,cAAgBnqE,YAAW,KAChCypE,EAAOhsC,SAAS,GACf,KACHgsC,EAAOQ,iBAAkB,EACrBR,EAAOO,cAAc/nC,SAAS,mBAChCwnC,EAAOS,MAEX,GCjGF,IAAAE,GAAe,CACblnE,KAAM,eACN65B,OAAQ,CACNqtC,gBAEF5tC,SACc98B,KACRmnC,YAAc,CAChBrK,SAAgB,QAAAp3B,EAAAhC,UAAApG,OAANqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GACZ,OAAO,IAAI8kE,MAAe/mE,EAC5B,EAEJ,GCTF,MAAMgnE,GAAe,GACfC,GAAe,G,OAMrB,cAAoBhvC,GAClB9+B,YAAY8gC,EAAKt3B,GACfnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAMwa,EAAQp4C,KAERi/B,EAAW,GAGjBmZ,EAAMlc,iBAAiB+C,GAEvBmZ,EAAM9xC,OAAStJ,GAAOiiC,EAAU34B,GAChC8xC,EAAMyyB,QAAS,EAEf,IAAIC,EAAe1yB,EAAM9xC,OAAOykE,YAAc1oE,EAAE+1C,EAAM9xC,OAAOykE,aAAa7gE,GAAG,GAAK0zB,EAAIE,IAStF,OARKgtC,EAAaxtE,SAAQwtE,EAAeltC,EAAIE,KAE7Csa,EAAM0yB,aAAeA,EACrB1yB,EAAM2yB,YAAcD,EAAa,GAGjC1yB,EAAMrb,aAEC/8B,IACT,CAEAgrE,SACE,MAAM5yB,EAAQp4C,KACdo4C,EAAMyyB,QAAS,EACfF,GAAa3oE,KAAKo2C,GAClB/1C,EAAE,QAAQigC,SAAU,cAAa8V,EAAM5O,KAAK/+B,iBAC5C2tC,EAAMta,IAAIj6B,QAAS,cAAau0C,EAAM5O,KAAK/+B,sBAC3C2tC,EAAM9c,KAAM,yBAAwB8c,EAAM5O,WAAY4O,EACxD,CAEA6yB,WACE,MAAM7yB,EAAQp4C,KACdo4C,EAAMta,IAAIj6B,QAAS,gBAAeu0C,EAAM5O,KAAK/+B,wBAC7C2tC,EAAM9c,KAAM,6BAA4B8c,EAAM5O,aAAc4O,EAC9D,CAEA8yB,UACE,MAAM9yB,EAAQp4C,KACdo4C,EAAMyyB,QAAS,EACVzyB,EAAM5O,MAAS4O,EAAMta,MAC1B6sC,GAAan9D,OAAOm9D,GAAajoE,QAAQ01C,GAAQ,GACjD/1C,EAAE,QAAQmgC,YAAa,cAAa4V,EAAM5O,KAAK/+B,iBAC/C2tC,EAAMta,IAAIj6B,QAAS,eAAcu0C,EAAM5O,KAAK/+B,uBAC5C2tC,EAAM9c,KAAM,2BAA0B8c,EAAM5O,YAAa4O,GAC3D,CAEA+yB,WACE,MAAM/yB,EAAQp4C,KACTo4C,EAAM5O,MAAS4O,EAAMta,MAC1Bsa,EAAMta,IAAI0E,YAAY,aACtB4V,EAAMta,IAAI0iC,OAERpoB,EAAM9xC,OAAO8kE,WACZhzB,EAAM9xC,OAAO+kE,gBAAkBjzB,EAAMkzB,sBACtClzB,EAAMmzB,aAENnzB,EAAMmzB,YAAY1gE,SAEpButC,EAAMta,IAAIj6B,QAAS,gBAAeu0C,EAAM5O,KAAK/+B,wBAC7C2tC,EAAM9c,KAAM,6BAA4B8c,EAAM5O,aAAc4O,GAC9D,CAEAna,KAAKutC,EAAcxuB,GACjB,MAAM5E,EAAQp4C,KACRV,EAAWF,IACXw+B,EAAMwa,EAAMxa,IACZE,EAAMsa,EAAMta,IACZytC,EAAcnzB,EAAMmzB,YACpB/hC,EAAO4O,EAAM5O,KACnB,IAAIhiC,GAAU,EAMd,QAL4B,IAAjBgkE,EAA8BhkE,EAAUgkE,OACV,IAAzBpzB,EAAM9xC,OAAOkB,UAC3BA,EAAU4wC,EAAM9xC,OAAOkB,WAGpBs2B,GAAOA,EAAIyE,SAAS,gBACF,IAAjBipC,GAA0B1tC,EAAI,IAAe,WAAT0L,IACtC1L,EAAI,GAAGx/B,MAAMqN,QAAU,UAEpBqxC,GAAO,OAAO5E,EAGrB,GAAa,WAAT5O,GAAqB5L,EAAIt3B,OAAO8xC,MAAMqzB,aAAc,CACtD,IAAIC,EAQJ,GAPIrpE,EAAE,oBAAoB/E,OAAS,EACjCouE,GAAc,EACLf,GAAartE,OAAS,GAC/BqtE,GAAavtE,SAASuuE,IACK,WAArBA,EAAYniC,OAAmBkiC,GAAc,EAAI,IAGrDA,EAEF,OADAd,GAAa5oE,KAAKo2C,GACXA,CAEX,CAEA,MAAMwzB,EAAiB9tC,EAAIp0B,SACrBmiE,EAAW/tC,EAAI7zB,QAAQ3K,GAAUhC,OAAS,EA0BhD,SAASi4C,IACHzX,EAAIyE,SAAS,aACf6V,EAAM+yB,WACGrtC,EAAIyE,SAAS,aACtB6V,EAAM6yB,UAEV,CAuBA,OAtDKW,EAAe7hE,GAAGquC,EAAM0yB,gBAC3B1yB,EAAM0yB,aAAanhE,OAAOm0B,GAC1Bsa,EAAMjd,KAAM,GAAEqO,WAAc,KACtBqiC,EACFD,EAAejiE,OAAOm0B,GAEtBA,EAAIjzB,QACN,KAIJizB,EAAIsqB,OAGFhQ,EAAM9xC,OAAO8kE,WACZhzB,EAAM9xC,OAAO+kE,gBAAkBjzB,EAAMkzB,sBACtClzB,EAAMmzB,aAENnzB,EAAMmzB,YAAYx/D,aAAa+xB,GAIjCsa,EAAMlH,YAAcpT,EAAI,GAAGlwB,WAUvBpG,GACE+jE,IACFA,EAAY/oC,YAAY,gBACxB+oC,EAAYjpC,SAAS,gBAEvBxE,EAAIyhB,cAAa,KACfhK,GAAe,IAEjBzX,EAAIyX,eAAc,KAChBA,GAAe,IAEjBzX,EAAI0E,YAAY,0BAA0BF,SAAS,YACnD8V,EAAM4yB,WAEFO,GACFA,EAAYjpC,SAAS,4BAEvBxE,EAAI0E,YAAY,aAAaF,SAAS,yBACtC8V,EAAM4yB,SACN5yB,EAAM6yB,YAGD7yB,CACT,CAEA7Z,MAAMitC,GACJ,MAAMpzB,EAAQp4C,KACR89B,EAAMsa,EAAMta,IACZytC,EAAcnzB,EAAMmzB,YAE1B,IAAI/jE,GAAU,EAMd,QAL4B,IAAjBgkE,EAA8BhkE,EAAUgkE,OACV,IAAzBpzB,EAAM9xC,OAAOkB,UAC3BA,EAAU4wC,EAAM9xC,OAAOkB,UAGpBs2B,IAAQA,EAAIyE,SAAS,YAIxB,OAHIqoC,GAAaloE,QAAQ01C,IAAU,GACjCwyB,GAAap9D,OAAOo9D,GAAaloE,QAAQ01C,GAAQ,GAE5CA,EAIT,GAAImzB,EAAa,CACf,IAAIO,GAAqB,EACN,UAAf1zB,EAAM5O,MACR4O,EAAMta,IACH/sB,QAAQ,mBACR9K,IAAImyC,EAAMta,IAAIhtB,QAAQ,oBACtB3J,MAAM4kE,IACL,MAAMC,EAAgBD,EAAQztC,QACzB0tC,GAEHA,EAAc1lE,OAAO2lE,sBACrBD,EAAc1lE,OAAO8kE,UACrBY,EAAcE,aAAe9zB,EAAM8zB,aAEnCJ,GAAqB,EACvB,IAGFA,IACFP,EAAY/jE,EAAU,cAAgB,YAAY,gBAClD+jE,EAAY/oC,YAAY,eAE5B,CAKA,SAAS+S,IACHzX,EAAIyE,SAAS,aACf6V,EAAM+yB,WACGrtC,EAAIyE,SAAS,aACtB6V,EAAM6yB,UAEV,CAsBA,OA9BAntC,EAAIt2B,EAAU,cAAgB,YAAY,gBAStCA,GACFs2B,EAAIyhB,cAAa,KACfhK,GAAe,IAEjBzX,EAAIyX,eAAc,KAChBA,GAAe,IAEjBzX,EAAI0E,YAAY,YAAYF,SAAS,aAErC8V,EAAM8yB,YAENptC,EAAIwE,SAAS,gBAAgBE,YAAY,YAAYF,SAAS,aAE9D8V,EAAM8yB,UACN9yB,EAAM+yB,YAGW,WAAf/yB,EAAM5O,MA5Od,WACE,GAA4B,IAAxBohC,GAAattE,OAAc,OAChBstE,GAAarjE,QACrB02B,MACT,CAyOMkuC,GAGK/zB,CACT,CAEAra,UACE,MAAMqa,EAAQp4C,KACVo4C,EAAMg0B,YACVh0B,EAAM9c,KAAM,2CAA0C8c,EAAM5O,oBAAqB4O,GAC7EA,EAAMta,MACRsa,EAAMta,IAAIj6B,QAAS,uBAAsBu0C,EAAM5O,KAAK/+B,+BAChD2tC,EAAMta,IAAIxgC,QAAU86C,EAAMta,IAAI,GAAGQ,gBAC5B8Z,EAAMta,IAAI,GAAGQ,SAGxBtM,GAAYomB,GACZA,EAAMg0B,WAAY,EACpB,GClQF,MAAMC,WAAoBC,GACxBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GACrB,CACEouE,UAAU,EACVa,sBAAsB,EACtBnoE,GAAI,IAENwC,GAIFnF,MAAMy8B,EAAK2uC,GAEX,MAAMC,EAAcxsE,KAKpB,IAAI89B,EAcAytC,EAPJ,GAVAiB,EAAYlmE,OAASimE,EAOnBzuC,EAHG0uC,EAAYlmE,OAAOxE,GAGhBO,EAAEmqE,EAAYlmE,OAAOxE,IAFrBO,EAAEmqE,EAAYlmE,OAAO2nB,SAKzB6P,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAClC,OAAOR,EAAI,GAAGQ,QAGhB,GAAmB,IAAfR,EAAIxgC,OACN,OAAOkvE,EAAYzuC,UAWrB,SAAS0uC,EAAYvjE,GACdsjE,IAAeA,EAAYJ,WAC5Bb,GAAeriE,EAAEjM,SAAWsuE,EAAY,IAC1CiB,EAAYjuC,OAEhB,CAwBA,OArCIiuC,EAAYlmE,OAAO8kE,WACrBG,EAAc3tC,EAAIE,IAAI1/B,SAAS,0BACJ,IAAvBmtE,EAAYjuE,SACdiuE,EAAclpE,EAAE,6CAChBu7B,EAAIE,IAAIn0B,OAAO4hE,KAWnBiB,EAAY1oE,GAAG,qBAAqB,KAC9B0oE,EAAYlmE,OAAO2lE,sBAAwBO,EAAYlmE,OAAO8kE,UAChExtC,EAAI95B,GAAG,QAAS2oE,EAClB,IAEFD,EAAY1oE,GAAG,oBAAoB,KAC7B0oE,EAAYlmE,OAAO2lE,sBAAwBO,EAAYlmE,OAAO8kE,UAChExtC,EAAIz0B,IAAI,QAASsjE,EACnB,IAGFzvE,GAAOwvE,EAAa,CAClB5uC,MACAE,MACAh8B,GAAIg8B,EAAI,GACRytC,cACAW,WAAYX,GAAeA,EAAY,GACvC/hC,KAAM,gBAGR1L,EAAI,GAAGQ,QAAUkuC,EAEVA,CACT,ECzEF,IAAAF,GAAe,CACb9oE,KAAM,QACN65B,OAAQ,C,MACNivC,GACAD,gBAEFvvC,SACE,MAAMc,EAAM59B,KACZ49B,EAAI4uC,YAAc,CAChB1vC,OAAOx2B,GACE,IAAI+lE,GAAYzuC,EAAKt3B,G,EAIlCA,OAAQ,CACN8xC,MAAO,CACLqzB,cAAc,K,OCXpB,cAAqBa,GACnBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GACrB,CACEwmE,MAAO5lC,EAAIt3B,OAAOomE,OAAOlJ,MACzBxyD,UAAM1H,EACN2kB,QAAS,GACT0+C,QAAS,GACTC,iBAAiB,EACjBnM,aAASn3D,EACTujE,cAAUvjE,EACVwjE,gBAAgB,EAChBhpE,GAAI,IAENwC,QAEiD,IAAxCimE,EAAeN,uBACxBM,EAAeN,qBAAuBruC,EAAIt3B,OAAOomE,OAAOT,2BAEnB,IAA5BM,EAAenB,WACxBmB,EAAenB,SAAWxtC,EAAIt3B,OAAOomE,OAAOtB,UAI9CjqE,MAAMy8B,EAAK2uC,GAEX,MAAMG,EAAS1sE,KAET64B,EAASN,KACTj5B,EAAWF,KAEXokE,MAAEA,EAAKxyD,KAAEA,EAAIid,QAAEA,EAAO0+C,QAAEA,EAAOC,gBAAEA,EAAeC,SAAEA,EAAQzB,SAAEA,GAAamB,EAK/E,IAAIzuC,EAgDAytC,EAkBAwB,EAjEJ,GAJAL,EAAOpmE,OAASimE,EAIXG,EAAOpmE,OAAOxE,GAoCjBg8B,EAAMz7B,EAAEqqE,EAAOpmE,OAAOxE,QApCD,CACrB,MAAMkrE,EAAgB,CAAC,UACA,IAAnBL,EAAQrvE,QAAc0vE,EAAchrE,KAAK,qBACzC2qE,EAAQrvE,OAAS,GAAG0vE,EAAchrE,KAAM,kBAAiB2qE,EAAQrvE,UACjEsvE,GAAiBI,EAAchrE,KAAK,2BACpC6qE,GAAUG,EAAchrE,KAAK6qE,GAEjC,IAAII,EAAc,GACdN,EAAQrvE,OAAS,IACnB2vE,EACEtuC,GAAA,OAAK0zB,MAAM,kBACRsa,EAAQ7mE,KAAKonE,GACZvuC,GAAA,QACE0zB,MAAQ,gBAAe6a,EAAOC,OAAS,wBAA0B,KAC/DD,EAAO38C,MAAS,UAAS28C,EAAO38C,QAAU,KACzC28C,EAAOL,SAAY,IAAGK,EAAOL,WAAa,MAE5CK,EAAOl8D,UAOlB,MAAMo8D,EACJzuC,GAAA,OAAK0zB,MAAO2a,EAAcv9C,KAAK,MAC7BkP,GAAA,OAAK0zB,MAAM,gBACRmR,GAAS7kC,GAAA,OAAK0zB,MAAM,gBAAgBmR,GACpCxyD,GAAQ2tB,GAAA,OAAK0zB,MAAM,eAAerhD,GAClCid,GAEFg/C,GAGLnvC,EAAMz7B,EAAE+qE,EACV,CAIA,GAAItvC,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAClC,OAAOR,EAAI,GAAGQ,QAGhB,GAAmB,IAAfR,EAAIxgC,OACN,OAAOovE,EAAO3uC,UAahB,SAASsvC,EAAcnkE,GACrB,MACMzB,EAAQpF,EADGrC,MACSyH,QACpBylE,EAASP,EAAQllE,GACnBylE,EAAOzM,SAASyM,EAAOzM,QAAQiM,EAAQxjE,GACvCwjE,EAAOpmE,OAAOm6D,SAASiM,EAAOpmE,OAAOm6D,QAAQiM,EAAQjlE,IACpC,IAAjBylE,EAAO3uC,OAAiBmuC,EAAOnuC,OACrC,CAEA,SAAS+uC,EAAUpkE,GACjB,MAAMqkE,EAAUrkE,EAAEqkE,QAClBZ,EAAQvvE,SAAQ,CAAC8vE,EAAQzlE,KACnBylE,EAAOM,UAAYN,EAAOM,SAAS9qE,QAAQ6qE,IAAY,IACrDjuE,EAAS3B,eAAe2B,EAAS3B,cAAcC,OAC/CsvE,EAAOzM,SAASyM,EAAOzM,QAAQiM,EAAQxjE,GACvCwjE,EAAOpmE,OAAOm6D,SAASiM,EAAOpmE,OAAOm6D,QAAQiM,EAAQjlE,IACpC,IAAjBylE,EAAO3uC,OAAiBmuC,EAAOnuC,QACrC,GAEJ,CAuEA,SAASkuC,EAAYvjE,GACnB,MAAMjM,EAASiM,EAAEjM,OAEyB,IAD1BoF,EAAEpF,GACN+M,QAAQ0iE,EAAO5qE,IAAIxE,QAE3BovE,EAAOpmE,OAAO2lE,sBACdS,EAAOR,YACPQ,EAAOR,aAAejvE,GAEtByvE,EAAOnuC,OAGb,CAuBA,OAtII6sC,IACFG,EAAc3tC,EAAIE,IAAI1/B,SAAS,oBACJ,IAAvBmtE,EAAYjuE,SACdiuE,EAAclpE,EAAE,uCAChBu7B,EAAIE,IAAIn0B,OAAO4hE,KAyBfoB,GAAWA,EAAQrvE,OAAS,IAC9BovE,EAAO5oE,GAAG,QAAQ,KAChBg6B,EAAI+T,KAAK,kBAAkB1qC,MAAK,CAACwiC,EAAUliC,KAC1BklE,EAAQllE,GACZ+lE,WAAUT,GAAoB,GACzC1qE,EAAEsnC,GAAU7lC,GAAG,QAASupE,EAAc,KAGtCN,GACCl0C,EAAOxC,KACPwC,EAAOC,SACPD,EAAOY,SACPZ,EAAOc,WAERt3B,EAAE/C,GAAUwE,GAAG,UAAWwpE,EAC5B,IAEFZ,EAAO5oE,GAAG,SAAS,KACjBg6B,EAAI+T,KAAK,kBAAkB1qC,MAAMwiC,IAC/BtnC,EAAEsnC,GAAUxgC,IAAI,QAASkkE,EAAc,KAGvCN,GACCl0C,EAAOxC,KACPwC,EAAOC,SACPD,EAAOY,SACPZ,EAAOc,WAERt3B,EAAE/C,GAAU6J,IAAI,UAAWmkE,GAE7BP,GAAoB,CAAK,KAG7B/vE,GAAO0vE,EAAQ,CACb9uC,MACAE,MACAh8B,GAAIg8B,EAAI,GACRytC,cACAW,WAAYX,GAAeA,EAAY,GACvC/hC,KAAM,SACNikC,YAAWA,CAAC5mE,EAAUN,KACpBq3B,EAAI8vC,YAAYlsE,IAAIs8B,EAAI+T,KAAK,gBAAiBhrC,EAAUN,GACjDmmE,GAETiB,QAAQC,GACN,IAAIC,EAAU/vC,EAAI+T,KAAK,gBAWvB,OAVuB,IAAnBg8B,EAAQvwE,SACVuwE,EAAUxrE,EAAE,wCACS,IAAVmhE,EACTqK,EAAQC,YAAYhwC,EAAI+T,KAAK,kBAE7B/T,EAAI+T,KAAK,iBAAiBxiC,QAAQw+D,IAGtCA,EAAQrrE,KAAKorE,GACblB,EAAOpmE,OAAO0K,KAAO48D,EACdlB,C,EAETqB,SAASC,GACP,IAAIC,EAAWnwC,EAAI+T,KAAK,iBAOxB,OANwB,IAApBo8B,EAAS3wE,SACX2wE,EAAW5rE,EAAE,oCACby7B,EAAI+T,KAAK,iBAAiBxiC,QAAQ4+D,IAEpCA,EAASzrE,KAAKwrE,GACdtB,EAAOpmE,OAAOk9D,MAAQwK,EACftB,CACT,IAiBFA,EAAO5oE,GAAG,UAAU,KACd4oE,EAAOpmE,OAAO2lE,sBAChBruC,EAAI95B,GAAG,QAAS2oE,EAClB,IAEFC,EAAO5oE,GAAG,SAAS,KACb4oE,EAAOpmE,OAAO2lE,sBAChBruC,EAAIz0B,IAAI,QAASsjE,EACnB,IAGF3uC,EAAI,GAAGQ,QAAUouC,EAEbA,EAAOpmE,OAAOwmE,gBAChBJ,EAAOvxC,KAAK,UAAU,KACpB76B,YAAW,KACTosE,EAAO3uC,SAAS,GACf,EAAE,IAIF2uC,CACT,GChOF,IAAAwB,GAAe,CACb1qE,KAAM,SACN8C,OAAQ,CACNomE,OAAQ,CACNlJ,WAAOl6D,EACP6kE,SAAU,KACVC,aAAc,SACdC,oBAAqB,WACrBC,oBAAqB,WACrBC,eAAgB,cAChBC,cAAe,cACfpD,UAAU,EACVa,sBAAsB,EACtBwC,0BAA0B,EAC1BC,iBAAiB,EACjBC,WAAW,IAGftxC,OAAQ,CACN6wC,WAEFpxC,SACE,MAAMc,EAAM59B,KACZ,SAAS4uE,IACP,OAAOhxC,EAAIt3B,OAAOomE,OAAOlJ,OAAS5lC,EAAIp6B,IACxC,CACA,MAAMspE,EAAiBlvC,EAAIt3B,OAAOomE,OAAO+B,yBACnCC,EAAkB9wC,EAAIt3B,OAAOomE,OAAOgC,gBAEpCG,EADYjxC,EAAIt3B,OAAOomE,OAAOiC,UAEhC,CACE7qE,GAAI,CACF+mE,OAAO6B,GACLA,EAAO5uC,IAAI+T,KAAK,SAAS3nC,GAAG,GAAGlG,OACjC,IAGJ,GACE8qE,EAA2B,QAAdlxC,EAAIxM,MAEvBwM,EAAI8uC,OAAS1vE,GACXghC,GAAa,CACXJ,MACA9gC,YAAaoxE,GACbzwC,gBAAiB,qBAEnB,CAEEsxC,QAAe,QAAArpE,EAAAhC,UAAApG,OAANqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GACX,IAAKoL,EAAMwyD,EAAOwL,GAAcrrE,EAIhC,OAHoB,IAAhBA,EAAKrG,QAAmC,mBAAZqG,EAAK,MAClCqN,EAAMg+D,EAAYxL,GAAS7/D,GAEvB,IAAIuqE,GAAOtwC,EAAK,CACrB4lC,WAAwB,IAAVA,EAAwBoL,IAAuBpL,EAC7DxyD,OACA27D,QAAS,CACP,CACE37D,KAAM4sB,EAAIt3B,OAAOomE,OAAOyB,SACxBhB,OAAQ2B,EACRrO,QAASuO,EACTxB,SAAUkB,EAAkB,CAAC,GAAI,IAAM,OAG3C5B,mBACC7uC,M,EAELgxC,SAAgB,QAAAt/D,EAAAjM,UAAApG,OAANqG,EAAI1C,UAAA0O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjM,EAAIiM,GAAAlM,UAAAkM,GACZ,IAAKoB,EAAMwyD,EAAOwL,EAAYE,EAAgBC,GAAgBxrE,EAM9D,MALuB,mBAAZA,EAAK,MACbqN,EAAMg+D,EAAYE,EAAgBC,EAAc3L,GAAS7/D,GAE5DwrE,EACE,MAAOA,EAAwD,GAAKA,EAC/D,IAAIjB,GAAOtwC,EAAK,CACrB4lC,WAAwB,IAAVA,EAAwBoL,IAAuBpL,EAC7DxyD,OACAid,QAAU,wFAAuFkhD,YACjGxC,QAAS,CACP,CACE37D,KAAM4sB,EAAIt3B,OAAOomE,OAAO0B,aACxBZ,SAAUkB,EAAkB,CAAC,IAAM,KACnCn+C,MAAO,MAET,CACEvf,KAAM4sB,EAAIt3B,OAAOomE,OAAOyB,SACxBhB,OAAQ2B,EACRtB,SAAUkB,EAAkB,CAAC,IAAM,OAGvCjO,QAAQiM,EAAQjlE,GACd,MAAM2nE,EAAa1C,EAAO5uC,IAAI+T,KAAK,iBAAiBz/B,MACtC,IAAV3K,GAAeynE,GAAgBA,EAAeE,GACpC,IAAV3nE,GAAeunE,GAAYA,EAAWI,E,EAE5CtC,oBACG+B,IACF5wC,M,EAELoxC,UAAiB,QAAAp+D,EAAAvN,UAAApG,OAANqG,EAAI1C,UAAAgQ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvN,EAAIuN,GAAAxN,UAAAwN,GACb,IAAKF,EAAMwyD,EAAOwL,EAAYE,GAAkBvrE,EAIhD,MAHuB,mBAAZA,EAAK,MACbqN,EAAMg+D,EAAYE,EAAgB1L,GAAS7/D,GAEvC,IAAIuqE,GAAOtwC,EAAK,CACrB4lC,WAAwB,IAAVA,EAAwBoL,IAAuBpL,EAC7DxyD,OACA27D,QAAS,CACP,CACE37D,KAAM4sB,EAAIt3B,OAAOomE,OAAO0B,aACxB3N,QAASyO,EACT1B,SAAUkB,EAAkB,CAAC,IAAM,KACnCn+C,MAAO,MAET,CACEvf,KAAM4sB,EAAIt3B,OAAOomE,OAAOyB,SACxBhB,OAAQ2B,EACRrO,QAASuO,EACTxB,SAAUkB,EAAkB,CAAC,IAAM,OAGvC5B,mBACC7uC,M,EAELqxC,QAAe,QAAAjkE,EAAA3H,UAAApG,OAANqG,EAAI1C,UAAAoK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3H,EAAI2H,GAAA5H,UAAA4H,GACX,IAAK0F,EAAMwyD,EAAOwL,EAAYE,GAAkBvrE,EAIhD,MAHuB,mBAAZA,EAAK,MACbqN,EAAMg+D,EAAYE,EAAgB1L,GAAS7/D,GAEvC,IAAIuqE,GAAOtwC,EAAK,CACrB4lC,WAAwB,IAAVA,EAAwBoL,IAAuBpL,EAC7DxyD,OAEAid,QAAU,sJAEmD2P,EAAIt3B,OAAOomE,OAAO2B,0NAGdzwC,EAAIt3B,OAAOomE,OAAO4B,mEAEnF3B,QAAS,CACP,CACE37D,KAAM4sB,EAAIt3B,OAAOomE,OAAO0B,aACxBZ,SAAUkB,EAAkB,CAAC,IAAM,KACnCn+C,MAAO,MAET,CACEvf,KAAM4sB,EAAIt3B,OAAOomE,OAAOyB,SACxBhB,OAAQ2B,EACRtB,SAAUkB,EAAkB,CAAC,IAAM,OAGvCjO,QAAQiM,EAAQjlE,GACd,MAAM8nE,EAAW7C,EAAO5uC,IAAI+T,KAAK,4BAA4Bz/B,MACvDo9D,EAAW9C,EAAO5uC,IAAI+T,KAAK,4BAA4Bz/B,MAC/C,IAAV3K,GAAeynE,GAAgBA,EAAeK,EAAUC,GAC9C,IAAV/nE,GAAeunE,GAAYA,EAAWO,EAAUC,E,EAEtD1C,oBACG+B,IACF5wC,M,EAELuxC,WAAkB,QAAArhE,EAAAzK,UAAApG,OAANqG,EAAI1C,UAAAkN,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJzK,EAAIyK,GAAA1K,UAAA0K,GACd,IAAK4C,EAAMwyD,EAAOwL,EAAYE,GAAkBvrE,EAIhD,MAHuB,mBAAZA,EAAK,MACbqN,EAAMg+D,EAAYE,EAAgB1L,GAAS7/D,GAEvC,IAAIuqE,GAAOtwC,EAAK,CACrB4lC,WAAwB,IAAVA,EAAwBoL,IAAuBpL,EAC7DxyD,OAEAid,QAAU,sIAEuD2P,EAAIt3B,OAAOomE,OAAO4B,mEAEnF3B,QAAS,CACP,CACE37D,KAAM4sB,EAAIt3B,OAAOomE,OAAO0B,aACxBZ,SAAUkB,EAAkB,CAAC,IAAM,KACnCn+C,MAAO,MAET,CACEvf,KAAM4sB,EAAIt3B,OAAOomE,OAAOyB,SACxBhB,OAAQ2B,EACRtB,SAAUkB,EAAkB,CAAC,IAAM,OAGvCjO,QAAQiM,EAAQjlE,GACd,MAAM+nE,EAAW9C,EAAO5uC,IAAI+T,KAAK,4BAA4Bz/B,MAC/C,IAAV3K,GAAeynE,GAAgBA,EAAeM,GACpC,IAAV/nE,GAAeunE,GAAYA,EAAWQ,E,EAE5C1C,oBACG+B,IACF5wC,M,EAELwxC,UAAUjM,EAAOjzC,GACf,MAIMm/C,EAJa,CACjB79C,uBACAD,uBAEiC,GAAEgM,EAAIxM,0BAA4B,GACrE,OAAO,IAAI88C,GAAOtwC,EAAK,CACrB4lC,MACE,MAAOA,EACH5lC,EAAIt3B,OAAOomE,OAAO6B,eAClB/K,EAENv1C,QAAU,wBAAuBsC,EAAS,UAASA,IAAU,OAAOm/C,UACpE7C,SAAU,mBACVC,mBACC7uC,M,EAELp3B,WAAkB,QAAA6F,EAAAhJ,UAAApG,OAANqG,EAAI1C,UAAAyL,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhJ,EAAIgJ,GAAAjJ,UAAAiJ,GACd,IAAK62D,EAAO38D,EAAU0pB,GAAS5sB,EACX,IAAhBA,EAAKrG,OACgB,iBAAZqG,EAAK,IACbkD,EAAU0pB,EAAOizC,GAAS7/D,EACC,iBAAZA,EAAK,IAAsC,iBAAZA,EAAK,MACnD6/D,EAAOjzC,EAAO1pB,GAAYlD,GAEJ,IAAhBA,EAAKrG,QACS,iBAAZqG,EAAK,MACbkD,EAAU28D,EAAOjzC,GAAS5sB,GAG/B,MAAMgsE,OAA+B,IAAb9oE,EAClB6lE,EAAS,IAAIwB,GAAOtwC,EAAK,CAC7B4lC,WAAwB,IAAVA,EAAwB5lC,EAAIt3B,OAAOomE,OAAO8B,cAAgBhL,EACxEqJ,SAAU,kBAEV5+C,QAAU,0CACiB0hD,EAAW,YAAc,KAAKp/C,EAAS,UAASA,IAAU,yBAC9Eo/C,EAA6B,GAAlB,sDAGlB7C,mBAGF,OADK6C,GAAUjD,EAAOe,YAAY5mE,GAC3B6lE,EAAOzuC,MAChB,GAGN,G,OChPF,cAAoBquC,GAClBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GAAO,CAAE8G,GAAI,IAAM85B,EAAIt3B,OAAOsoD,MAAOtoD,GAG5DnF,MAAMy8B,EAAK2uC,GAEX,MAAM3d,EAAQ5uD,KACRe,EAASF,IACTvB,EAAWF,IACXm4B,EAAUE,KACVoB,EAASN,KAKf,IAAIuF,EAiBAytC,EA4EAqE,EACAC,EArFJ,GAZAjhB,EAAMtoD,OAASimE,EASbzuC,EALG8wB,EAAMtoD,OAAOxE,GAKVO,EAAEusD,EAAMtoD,OAAOxE,IAAIoI,GAAG,GAJtB7H,EAAEusD,EAAMtoD,OAAO2nB,SAClB9rB,QAAQiyD,GAA2B,IAAlBA,EAAKnxD,WACtBiH,GAAG,GAKJ4zB,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAClC,OAAOR,EAAI,GAAGQ,QAGhB,GAAmB,IAAfR,EAAIxgC,OACN,OAAOsxD,EAAM7wB,UAkCf,SAAS0uC,EAAYvjE,GACnB,MAAMjM,EAASiM,EAAEjM,OACX6yE,EAAUztE,EAAEpF,GAQlB,MANG47B,EAAOG,SACRH,EAAOY,UACL14B,EAAOgvE,UAAYhvE,EAAOgvE,SAAS/O,WAClCjgE,EAAO04B,QAAQu2C,SACdjvE,EAAO04B,QAAQu2C,QAAQD,UACvBhvE,EAAO04B,QAAQu2C,QAAQD,SAAS/O,aAEG,IAArC8O,EAAQ9lE,QAAQ4kD,EAAM9sD,IAAIxE,QAE1BsxD,EAAMtoD,QACNsoD,EAAMtoD,OAAO2lE,sBACbrd,EAAMtoD,OAAO8kE,UACbxc,EAAMsd,YACNtd,EAAMsd,aAAejvE,EACrB,CACA,IAAIgzE,GAAc,EAClBrhB,EAAM9wB,IAAIhtB,QAAQ,mBAAmB3J,MAAM4kE,IACzC,MAAMC,EAAgBD,EAAQztC,QACzB0tC,GAEHA,EAAc1lE,OAAO2lE,sBACrBD,EAAc1lE,OAAO8kE,UACrBY,EAAcE,aAAetd,EAAMsd,aAEnC+D,GAAc,EAChB,IAEEA,GACFrhB,EAAMrwB,OAEV,CAEJ,CAEA,SAAS+uC,EAAUpkE,GAED,KADAA,EAAEqkE,SACI3e,EAAMtoD,OAAO4pE,eACjCthB,EAAMrwB,OAEV,CAKA,SAAS4xC,EAAcxrC,GACrB,OAAQ/G,EAAI5D,OAAkB,EAAT2K,GAAc/G,EAAI5D,MACzC,CAhFI40B,EAAMtoD,OAAO8kE,UAAYxc,EAAMtoD,OAAO4lE,WACxCX,EAAclpE,EAAEusD,EAAMtoD,OAAO4lE,YACpBtd,EAAMtoD,OAAO8kE,WAClBxc,EAAMtoD,OAAO+kE,gBACfE,EAAclpE,EAAE,4DAChBusD,EAAMkc,aAAanhE,OAAO4hE,IAE1BA,EAAc3c,EAAMkc,aAAa1sE,SAAS,mBAEjB,IAAvBmtE,EAAYjuE,SACdiuE,EAAclpE,EAAE,sCAChBusD,EAAMkc,aAAanhE,OAAO4hE,KAI9BvuE,GAAO4xD,EAAO,CACZhxB,MACA57B,KAAM87B,EAAIyE,SAAS,eAAiBqsB,EAAMtoD,OAAOtE,KACjD87B,MACAh8B,GAAIg8B,EAAI,GACRytC,cACAW,WAAYX,GAAeA,EAAY,GACvC/hC,KAAM,QACNyiB,QAAS5pD,EAAE,UAGTusD,EAAMtoD,OAAOtE,MACf87B,EAAIwE,SAAS,cAuDf,IAEI8tC,EACAC,EACA3pC,EACAqJ,EACAD,EAEA6U,EACA2rB,EACAC,EACAC,EACAC,EACAC,EAbAC,GAAoB,EACpBhhC,GAAY,EAMZ1J,GAAU,EAQd,SAASoL,EAAiBnoC,IACpBymC,GAAcghC,GAAsB/hB,EAAMtoD,OAAOsqE,cAAiB1nE,EAAEggC,YAEtE0lB,EAAMtoD,OAAOuqE,cAC6C,IAA1DxuE,EAAE6G,EAAEjM,QAAQ+M,QAAQ4kD,EAAMtoD,OAAOuqE,cAAcvzE,QAI7C+E,EAAE6G,EAAEjM,QAAQ+M,QAAQ,qBAAqB1M,OAAS,IACtDqyC,GAAY,EACZ1J,GAAU,EACVmqC,EAAa,CACX/3D,EAAc,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC1Dz0B,EAAc,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,OAE5DyG,EAAiB1d,KACjBqU,OAAcp9B,EACTslD,EAAMtoD,OAAOuqE,cAA2B,eAAX3nE,EAAEsgC,OAClCmb,EAAgBtiD,EAAE6G,EAAEjM,QAAQ+M,QAAQ,iBAAiB,KAEzD,CACA,SAASynC,EAAgBvoC,GACvB,IAAKymC,IAAczmC,EAAEggC,UAAW,OAYhC,GAXAmnC,EAAe,CACbh4D,EAAc,cAAXnP,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACzDz0B,EAAc,cAAX1L,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,YAGhC,IAAhB5C,IACTA,KACEA,GACA5/B,KAAK+R,IAAIw3D,EAAah4D,EAAI+3D,EAAW/3D,GAAKvR,KAAK+R,IAAIw3D,EAAaz7D,EAAIw7D,EAAWx7D,KAG/E8xB,EAGF,OAFAiJ,GAAY,OACZ1J,GAAU,GAIZ6J,EAAcsgC,EAAWx7D,EAAIy7D,EAAaz7D,EACtCi7D,GAAUD,GAAc9/B,EAAc,IACxCA,EAAc,GAEhB,MAAMkG,EAAYlG,EAAc,EAAI,YAAc,SAGlD,GAFAhS,EAAIkT,WAAW,GAGwB,iBAA9B4d,EAAMtoD,OAAOsqE,cACpB56B,IAAc4Y,EAAMtoD,OAAOsqE,aAI3B,OAFA9yC,EAAI1sB,UAAU,SACd0sB,EAAIkT,WAAW,IAIjB,GAAK/K,EA+BH2oB,EAAMtzB,KAAK,kCAAmCszB,GAC9CA,EAAM9wB,IAAIj6B,QAAQ,uBAhCN,CAQZ,GAPIgsE,GAAUD,IACZa,EAAc3yC,EAAI,GAAG3uB,aACrBuhE,EAAU5yC,EAAI/sB,QAAQ,mBAAmB7G,GAAG,GACrB,IAAnBwmE,EAAQpzE,SACVozE,EAAU9yC,EAAIE,IAAI1/B,SAAS,mBAG3BumD,IACF2rB,EAAuB3rB,EAAc92C,UACrC2iE,EAA0B7rB,EAAcj0C,aACxC6/D,EAA0B5rB,EAAcx1C,eAEpCqhE,IAA4BD,GACd,cAAdv6B,GAAsD,IAAzBs6B,GAEf,WAAdt6B,GACAs6B,IAAyBE,EAA0BD,IAOrD,OAJAzyC,EAAI1sB,UAAU,IACd0sB,EAAIkT,WAAW,IACfrB,GAAY,OACZ1J,GAAU,GAIdA,GAAU,EACV2oB,EAAMtzB,KAAK,oCAAqCszB,GAChDA,EAAM9wB,IAAIj6B,QAAQ,mBACpB,CAMA,GADAqF,EAAE+/B,iBACE4mC,GAAUD,EAAY,CACxB,MAAMkB,EAAe,EAAIhqE,KAAK+R,IAAIi3B,EAAc2gC,GAC1CpG,EAAQ,GAAK,EAAI8F,EAAcP,IAAekB,EAChDJ,EAAQnuC,SAAS,SACfmuC,EAAQnuC,SAAS,cACnBmuC,EAAQ1/B,WAAW,GAAG5zC,SAAS0E,IAC7BA,EAAGxD,MAAMuhD,YACP,YACC,4BAA2BixB,0DAAqEzG,KACjG,YACD,IAGHqG,EAAQ1/B,WAAW,GAAG5zC,SAAS0E,IAC7BA,EAAGxD,MAAMuhD,YACP,YACC,mCAAkCwqB,KACnC,YACD,IAILqG,EAAQ1/B,WAAW,GAAG5zC,SAAS0E,IAC7BA,EAAGxD,MAAMuhD,YAAY,YAAc,4BAA2BwqB,KAAU,YAAY,GAG1F,CACAvsC,EAAIkT,WAAW,GAAG5/B,UAAW,kBAAiB0+B,SAChD,CACA,SAAS8E,EAAe1rC,GACtB,IAAKA,EAAEggC,UAAW,OAElB,GADAyG,GAAY,GACP1J,EACH,OAEF2oB,EAAMtzB,KAAK,gCAAiCszB,GAC5CA,EAAM9wB,IAAIj6B,QAAQ,kBAClBoiC,GAAU,EACV0qC,GAAoB,EACpB7yC,EAAIkT,WAAW,IACX6+B,GAAUD,GACZc,EAAQ1/B,WAAW,IAAI5/B,UAAU,IAEnC,MAAM4kC,EAAYlG,GAAe,EAAI,YAAc,SACnD,GACuC,iBAA9B8e,EAAMtoD,OAAOsqE,cACpB56B,IAAc4Y,EAAMtoD,OAAOsqE,aAI3B,OAFA9yC,EAAI1sB,UAAU,SACdu/D,GAAoB,GAGtB,MAAMpM,EAAOz9D,KAAK+R,IAAIi3B,GAChBgF,GAAW,IAAI10C,MAAOuI,UAAYonC,EACnC+E,EAAW,KAAOyvB,EAAO,IAAQzvB,GAAY,KAAOyvB,EAAO,IAC9DryC,IAAS,KACW,cAAd8jB,EACFlY,EAAIwE,SAAS,yBAEbxE,EAAIwE,SAAS,sBAEfxE,EAAI1sB,UAAU,IACdw9C,EAAMtzB,KAAK,oCAAqCszB,GAChDA,EAAM9wB,IAAIj6B,QAAQ,oBAClB+qD,EAAMrwB,QACNoyC,GAAoB,CAAI,KAI5BA,GAAoB,EACpB7yC,EAAI1sB,UAAU,IAChB,CAEA,MAAMo3B,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GAYrD,IAAIuoC,EAXAniB,EAAMtoD,OAAOsqE,eACf9yC,EAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GAChD5K,EAAI95B,GAAG,YAAa2tC,GACpB7T,EAAI95B,GAAG,mBAAoB8wC,GAC3Bga,EAAMzzB,KAAK,gBAAgB,KACzB2C,EAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GACjD5K,EAAIz0B,IAAI,YAAasoC,GACrB7T,EAAIz0B,IAAI,mBAAoByrC,EAAe,KAM/C,MAAMo8B,EAAmBA,KACvB,MAAMC,EAAUpB,EACZjhB,EAAM5sD,OACR6tE,EACEjhB,EAAM5sD,OACL47B,EAAItF,MAAQ,KAAOsF,EAAI5D,OAAS,KAAO8D,EAAIyE,SAAS,6BAErDstC,IAAWoB,EAEbC,IACSrB,GAAUoB,EACnBriB,EAAM3C,QAAQ,GAAG3tD,MAAMuhD,YAAY,wBAAyBswB,EAAcP,KAChEC,GAAUoB,IACpBriB,EAAM3C,QAAQzpB,YAAY,yBAC1BosB,EAAM3C,QAAQ,GAAG3tD,MAAM23D,eAAe,yBACxC,EAGIib,EAAgBA,KACpBtzC,EAAIz0B,IAAI,SAAU6nE,GACdpiB,EAAM5sD,OACR6tE,EACEjhB,EAAM5sD,OACL47B,EAAItF,MAAQ,KAAOsF,EAAI5D,OAAS,KAAO8D,EAAIyE,SAAS,6BAErDstC,IACFD,EAAa1/C,SAAS4N,EAAIpyB,IAAI,0BAA2B,IACrD0pB,OAAOC,MAAMu6C,KACfA,EAAa,GAEVA,IAAYA,EAA2B,QAAdhyC,EAAIxM,MAAkB,GAAK,IACzDw9B,EAAM3C,QAAQ,GAAG3tD,MAAMuhD,YAAY,yBAA2B,GAAE+vB,OAChE9xC,EAAIwE,SAAS,cACbssB,EAAM3C,QAAQ3pB,SAAS,yBACvBssB,EAAM3C,QAAQ,GAAG3tD,MAAMuhD,YAAY,wBAAyBswB,EAAcP,KAE5EhyC,EAAI95B,GAAG,SAAUktE,EAAiB,EA2CpC,OAxCApiB,EAAM9qD,GAAG,QAAQ,KACfitE,GAAuB,EACnBniB,EAAMtoD,OAAO4pE,eACf7tE,EAAE/C,GAAUwE,GAAG,UAAWwpE,GAE5BxvC,EAAI/sB,QAAQ,mBAAmBuxB,SAAS,gBACxC4uC,GAAe,IAEjBtiB,EAAM9qD,GAAG,UAAU,KACjBg6B,EAAI0E,YAAY,4CACZosB,EAAMtoD,OAAO2lE,sBACfruC,EAAI95B,GAAG,QAAS2oE,EAClB,IAEF7d,EAAM9qD,GAAG,SAAS,KAChBitE,EAAuBniB,EAAM9wB,IAAI/sB,QAAQ,wBAAwBzT,OAAS,EACtEsxD,EAAMtoD,OAAO4pE,eACf7tE,EAAE/C,GAAU6J,IAAI,UAAWmkE,GAEzB1e,EAAMtoD,OAAO2lE,sBACfruC,EAAIz0B,IAAI,QAASsjE,GAEnB3uC,EAAI/sB,QAAQ,mBAAmB7G,GAAG,GAAGs4B,YAAY,gBAC7CqtC,GAAUD,IAAemB,IAC3BniB,EAAM3C,QAAQzpB,YAAY,yBAC1BosB,EAAM3C,QAAQ3pB,SAAS,kCAEzB1E,EAAIz0B,IAAI,SAAU6nE,EAAiB,IAErCpiB,EAAM9qD,GAAG,UAAU,KACjBg6B,EAAI0E,YAAY,gBACZqtC,GAAUD,IAAemB,IAC3BniB,EAAM3C,QAAQzpB,YAAY,iCAC1BosB,EAAM3C,QAAQ,GAAG3tD,MAAM23D,eAAe,yBACtCrH,EAAM3C,QAAQ,GAAG3tD,MAAM23D,eAAe,0BACxC,IAGFn4B,EAAI,GAAGQ,QAAUswB,EAEVA,CACT,GC1YF,IAAAuiB,GAAe,CACb3tE,KAAM,QACN8C,OAAQ,CACNsoD,MAAO,CACLwc,UAAU,EACVc,gBAAY5iE,EACZ+hE,gBAAgB,EAChBY,sBAAsB,EACtBiE,eAAe,EACfU,cAAc,EACdC,aAAc,KACd7uE,MAAM,EACN+oE,YAAa,OAGjB1tC,OAAQ,CACN8zC,UAEFr0C,SACc98B,KACR4uD,MAAQ5wB,GAAa,CACvBJ,IAFU59B,KAGVlD,YAAaq0E,GACb1zC,gBAAiB,kBACjB2zC,eAAgB,U,EAGpB5jB,OAAQ,CACN,cAAe,SAAmBE,EAAY97C,QAAI,IAAJA,MAAO,IACvC5R,KACR4uD,MAAM3wB,KAAKrsB,EAAKg9C,MAAOh9C,EAAKpK,QAASkmD,E,EAE3C,eAAgB,SAAoBA,EAAY97C,QAAI,IAAJA,MAAO,IACzC5R,KACR4uD,MAAMrwB,MAAM3sB,EAAKg9C,MAAOh9C,EAAKpK,QAASkmD,EAC5C,I,OClCJ,cAA0B4e,GACxBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GACrB,CACE8G,GAAI,IAENwC,GAIFnF,MAAMy8B,EAAK2uC,GAEX,MAAM1d,EAAc7uD,KAKpB,IAAI89B,EASJ,OAZA+wB,EAAYvoD,OAASimE,EASnBzuC,EALG+wB,EAAYvoD,OAAOxE,GAKhBO,EAAEwsD,EAAYvoD,OAAOxE,IAAIoI,GAAG,GAJ5B7H,EAAEwsD,EAAYvoD,OAAO2nB,SACxB9rB,QAAQiyD,GAA2B,IAAlBA,EAAKnxD,WACtBiH,GAAG,GAKJ4zB,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAC3BR,EAAI,GAAGQ,QAGG,IAAfR,EAAIxgC,OACCuxD,EAAY9wB,WAGrB/gC,GAAO6xD,EAAa,CAClBjxB,MACAE,MACAh8B,GAAIg8B,EAAI,GACR0L,KAAM,gBAGR1L,EAAI,GAAGQ,QAAUuwB,EAEVA,EACT,GC7CF,IAAAwiB,GAAe,CACb7tE,KAAM,cACN65B,OAAQ,CACNg0C,gBAEFv0C,SACc98B,KACR6uD,YAAc7wB,GAAa,CAC7BJ,IAFU59B,KAGVlD,YAAau0E,GACb5zC,gBAAiB,0B,EAGrB+vB,OAAQ,CACN,qBAAsB,SAAyBE,EAAY97C,QAAI,IAAJA,MAAO,IACpD5R,KACR6uD,YAAY5wB,KAAKrsB,EAAKi9C,YAAaj9C,EAAKpK,QAASkmD,E,EAEvD,sBAAuB,SAA0BA,EAAY97C,QAAI,IAAJA,MAAO,IACtD5R,KACR6uD,YAAYtwB,MAAM3sB,EAAKi9C,YAAaj9C,EAAKpK,QAASkmD,EACxD,I,OClBJ,cAAsB4e,GACpBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GAAO,CAAE8G,GAAI,IAAM85B,EAAIt3B,OAAOwoD,QAASxoD,GAG9DnF,MAAMy8B,EAAK2uC,GAEX,MAAMzd,EAAU9uD,KAEV64B,EAASN,KACTx3B,EAASF,IACTvB,EAAWF,IAKjB,IAAI0+B,EASJ,GAZAgxB,EAAQxoD,OAASimE,EASfzuC,EALGgxB,EAAQxoD,OAAOxE,GAKZO,EAAEysD,EAAQxoD,OAAOxE,IAAIoI,GAAG,GAJxB7H,EAAEysD,EAAQxoD,OAAO2nB,SACpB9rB,QAAQiyD,GAA2B,IAAlBA,EAAKnxD,WACtBiH,GAAG,GAKJ4zB,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAClC,OAAOR,EAAI,GAAGQ,QAIhB,MAAMG,EAAYp8B,EAAEysD,EAAQxoD,OAAO43B,UAAUh0B,GAAG,GAEhD,GAAmB,IAAf4zB,EAAIxgC,OACN,OAAOwxD,EAAQ/wB,UAIjB,IAAIwtC,EACJ,MAAMD,EACJxc,EAAQxoD,OAAO8kE,UACfxtC,EAAIE,IAAI+T,KAAK,qBAAqB1vC,QAAQmvE,GAAqBA,IAAqBxzC,EAAI,KACrFxgC,OAAS,EAkBd,IAAIi0E,EAjBAziB,EAAQxoD,OAAO8kE,UAAYtc,EAAQxoD,OAAO4lE,WAC5CX,EAAclpE,EAAEysD,EAAQxoD,OAAO4lE,YACtBpd,EAAQxoD,OAAO8kE,WACpBtc,EAAQxoD,OAAO+kE,gBAAkBC,GACnCC,EAAclpE,EAAE,gEAChBkpE,EAAY,GAAGiG,aAAe1iB,EAC9BA,EAAQgc,aAAanhE,OAAO4hE,IAE5BA,EAAczc,EAAQgc,aAAa1sE,SAAS,qBAEnB,IAAvBmtE,EAAYjuE,SACdiuE,EAAclpE,EAAE,wCAChBysD,EAAQgc,aAAanhE,OAAO4hE,KAMU,IAAtCztC,EAAI+T,KAAK,kBAAkBv0C,QAAgBwxD,EAAQxoD,OAAOmrE,OAC5DF,EAAWlvE,EAAE,qCACby7B,EAAIzuB,QAAQkiE,IAEZA,EAAWzzC,EAAI+T,KAAK,kBAItB,MAAM6/B,EAAe5iB,EAAQ7wB,KAyB7B,SAASwuB,IACPqC,EAAQ5pD,QACV,CAzBAlI,GAAO8xD,EAAS,CACdlxB,MACAE,MACAh8B,GAAIg8B,EAAI,GACRW,YACAP,SAAUO,EAAU,GACpB8yC,WACAI,QAASJ,EAAS,GAClBhG,cACAW,WAAYX,GAAeA,EAAY,GACvC/hC,KAAM,UACN8hC,sBACArtC,OAAc,QAAAv4B,EAAAhC,UAAApG,OAANqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GACV,IAAKs4B,EAAU12B,GAAW7D,EAM1B,MALuB,kBAAZA,EAAK,MAAmB6D,EAAS02B,GAAYv6B,GACpDu6B,IACF4wB,EAAQrwB,UAAYp8B,EAAE67B,GACtB4wB,EAAQ5wB,SAAW4wB,EAAQrwB,UAAU,IAEhCizC,EAAatvE,KAAK0sD,EAAStnD,EACpC,IAMFsnD,EAAQhrD,GAAG,eAAe,KACxBgrD,EAAQ5pD,SACR04B,EAAI95B,GAAG,SAAU2oD,GACjBpqD,EAAEtB,GAAQ+C,GAAG,kCAAmC2oD,GAChDqC,EAAQhrD,GAAG,qCAAqC,KAC9C85B,EAAIz0B,IAAI,SAAUsjD,GAClBpqD,EAAEtB,GAAQoI,IAAI,kCAAmCsjD,EAAa,GAC9D,IAGJ,IAAImlB,EAAmB,KACvB,SAASvgC,EAAiBnoC,GACxB0oE,EAAmB1oE,EAAEjM,MACvB,CAEA,SAASwvE,EAAYvjE,GACnB,MAAMjM,EAASiM,EAAEjM,OACX6yE,EAAUztE,EAAEpF,GAQlB,MANG47B,EAAOG,SACRH,EAAOY,UACL14B,EAAOgvE,UAAYhvE,EAAOgvE,SAAS/O,WAClCjgE,EAAO04B,QAAQu2C,SACdjvE,EAAO04B,QAAQu2C,QAAQD,UACvBhvE,EAAO04B,QAAQu2C,QAAQD,SAAS/O,aAEK,IAAvC8O,EAAQ9lE,QAAQ8kD,EAAQhtD,IAAIxE,OAC9B,GACEwxD,EAAQxoD,OAAO2lE,sBACfnd,EAAQxoD,OAAO8kE,UACftc,EAAQod,YACRpd,EAAQod,aAAejvE,GACvB20E,IAAqB30E,EAErB6xD,EAAQvwB,aACH,GAAIuwB,EAAQxoD,OAAOurE,qBAAuBD,IAAqB30E,EAAQ,CAC5E,MAAM60E,EACHhC,EAAQvtC,SAAS,4BAA8BtlC,EAAOu0E,eAAiB1iB,GACvEghB,EAAQvtC,SAAS,qBAAuBtlC,IAAW6xD,EAAQod,WACxD6F,EACJ90E,EAAO+M,QAAQ,aAAe/M,EAAO+M,QAAQ,cAAgB8kD,EAAQhxB,IAAI,GACtEg0C,GAA6BC,GAChCjjB,EAAQvwB,OAEZ,CAEJ,CAEA,SAAS+uC,EAAUpkE,GAED,KADAA,EAAEqkE,SACIze,EAAQxoD,OAAO4pE,eACnCphB,EAAQvwB,OAEZ,CA0BA,OAxBIuwB,EAAQxoD,OAAO4pE,gBACjBphB,EAAQhrD,GAAG,eAAe,KACxBzB,EAAE/C,GAAUwE,GAAG,UAAWwpE,EAAU,IAEtCxe,EAAQhrD,GAAG,gBAAgB,KACzBzB,EAAE/C,GAAU6J,IAAI,UAAWmkE,EAAU,KAIzCxe,EAAQhrD,GAAG,iBAAiB,MACtBgrD,EAAQxoD,OAAOurE,qBAAuB/iB,EAAQxoD,OAAO2lE,wBACvDruC,EAAI95B,GAAG,aAAcutC,GACrBzT,EAAI95B,GAAG,QAAS2oE,GAClB,IAEF3d,EAAQhrD,GAAG,gBAAgB,MACrBgrD,EAAQxoD,OAAOurE,qBAAuB/iB,EAAQxoD,OAAO2lE,wBACvDruC,EAAIz0B,IAAI,aAAckoC,GACtBzT,EAAIz0B,IAAI,QAASsjE,GACnB,IAGF3uC,EAAI,GAAGQ,QAAUwwB,EAEVA,CACT,CAEA5pD,SACE,MAAM4pD,EAAU9uD,MACV49B,IAAEA,EAAGE,IAAEA,EAAGW,UAAEA,EAAS8yC,SAAEA,GAAaziB,GACpCkjB,QAAEA,EAAOC,QAAEA,EAAOC,iBAAEA,GAAqBpjB,EAAQxoD,OACvDw3B,EAAIpyB,IAAI,CAAEwC,KAAM,GAAID,IAAK,KACzB,MAAOqqB,EAAO0B,GAAU,CAAC8D,EAAIxF,QAASwF,EAAI9D,UAC1C,IACIm4C,EACAC,EAFAC,EAAY,EAGhB,MAAMC,EAAWf,EAASj0E,OAAS,EAC7Bi1E,EAAyB,QAAd30C,EAAIxM,MAAkB,GAAK,GAW5C,IAAIohD,EACAC,EACAC,EACAC,EAbAL,IACFf,EAAS/uC,YAAY,qCAAqC92B,IAAI,CAAEwC,KAAM,GAAID,IAAK,KAC/EokE,EAAYd,EAASj5C,QAAU,GAEjCwF,EACG0E,YACC,uFAED92B,IAAI,CAAEwC,KAAM,GAAID,IAAK,KAMxB,IAAI2kE,EAAc1iD,SAAS7tB,EAAE,QAAQqJ,IAAI,sBAAuB,IAC5DmnE,EAAe3iD,SAAS7tB,EAAE,QAAQqJ,IAAI,uBAAwB,IAC9DonE,EAAgB5iD,SAAS7tB,EAAE,QAAQqJ,IAAI,wBAAyB,IAIpE,GAHI0pB,OAAOC,MAAMu9C,KAAcA,EAAc,GACzCx9C,OAAOC,MAAMw9C,KAAeA,EAAe,GAC3Cz9C,OAAOC,MAAMy9C,KAAgBA,EAAgB,GAC7Cr0C,GAAaA,EAAUnhC,OAAS,EAAG,CACrCk1E,EAAc/zC,EAAUolC,aACxB4O,EAAeh0C,EAAUs0C,cAEzB,MAAMC,EAAev0C,EAAUkG,SAC/B+tC,EAAmBM,EAAa9kE,KAAO0vB,EAAI1vB,KAC3CykE,EAAkBK,EAAa/kE,IAAM2vB,EAAI3vB,IAEzC,MAAMglE,EAAmBx0C,EAAUx0B,QAAQ,SACvCgpE,EAAiB31E,OAAS,IAC5Bq1E,GAAmBM,EAAiB,GAAGplE,U,WAEb,IAAZmkE,GAAuC,cAAZC,IAC3CS,EAAmBV,EACnBW,EAAkBV,EAClBO,EAAc1jB,EAAQxoD,OAAOksE,aAAe,EAC5CC,EAAe3jB,EAAQxoD,OAAOmsE,cAAgB,GAGhD,IAAKvkE,EAAMD,EAAKs2D,GAAQ,CAAC,EAAG,EAAG,GAE/B,MAAM2O,EAAsC,SAArBhB,GAAsCA,EAC7D,IAiEIiB,EAjEAt5B,EAAWq5B,GAAkB,MAGZ,QAAnBA,IACEA,GAAkBl5C,EAASq4C,EAAYM,EAAkBC,EAG3D3kE,EAAM0kE,EAAkB34C,EAASq4C,EAEd,WAAnBa,IACEA,GAAkBl5C,EAASq4C,EAAYz0C,EAAI5D,OAAS24C,EAAkBF,GAGxE54B,EAAW,SACX5rC,EAAM0kE,EAAkBF,EAAeJ,IAGvCx4B,EAAW,SACX5rC,EAAMwkE,EAAe,EAAIE,EAAkB34C,EAAS,EACpDuqC,EAAOt2D,EACPA,EAAMnH,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAImF,EAAK2vB,EAAI5D,OAASA,EAAS,IACtDuqC,GAAQt2D,GAIO,QAAb4rC,GAAmC,WAAbA,GACxB3rC,EAAOskE,EAAc,EAAIE,EAAmBp6C,EAAQ,EACpDisC,EAAOr2D,EACPA,EAAOpH,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAIoF,EAAM0vB,EAAItF,MAAQA,EAAQ,IAClDu6C,IACF3kE,EAAOpH,KAAK+B,IAAIqF,EAAM2kE,IAEpBC,GAAiB5kE,EAAOoqB,EAAQsF,EAAItF,MAAQ,EAAIw6C,IAClD5kE,EAAO0vB,EAAItF,MAAQ,EAAIw6C,EAAgBx6C,GAGzCisC,GAAQr2D,EACJokE,IACe,QAAbz4B,GACF03B,EAASjvC,SAAS,aAEH,WAAbuX,GACF03B,EAASjvC,SAAS,UAEpB6vC,EAAY75C,EAAQ,EAAI+5C,EAAY9N,EACpC4N,EAAYrrE,KAAK+B,IAAI/B,KAAKgC,IAAIqpE,EAAW75C,EAAoB,EAAZ+5C,EAAgBE,GAAWA,GAC5EhB,EAAS7lE,IAAI,CAAEwC,KAAO,GAAEikE,UAEJ,WAAbt4B,IACT3rC,EAAOwkE,EAAmBp6C,EAAQ+5C,EAC9BC,GAAUf,EAASjvC,SAAS,aAC5Bp0B,EAAO,GAAKA,EAAOoqB,EAAQw6C,EAAgBl1C,EAAItF,OAASpqB,EAAO2kE,KAC7D3kE,EAAO,IAAGA,EAAOwkE,EAAmBF,EAAcH,GAClDnkE,EAAOoqB,EAAQw6C,EAAgBl1C,EAAItF,QAAOpqB,EAAO0vB,EAAItF,MAAQA,EAAQ,EAAIw6C,GACzE5kE,EAAO2kE,IAAc3kE,EAAO2kE,GAC5BP,GAAUf,EAAS/uC,YAAY,YAAYF,SAAS,YAEtDgwC,IACFF,EAAWp4C,EAAS,EAAIq4C,EAAY9N,EACpC6N,EAAWtrE,KAAK+B,IAAI/B,KAAKgC,IAAIspE,EAAUp4C,EAAqB,EAAZq4C,EAAgBE,GAAWA,GAC3EhB,EAAS7lE,IAAI,CAAEuC,IAAM,GAAEmkE,UAOzBe,EADET,EAAmB90C,EAAItF,MAAQ,EACrB,QAEA,OAEdwF,EAAIwE,SAAU,cAAauX,gBAAuBs5B,KAGlDr1C,EAAIpyB,IAAI,CAAEuC,IAAM,GAAEA,MAASC,KAAO,GAAEA,OACtC,GCnTF,IAAAklE,GAAe,CACb5vE,KAAM,UACN8C,OAAQ,CACNwoD,QAAS,CACPojB,iBAAkB,OAClBT,OAAO,EACPrG,UAAU,EACVc,gBAAY5iE,EACZ+hE,gBAAgB,EAChBY,sBAAsB,EACtB4F,qBAAqB,EACrB3B,eAAe,EACfnF,YAAa,OAGjB1tC,OAAQ,CACN+1C,YAEFt2C,SACE,MAAMc,EAAM59B,KACZ49B,EAAIkxB,QAAU9xD,GACZghC,GAAa,CACXJ,MACA9gC,YAAas2E,GACb31C,gBAAiB,sBAEnB,CACEQ,KAAKo1C,EAAWn1C,EAAU12B,GACxB,IAAI8rE,EAAajxE,EAAEgxE,GACnB,GAAIC,EAAWh2E,OAAS,EAAG,CAEzB,MAAM6gC,EAAc97B,EAAE67B,GAAUj0B,QAAQ,SACpCk0B,EAAY7gC,QACdg2E,EAAWnsE,MAAMrF,IACf,MAAMg8B,EAAMz7B,EAAEP,GACVg8B,EAAI7zB,QAAQk0B,GAAa,KAAOA,EAAY,KAC9Cm1C,EAAax1C,EACf,GAGN,CACIw1C,EAAWh2E,OAAS,IACtBg2E,EAAaA,EAAWppE,GAAGopE,EAAWh2E,OAAS,IAEjD,IAAIwxD,EAAUwkB,EAAW,GAAGh1C,QAC5B,MAAM1sB,EAAO0hE,EAAWjpE,UAaxB,OAZKykD,IACHA,EAAU,IAAIskB,GACZx1C,EACA7gC,OAAOsJ,OACL,CACEvE,GAAIwxE,EACJp1C,YAEFtsB,KAICk9C,EAAQ7wB,KAAKC,EAAU12B,EAChC,G,EAINgmD,OAAQ,CACN,gBAAiB,SAAqBE,EAAY97C,QAAI,IAAJA,MAAO,IAC3C5R,KACR8uD,QAAQ7wB,KAAKrsB,EAAKk9C,QAASpB,EAAY97C,EAAKpK,Q,EAElD,iBAAkB,SAAsBkmD,EAAY97C,QAAI,IAAJA,MAAO,IAC7C5R,KACR8uD,QAAQvwB,MAAM3sB,EAAKk9C,QAASl9C,EAAKpK,QAASkmD,EAChD,I,OCnEJ,cAAsB4e,GACpBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GAAO,CAAE8G,GAAI,IAAM85B,EAAIt3B,OAAO44D,QAAS54D,GAG9DnF,MAAMy8B,EAAK2uC,GAEX,MAAMrN,EAAUl/D,KAEV64B,EAASN,KACTx3B,EAASF,IACTvB,EAAWF,IAKjB,IAAIm0E,EAQAz1C,EAuBAytC,EATJ,GAzBArM,EAAQ54D,OAASimE,EAIbrN,EAAQ54D,OAAOqmE,UACjB4G,EAASrU,EAAQ54D,OAAOqmE,QACnB1rE,MAAMc,QAAQwxE,EAAO,MAAKA,EAAS,CAACA,KAE3CrU,EAAQqU,OAASA,EAIbrU,EAAQ54D,OAAOxE,GACjBg8B,EAAMz7B,EAAE68D,EAAQ54D,OAAOxE,IAAIoI,GAAG,GACrBg1D,EAAQ54D,OAAO2nB,QACxB6P,EAAMz7B,EAAE68D,EAAQ54D,OAAO2nB,SACpB9rB,QAAQiyD,GAA2B,IAAlBA,EAAKnxD,WACtBiH,GAAG,GACGg1D,EAAQ54D,OAAOqmE,UACpBzN,EAAQ54D,OAAOktE,mBACjBtU,EAAQuU,YAAcvU,EAAQwU,iBAEhCxU,EAAQyU,YAAczU,EAAQz2D,UAG5Bq1B,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAClC,OAAOR,EAAI,GAAGQ,QAGhB,GAAIR,GAAsB,IAAfA,EAAIxgC,SAAkB4hE,EAAQyU,cAAezU,EAAQuU,YAC9D,OAAOvU,EAAQnhC,UAKbmhC,EAAQ54D,OAAO8kE,UAAYlM,EAAQ54D,OAAO4lE,WAC5CX,EAAclpE,EAAE68D,EAAQ54D,OAAO4lE,YACtBhN,EAAQ54D,OAAO8kE,WACpBlM,EAAQ54D,OAAO+kE,gBACjBE,EAAclpE,EAAE,4DAChB68D,EAAQ4L,aAAanhE,OAAO4hE,IAE5BA,EAAcrM,EAAQ4L,aAAa1sE,SAAS,qBAEnB,IAAvBmtE,EAAYjuE,SACdiuE,EAAclpE,EAAE,wCAChB68D,EAAQ4L,aAAanhE,OAAO4hE,KAIhC,MAAMmG,EAAexS,EAAQjhC,KACvB21C,EAAgB1U,EAAQ3gC,MAE9B,IAAIuwB,EACJ,SAASue,EAAcnkE,GACrB,MAAM2qE,EAAYxxE,EAAErC,MACpB,IAAI8zE,EACAC,EAQJ,GAPIF,EAAUtxC,SAAS,gBAAkBsxC,EAAUtxC,SAAS,cAC1DuxC,EAAcD,EAAU5pE,QAAQ,MAAMxC,QACtCssE,EAAaF,EAAU5pE,QAAQ,SAASxC,UAExCqsE,EAAcD,EAAUpsE,QACxBssE,EAAaF,EAAU5pE,QAAQ,kBAAkBxC,cAE7B,IAAX8rE,EAAwB,CACjC,MAAMrG,EAASqG,EAAOQ,GAAYD,GAC9B5G,EAAOzM,SAASyM,EAAOzM,QAAQvB,EAASh2D,GACxCg2D,EAAQ54D,OAAOm6D,SAASvB,EAAQ54D,OAAOm6D,QAAQvB,EAASh2D,IACvC,IAAjBgkE,EAAO3uC,OAAiB2gC,EAAQ3gC,OACtC,CACF,CA+GA,SAASkuC,EAAYvjE,GACnB,MAAMjM,EAASiM,EAAEjM,OACX6yE,EAAUztE,EAAEpF,IAEf47B,EAAOG,SACRH,EAAOY,UACL14B,EAAOgvE,UAAYhvE,EAAOgvE,SAAS/O,WAClCjgE,EAAO04B,QAAQu2C,SACdjvE,EAAO04B,QAAQu2C,QAAQD,UACvBhvE,EAAO04B,QAAQu2C,QAAQD,SAAS/O,YAEK,IAAvC8O,EAAQ9lE,QAAQk1D,EAAQp9D,IAAIxE,SAE5B4hE,EAAQ54D,OAAO2lE,sBACf/M,EAAQ54D,OAAO8kE,UACflM,EAAQgN,YACRhN,EAAQgN,aAAejvE,GAGdiiE,EAAQ54D,OAAOurE,sBADxB3S,EAAQ3gC,OAKd,CAEA,SAAS+uC,EAAUpkE,GAED,KADAA,EAAEqkE,SACIrO,EAAQ54D,OAAO4pE,eACnChR,EAAQ3gC,OAEZ,CA0BA,OAtKA2gC,EAAQjhC,KAAO,SAAcz2B,GAC3B,IAAIgsE,GAAmB,EACvB,MAAMt1C,SAAEA,EAAQ8zC,QAAEA,EAAOC,QAAEA,EAAOO,YAAEA,EAAWC,aAAEA,GAAiBvT,EAAQ54D,OAuF1E,OArFE44D,EAAQ54D,OAAOktE,mBACdt1C,QAAyB50B,IAAZ0oE,QAAqC1oE,IAAZ2oE,KAIrC/S,EAAQ54D,OAAO0tE,gBACdn7C,EAAOxC,KAAOwC,EAAOM,MACtByE,EAAItF,OAAS,KACbO,EAAOG,WAEPw6C,GAAmB,GAGnBA,GAAoBtU,EAAQuU,aAC9B3kB,EAAUlxB,EAAIkxB,QAAQhyB,OAAO,CAC3BiuC,YAAa7L,EAAQ54D,OAAOykE,YAC5B98C,QAASixC,EAAQuU,YACjBrI,SAAUlM,EAAQ54D,OAAO8kE,SACzBltC,WACA8zC,UACAC,UACAO,cACAC,eACA3uE,GAAI,CACFm6B,OACOihC,EAAQphC,MACXohC,EAAQphC,IAAMgxB,EAAQhxB,KAExBohC,EAAQphC,IAAIj6B,QAAS,cAAaq7D,EAAQ11B,KAAK/+B,sBAC/Cy0D,EAAQ5jC,KAAM,yBAAwB4jC,EAAQ11B,WAAY01B,E,EAE5D2L,SACO3L,EAAQphC,MACXohC,EAAQphC,IAAMgxB,EAAQhxB,KAExBohC,EAAQphC,IAAIj6B,QAAS,gBAAeq7D,EAAQ11B,KAAK/+B,wBACjDy0D,EAAQ5jC,KAAM,6BAA4B4jC,EAAQ11B,aAAc01B,E,EAElE3gC,QACO2gC,EAAQphC,MACXohC,EAAQphC,IAAMgxB,EAAQhxB,KAExBohC,EAAQphC,IAAIj6B,QAAS,eAAcq7D,EAAQ11B,KAAK/+B,uBAChDy0D,EAAQ5jC,KAAM,2BAA0B4jC,EAAQ11B,YAAa01B,E,EAE/D+U,SACO/U,EAAQphC,MACXohC,EAAQphC,IAAMgxB,EAAQhxB,KAExBohC,EAAQphC,IAAIj6B,QAAS,gBAAeq7D,EAAQ11B,KAAK/+B,wBACjDy0D,EAAQ5jC,KAAM,6BAA4B4jC,EAAQ11B,aAAc01B,EAClE,KAGJpQ,EAAQ7wB,KAAKz2B,GACbsnD,EAAQ3zB,KAAK,iBAAiB,KAC5B2zB,EAAQhxB,IAAI+T,KAAK,4BAA4B1qC,MAAMwiC,IACjDtnC,EAAEsnC,GAAU7lC,GAAG,QAASupE,EAAc,GACtC,IAEJve,EAAQ3zB,KAAK,iBAAiB,KAC5B2zB,EAAQhxB,IAAI+T,KAAK,4BAA4B1qC,MAAMwiC,IACjDtnC,EAAEsnC,GAAUxgC,IAAI,QAASkkE,EAAc,IAEzCn7C,IAAS,KACP48B,EAAQ/wB,UACR+wB,OAAUxlD,CAAS,GACnB,MAGJ41D,EAAQphC,IAAMohC,EAAQyU,YAActxE,EAAE68D,EAAQyU,aAAezU,EAAQphC,IACrEohC,EAAQphC,IAAI,GAAGQ,QAAU4gC,EACrBA,EAAQqU,SACVrU,EAAQphC,IAAI+T,KAAK,mBAAmB1qC,MAAMwiC,IACxCtnC,EAAEsnC,GAAU7lC,GAAG,QAASupE,EAAc,IAExCnO,EAAQ/jC,KAAK,iBAAiB,KAC5B+jC,EAAQphC,IAAI+T,KAAK,mBAAmB1qC,MAAMwiC,IACxCtnC,EAAEsnC,GAAUxgC,IAAI,QAASkkE,EAAc,GACvC,KAGNnO,EAAQp9D,GAAKo9D,EAAQphC,IAAI,GACzB4zC,EAAatvE,KAAK88D,EAAS13D,IAEtB03D,C,EAGTA,EAAQ3gC,MAAQ,SAAe/2B,GAM7B,OALIsnD,EACFA,EAAQvwB,MAAM/2B,GAEdosE,EAAcxxE,KAAK88D,EAAS13D,GAEvB03D,C,EAGTliE,GAAOkiE,EAAS,CACdthC,MACAE,MACAh8B,GAAIg8B,EAAMA,EAAI,QAAKx0B,EACnBiiE,cACAW,WAAYX,GAAeA,EAAY,GACvC/hC,KAAM,YAmCJ01B,EAAQ54D,OAAO4pE,gBACjBhR,EAAQp7D,GAAG,QAAQ,KACjBzB,EAAE/C,GAAUwE,GAAG,UAAWwpE,EAAU,IAEtCpO,EAAQp7D,GAAG,SAAS,KAClBzB,EAAE/C,GAAU6J,IAAI,UAAWmkE,EAAU,KAIzCpO,EAAQp7D,GAAG,UAAU,MACfo7D,EAAQ54D,OAAO2lE,sBAAwB/M,EAAQ54D,OAAOurE,sBACxDj0C,EAAI95B,GAAG,QAAS2oE,EAClB,IAEFvN,EAAQp7D,GAAG,SAAS,MACdo7D,EAAQ54D,OAAO2lE,sBAAwB/M,EAAQ54D,OAAOurE,sBACxDj0C,EAAIz0B,IAAI,QAASsjE,EACnB,IAGE3uC,IACFA,EAAI,GAAGQ,QAAU4gC,GAGZA,CACT,CAEAz2D,SACE,MAAMy2D,EAAUl/D,KAChB,GAAIk/D,EAAQ54D,OAAOmC,OAAQ,OAAOy2D,EAAQ54D,OAAOmC,OAAOrG,KAAK88D,EAASA,GACtE,MAAMqU,OAAEA,GAAWrU,EACb2N,EAAW3N,EAAQ54D,OAAOumE,SAChC,OACEluC,GAAA,OAAK0zB,MAAQ,gBAAe6M,EAAQ54D,OAAO4tE,KAAO,gBAAkB,MAAMrH,GAAY,MACnF0G,EAAOztE,KAAK6E,GACXg0B,GAAA,OAAK0zB,MAAM,iBACR1nD,EAAM7E,KAAKonE,IACV,MAAMiH,EAAgB,CAAE,YAAUjH,EAAOkH,MAAQ,QAAU,YACrD7jD,MAAEA,EAAK8jD,GAAEA,EAAElH,OAAEA,EAAMmH,SAAEA,EAAQF,MAAEA,EAAKpjE,KAAEA,EAAIujE,KAAEA,GAASrH,EAK3D,OAJI38C,GAAO4jD,EAAcnyE,KAAM,SAAQuuB,KACnC8jD,GAAIF,EAAcnyE,KAAM,YAAWqyE,KACnClH,GAAQgH,EAAcnyE,KAAK,yBAC3BsyE,GAAUH,EAAcnyE,KAAK,YAC7BoyE,EACKz1C,GAAA,OAAK0zB,MAAO8hB,EAAc1kD,KAAK,MAAOze,GAG7C2tB,GAAA,OAAK0zB,MAAO8hB,EAAc1kD,KAAK,MAC5B8kD,GAAQ51C,GAAA,OAAK0zB,MAAM,wBAAwBkiB,GAC5C51C,GAAA,OAAK0zB,MAAM,uBAAuBrhD,GAC9B,OAOpB,CAEA0iE,gBACE,MAAMxU,EAAUl/D,KAChB,GAAIk/D,EAAQ54D,OAAOotE,cAAe,OAAOxU,EAAQ54D,OAAOotE,cAActxE,KAAK88D,EAASA,GACpF,MAAMqU,OAAEA,GAAWrU,EACb2N,EAAW3N,EAAQ54D,OAAOumE,SAChC,OACEluC,GAAA,OAAK0zB,MAAQ,gCAA+Bwa,GAAY,MACtDluC,GAAA,OAAK0zB,MAAM,iBACRkhB,EAAOztE,KAAK6E,GACXg0B,GAAA,OAAK0zB,MAAM,QACT1zB,GACGh0B,YAAM7E,KAAKonE,IACV,MAAMsH,EAAc,IACdjkD,MAAEA,EAAK8jD,GAAEA,EAAElH,OAAEA,EAAMmH,SAAEA,EAAQF,MAAEA,EAAKpjE,KAAEA,EAAIujE,KAAEA,GAASrH,EAK3D,OAJI38C,GAAOikD,EAAYxyE,KAAM,SAAQuuB,KACjC8jD,GAAIG,EAAYxyE,KAAM,YAAWqyE,KACjClH,GAAQqH,EAAYxyE,KAAK,+BACzBsyE,GAAUE,EAAYxyE,KAAK,YAC3BoyE,GACFI,EAAYxyE,KAAK,8BACT,cAAawyE,EAAY/kD,KAAK,SAASze,UAE7CujE,GACFC,EAAYxyE,KAAK,0BAEf28B,GAAA,UACEA,GAAA,KAAG0zB,MAAOmiB,EAAY/kD,KAAK,MACzBkP,GAAA,OAAK0zB,MAAM,cAAckiB,GACzB51C,GAAA,OAAK0zB,MAAM,cACT1zB,GAAA,OAAK0zB,MAAM,cAAcrhD,QAMnCwjE,EAAYxyE,KAAK,eAEf28B,GAAA,UACEA,GAAA,KAAG0zB,MAAOmiB,EAAY/kD,KAAK,MAAOze,IAC/B,SASvB,GCpVF,IAAAyjE,GAAe,CACbjxE,KAAM,UACN8C,OAAQ,CACN44D,QAAS,CACPsU,kBAAkB,EAClBQ,gBAAgB,EAChB5I,UAAU,EACVc,gBAAY5iE,EACZ+hE,gBAAgB,EAChBwB,SAAU,KACVZ,sBAAsB,EACtBiE,eAAe,EACfznE,OAAQ,KACRirE,cAAe,KACf3I,YAAa,OAGjB1tC,OAAQ,CACNo3C,YAEF33C,SACc98B,KACRk/D,QAAUlhC,GAAa,CACzBJ,IAFU59B,KAGVlD,YAAa23E,GACbh3C,gBAAiB,2B,EAGrB+vB,OAAQ,CACN,gBAAiB,SAAqBE,EAAY97C,QAAI,IAAJA,MAAO,IAC3C5R,KACRk/D,QAAQjhC,KAAKrsB,EAAKstD,QAASttD,EAAKpK,QAASkmD,E,EAE/C,iBAAkB,SAAsBA,EAAY97C,QAAI,IAAJA,MAAO,IAC7C5R,KACRk/D,QAAQ3gC,MAAM3sB,EAAKstD,QAASttD,EAAKpK,QAASkmD,EAChD,I,OChCJ,cAAoB4e,GAClBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GAAO,CAAE8G,GAAI,IAAM85B,EAAIt3B,OAAO0tC,MAAO1tC,GAG5DnF,MAAMy8B,EAAK2uC,GAEX,MAAMv4B,EAAQh0C,KACRe,EAASF,IACTvB,EAAWF,IACXm4B,EAAUE,KACVoB,EAASN,KAQf,IAAIuF,EAgBAytC,EAgCA5C,EAsEAiH,EA7GJ,GAfA57B,EAAM1tC,OAASimE,OACsB,IAA1Bv4B,EAAM1tC,OAAO8kE,WACtBp3B,EAAM1tC,OAAO8kE,SAAyB,QAAdxtC,EAAIxM,OAU5B0M,EALGkW,EAAM1tC,OAAOxE,GAKVO,EAAE2xC,EAAM1tC,OAAOxE,IAAIoI,GAAG,GAJtB7H,EAAE2xC,EAAM1tC,OAAO2nB,SAClB9rB,QAAQiyD,GAA2B,IAAlBA,EAAKnxD,WACtBiH,GAAG,GAKJ4zB,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAClC,OAAOR,EAAI,GAAGQ,QAGhB,GAAmB,IAAfR,EAAIxgC,OACN,OAAO02C,EAAMjW,UAwEf,SAAS0uC,EAAYvjE,GACnB,MAAMjM,EAASiM,EAAEjM,OACX6yE,EAAUztE,EAAEpF,IAEf47B,EAAOG,SACRH,EAAOY,UACL14B,EAAOgvE,UAAYhvE,EAAOgvE,SAAS/O,WAClCjgE,EAAO04B,QAAQu2C,SACdjvE,EAAO04B,QAAQu2C,QAAQD,UACvBhvE,EAAO04B,QAAQu2C,QAAQD,SAAS/O,YAEG,IAArC8O,EAAQ9lE,QAAQgqC,EAAMlyC,IAAIxE,SAE1B02C,EAAM1tC,OAAO2lE,sBACbj4B,EAAM1tC,OAAO8kE,UACbp3B,EAAMk4B,YACNl4B,EAAMk4B,aAAejvE,GAGZ+2C,EAAM1tC,OAAOurE,sBADtB79B,EAAMzV,OAKZ,CAEA,SAAS+uC,EAAUpkE,GAED,KADAA,EAAEqkE,SACIv5B,EAAM1tC,OAAO4pE,eACjCl8B,EAAMzV,OAEV,CAIA,SAAS4xC,EAAcxrC,GACrB,OAAQ/G,EAAI5D,OAAkB,EAAT2K,GAAc/G,EAAI5D,MACzC,CAxGIga,EAAM1tC,OAAO8kE,UAAYp3B,EAAM1tC,OAAO4lE,WACxCX,EAAclpE,EAAE2xC,EAAM1tC,OAAO4lE,YACpBl4B,EAAM1tC,OAAO8kE,WAClBp3B,EAAM1tC,OAAO+kE,gBACfE,EAAclpE,EAAE,4DAChB2xC,EAAM82B,aAAanhE,OAAO4hE,IAE1BA,EAAcv3B,EAAM82B,aAAa1sE,SAAS,mBAEjB,IAAvBmtE,EAAYjuE,SACdiuE,EAAclpE,EAAE,sCAChB2xC,EAAM82B,aAAanhE,OAAO4hE,KAI9BvuE,GAAOg3C,EAAO,CACZpW,MACA57B,KAAM87B,EAAIyE,SAAS,qBAAuByR,EAAM1tC,OAAOtE,KACvD87B,MACAh8B,GAAIg8B,EAAI,GACRytC,cACAW,WAAYX,GAAeA,EAAY,GACvC/hC,KAAM,QACNyiB,QAAS5pD,EAAE,UAGT2xC,EAAM1tC,OAAOtE,MACf87B,EAAIwE,SAAS,oBA+Ef,MAAMoyC,EAAiB1gC,EAAM1tC,OAAOquE,aAAe3gC,EAAM1tC,OAAOquE,YAAYr3E,OAAS,EACrF,IACI8yE,EACAC,EACA3pC,EACAqJ,EACAD,EAEA8kC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAC,EArBA9lC,GAAY,EAMZ1J,GAAU,EAcVyvC,EAAuB,GAEvBC,GAAwB,EAE5B,SAAStkC,EAAiBnoC,IACpBymC,IAAeqE,EAAM1tC,OAAOsqE,cAAgB58B,EAAM1tC,OAAOsvE,cAAiB1sE,EAAEggC,YAG9E8K,EAAM1tC,OAAOuqE,cAC6C,IAA1DxuE,EAAE6G,EAAEjM,QAAQ+M,QAAQgqC,EAAM1tC,OAAOuqE,cAAcvzE,QAI7C+E,EAAE6G,EAAEjM,QAAQ+M,QAAQ,qBAAqB1M,OAAS,IAEtDqyC,GAAY,EACZ1J,GAAU,EACVmqC,EAAa,CACX/3D,EAAc,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC1Dz0B,EAAc,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,OAE5DyG,EAAiB1d,KACjBqU,OAAcp9B,EACdsrE,EAAkB92C,EAAIyE,SAAS,mBAC1ByR,EAAM1tC,OAAOuqE,cAA2B,eAAX3nE,EAAEsgC,OAClC6rC,EAAqBhzE,EAAE6G,EAAEjM,QAAQ+M,QAAQ,iBAAiB,KAE9D,CACA,SAASynC,EAAgBvoC,GACvB,IAAKymC,IAAczmC,EAAEggC,UAAW,OAYhC,GAXAmnC,EAAe,CACbh4D,EAAc,cAAXnP,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACzDz0B,EAAc,cAAX1L,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,YAGhC,IAAhB5C,IACTA,KACEA,GACA5/B,KAAK+R,IAAIw3D,EAAah4D,EAAI+3D,EAAW/3D,GAAKvR,KAAK+R,IAAIw3D,EAAaz7D,EAAIw7D,EAAWx7D,KAG/E8xB,EAGF,OAFAiJ,GAAY,OACZ1J,GAAU,GAIZ6J,EAAcsgC,EAAWx7D,EAAIy7D,EAAaz7D,EAE1C,MAAMohC,EAAYlG,EAAc,EAAI,YAAc,SAElD,IAAK7J,EAAS,CACZ,GAAIovC,IAAuBv3C,EAAIyE,SAAS,yBACtC+yC,EAA4BD,EAAmBxnE,UAC/C0nE,EAA+BF,EAAmB3kE,aAClD8kE,EAA+BH,EAAmBlmE,eAE9ComE,IAAiCC,GACnB,cAAdx/B,GAA2D,IAA9Bs/B,GAEf,WAAdt/B,GACAs/B,IACEC,EAA+BC,IAMnC,OAHA13C,EAAI1sB,UAAU,IACdu+B,GAAY,OACZ1J,GAAU,GAIV+N,EAAMhyC,MAAQ4tE,IAChBuF,EAAcv3C,EAAIE,IAAI1/B,SAAS,kBAEjC42E,EAAsBl3C,EAAI,GAAG3uB,aAC7B2lE,EAAiBjiD,GAAaiL,EAAI,GAAI,KAClC82C,GACFK,EAAejhC,EAAM1tC,OAAOsqE,cAAgBoE,GAAuBH,EACnEK,EAAe,IAEfD,EAAe,EACfC,EAAelhC,EAAM1tC,OAAOsqE,aACxBoE,EACAN,EACAgB,EAAqB,GACrBb,GAEN5uC,GAAU,CACZ,CAIA,GAHA8uC,EAAmBD,EAAiBhlC,EACpCilC,EAAmBjuE,KAAKgC,IAAIhC,KAAK+B,IAAIksE,EAAkBE,GAAeC,GACtEhsE,EAAE+/B,iBACEyrC,EAAgB,CAClB,IAAI7tE,EAAW+tE,EACX,EAAIG,EAAmBC,EACvB,EAAID,EAAmBC,EAC3BnuE,EAAWC,KAAK+R,IAAIhS,GACpBA,EAAWC,KAAKgC,IAAIhC,KAAK+B,IAAIhC,EAAU,GAAI,GAE3CgvE,EAAsBhvE,GAEtBivE,EAAkBjvE,EACpB,CACA,GAAImtC,EAAMhyC,MAAQ4tE,IAAe8E,EAAgB,CAC/C,IAAI7tE,GAAYkuE,EAAmBD,GAAkBE,EACjDhhC,EAAM1tC,OAAOsvE,cAEb/uE,EADE+tE,EACSG,EAAmBF,EAEnB,GAAKA,EAAqBE,GAAoBF,GAG7DhuE,EAAWC,KAAK+R,IAAIhS,GACpBA,EAAWC,KAAKgC,IAAIhC,KAAK+B,IAAIhC,EAAU,GAAI,GAC3C,MAAMiqE,EAAe,EAAIjqE,EACnBwjE,EAAQ,GAAK,EAAI8F,EAAcP,IAAekB,EACpDqE,EAAYnkC,WAAW,GAAG5zC,SAAS0E,IACjCA,EAAGxD,MAAMuhD,YAAY,YAAc,4BAA2BwqB,KAAU,YAAY,IAElFr2B,EAAM1tC,OAAOsvE,aACfT,EAAYzpE,IAAI,gBAAoB0pE,EAAmBtE,EAArB,KAEtC,CAEA,GADAhzC,EAAIkT,WAAW,GAAG5/B,UAAW,iBAAgB2jE,UACzC/gC,EAAM1tC,OAAOsvE,YAAa,CAC5B,IAAI/uE,EAEFA,EADE+tE,EACS,EAAIG,EAAmBF,GAEtBA,EAAqBE,GAAoBF,EAEvDhuE,EAAWC,KAAKgC,IAAIhC,KAAK+B,IAAIhC,EAAU,GAAI,GAC3Ci3B,EAAIj6B,QAAQ,qBAAsBgD,GAClCmtC,EAAM1Y,KAAK,wCAAyC0Y,EAAOntC,EAC7D,CACF,CACA,SAAS+tC,IAEP,GADAjF,GAAY,GACP1J,EACH,OAEFA,GAAU,EACVnI,EAAI1sB,UAAU,IAAI4/B,WAAW,IACzBgD,EAAMhyC,MAAQ4tE,IAChBuF,EAAYnkC,WAAW,IAClB0jC,IACHS,EAAY/jE,UAAU,IACtB+jE,EAAYzpE,IAAI,gBAAiB,MAIrC,MAAMsqC,EAAYlG,EAAc,EAAI,YAAc,SAE5Cy0B,EAAOz9D,KAAK+R,IAAIi3B,GACtB,GAAa,IAATy0B,GAAcwQ,IAAqBD,EAAgB,OAEvD,MAAMhgC,GAAW,IAAI10C,MAAOuI,UAAYonC,EAExC,IAAKiE,EAAM1tC,OAAOsvE,cAAgBlB,EAAgB,CAChD,GAAI1+B,KAAe4+B,EAAkB,SAAW,aAC9C,OAKF,aAHK9/B,EAAW,KAAOyvB,EAAO,IAAQzvB,GAAY,KAAOyvB,EAAOyQ,EAAsB,IACpFhhC,EAAMzV,QAGV,CAEA,MAAMw3C,EAAgBnB,EAAkB,YAAc,SAChDoB,EAAiBpB,EAAkB,SAAW,YAC9CqB,EAAsBnvE,KAAK+R,IAAIk8D,GAC/BmB,EAAwBpvE,KAAK+R,IAAIg8D,GACvC,GAAI//B,EAAW,KAAOyvB,EAAO,IAAMmQ,EAE7B1+B,IAAc+/B,QAAmD,IAA3BN,IACpCA,IAA2BnvE,EAAOquE,YAAYr3E,OAAS,EAEzD02C,EAAMmiC,cAAc,IAGpBV,EAAyB3uE,KAAKgC,IAC5B4sE,EAAqBp4E,OAAS,EAC9Bm4E,EAAyB,GAE3BzhC,EAAMmiC,cAAc7vE,EAAOquE,YAAYc,MAGvCz/B,IAAcggC,IACe,IAA3BP,EAEFzhC,EAAMzV,SAIJk3C,OADoC,IAA3BA,EACgBnvE,EAAOquE,YAAYr3E,OAAS,EAE5BwJ,KAAK+B,IAAI,EAAG4sE,EAAyB,GAEhEzhC,EAAMmiC,cAAc7vE,EAAOquE,YAAYc,WAGtC,GAAI3gC,EAAW,KAAOyvB,EAAO,GA8ClC,OA5CIvuB,IAAc+/B,GAAiBE,EAAsBC,IAEvDp4C,EAAI0E,YAAY,uBAChB1E,EAAIj6B,QAAQ,qBAAsB,GAClCmwC,EAAM1Y,KAAK,wCAAyC0Y,EAAO,GAC3DA,EAAM1Y,KAAK,qBAAqB,GAChCwC,EAAIj6B,QAAQ,kBACZmwC,EAAM1Y,KAAK,gCAAiC0Y,GACxCA,EAAMhyC,MAAQ4tE,IAChB57B,EAAMiY,QAAQ,GAAG3tD,MAAMuhD,YAAY,wBAAyBswB,EAAcP,IAC1EuF,EAAYzpE,IAAI,gBAAiB,MAGjCsqC,IAAcggC,GAAkBC,EAAsBC,IAEpDliC,EAAM1tC,OAAOsqE,aACf58B,EAAMzV,SAGNT,EAAIwE,SAAS,uBACbxE,EAAIj6B,QAAQ,qBAAsB,GAClCmwC,EAAM1Y,KAAK,wCAAyC0Y,EAAO,GAC3DA,EAAM1Y,KAAK,qBAAqB,GAChCwC,EAAIj6B,QAAQ,mBACZmwC,EAAM1Y,KAAK,kCAAmC0Y,GAC1CA,EAAMhyC,MAAQ4tE,IAChB57B,EAAMiY,QAAQ,GAAG3tD,MAAM23D,eAAe,yBACtCkf,EAAYzpE,IAAI,gBAAiB,eAInCsqC,IAAcggC,GAAkBC,GAAuBC,IAEzDp4C,EAAIwE,SAAS,uBACbxE,EAAIj6B,QAAQ,qBAAsB,GAClCmwC,EAAM1Y,KAAK,wCAAyC0Y,EAAO,GAC3DA,EAAM1Y,KAAK,qBAAqB,GAChCwC,EAAIj6B,QAAQ,mBACZmwC,EAAM1Y,KAAK,kCAAmC0Y,GAC1CA,EAAMhyC,MAAQ4tE,IAChB57B,EAAMiY,QAAQ,GAAG3tD,MAAM23D,eAAe,yBACtCkf,EAAYzpE,IAAI,gBAAiB,UAKvC,GAAIopC,GAAY,KAAO4/B,EAAgB,CAErC,MAAM0B,EAAiB,CAACpB,KAAwBU,EAAsB,GAChEW,EAAmBD,EAAe9a,QAAO,CAAC9rD,EAAM8mE,IAC7CxvE,KAAK+R,IAAIy9D,EAAOvB,GAAoBjuE,KAAK+R,IAAIrJ,EAAOulE,GACvDuB,EACA9mE,IAEA+mE,EAAeH,EAAe1zE,QAAQ2zE,GACnB,IAArBA,EAEFriC,EAAMmiC,cAAc,GACM,IAAjBI,EAETviC,EAAMzV,SAGNk3C,EAAyBc,EAAe,EACxCviC,EAAMmiC,cAAc7vE,EAAOquE,YAAYc,IAE3C,MAAO,GAAI3gC,GAAY,IAAK,CAE1B,MAAM0hC,GAAc14C,EAAIyE,SAAS,uBAC5Bi0C,EAuBMA,IAEPP,EACAC,GAAyBlB,EAAsBkB,GAAyB,EAGpEliC,EAAM1tC,OAAOsqE,cAAc58B,EAAMzV,QAC5B03C,EAAsBC,EAAwB,IAEvDp4C,EAAIwE,SAAS,uBACbxE,EAAIj6B,QAAQ,qBAAsB,GAClCmwC,EAAM1Y,KAAK,wCAAyC0Y,EAAO,GAC3DA,EAAM1Y,KAAK,qBAAqB,GAChCwC,EAAIj6B,QAAQ,mBACZmwC,EAAM1Y,KAAK,kCAAmC0Y,GAC1CA,EAAMhyC,MAAQ4tE,IAChB57B,EAAMiY,QAAQ,GAAG3tD,MAAM23D,eAAe,yBACtCkf,EAAYzpE,IAAI,gBAAiB,UAvCjCuqE,EAAsBC,EAAwB,GAEhDp4C,EAAI0E,YAAY,uBAChB1E,EAAIj6B,QAAQ,qBAAsB,GAClCmwC,EAAM1Y,KAAK,wCAAyC0Y,EAAO,GAC3DA,EAAM1Y,KAAK,qBAAqB,GAChCwC,EAAIj6B,QAAQ,kBACZmwC,EAAM1Y,KAAK,gCAAiC0Y,GACxCA,EAAMhyC,MAAQ4tE,IAChB57B,EAAMiY,QAAQ,GAAG3tD,MAAMuhD,YACrB,wBACAswB,EAAcP,IAEhBuF,EAAYzpE,IAAI,gBAAiB,MAGnCuqE,EAAsBC,GACrBlB,EAAsBkB,GAAyB,GAG5CliC,EAAM1tC,OAAOsqE,cAAc58B,EAAMzV,OAuB3C,CACF,CAEA,MAAMu3C,EAAqBW,IACzB,MAAMC,eAAEA,GAAmBpwE,EAC3B,GACEowE,SAEC1iC,EAAMhyC,MACN4tE,EAGH,GAAI6G,GAAcC,EAChB1iC,EAAMiY,QACH3pB,SAAS,yBACTE,YAAY,iCACf2yC,EAAYnkC,WAAW,IAAI5zC,SAAS0E,IAClCA,EAAGxD,MAAMuhD,YACP,YACC,4BAA2BswB,EAAcP,MAC1C,YACD,IAEHuF,EAAYzpE,IAAI,gBAAuC,EAAnB0pE,EAAF,UAC7B,CACL,MAAMuB,EAAkB,CAAC,KAAMrwE,EAAOquE,YAAa,GAC7CiC,EACJD,EAAgBA,EAAgBj0E,QAAQg0E,GAAkB,GAC5D,GAAID,GAAcG,EAChBzB,EAAYnkC,WAAW,IAAItlC,IAAI,YAAa,IAC5CypE,EAAYzpE,IAAI,gBAAiB,IACjCsoC,EAAMiY,QAAQzpB,YAAY,yBACtBi0C,IAAeG,GACjB5iC,EAAMiY,QAAQ3pB,SAAS,qCAEpB,CACL,MAAMz7B,GACH4vE,EAAaG,IAA8BF,EAAiBE,GAC/D5iC,EAAMiY,QACH3pB,SAAS,yBACTE,YAAY,iCACf2yC,EAAYnkC,WAAW,GAAG5zC,SAAS0E,IACjCA,EAAGxD,MAAMuhD,YACP,YACC,4BAA2B,GAAK,EAAIswB,EAAcP,IAAe/oE,KAClE,YACD,IAEHsuE,EAAYzpE,IAAI,gBAAoB0pE,EAAmBvuE,EAArB,KACpC,CACF,GAEIgvE,EAAyBY,IAC7B,MAAMrL,SAAEA,EAAQyL,mBAAEA,GAAuBvwE,EACzC,GAAKuwE,GAAuBzL,GAAaG,EAAYjuE,OAErD,GAAIm5E,GAAcI,EACXlB,GACHpK,EAAYv6B,WAAW,IAAItlC,IAAI,CAAE8nC,QAAS,GAAI5b,cAAe,KAE/D+9C,GAAwB,MACnB,CACL,MAAMmB,EAAsB,CAAC,KAAMxwE,EAAOquE,YAAa,GACjDoC,EACJD,EAAoBA,EAAoBp0E,QAAQm0E,GAAsB,GACxE,GAAIJ,GAAcM,EACZpB,GACFpK,EAAYv6B,WAAW,IAAItlC,IAAI,CAAE8nC,QAAS,EAAG5b,cAAe,SAE9D+9C,GAAwB,MACnB,CACL,MAAM9uE,GACH4vE,EAAaM,IACbF,EAAqBE,GACxBxL,EAAYv6B,WAAW,GAAGtlC,IAAI,CAAE8nC,QAAS3sC,EAAU+wB,cAAe,QACpE,CACF,GAGFoc,EAAMgjC,gBAAkB,KACtB,IAAKtC,EACH,OAEF,MAAMuC,EAAWn5C,EAAI,GAAG3uB,aAElBylE,EAAkB92C,EAAIyE,SAAS,mBACrCmzC,EAAuB,GACvB1hC,EAAM1tC,OAAOquE,YAAYv3E,SAASilB,IAChCqzD,EAAqB1zE,MAAMi1E,EAAWA,EAAW50D,IAAUuyD,GAAmB,EAAI,GAAG,GACrF,EAGJ5gC,EAAMmiC,cAAiB10E,IACrB,IAAKizE,EACH,OAAO1gC,EAET,GAAc,IAAVvyC,EAEGuyC,EAAM62B,QACT72B,EAAM/V,OAERH,EAAI0E,YAAY,uBAChBizC,OAAyBnsE,EACzBusE,EAAsBp0E,GACtBq0E,EAAkBr0E,GAClBq8B,EAAIj6B,QAAQ,mBAAoBpC,GAChCuyC,EAAM1Y,KAAK,oCAAqC0Y,EAAOvyC,QAClD,GAAc,IAAVA,EAETq8B,EAAIj6B,QAAQ,mBAAoBpC,GAChCuyC,EAAM1Y,KAAK,oCAAqC0Y,EAAOvyC,GACvDuyC,EAAMzV,YACD,CACL,MAAM92B,EAAQnB,EAAOquE,YAAYjyE,QAAQjB,GACzC,GAAIgG,EAAQ,EAAG,OAAOusC,EACjBA,EAAM62B,QACT72B,EAAM/V,OAER43C,EAAsBp0E,GACtBq0E,EAAkBr0E,GAClBq8B,EAAIj6B,QAAQ,mBAAoBpC,GAChCuyC,EAAM1Y,KAAK,oCAAqC0Y,EAAOvyC,GACvDg0E,EAAyBhuE,EACzBq2B,EAAI,GAAGx/B,MAAMuhD,YAAY,wBAA0B,GAAE61B,EAAqBjuE,QAC1Eq2B,EAAIwE,SAAS,sBACf,CACA,OAAO0R,CAAK,EAiCd,SAASkjC,IACHxC,GA9BJ1gC,EAAMgjC,uBACgC,IAA3BvB,GACTzhC,EAAMmiC,cAAc7vE,EAAOquE,YAAYc,KA+BvCzhC,EAAMmjC,cAAa,EAEvB,CA7BAnjC,EAAMmjC,aAAe,SAAsBC,QAAQ,IAARA,OAAW,GACpD,MAAMC,EAAev5C,EAAI+T,KAAK,2BAA2B3nC,GAAG,GACvDmtE,EAAa/5E,SAIhBu3E,EADE/2C,EAAIyE,SAAS,qBAEb80C,EAAa1yC,SAAS12B,IACtB6vB,EAAI6G,SAAS12B,IACbopE,EAAa,GAAGloE,cAIhB2uB,EAAI,GAAG3uB,cACNkoE,EAAa1yC,SAAS12B,IAAM6vB,EAAI6G,SAAS12B,IAAMopE,EAAa,GAAGloE,cAEpE2uB,EAAI,GAAGx/B,MAAMuhD,YAAY,wBAA0B,GAAEg1B,OAChDuC,IACHt5C,EAAIwE,SAAS,uBACb0R,EAAM1Y,KAAK,qBAAqB,I,EAYpC,MAAMkN,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GAiHrD,OAhHIwL,EAAM1tC,OAAOsqE,cAAgB58B,EAAM1tC,OAAOsvE,aAAelB,KAC3D52C,EAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GAChD5K,EAAI95B,GAAG,YAAa2tC,GACpB7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BZ,EAAM7Y,KAAK,gBAAgB,KACzB2C,EAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GACjD5K,EAAIz0B,IAAI,YAAasoC,GACrB7T,EAAIz0B,IAAI,mBAAoByrC,EAAe,KAI/CZ,EAAMlwC,GAAG,QAAQ,KACXkwC,EAAM1tC,OAAO4pE,eACf7tE,EAAE/C,GAAUwE,GAAG,UAAWwpE,GAE5BxvC,EAAI/sB,QAAQ,mBAAmBuxB,SAAS,gBACxC1E,EAAI95B,GAAG,SAAUozE,GACbljC,EAAM1tC,OAAOgxE,YArlBnB,WACE,MAAMC,EAAYl1E,EAAE2xC,EAAM1tC,OAAOgxE,YAAYptE,GAAG,GAChD,GAAyB,IAArBqtE,EAAUj6E,OAAc,OAE5B,GADAqrE,EAAiB4O,EAAUttE,QAAQ,iBACL,IAA1B0+D,EAAerrE,OAAc,OAEjC,MAAMk6E,EAAatnD,SAASy4C,EAAej9D,IAAI,eAAgB,IACzD+rE,EAAgBvnD,SAASy4C,EAAej9D,IAAI,kBAAmB,IAC/DgsE,EAAa/O,EAAe,GAAGx5D,aAAeqoE,EAAa15C,EAAI9D,SAC/D29C,EAAmBhP,EAAe,GAAGj4D,aAAe8mE,EAAa15C,EAAI9D,SACrE49C,EAAajP,EAAe96D,YAElC,IAAIgqE,EAEJ,MAAMC,EAAcP,EAAU5yC,SAAS12B,IAAMupE,EAAaD,EAAU,GAAGpoE,aACvE,GAAI2oE,EAAcJ,EAAY,CAC5B,MAAM7pE,EAAY+pE,EAAaE,EAAcJ,EACzC7pE,EAAY6pE,EAAaC,IAC3BE,EAAmBhqE,EAAY6pE,EAAaC,EAAmBF,EAC3DC,IAAeC,IACjBE,EAAmB/5C,EAAI9D,UAEzB2uC,EAAej9D,IAAI,CACjB,iBAAmB,GAAEmsE,SAGzBlP,EAAe96D,UAAUA,EAAW,IACtC,CACF,CA0jBIkqE,GAGE/jC,EAAMhyC,OACR4tE,EAAa1/C,SAAS4N,EAAIpyB,IAAI,0BAA2B,IACrD0pB,OAAOC,MAAMu6C,KAAaA,EAAa,GACtCA,IAAYA,EAA2B,QAAdhyC,EAAIxM,MAAkB,GAAK,IACzD4iB,EAAMiY,QAAQ,GAAG3tD,MAAMuhD,YAAY,yBAA2B,GAAE+vB,OAChE9xC,EAAIwE,SAAS,oBACRoyC,GACH1gC,EAAMiY,QAAQ3pB,SAAS,yBAEpB0R,EAAM1tC,OAAOsvE,aAAgBlB,GAGhCS,EAAcv3C,EAAIE,IAAI1/B,SAAS,iBAC/Bg3E,EAAiC,QAAdx3C,EAAIxM,MAAkB,GAAK,GAC9C+jD,EAAYzpE,IAAI,gBAAiB,QAJjCsoC,EAAMiY,QAAQ,GAAG3tD,MAAMuhD,YAAY,wBAAyBswB,EAAcP,KAQ1E8E,GACF1gC,EAAMgjC,kBACNhjC,EAAMmiC,cAAc7vE,EAAOquE,YAAY,KAC9B3gC,EAAM1tC,OAAOsvE,aACtB5hC,EAAMmjC,cAAa,EACrB,IAEFnjC,EAAMlwC,GAAG,UAAU,MACbkwC,EAAM1tC,OAAOurE,qBAAuB79B,EAAM1tC,OAAO2lE,uBACnDruC,EAAI95B,GAAG,QAAS2oE,EAClB,IAEFz4B,EAAMlwC,GAAG,SAAS,KAChB2xE,OAAyBnsE,GACrB0qC,EAAM1tC,OAAOsvE,aAAelB,KAC9B52C,EAAI0E,YAAY,2CAChBwR,EAAM1Y,KAAK,qBAAqB,IAElCsC,EAAIz0B,IAAI,SAAU+tE,GACdljC,EAAM1tC,OAAO4pE,eACf7tE,EAAE/C,GAAU6J,IAAI,UAAWmkE,GAEzBt5B,EAAM1tC,OAAOgxE,YAlmBb3O,GAAkBA,EAAerrE,OAAS,GAC5CqrE,EAAej9D,IAAI,CACjB,iBAAkB,MAmmBlBsoC,EAAM1tC,OAAOurE,qBAAuB79B,EAAM1tC,OAAO2lE,uBACnDruC,EAAIz0B,IAAI,QAASsjE,GAEnB3uC,EAAI/sB,QAAQ,mBAAmB7G,GAAG,GAAGs4B,YAAY,gBAC7CwR,EAAMhyC,MAAQ4tE,IAChB57B,EAAMiY,QAAQzpB,YAAY,yBAC1BwR,EAAMiY,QAAQ3pB,SAAS,iCACnB6yC,IACFA,EAAY/jE,UAAU,IACtB+jE,EAAYzpE,IAAI,gBAAiB,KAErC,IAEFsoC,EAAMlwC,GAAG,UAAU,KACbkwC,EAAMhyC,MAAQ4tE,IAChB57B,EAAMiY,QAAQzpB,YAAY,iCAC1BwR,EAAMiY,QAAQ,GAAG3tD,MAAM23D,eAAe,yBACtCjiB,EAAMiY,QAAQ,GAAG3tD,MAAM23D,eAAe,0BACxC,IAGFjiB,EAAMgkC,SAAW,WACfl6C,EAAI0E,YAAY,uBAChBwR,EAAM1Y,KAAK,qBAAqB,GAC5B0Y,EAAMhyC,OACH4tE,IACHA,EAAa1/C,SAAS4N,EAAIpyB,IAAI,0BAA2B,IACrD0pB,OAAOC,MAAMu6C,KAAaA,EAAa,IAEzCA,GACF57B,EAAMiY,QAAQ,GAAG3tD,MAAMuhD,YAAY,wBAAyBswB,EAAcP,I,EAIhF57B,EAAMikC,UAAY,WAChBn6C,EAAIwE,SAAS,uBACb0R,EAAM1Y,KAAK,qBAAqB,GAC5B0Y,EAAMhyC,MACRgyC,EAAMiY,QAAQ,GAAG3tD,MAAM23D,eAAe,wB,EAG1CjiB,EAAMkkC,WAAa,WACjBp6C,EAAIq6C,YAAY,uBAChBnkC,EAAM1Y,KAAK,oBAAqBwC,EAAIyE,SAAS,uB,EAG/CzE,EAAI,GAAGQ,QAAU0V,EAEVA,CACT,GC3vBF,IAAAokC,GAAe,CACb50E,KAAM,QACN8C,OAAQ,CACN0tC,MAAO,CACLhyC,MAAM,EACNopE,cAAU9hE,EACV4iE,gBAAY5iE,EACZ+hE,gBAAgB,EAChBY,sBAAsB,EACtB4F,qBAAqB,EACrB3B,eAAe,EACfU,cAAc,EACdgF,aAAa,EACbjB,YAAa,GACbkC,mBAAoB,EACpBH,eAAgB,EAChB7F,aAAc,KACd9F,YAAa,OAGjB1tC,OAAQ,CACN+6C,UAEFt7C,SACE,MAAMc,EAAM59B,KACZ49B,EAAIoW,MAAQh3C,GACV,GACAghC,GAAa,CACXJ,MACA9gC,YAAas7E,GACb36C,gBAAiB,0BAEnB,CACEu6C,SAAShkC,GACP,MAAMqkC,EAAgBz6C,EAAIoW,MAAMzyC,IAAIyyC,GACpC,GAAIqkC,GAAiBA,EAAcL,SAAU,OAAOK,EAAcL,U,EAGpEC,UAAUjkC,GACR,MAAMqkC,EAAgBz6C,EAAIoW,MAAMzyC,IAAIyyC,GACpC,GAAIqkC,GAAiBA,EAAcJ,UAAW,OAAOI,EAAcJ,W,EAGrEC,WAAWlkC,GACT,MAAMqkC,EAAgBz6C,EAAIoW,MAAMzyC,IAAIyyC,GACpC,GAAIqkC,GAAiBA,EAAcH,WAAY,OAAOG,EAAcH,Y,EAGtE/B,cAAcniC,EAAOyiC,GACnB,MAAM4B,EAAgBz6C,EAAIoW,MAAMzyC,IAAIyyC,GACpC,GAAIqkC,GAAiBA,EAAclC,cACjC,OAAOkC,EAAclC,cAAcM,EAEvC,G,EAINjpB,OAAQ,CACN,cAAe,SAAmBE,EAAY97C,QAAI,IAAJA,MAAO,IACnD,MAAMgsB,EAAM59B,KAEVqC,EAAE,yBAAyB/E,OAAS,GACpCsU,EAAKoiC,OACL3xC,EAAEuP,EAAKoiC,OAAO,KAAO3xC,EAAE,yBAAyB,IAEhDu7B,EAAIoW,MAAMzV,MAAM,yBAElBX,EAAIoW,MAAM/V,KAAKrsB,EAAKoiC,MAAOpiC,EAAKpK,QAASkmD,E,EAE3C,eAAgB,SAAoBA,EAAY97C,QAAI,IAAJA,MAAO,IACzC5R,KACRg0C,MAAMzV,MAAM3sB,EAAKoiC,MAAOpiC,EAAKpK,QAASkmD,EAC5C,I,OCtEJ,cAAoB4e,GAClBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GACrB,CACE8G,GAAI,IAEN85B,EAAIt3B,OAAOgyE,MACXhyE,GAIFnF,MAAMy8B,EAAK2uC,GAEX,MAAM+L,EAAQt4E,KACRe,EAASF,IAEfy3E,EAAM16C,IAAMA,EAEZ06C,EAAMhyE,OAASimE,EAEf,MAAMgM,YAAEA,EAAWC,aAAEA,GAAiBF,EAAMhyE,OAE5C,IAAIw3B,EAqCA26C,EApCJ,GAAKH,EAAMhyE,OAAOxE,GAMhBg8B,EAAMz7B,EAAEi2E,EAAMhyE,OAAOxE,QAND,CAEpB,MAAM42E,EAAYJ,EAAM7vE,SAExBq1B,EAAMz7B,EAAEq2E,EACV,CAIA,OAAI56C,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAC3BR,EAAI,GAAGQ,QAGG,IAAfR,EAAIxgC,OACCg7E,EAAMv6C,WAGf/gC,GAAOs7E,EAAO,CACZx6C,MACAh8B,GAAIg8B,EAAI,GACR0L,KAAM,UAGR1L,EAAI,GAAGQ,QAAUg6C,EAEbC,IACFz6C,EAAI+T,KAAK,iBAAiB/tC,GAAG,SAAS,KACpCw0E,EAAMh9C,KAAK,gDAAiDg9C,GAC5DA,EAAM/5C,OAAO,IAGf+5C,EAAMx0E,GAAG,iBAAiB,KACxBg6B,EAAI+T,KAAK,iBAAiB1oC,IAAI,QAAQ,KAK1CmvE,EAAMx0E,GAAG,QAAQ,KACfzB,EAAE,mBAAmB8E,MAAMwxE,IACzB,MAAMC,EAAgBh7C,EAAI06C,MAAM/2E,IAAIo3E,GAChCA,IAAaL,EAAMx2E,IAAM82E,GAC3BA,EAAcr6C,OAChB,IAEEi6C,IACFC,EAAYvmD,IAAS,KACnBomD,EAAM/5C,OAAO,GACZi6C,GACL,IAEFF,EAAMx0E,GAAG,SAAS,KAChB/C,EAAOR,aAAak4E,EAAU,IAG5BH,EAAMhyE,OAAOwmE,gBACfwL,EAAMn9C,KAAK,UAAU,KACnB76B,YAAW,KACTg4E,EAAMv6C,SAAS,GACd,EAAE,IAIFu6C,EACT,CAEA7vE,SACE,MAAM6vE,EAAQt4E,KACd,GAAIs4E,EAAMhyE,OAAOmC,OAAQ,OAAO6vE,EAAMhyE,OAAOmC,OAAOrG,KAAKk2E,EAAOA,GAChE,MAAMz+B,SACJA,EAAQg/B,mBACRA,EAAkBhM,SAClBA,EAAQ0H,KACRA,EAAIvjE,KACJA,EAAIunE,YACJA,EAAWO,iBACXA,EAAgBC,gBAChBA,GACET,EAAMhyE,OAGV,OACEq4B,GAAA,OACE0zB,MAAQ,eAAcxY,KAHX,QAAbA,GAAmC,WAAbA,EAAyB,oBAAmBg/B,IAAuB,MAGlChM,GAAY,MAC/D0H,EAAO,kBAAoB,MAG7B51C,GAAA,OAAK0zB,MAAM,iBACRkiB,GAAQ51C,GAAA,OAAK0zB,MAAM,cAAckiB,GAClC51C,GAAA,OAAK0zB,MAAM,cAAcrhD,GACxBunE,IAAgBhE,GACf51C,GAAA,KAAG0zB,MAAQ,wBAAsBymB,EAAoB,SAAQA,IAAqB,KAC/EC,IAMb,GC3HF,IAAAC,GAAe,CACbx1E,KAAM,QACN65B,OAAQ,CACN27C,UAEFl8C,SACE,MAAMc,EAAM59B,KACZ49B,EAAI06C,MAAQt7E,GACV,GACAghC,GAAa,CACXJ,MACA9gC,YAAak8E,GACbv7C,gBAAiB,oBAEnB,CAEE2qB,KAAK9hD,IACHtJ,GAAOsJ,EAAQ,CACbwmE,gBAAgB,IAEX,IAAIkM,GAAMp7C,EAAKt3B,GAAQ23B,S,EAKtC33B,OAAQ,CACNgyE,MAAO,CACL/D,KAAM,KACNvjE,KAAM,KACN6oC,SAAU,SACVg/B,mBAAoB,OACpBN,aAAa,EACbO,iBAAkB,KAClBC,gBAAiB,KACjBP,aAAc,KACd3L,SAAU,KACVpkE,OAAQ,KACRsiE,YAAa,QCtCnB,MAAMkO,GAAY,CAChB55C,KAAKv9B,GACH,MACMo3E,EAAa,CACjBrnD,uBACAD,uBAEIkM,EAAMz7B,EAAEP,GAEG,IAAfg8B,EAAIxgC,QACJwgC,EAAI1/B,SAAS,oBAAoBd,OAAS,GAC1CwgC,EAAI1/B,SAAS,yBAAyBd,OAAS,GAGjDwgC,EAAIn0B,OAAOuvE,EAAY,GAZXl5E,KAYiBoxB,yB,EAG/B+vC,SAAS,EACT/Y,KAAK73B,QAAK,IAALA,MAAQ,SAEX,GAAI0oD,GAAU9X,QAAS,OACvB,MAIMuO,EAJa,CACjB79C,uBACAD,uBAEiC,GANvB5xB,KAM6BoxB,0BAA4B,GACrE/uB,EAAE,QAAQigC,SAAS,wBAPPtiC,KASR89B,IAAIn0B,OAAQ,4HAGkB4mB,MAAUm/C,+BAG5CuJ,GAAU9X,SAAU,C,EAEtBgY,OAAOr3E,EAAIyuB,QAAK,IAALA,MAAQ,SACjB,MAKMm/C,EAJa,CACjB79C,uBACAD,uBAEiC,GALvB5xB,KAK6BoxB,0BAA4B,GACrE/uB,EAAEP,GAAM,QAAQwgC,SAAS,wBAEzBjgC,EAAEP,GARU9B,KAQA89B,KAAKn0B,OAAQ,4HAGS4mB,MAAUm/C,8B,EAI9ClP,OAEOyY,GAAU9X,UACf9+D,EAAE,QAAQmgC,YAAY,wBAFVxiC,KAGR89B,IAAI+T,KAAK,yCAAyChnC,SACtDouE,GAAU9X,SAAU,E,EAEtBiY,OAAOt3E,GAELO,EAAEP,GAAM,QAAQ0gC,YAAY,wBAC5BngC,EAAEP,GAFU9B,KAEA89B,KACT+T,KAAK,yCACLhnC,QACL,GAEF,IAAAwuE,GAAe,CACb71E,KAAM,YACNs5B,SAEEvG,GADYv2B,KACK,CACfyvE,UAAWwJ,I,EAGfn1E,GAAI,CACFw1E,iBAAiBC,GACf,MAAM37C,EAAM59B,KACZu5E,EAAGz7C,IAAI+T,KAAK,cAAc1qC,MAAMqyE,IAC9B57C,EAAI6xC,UAAUpwC,KAAKm6C,EAAY,G,EAGnCC,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,cACL1qC,MAAMqyE,IACL57C,EAAI6xC,UAAUpwC,KAAKm6C,EAAY,G,EAGrCnR,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,cAAc1qC,MAAMqyE,IAChC57C,EAAI6xC,UAAUpwC,KAAKm6C,EAAY,GAEnC,GAEF98C,MAAO,CACL+yC,UAAW,CACThe,OAAO/0B,GACL,MACM88C,EAAc98C,EAAM4zB,IADdtwD,KAERyvE,UAAUpwC,KAAKm6C,EACrB,KCvGN,MAAME,GAAc,CAClBl4E,MACE,MAAMo8B,EAAM59B,KAAK,QAAA0F,EAAAhC,UAAApG,OADZqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GAET,IAAK9D,EAAI+E,EAAUN,GAAY5C,EAK/B,GAJuB,iBAAZA,EAAK,MACbkD,EAAUN,GAAY5C,EACvB7B,EAAK87B,EAAIE,KAEP,MAAOj3B,EAA+C,OAAO/E,EAC5D+E,IAAUA,EAAW,GAE1B,MAAMi3B,EAAMz7B,EAAEP,GAAM87B,EAAIE,KACxB,GAAmB,IAAfA,EAAIxgC,OACN,OAAOwE,EAET,MAAM63E,EAAqB7yE,KAAKgC,IAAIhC,KAAK+B,IAAIhC,EAAU,GAAI,KAC3D,IAAI+yE,EAKJ,GAJiCA,EAA7B97C,EAAIyE,SAAS,eAAiCzE,EAAI5zB,GAAG,GAEtC4zB,EAAI1/B,SAAS,gBAEF,IAA1Bw7E,EAAet8E,QAAgBs8E,EAAer3C,SAAS,wBACzD,OAAOq3C,EAET,IAAIC,EAAmBD,EAAex7E,SAAS,QAS/C,OARgC,IAA5By7E,EAAiBv8E,SACnBu8E,EAAmBx3E,EAAE,iBACrBu3E,EAAejwE,OAAOkwE,IAExBA,EACG7oC,gBAA+B,IAAbzqC,EAA2BA,EAAW,IACxD6K,UAAW,iBAAgB,IAAMuoE,IAAuB/7C,EAAIuD,KAAO,EAAI,YAEnEy4C,EAAe,E,EAExBxxB,OACE,MAAMxqB,EAAM59B,KAEZ,QAAA2P,EAAAjM,UAAApG,OAHMqG,EAAI1C,UAAA0O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjM,EAAIiM,GAAAlM,UAAAkM,GAIV,IAAK9N,EAAI+E,EAAU0pB,GAAS5sB,EACxB6lC,EAAO,aAES,IAAhB7lC,EAAKrG,OAEe,iBAAZqG,EAAK,IAAsC,iBAAZA,EAAK,IACzB,iBAAZA,EAAK,GAKgB,iBAAZA,EAAK,IAAsC,iBAAZA,EAAK,MAEnDkD,EAAU0pB,GAAS5sB,EACpB7B,EAAK87B,EAAIE,OALRh8B,EAAIyuB,EAAO1pB,GAAYlD,EACxB6lC,EAAO,YAMgB,IAAhB7lC,EAAKrG,OACS,iBAAZqG,EAAK,IACd7B,EAAK87B,EAAIE,IACTj3B,EAAWlD,EAAK,IACY,iBAAZA,EAAK,KACrB6lC,EAAO,WACP1nC,EAAK87B,EAAIE,IACTvN,EAAQ5sB,EAAK,IAEU,IAAhBA,EAAKrG,SACdksC,EAAO,WACP1nC,EAAK87B,EAAIE,KAGX,MAAMA,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OAEtB,IAAIs8E,EAsBJ,OArBI97C,EAAIyE,SAAS,gBAAkBzE,EAAIyE,SAAS,wBAC9Cq3C,EAAiB97C,GAEjB87C,EAAiB97C,EAAI1/B,SACnB,mFAE4B,IAA1Bw7E,EAAet8E,SACjBs8E,EAAiBv3E,EAAG,uCACiB,aAATmnC,EAAsB,YAAc,KAC5DjZ,EAAS,UAASA,IAAU,oCAEjB,aAATiZ,EAAsB,GAAK,sCAEjC1L,EAAIn0B,OAAOiwE,UAIS,IAAb/yE,GACT+2B,EAAI8vC,YAAYlsE,IAAIo4E,EAAgB/yE,GAG/B+yE,EAAe,E,EAExBpZ,KAAK1+D,EAAIg4E,QAAe,IAAfA,OAAkB,GACzB,MACMh8C,EAAMz7B,EAAEP,GADF9B,KACY89B,KACxB,GAAmB,IAAfA,EAAIxgC,OAAc,OACtB,IAAIs8E,EAMJ,OAJEA,EADE97C,EAAIyE,SAAS,gBAAkBzE,EAAIyE,SAAS,wBAC7BzE,EAEAA,EAAI1/B,SAAS,uCAGJ,IAA1Bw7E,EAAet8E,SACds8E,EAAer3C,SAAS,mBACzBq3C,EAAer3C,SAAS,oBAI1Bq3C,EACGp3C,YAAY,kBACZF,SAAS,mBACTid,cAAa,KACRu6B,GACFF,EAAe/uE,QACjB,IARK+uE,CAWX,GAGF,IAAAG,GAAe,CACbv2E,KAAM,cACNs5B,SAEEvG,GADYv2B,KACK,CACf0tE,YAAagM,I,EAGjB51E,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,gBACL1qC,MAAM6yE,IACL,MAAMJ,EAAiBv3E,EAAE23E,GACzBp8C,EAAI8vC,YAAYlsE,IAAIo4E,EAAgBA,EAAervE,KAAK,iBAAiB,G,EAG/E89D,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,gBAAgB1qC,MAAM6yE,IAClC,MAAMJ,EAAiBv3E,EAAE23E,GACzBp8C,EAAI8vC,YAAYlsE,IAAIo4E,EAAgBA,EAAervE,KAAK,iBAAiB,GAE7E,GAEFmyB,MAAO,CACLgxC,YAAa,CACXjc,OAAO/0B,GACL,MACM56B,EAAK46B,EAAM4zB,IADLtwD,KAER0tE,YAAYlsE,IAAIM,EAAIA,EAAG+H,aAAa,iB,EAE1C6nD,OAAOh1B,GACL,MACM56B,EAAK46B,EAAM4zB,IADLtwD,KAER0tE,YAAYlsE,IAAIM,EAAIA,EAAG+H,aAAa,iBAC1C,KChKN,MAAMowE,GAAW,CACf56C,OACE,MAAMzB,EAAM59B,KACNV,EAAWF,IACjB,IAAIuwC,EACA1J,EACAF,EACA+J,EACAoqC,EACAC,EACAC,EACAC,EACAC,EACAlqE,EACAmqE,EACAC,EACAC,EACA12B,EACA4kB,EACA+O,EACAgD,EACAC,EACAC,EACAC,EACAC,EAEJ,SAASzpC,EAAiBnoC,EAAG6xE,GAC3B90C,GAAU,EACV0J,GAAY,EACZmrC,GAAa,EACb/0C,EAAyB,eAAX78B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACrE4wC,EAAa73E,EAAE6G,EAAEjM,QAAQ+M,QAAQ,MAAME,GAAG,GAC1CuwE,EAAYP,EAAWzyE,QACvB2yE,EAAqBF,EAAWjwE,QAAQ,aACxC,MAAM+wE,EAAad,EAAWjwE,QAAQ,eAClC+wE,EAAW19E,QAAU09E,EAAW/wE,QAAQmwE,GAAoB98E,SAC9D88E,EAAqBY,GAEvBb,EAAgBC,EACbh8E,SAAS,MACTA,SAAS,8CACRw/B,EAAI6tB,QAAO7tB,EAAI6tB,MAAMwvB,WAAY,GACjCr9C,EAAI2T,WAAU3T,EAAI2T,SAAS2pC,OAAQ,GACnCH,IACFb,EAAW53C,SAAS,WACpB83C,EAAmB93C,SAAS,oBAC5Bw4C,GAAa,EAEjB,CAuLA,MAAMpyC,IAAiBjR,KAAaM,iBAChC,CAAEyQ,SAAS,EAAOz7B,SAAS,GAG/B1K,EAAE/C,GAAUwE,GACV85B,EAAI8H,YAAY/yB,MAChB,mCACA0+B,EACA3I,GAEF9K,EAAI95B,GAAG,oBAhMP,SAAyBoF,GACvB,IAAKymC,IAAcuqC,EAAY,OAC/B,MAAM5wC,EAAmB,cAAXpgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACpE,IAAKrD,EAAS,CACZ8d,EAAUm2B,EAAWjwE,QAAQ,SAC7B0+D,EAAiBuR,EAAWjwE,QAAQ,iBACpC,MAAMutE,EAAatnD,SAASy4C,EAAej9D,IAAI,eAAgB,IACzD+rE,EAAgBvnD,SAASy4C,EAAej9D,IAAI,kBAAmB,IACrEmvE,EAAmBlS,EAAe,GAAG96D,UACrC6sE,EAAa32B,EAAQpf,SAAS12B,IAAMupE,EACpCE,EAAa3zB,EAAQ/pB,SAAWw9C,EAAaC,EAC7CyC,EAAW53C,SAAS,WACpB83C,EAAmB93C,SAAS,oBAC5Bq4C,EAAuBT,EAAW,GAAGiB,UACrCb,EAASJ,EAAW,GAAGiB,UACvB/qE,EAAS8pE,EAAWxwE,SAASswB,SAAW2gD,EAAuBT,EAAWlgD,SAC1EqgD,EAAkBH,EAAW,GAAG/qE,aAChCyrE,EAAqBV,EAAWv1C,SAAS12B,GAC3C,CACAg4B,GAAU,EAEV/8B,EAAE+/B,iBACF//B,EAAE+qC,qBAAsB,EAExBnE,EAAcxG,EAAQvD,EAEtB,MAAMq1C,EAAwBzS,EAAe,GAAG96D,UAAYgtE,EACtDQ,EAAYv0E,KAAKgC,IAAIhC,KAAK+B,IAAIinC,EAAcsrC,GAAwBd,GAASlqE,GACnF8pE,EAAW9oE,UAAW,iBAAgBiqE,UAEtC,MAAMC,EAAiB,GACvB,IAWIC,EAXAC,GAAc,EACd1rC,EAAcsrC,EAAwBE,GAAkBhB,IAC1DkB,GAAc,GAEZ1rC,EAAcsrC,EAAwBE,EAAiBlrE,IACzDorE,GAAc,GAGhBhB,OAAkBlxE,EAClBixE,OAAiBjxE,EAGbkyE,IAEAZ,EAAqB9qC,EAAcuqC,EAAkBiB,EACrDZ,EAAahD,IAGb6D,EACEX,EACA9qC,EACAuqC,EACAiB,GACCZ,EAAahD,IAEdkD,EAAqB9qC,EAAc4qC,EAAaY,IAElDC,EAAaX,EAAqB9qC,EAAc4qC,EAAaY,GAE3DC,IACF5S,EAAe,GAAG96D,WAAa0tE,IAInCpB,EAAchzE,MAAMrF,IAClB,MAAM25E,EAAap5E,EAAEP,GACrB,GAAI25E,EAAW,KAAOvB,EAAW,GAAI,OACrC,MAAMwB,EAAkBD,EAAW,GAAGN,UAChCQ,EAAkBF,EAAWzhD,SAC7B4hD,EAAkBjB,EAAuBU,EAE/C,IAAItG,EACJ,MAAM8G,EAAgBJ,EAAW,GAAGK,YAGlCF,GAAmBF,EAAkBC,EAAkB,GACvDzB,EAAWzyE,QAAUg0E,EAAWh0E,SAEhCstE,GAAoBsF,EACpBoB,EAAWrqE,UAAW,kBAAiB2jE,UACvCwF,EAAiBkB,EACjBjB,OAAkBlxE,GAElBsyE,GAAmBF,EAAkBC,EAAkB,GACvDzB,EAAWzyE,QAAUg0E,EAAWh0E,SAEhCstE,EAAmBsF,EACnBoB,EAAW,GAAGK,YAAc/G,EAC5B0G,EAAWrqE,UAAW,kBAAiB2jE,UACvCwF,OAAiBjxE,EACZkxE,IAAiBA,EAAkBiB,KAExC1G,OAAmBzrE,EACnBmyE,EAAWrqE,UAAU,yBAGnByqE,IAAkB9G,IACpB0G,EAAW53E,QAAQ,iBACnB+5B,EAAItC,KAAK,eAAgBmgD,EAAW,GAAIrB,EAAmB,KAG7DqB,EAAW,GAAGK,YAAc/G,CAAgB,GAEhD,IAyFAn3C,EAAI95B,GAAG,oBAxFP,WACE,IAAK6rC,IAAc1J,EAWjB,OAVI0J,IAAc1J,IACZrI,EAAI6tB,QAAO7tB,EAAI6tB,MAAMwvB,WAAY,GACjCr9C,EAAI2T,WAAU3T,EAAI2T,SAAS2pC,OAAQ,GACnCJ,IACFZ,EAAW13C,YAAY,WACvB43C,EAAmB53C,YAAY,sBAGnCmN,GAAY,OACZ1J,GAAU,GAUZ,IAAI81C,EAPAn+C,EAAI6tB,QAAO7tB,EAAI6tB,MAAMwvB,WAAY,GACjCr9C,EAAI2T,WAAU3T,EAAI2T,SAAS2pC,OAAQ,GAEvCf,EAAc/oE,UAAU,IACxB8oE,EAAW13C,YAAY,WACvB43C,EAAmB53C,YAAY,oBAG3B+3C,EAAgBwB,EAAUxB,EAAe9yE,QACpC+yE,IAAiBuB,EAAUvB,EAAgB/yE,SAEpD,IAAIu0E,EAAe5B,EAAmB/vE,UAAU4xE,qBAchD,QAb4B,IAAjBD,IACTA,EAAep+C,EAAIt3B,OAAO41E,SAASF,cAGjCA,IACEzB,GACFL,EAAWpM,YAAYyM,GAErBC,GACFN,EAAWnuE,aAAayuE,KAIvBD,GAAkBC,IAAoBJ,EAAmB73C,SAAS,gBAAiB,CACtFk4C,EAAYP,EAAW,GAAGiC,wBACD,IAAd1B,IACTA,EAAYP,EAAW3vE,KAAK,4BAC1BiwE,GACFuB,EAAUvB,EAAgB,GAAG2B,wBACN,IAAZJ,IACTA,EAAUvB,EAAgBjwE,KAAK,8BAEjCwxE,EAAUxB,EAAe,GAAG4B,wBACL,IAAZJ,IACTA,EAAUxB,EAAehwE,KAAK,6BAEZwxE,EAAN,OAAZA,EAA4B7rD,SAAS6rD,EAAS,SACnCzyE,EAEf,MAAM8yE,EAAchC,EAAmB,GAAGiC,cAEtC5B,IAAWA,EAAYvqD,SAASuqD,EAAW,KAC3CsB,IAASA,EAAU7rD,SAAS6rD,EAAS,KACrCK,GAAaA,EAAYE,SAAS7B,EAAWsB,EACnD,MACuB,IAAZA,GAA4B3mD,OAAOC,MAAM0mD,IAAYA,IAAYtB,IAC1EP,EAAWr2E,QAAQ,gBAAiB,CAAE+b,KAAM66D,EAAWr5D,GAAI26D,IAC3Dn+C,EAAItC,KACF,eACA4+C,EAAW,GACX,CAAEt6D,KAAM66D,EAAWr5D,GAAI26D,EAASj6E,GAAIo4E,EAAW,IAC/CE,EAAmB,KAIvBI,OAAkBlxE,EAClBixE,OAAiBjxE,EACjBqmC,GAAY,EACZ1J,GAAU,CACZ,IAeA5jC,EAAE/C,GAAUwE,GAAG,UAAW,sBAAsB,CAACoF,EAAGqzE,KAClDlrC,EAAiBkrC,GAAc,EAAK,G,EAGxCC,OAAO16E,QAAE,IAAFA,MAAK,kBACV,MACMg8B,EAAMz7B,EAAEP,GACK,IAAfg8B,EAAIxgC,SACRwgC,EAAIwE,SAAS,oBACbxE,EAAIj6B,QAAQ,mBAJA7D,KAKRs7B,KAAK,iBAAkBwC,EAAI,I,EAEjC2+C,QAAQ36E,QAAE,IAAFA,MAAK,kBACX,MACMg8B,EAAMz7B,EAAEP,GACK,IAAfg8B,EAAIxgC,SACRwgC,EAAI0E,YAAY,oBAChB1E,EAAIj6B,QAAQ,oBAJA7D,KAKRs7B,KAAK,kBAAmBwC,EAAI,I,EAElC3sB,OAAOrP,QAAE,IAAFA,MAAK,kBACV,MAAM87B,EAAM59B,KACN89B,EAAMz7B,EAAEP,GACK,IAAfg8B,EAAIxgC,SACJwgC,EAAIyE,SAAS,oBACf3E,EAAIs+C,SAASO,QAAQ3+C,GAErBF,EAAIs+C,SAASM,OAAO1+C,GAExB,GAEF,IAAA4+C,GAAe,CACbl5E,KAAM,WACN8C,OAAQ,CACN41E,SAAU,CACRF,cAAc,IAGlBl/C,SAEEvG,GADYv2B,KACK,CACfk8E,SAAUjC,I,EAGdn2E,GAAI,CACFu7B,OACcr/B,KACHsG,OAAO41E,UADJl8E,KAERk8E,SAAS78C,MACf,GAEFmuB,OAAQ,CACN,mBAAoB,SAAgBE,EAAY97C,QAAI,IAAJA,MAAO,IACzC5R,KACRk8E,SAASM,OAAO5qE,EAAKsqE,S,EAE3B,oBAAqB,SAAiBxuB,EAAY97C,QAAI,IAAJA,MAAO,IAC3C5R,KACRk8E,SAASO,QAAQ7qE,EAAKsqE,S,EAE5B,mBAAoB,SAAgBxuB,EAAY97C,QAAI,IAAJA,MAAO,IACzC5R,KACRk8E,SAAS/qE,OAAOS,EAAKsqE,SAC3B,ICnTJ,MAAMS,GAAW,CACft9C,OACE,MAAMzB,EAAM59B,KACNV,EAAWF,IACXwwC,EAAe,GACrB,IAAID,EACA1J,EACAS,EACAqJ,EACAD,EACA8sC,EACAC,EACAC,EACAC,EACAC,EACAC,EACA5B,EACAxQ,EACAqS,EACAC,EACAC,EACApnC,EACAqnC,EACAC,EACAC,EACAC,EAkUJ,MAAMzlD,IAAkBN,KAAaM,iBAAkB,CAAEyQ,SAAS,GAElE5K,EAAI95B,GAAG,cAAeoF,IACpB,GAAIyzE,GAAS76E,GAAI,CACf,MAAM28B,EAAYp8B,EAAE6G,EAAEjM,QAGlBoF,EAAEs6E,GAAS76E,IAAIiI,GAAG00B,EAAU,KAC5BA,EAAUx0B,QAAQ,aAAaF,GAAG4yE,GAAS76E,KAC3C28B,EAAU8D,SAAS,cAClB9D,EAAUl0B,KAAK,UAAY,IAAI7H,QAAQ,aAAe,GACvD+7B,EAAU8D,SAAS,kBACnB9D,EAAUx0B,QAAQ,6CAA6C3M,OAAS,GAG1EsgC,EAAI2T,SAAShT,MAAMo+C,GAAS76E,GAEhC,KAEFO,EAAE/C,GAAUwE,GAAG85B,EAAI8H,YAAY/yB,MAAO,eAnVtC,SAA0BzJ,GACnB00B,EAAI2T,SAAS2pC,QAClBj1C,GAAU,EACV0J,GAAY,EACZjJ,OAAcp9B,EACdsmC,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACxEyG,GAAiB,IAAI3vC,MAAOuI,UAC5Bi0E,EAAcv6E,EAAErC,MAClB,GA0UuE+3B,GACvE6F,EAAI95B,GAAG,oBA1UP,SAAyBoF,GACvB,IAAKymC,EAAW,OAChB,MAAMtG,EAAmB,cAAXngC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC9DC,EAAmB,cAAXpgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MAMpE,QAL2B,IAAhB5C,IACTA,KACEA,GAAe5/B,KAAK+R,IAAIywB,EAAQsG,EAAah7B,GAAK9N,KAAK+R,IAAIwwB,EAAQuG,EAAav3B,KAGhFquB,EAEF,YADAiJ,GAAY,GAId,IAAK1J,EAAS,CACZ,GAAI5jC,EAAE,yBAAyB/E,OAAS,EAAG,OAC3Cu/E,EAAmBD,EAAY/qC,KAAK,qBACpCirC,EAAgBF,EAAY/qC,KAAK,2BACjCkrC,EAAeH,EAAY/qC,KAAK,0BAChCmrC,EAAmB,KACnBC,EAAoB,KACpBE,EAAe,KACfC,EAAgB,KAChBE,EAAwB,KACxBD,EAAuB,KACnBN,EAAaz/E,OAAS,IACxB0/E,EAAmBD,EAAalZ,aAChCsZ,EAAeJ,EAAa3+E,SAAS,KACrCi/E,EAAuBN,EAAalrC,KAAK,wBAEvCirC,EAAcx/E,OAAS,IACzB2/E,EAAoBH,EAAcjZ,aAClCuZ,EAAgBN,EAAc1+E,SAAS,KACvCk/E,EAAwBR,EAAcjrC,KAAK,wBAE7Cg5B,EAAS+R,EAAYr6C,SAAS,mBAC1BsoC,IACFqS,EACEN,EAAY/qC,KAAK,kDAAkDv0C,OAAS,EACxE,OACA,SAERs/E,EAAYp6C,YAAY,0BACnB5E,EAAIt3B,OAAOirC,SAASksC,WACvBb,EAAY/qC,KAAK,4BAA4BrP,YAAY,2BACzDo6C,EAAYp6C,YAAY,mBAE5B,CAcA,GAbAyD,GAAU,EACN/8B,EAAEyI,YACJzI,EAAE+/B,iBAGJ6G,EAAczG,EAAQuG,EAAav3B,EACnCgjE,EAAYvrC,EAER+6B,IACwB,UAAtBqS,EAA+B7B,GAAa4B,EAC3C5B,GAAa2B,GAIjB3B,EAAY,GAA6B,IAAxB0B,EAAaz/E,QAC9B+9E,EAAY,GAA8B,IAAzByB,EAAcx/E,OAChC,CACA,IAAKutE,EAUH,OATAl7B,GAAY,EACZ1J,GAAU,EACV42C,EAAiBzrE,UAAU,IACvBgsE,GAAiBA,EAAc9/E,OAAS,GAC1C8/E,EAAchsE,UAAU,SAEtB+rE,GAAgBA,EAAa7/E,OAAS,GACxC6/E,EAAa/rE,UAAU,KAI3BiqE,EAAY,CACd,CAMA,IAAIqC,EACA72E,EAGJ,GARIw0E,EAAY,EAAGrlC,EAAY,UACtBqlC,EAAY,EAAGrlC,EAAY,WAC1BA,IAAWA,EAAY,WAKjC9sC,EAAE+qC,qBAAsB,EACpBrW,EAAIt3B,OAAOirC,SAASksC,SAkBtB,OAjBI5S,GACwB,UAAtBqS,GAAiCptC,EAAc,GACjDlS,EAAI2T,SAAShT,MAAMq+C,GAEK,SAAtBM,GAAgCptC,EAAc,GAChDlS,EAAI2T,SAAShT,MAAMq+C,KAGjB9sC,EAAc,GAAKgtC,EAAcx/E,OAAS,GAC5CsgC,EAAI2T,SAAStT,KAAK2+C,EAAa,SAE7B9sC,EAAc,GAAKitC,EAAaz/E,OAAS,GAC3CsgC,EAAI2T,SAAStT,KAAK2+C,EAAa,SAGnCjtC,GAAY,OACZ1J,GAAU,GAKZ,GAFAs3C,GAAgB,EAChBC,GAAiB,EACbV,EAAcx/E,OAAS,EAAG,CAE5B,IAAIqgF,EAAkBtC,EAEtB,GADAx0E,EAAW82E,EAAkBV,EACzBU,GAAmBV,EAAmB,CACxC,MAAM56D,EAAQs7D,GAAmBV,EACjCU,GAAmBV,IAAsBU,EAAkBV,IAAsB,GACjF5B,EAAYsC,EACRL,EAAsBhgF,OAAS,GAAK+kB,EAAQub,EAAIt3B,OAAOirC,SAASqsC,iBAClEJ,GAAiB,EAErB,CACkB,YAAdxnC,IACFnvC,EAAW,EACX82E,EAAkB,GAEpBP,EAAcj2E,MAAMwiC,IAClB,MAAMkqC,EAAYxxE,EAAEsnC,QAC2B,IAApCA,EAASk0C,yBAClBhK,EAAU,GAAGgK,uBAAyBl0C,EAASuV,YAEjDw+B,EAAe/zC,EAASk0C,uBAEtBP,EAAsBhgF,OAAS,GAC/Bu2E,EAAUtxC,SAAS,uBACL,YAAdyT,IAEA69B,EAAUnoE,IAAI,CAAEwC,MAASsvE,GAAkBE,EAAe,GAAnC,OACnBF,GACG3J,EAAUtxC,SAAS,+BACtBq6C,EAAY/4E,QAAQ,2BACpB+5B,EAAItC,KAAK,yBAA0BshD,EAAY,KAEjD/I,EAAUvxC,SAAS,+BAEfuxC,EAAUtxC,SAAS,+BACrBq6C,EAAY/4E,QAAQ,0BACpB+5B,EAAItC,KAAK,wBAAyBshD,EAAY,KAEhD/I,EAAUrxC,YAAY,+BAG1BqxC,EAAUziE,UACP,eAAcusE,EAAkBD,GAAgB,EAAI52E,KAAK+B,IAAIhC,GAAW,aAC1E,GAEL,CACA,GAAIk2E,EAAaz/E,OAAS,EAAG,CAE3B,IAAIqgF,EAAkBtC,EAEtB,GADAx0E,EAAW82E,EAAkBX,EACzBW,EAAkBX,EAAkB,CACtC,MAAM36D,EAAQs7D,EAAkBV,EAChCU,EAAkBX,GAAoBW,EAAkBX,IAAqB,GAC7E3B,EAAYsC,EACRN,EAAqB//E,OAAS,GAAK+kB,EAAQub,EAAIt3B,OAAOirC,SAASqsC,iBACjEL,GAAgB,EAEpB,CACkB,aAAdvnC,IACF2nC,EAAkB,EAClB92E,EAAW,GAEbs2E,EAAah2E,MAAK,CAACwiC,EAAUliC,KAC3B,MAAMosE,EAAYxxE,EAAEsnC,QAC2B,IAApCA,EAASk0C,yBAClBhK,EAAU,GAAGgK,uBACXb,EAAmBrzC,EAASuV,WAAavV,EAASv6B,aAEtDsuE,EAAe/zC,EAASk0C,uBAEtBR,EAAqB//E,OAAS,GAC9Bu2E,EAAUtxC,SAAS,uBACL,aAAdyT,IAEA69B,EAAUnoE,IAAI,CAAEwC,KAAO,GAAEqvE,EAAgBG,EAAe,QACpDH,GACG1J,EAAUtxC,SAAS,+BACtBq6C,EAAY/4E,QAAQ,2BACpB+5B,EAAItC,KAAK,yBAA0BshD,EAAY,KAEjD/I,EAAUvxC,SAAS,+BAEfuxC,EAAUtxC,SAAS,+BACrBq6C,EAAY/4E,QAAQ,0BACpB+5B,EAAItC,KAAK,wBAAyBshD,EAAY,KAEhD/I,EAAUrxC,YAAY,+BAGtB26C,EAAa7/E,OAAS,GACxBu2E,EAAUnoE,IAAI,UAAWyxE,EAAa7/E,OAASmK,GAEjDosE,EAAUziE,UACP,eAAcusE,EAAkBD,GAAgB,EAAI52E,KAAKgC,IAAIjC,EAAU,aACzE,GAEL,CACA+1E,EAAY/4E,QAAQ,WAAYgD,GAChC+2B,EAAItC,KAAK,WAAYshD,EAAY,GAAI/1E,GACrCg2E,EAAiBzrE,UAAW,eAAciqE,WAC5C,IAwHAz9C,EAAI95B,GAAG,oBAvHP,WACE,IAAK6rC,IAAc1J,EAGjB,OAFA0J,GAAY,OACZ1J,GAAU,GAIZ0J,GAAY,EACZ1J,GAAU,EACV,MAAM6O,GAAW,IAAI10C,MAAOuI,UAAYonC,EAClC+tC,EAAyB,YAAd9nC,EAA0B8mC,EAAgBC,EACrDgB,EAA6B,YAAd/nC,EAA0BinC,EAAoBD,EACnE,IAAIzuC,EACAyvC,EACAl7E,EA8CA46E,EA7BJ,GATEnvC,EALCuG,EAAW,MACRhF,GAAe,IAAoB,YAAdkG,GACpBlG,EAAc,IAAoB,aAAdkG,IACxBlB,GAAY,KAAOhuC,KAAK+R,IAAIwiE,GAAa0C,EAAe,EAEhD,OAEA,QAEPjpC,EAAW,MACe,IAAxBhuC,KAAK+R,IAAIwiE,KAAkB9sC,EAAS,SACpCznC,KAAK+R,IAAIwiE,KAAe0C,IAAcxvC,EAAS,SAGtC,SAAXA,EAAmB,CACrBouC,GAAS76E,GAAK86E,EAAY,GAC1BA,EAAY/4E,QAAQ,iBACpB+5B,EAAItC,KAAK,eAAgBshD,EAAY,IACrCA,EAAYt6C,SAAS,0CACrB,MAAM27C,EAA6B,YAAdjoC,GAA2B+nC,EAAeA,EAI/D,GAHAlB,EAAiBzrE,UAAW,eAAc6sE,YAC1CH,EAASx7C,SAAS,2BAClB07C,EAAyB,YAAdhoC,EAA0BonC,EAAgBD,EACjDa,EACF,IAAKl7E,EAAI,EAAGA,EAAIk7E,EAAS1gF,OAAQwF,GAAK,EACpCT,EAAE27E,EAASl7E,IAAIsO,UAAW,eAAc6sE,YAGxCT,GACFV,EAAcjrC,KAAK,uBAAuBhuC,QAAQ,QAAS,eAEzD05E,GACFR,EAAalrC,KAAK,uBAAuBhuC,QAAQ,QAAS,cAE9D,MACE+4E,EAAY/4E,QAAQ,kBACpB+5B,EAAItC,KAAK,gBAAiBshD,EAAY,IACtCD,GAAS76E,QAAKwH,EACdszE,EAAYt6C,SAAS,0BAA0BE,YAAY,mBAC3Dq6C,EAAiBzrE,UAAU,IAC3B0sE,EAASt7C,YAAY,2BAInB26C,GAAgBA,EAAa7/E,OAAS,GAAK6/E,IAAiBa,GAC9Db,EAAah2E,MAAMwiC,IACjB,MAAMkqC,EAAYxxE,EAAEsnC,GACpB+zC,EAAe/zC,EAASk0C,4BACI,IAAjBH,IACT7J,EAAU,GAAGgK,uBACXb,EAAmBrzC,EAASuV,WAAavV,EAASv6B,aAEtDykE,EAAUziE,UAAW,eAAcssE,WAAsB,IAGzDN,GAAiBA,EAAc9/E,OAAS,GAAK8/E,IAAkBY,GACjEZ,EAAcj2E,MAAMwiC,IAClB,MAAMkqC,EAAYxxE,EAAEsnC,GACpB+zC,EAAe/zC,EAASk0C,4BACI,IAAjBH,IACT7J,EAAU,GAAGgK,uBAAyBl0C,EAASuV,YAEjD20B,EAAUziE,UAAW,gBAAessE,WAAsB,IAG9Db,EAAiBtnC,eAAc,KACxBs1B,GAAqB,SAAXt8B,IAAwBs8B,GAAqB,UAAXt8B,IACjDquC,EAAY/4E,QAAmB,SAAX0qC,EAAoB,kBAAoB,mBAC5D3Q,EAAItC,KAAgB,SAAXiT,EAAoB,iBAAmB,iBAAkBquC,EAAY,IAC9EA,EAAYp6C,YAAY,0BACpBqoC,GAAqB,UAAXt8B,IACRuuC,EAAcx/E,OAAS,GACzB8/E,EAAchsE,UAAU,IAEtB2rE,EAAaz/E,OAAS,GACxB6/E,EAAa/rE,UAAU,KAE3B,GAEJ,G,EAyBF8pE,OAAO,EACPp5E,QAAIwH,EACJ20B,OACE,MAAML,EAAM59B,KAAK,QAAA0F,EAAAhC,UAAApG,OADXqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GAEV,IAAK9D,EAAIqtD,EAAMzuD,GAAYiD,EACJ,mBAAZA,EAAK,MACb7B,EAAIpB,EAAUyuD,GAAQxrD,GAEzB,MAAMm6B,EAAMz7B,EAAEP,GAAIoI,GAAG,GAErB,GAAmB,IAAf4zB,EAAIxgC,OAAc,OACtB,IAAKwgC,EAAIyE,SAAS,aAAezE,EAAIyE,SAAS,mBAAoB,OAC7D4sB,IACiDA,EAAhDrxB,EAAI+T,KAAK,2BAA2Bv0C,OAAS,EAAU,QAC/C,QAEd,MAAM4gF,EAAmBpgD,EAAI+T,KAAM,qBAAoBsd,KACjD0tB,EAAmB/+C,EAAI+T,KAAK,qBAClC,GAAgC,IAA5BqsC,EAAiB5gF,OAAc,OACnCwgC,EAAIj6B,QAAQ,iBAAiBy+B,SAAS,mBAAmBE,YAAY,0BACrE5E,EAAItC,KAAK,eAAgBwC,EAAI,IAC7BogD,EAAiB57C,SAAS,2BAC1B,MAAM07C,EAAWE,EAAiB9/E,SAAS,KACrC+/E,EAAuBD,EAAiBra,aACxCwX,EAAqB,UAATlsB,GAAoBgvB,EAAuBA,EACzDH,EAAS1gF,OAAS,GACpB0gF,EAAS72E,MAAK,CAACwiC,EAAUmqC,KACvB,MAAMD,EAAYxxE,EAAEsnC,GACP,UAATwlB,EACF0kB,EAAUziE,UAAW,gBAAeu4B,EAASuV,qBAE7C20B,EACGnoE,IAAI,UAAWsyE,EAAS1gF,OAASw2E,GACjC1iE,UACE,eACC+sE,EAAuBx0C,EAASv6B,YAAcu6B,EAASuV,oBAG/D,IAGJphB,EAAIwE,SAAS,0BACbu6C,EAAiBtnC,eAAc,KAC7BzX,EAAIj6B,QAAQ,mBACZ+5B,EAAItC,KAAK,iBAAkBwC,EAAI,IAC3Bp9B,GAAUA,EAAS0B,KAAK07B,EAAI,GAAG,IAErC1L,IAAU,KACR4rD,EAAS5sE,UAAW,eAAciqE,YAClCwB,EAAiBzrE,UAAW,eAAciqE,WAAmB,IAE/DsB,GAAS76E,GAAKg8B,EAAI,E,EAEpBS,MAAMz8B,EAAIpB,GACR,MAAMk9B,EAAM59B,KACN89B,EAAMz7B,EAAEP,GAAIoI,GAAG,GACrB,GAAmB,IAAf4zB,EAAIxgC,OAAc,OACtB,IAAKwgC,EAAIyE,SAAS,mBAAoB,OACtC,MAAM4sB,EAAOrxB,EAAI+T,KAAK,4BAA4BtP,SAAS,0BACvD,QACA,OACE27C,EAAmBpgD,EACtB+T,KAAK,4BACLrP,YAAY,2BACTw7C,EAAWE,EAAiB9/E,SAAS,KACrC+/E,EAAuBD,EAAiBra,aAM9C,IAAI2U,EACJ,SAAS4F,IACPxgD,EAAI2T,SAAS2pC,OAAQ,EACjBp9C,EAAIyE,SAAS,qBACjBzE,EAAI0E,YAAY,0BAChBw7C,EAAS5sE,UAAU,IACnB0sB,EAAIj6B,QAAQ,mBACZ+5B,EAAItC,KAAK,iBAAkBwC,EAAI,IAC3Bp9B,GAAUA,EAAS0B,KAAK07B,EAAI,IAC5B06C,GAAcj4E,aAAai4E,GACjC,CAfA56C,EAAI2T,SAAS2pC,OAAQ,EACrBp9C,EAAIj6B,QAAQ,kBACZ+5B,EAAItC,KAAK,gBAAiBwC,EAAI,IAC9BA,EAAI0E,YAAY,mBAAmBF,SAAS,0BAa5CxE,EAAI+T,KAAK,qBAAqBzgC,UAAU,IAAImkC,cAAc6oC,GAC1D5F,EAAel4E,WAAW89E,EAAiB,KAE3CJ,EAAS72E,MAAMwiC,IACb,MAAMkqC,EAAYxxE,EAAEsnC,GACP,UAATwlB,EACF0kB,EAAUziE,UAAW,gBAAeu4B,EAASuV,qBAE7C20B,EAAUziE,UACP,eAAc+sE,EAAuBx0C,EAASv6B,YAAcu6B,EAASuV,qBAG1E20B,EAAUnoE,IAAI,CAAEwC,KAAM,QAASs0B,YAAY,4BAA4B,IAErEm6C,GAAS76E,IAAM66E,GAAS76E,KAAOg8B,EAAI,KAAI6+C,GAAS76E,QAAKwH,E,EAE3D+0E,OAAOv8E,EAAIpB,GACT,MAAMk9B,EAAM59B,KACN89B,EAAMz7B,EAAEP,GAAIoI,GAAG,GACF,IAAf4zB,EAAIxgC,SACRq/E,GAAS76E,QAAKwH,EACdw0B,EAAIj6B,QAAQ,mBACZ+5B,EAAItC,KAAK,iBAAkBwC,EAAI,IAC/BA,EAAIpyB,IAAI,CAAEsuB,OAAS,GAAE8D,EAAIi1C,oBACzBj1C,EAAIyX,eAAc,KAIhB,GAHAzX,EAAIj6B,QAAQ,oBACZ+5B,EAAItC,KAAK,kBAAmBwC,EAAI,IAC5Bp9B,GAAUA,EAAS0B,KAAK07B,EAAI,IAC5BA,EAAI7zB,QAAQ,iBAAiB3M,OAAS,EAAG,CAC3C,MAAM8+E,EAAct+C,EAAI7zB,QAAQ,iBAAiB,GAAGoyE,cAC9CiC,EAAexgD,EAAI,GAAGq+C,mBACxBC,QAAuC,IAAjBkC,GACxBlC,EAAYmC,WAAWD,E,MAChB1gD,EAAIt3B,OAAOirC,SAAS4O,eACzBviB,EAAIt3B,OAAOirC,SAAS6O,0BACtB9/C,YAAW,KACTw9B,EAAIjzB,QAAQ,GACX+yB,EAAIt3B,OAAOirC,SAAS8O,uBAEvBviB,EAAIjzB,SAGNizB,EAAI0E,YAAY,2CAClB,IAIFpQ,IAAU,KACR0L,EACGwE,SAAS,4CACT52B,IAAI,CAAEsuB,OAAQ,QACd6X,KAAK,qBACLzgC,UAAU,yBAAyB,IAE1C,GAEF,IAAAotE,GAAe,CACbh7E,KAAM,WACN8C,OAAQ,CACNirC,SAAU,CACRktC,eAAe,EACfhB,UAAU,EACVt9B,gBAAgB,EAChBC,2BAA2B,EAC3BC,sBAAuB,EACvBu9B,eAAgB,MAGpB9gD,SAEEvG,GADYv2B,KACK,CACfuxC,SAAUorC,I,EAGdnvB,OAAQ,CACN,iBAAkB,SAAsBE,EAAY97C,QAAI,IAAJA,MAAO,IAC7C5R,KACRuxC,SAAStT,KAAKrsB,EAAK2/B,SAAU3/B,EAAKu9C,K,EAExC,kBAAmB,SAAuBzB,GACxC,MACMkvB,EAAclvB,EAAW1jD,QAAQ,aACZ,IAAvB4yE,EAAYt/E,QAFJ0C,KAGRuxC,SAAShT,MAAMq+C,E,EAErB,mBAAoB,SAAwBlvB,EAAY97C,QAAI,IAAJA,MAAO,IAC7D,MAAMgsB,EAAM59B,KACN48E,EAAclvB,EAAW1jD,QAAQ,aACvC,GAA2B,IAAvB4yE,EAAYt/E,OAAc,OAC9B,MAAM+xE,QAAEA,EAAOqP,aAAEA,GAAiB9sE,EAC9BA,EAAKy9D,QACPzxC,EAAI8uC,OAAO2C,QAAQA,EAASqP,GAAc,KACxC9gD,EAAI2T,SAAS8sC,OAAOzB,EAAY,IAGlCh/C,EAAI2T,SAAS8sC,OAAOzB,EAExB,GAEF94E,GAAI,CACFu7B,OACcr/B,KACHsG,OAAOirC,UADJvxC,KAERuxC,SAASlS,MACf,IC9iBJ,MAAMs/C,GAAY,CAChBC,cAAclxB,GAEZ,IAAImxB,EAAmBnxB,EAAW1jD,QAAQ,mBAAmBE,GAAG,GAC3D20E,EAAiBvhF,SAAQuhF,EAAmBnxB,EAAWzjD,QAAQ,MAAMC,GAAG,IAE7E,MAAM40E,EAAoBpxB,EAAWzjD,QAAQ,2BAA2BC,GAAG,GACvE40E,EAAkBxhF,QAChBwhF,EAAkB70E,QAAQ40E,GAAkBvhF,QAG9CowD,EAAWzjD,QAAQ,MAAM3M,OAAS,GAAKowD,EAAWzjD,QAAQ,MAAM,KAAO40E,EAAiB,IAThF7+E,KAWR++E,UAAU5tE,OAAO0tE,E,EAEvB5gD,KAAKn8B,GACH,MAAM87B,EAAM59B,KACN89B,EAAMz7B,EAAEP,GACd,IAAIk9E,GAAY,EAChB,SAAS3rB,IACP2rB,GAAY,CACd,CAGA,GAFAlhD,EAAIj6B,QAAQ,uBAAwB,CAAEwvD,WAAWA,GACjDz1B,EAAItC,KAAK,sBAAuBwC,EAAI,GAAIu1B,GACpC2rB,EAAW,OACf,MAAMC,EAAQnhD,EAAI7zB,QAAQ,mBAAmBC,GAAG,GAChD,IAAIg1E,EAAaphD,EAAI1/B,SAAS,2BAG9B,GAFA8gF,EAAWlqC,WAAW,eACI,IAAtBkqC,EAAW5hF,SAAc4hF,EAAaphD,EAAI+T,KAAK,4BACzB,IAAtBqtC,EAAW5hF,OAAc,OAC7B,MAAM6hF,EAAcF,EAAM3hF,OAAS,GAAKwgC,EAAIp0B,SAAStL,SAAS,0BAC1D+gF,EAAY7hF,OAAS,GACvBsgC,EAAImhD,UAAUxgD,MAAM4gD,GAEtBD,EAAW3pC,eAAc,KACnBzX,EAAIyE,SAAS,0BACf28C,EAAWluC,WAAW,GACtBkuC,EAAWxzE,IAAI,SAAU,QACzB0mB,IAAU,KACR8sD,EAAWluC,WAAW,IACtBlT,EAAIj6B,QAAQ,oBACZ+5B,EAAItC,KAAK,kBAAmBwC,EAAI,GAAG,MAGrCohD,EAAWxzE,IAAI,SAAU,IACzBoyB,EAAIj6B,QAAQ,oBACZ+5B,EAAItC,KAAK,kBAAmBwC,EAAI,IAClC,IAEFohD,EAAWxzE,IAAI,SAAW,GAAEwzE,EAAW,GAAGxuE,kBAC1CotB,EAAIj6B,QAAQ,kBACZi6B,EAAIwE,SAAS,yBACb1E,EAAItC,KAAK,gBAAiBwC,EAAI,G,EAEhCS,MAAMz8B,GACJ,MAAM87B,EAAM59B,KACN89B,EAAMz7B,EAAEP,GACd,IAAIk9E,GAAY,EAChB,SAAS3rB,IACP2rB,GAAY,CACd,CAGA,GAFAlhD,EAAIj6B,QAAQ,wBAAyB,CAAEwvD,WAAWA,GAClDz1B,EAAItC,KAAK,uBAAwBwC,EAAI,GAAIu1B,GACrC2rB,EAAW,OACf,IAAIE,EAAaphD,EAAI1/B,SAAS,2BACJ,IAAtB8gF,EAAW5hF,SAAc4hF,EAAaphD,EAAI+T,KAAK,4BACnD/T,EAAI0E,YAAY,yBAChB08C,EAAW30E,KAAK,eAAe,GAC/B20E,EAAWluC,WAAW,GACtBkuC,EAAWxzE,IAAI,SAAW,GAAEwzE,EAAW,GAAGxuE,kBAE1CwuE,EAAW3pC,eAAc,KACnBzX,EAAIyE,SAAS,0BACf28C,EAAWluC,WAAW,GACtBkuC,EAAWxzE,IAAI,SAAU,QACzB0mB,IAAU,KACR8sD,EAAWluC,WAAW,IACtBlT,EAAIj6B,QAAQ,oBACZ+5B,EAAItC,KAAK,kBAAmBwC,EAAI,GAAG,MAGrCohD,EAAWxzE,IAAI,SAAU,IACzBoyB,EAAIj6B,QAAQ,oBACZ+5B,EAAItC,KAAK,kBAAmBwC,EAAI,IAClC,IAEF1L,IAAU,KACR8sD,EAAWluC,WAAW,IACtBkuC,EAAWxzE,IAAI,SAAU,IACzBoyB,EAAIj6B,QAAQ,mBACZ+5B,EAAItC,KAAK,iBAAkBwC,EAAI,GAAG,G,EAGtC3sB,OAAOrP,GACL,MACMg8B,EAAMz7B,EAAEP,GACK,IAAfg8B,EAAIxgC,SACJwgC,EAAIyE,SAAS,yBAHLviC,KAGmC++E,UAAUxgD,MAAMz8B,GAHnD9B,KAIH++E,UAAU9gD,KAAKn8B,GAC1B,GAGF,IAAAs9E,GAAe,CACb57E,KAAM,YACNs5B,SAEEvG,GADYv2B,KACK,CACf++E,UAAWJ,I,EAGfnxB,OAAQ,CACN,+FACE,SAAcE,GAEZixB,GAAUC,cAAcx8E,KADZpC,KACsB0tD,EACpC,I,OChHN,cAA0B9xB,GACxB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IACf,MAAMyhD,EAAKr/E,KACL64B,EAASN,KACTj5B,EAAWF,IAEjB,IAAIkgF,EACc,OAAd1hD,EAAIxM,MACNkuD,EAAgB,GACO,QAAd1hD,EAAIxM,QACbkuD,EAAgB,IAGlB,MAAMrgD,EAAW,CACfsgD,KAAM,EACNvlD,OAAQslD,EACRnyD,OAAO,EACPqyD,wBAAyB,EACzBC,uBAAuB,EACvBC,oBAAgBp2E,EAChBq2E,eAAe,EACfC,kBAAct2E,EACdu2E,eAAWv2E,EACXw2E,GAAI,KACJC,UAAU,EACVC,wBAAoB12E,EACpB22E,WAAWjiB,GACD,6IAI0BA,+EAIhCv7D,OAEJqB,GAAI,IAcN,GAVAu7E,EAAGnjD,iBAAiB+C,GAEpBogD,EAAG/4E,OAAStJ,GAAOiiC,EAAU34B,QACJgD,IAArB+1E,EAAG/4E,OAAO0zB,QAAyBqlD,EAAG/4E,OAAO0zB,SAC/CqlD,EAAG/4E,OAAO0zB,OAASslD,GAGrBD,EAAGvhD,IAAMz7B,EAAEiE,EAAOxE,IAClBu9E,EAAGv9E,GAAKu9E,EAAGvhD,IAAI,GAEO,IAAlBuhD,EAAGvhD,IAAIxgC,OAAc,OACzB+hF,EAAGvhD,IAAI,GAAGu+C,cAAgBgD,EAE1BA,EAAGn+E,MAAQm+E,EAAG/4E,OAAOpF,MACjBm+E,EAAG/4E,OAAOm5E,wBACZJ,EAAGa,cAAgB,IAEjBb,EAAG/4E,OAAO25E,aACZZ,EAAGY,WAAaZ,EAAG/4E,OAAO25E,YAE5BZ,EAAG1W,eAAiB0W,EAAGvhD,IAAI7zB,QAAQ,iBACnCo1E,EAAG16B,cAAgB06B,EAAG1W,eAAe,GAErC0W,EAAGc,oBAAsBd,EAAG/4E,OAAO05E,mBAC/B39E,EAAEg9E,EAAG/4E,OAAO05E,oBAAoB91E,GAAG,GACnCm1E,EAAG1W,gBACF0W,EAAGc,oBAAoB7iF,QAAU+hF,EAAG1W,eAAerrE,SACtD+hF,EAAGc,oBAAsBd,EAAG1W,gBAE9B0W,EAAGW,mBAAqBX,EAAGc,oBAAoB,QAGN,IAA9Bd,EAAG/4E,OAAO85E,gBACnBf,EAAGe,gBAAkBf,EAAG/4E,OAAO85E,iBAE/Bf,EAAGe,iBAAkB,EACjBvnD,EAAOxC,KAAOwC,EAAOwB,UAAU/2B,MAAM,KAAK,GAAK,IACjD+7E,EAAGe,iBAAkB,IAKzB,MAAMN,EAAKT,EAAG/4E,OAAOw5E,GAQrB,IAAIO,EAPJhB,EAAGiB,IAAMR,EAAKz9E,EAAEg9E,EAAG/4E,OAAOw5E,IAAMT,EAAGvhD,IAAI1/B,SAAS,MAC1B,IAAlBihF,EAAGiB,IAAIhjF,QAAgB+hF,EAAG/4E,OAAOy5E,WACnCV,EAAGvhD,IAAIn0B,OAAO,aACd01E,EAAGiB,IAAMjB,EAAGvhD,IAAI1/B,SAAS,OAE3BihF,EAAGS,GAAKT,EAAGiB,IAAI,GAIVD,EADAhB,EAAGS,IAAOT,EAAG/4E,OAAOy5E,SACLV,EAAGiB,IAD2BjB,EAAGvhD,IAGrD9gC,GAAOqiF,EAAI,CACTgB,eACAE,YAAaF,EAAa,GAE1BG,SAAU,GAEVC,eAAgBnhF,EAASnB,cAAc,MAEvCuiF,aAAc,KAEdC,SAAUrhF,EAASshF,yBAEnBlJ,gBAAYpuE,EACZu3E,mBAAev3E,EACfw3E,gBAAYx3E,EACZy3E,eAAWz3E,EACX03E,kBAAc13E,EACd23E,gBAAiB,EACjBC,gBAAY53E,EACZ63E,cAA2C,mBAArB9B,EAAG/4E,OAAO0zB,OAChConD,WAAiC,SAArB/B,EAAG/4E,OAAO0zB,SAIxBqlD,EAAGtiD,aAGH,MAAMskD,EAAoBhC,EAAGrY,aAAatwC,KAAK2oD,GACzCiC,EAAoBjC,EAAG5yB,aAAa/1B,KAAK2oD,GAC/C,IAAIt7B,EACAnC,EACA2/B,EACAC,EAiCJ,OAhCAnC,EAAGvpC,aAAe,WAChBiO,EAAUs7B,EAAGvhD,IAAI7zB,QAAQ,SAASC,GAAG,GACrC03C,EAASy9B,EAAGvhD,IACT7zB,QAAQ,QACR9H,QAAQ89C,GAGL,IADA59C,EAAE49C,GAAOv2C,OAAO,SAASA,OAAO,8CAA8CpM,SAIjF4M,GAAG,GACNq3E,EAAWlC,EAAGvhD,IAAI7zB,QAAQ,UAAUC,GAAG,GACvCs3E,EAAWnC,EAAGvhD,IAAI7zB,QAAQ,UAAUC,GAAG,GAEvCm1E,EAAGc,oBAAoBr8E,GAAG,SAAUu9E,GAChCt9B,EAAQzmD,QAAQymD,EAAQjgD,GAAG,cAAew9E,GAC1C1/B,EAAOtkD,QAAQskD,EAAO99C,GAAG,WAAYw9E,GACrCC,EAASjkF,QAAQikF,EAASz9E,GAAG,aAAcw9E,GAC3CE,EAASlkF,QAAQkkF,EAAS19E,GAAG,aAAcw9E,GAC/C1jD,EAAI95B,GAAG,SAAUw9E,E,EAEnBjC,EAAGtiB,aAAe,WAChBsiB,EAAGc,oBAAoBh3E,IAAI,SAAUk4E,GACjCt9B,EAAQzmD,QAAQymD,EAAQ56C,IAAI,cAAem4E,GAC3C1/B,EAAOtkD,QAAQskD,EAAOz4C,IAAI,WAAYm4E,GACtCC,EAASjkF,QAAQikF,EAASp4E,IAAI,aAAcm4E,GAC5CE,EAASlkF,QAAQkkF,EAASr4E,IAAI,aAAcm4E,GAChD1jD,EAAIz0B,IAAI,SAAUm4E,E,EAGpBjC,EAAGhgD,OAEIggD,CACT,CAEAoC,YAAYC,GACV,MAAMrC,EAAKr/E,KACLkB,EAAQm+E,EAAGa,eAAiBb,EAAGn+E,MAIrC,GAHKwgF,IACHrC,EAAG3H,WAAa2H,EAAGc,oBAAoB,GAAGhxE,cAExCkwE,EAAG8B,cAAe,CACpB9B,EAAG6B,WAAa,EAChB7B,EAAGsC,QAAU,GACb,IAAK,IAAI7+E,EAAI,EAAGA,EAAI5B,EAAM5D,OAAQwF,GAAK,EAAG,CACxC,MAAM8+E,EAAavC,EAAG/4E,OAAO0zB,OAAO94B,EAAM4B,IAC1Cu8E,EAAG6B,YAAcU,EACjBvC,EAAGsC,QAAQ3/E,KAAK4/E,EAClB,CACF,MAAO,GAAIvC,EAAG+B,WAAY,CACxB/B,EAAG6B,WAAa,EACX7B,EAAGsC,UAAStC,EAAGsC,QAAU,IACzBtC,EAAGwC,oBAAmBxC,EAAGwC,kBAAoB,IAClD,MAAMC,EAAgB,GACtBzC,EAAGgB,aAAaxuC,KAAM,6BAA4Bz0C,SAAS0E,IACzDggF,EAAc5xD,SAASpuB,EAAG+H,aAAa,2BAA4B,KAAO/H,CAAE,IAE9E,IAAK,IAAIgB,EAAI,EAAGA,EAAI5B,EAAM5D,OAAQwF,GAAK,EAAG,CACxC,MAAMi/E,EAAY1C,EAAGn+E,MAAMwB,QAAQxB,EAAM4B,IACnCk/E,EAAeF,EAAcC,GAC/BC,IACG3C,EAAGwC,kBAAkBrwD,SAASuwD,KACjC1C,EAAGsC,QAAQI,GAAaC,EAAa7yE,aACrCkwE,EAAGwC,kBAAkB7/E,KAAK+/E,UAGD,IAAlB1C,EAAGsC,QAAQ7+E,KACpBu8E,EAAGsC,QAAQI,GAAa,IAE1B1C,EAAG6B,YAAc7B,EAAGsC,QAAQI,EAC9B,CACF,MACE1C,EAAG6B,WAAap6E,KAAKsX,KAAKld,EAAM5D,OAAS+hF,EAAG/4E,OAAOi5E,MAAQF,EAAG/4E,OAAO0zB,OACrEqlD,EAAGwB,cAAgB/5E,KAAKsX,KAAKihE,EAAG3H,WAAa2H,EAAG/4E,OAAO0zB,QACvDqlD,EAAGyB,WAAazB,EAAG/4E,OAAOw6E,YAAiC,EAAnBzB,EAAGwB,cAC3CxB,EAAG0B,UAAY1B,EAAG/4E,OAAOy6E,WAAa1B,EAAGwB,cACzCxB,EAAG2B,aAAe3B,EAAGwB,cAAgBxB,EAAGyB,WAAazB,EAAG0B,UACxD1B,EAAG4B,gBAAmB5B,EAAGyB,WAAa,EAAKzB,EAAG/4E,OAAO0zB,QAGnDqlD,EAAGe,iBAAmBf,EAAG/4E,OAAOq5E,gBAClCN,EAAGgB,aAAa30E,IAAI,CAAEsuB,OAAS,GAAEqlD,EAAG6B,gBAExC,CAEAz4E,OAAOu0C,EAAOilC,GACZ,MAAM5C,EAAKr/E,KACPg9C,IAAOqiC,EAAGqB,aAAe,MAE7B,IAAI7yE,IACFwxE,EAAGvhD,IAAI,GAAGpwB,wBAAwBO,IAAMoxE,EAAGc,oBAAoB,GAAGzyE,wBAAwBO,KAI5F,QAD8B,IAAnBg0E,IAAgCp0E,EAAYo0E,KAEjC,OAApB5C,EAAGqB,cACH55E,KAAK+R,IAAIhL,EAAYwxE,EAAGqB,cAAgBrB,EAAG4B,kBACzC5B,EAAGe,iBACHf,EAAGc,oBAAoB,GAAGtyE,UAAYwxE,EAAG3H,YACvC2H,EAAGc,oBAAoB,GAAGzvE,cAI9B,OAFA2uE,EAAGqB,aAAe7yE,EAKpB,MAAM3M,EAAQm+E,EAAGa,eAAiBb,EAAGn+E,MACrC,IAAIghF,EACAC,EAuCAC,EAtCAC,EAAwB,EACxBC,EAAuB,EAC3B,GAAIjD,EAAG8B,eAAiB9B,EAAG+B,WAAY,CACrC,IACIQ,EADAW,EAAU,EAEdlD,EAAG4B,gBAAkB5B,EAAG3H,WAExB,IAAK,IAAIryE,EAAI,EAAGA,EAAIg6E,EAAGsC,QAAQrkF,OAAQ+H,GAAK,EAC1Cu8E,EAAavC,EAAGsC,QAAQt8E,QACC,IAAd68E,IAEPK,EAAUX,GACV/zE,EAA4B,EAAhBwxE,EAAG3H,WAAiB2H,EAAG/4E,OAAOk5E,wBAE1C0C,EAAY78E,EACTg9E,GAAyBT,QAGT,IAAZO,KAEPI,EAAUX,GACR/zE,EAA4B,EAAhBwxE,EAAG3H,WAAiB2H,EAAG/4E,OAAOk5E,yBAC5Cn6E,IAAMg6E,EAAGsC,QAAQrkF,OAAS,KAE1B6kF,EAAU98E,EAAI,GAChBi9E,GAAwBV,GAE1BW,GAAWX,EAEbO,EAAUr7E,KAAKgC,IAAIq5E,EAASjhF,EAAM5D,OACpC,MACE4kF,GAAahyD,SAASriB,EAAYwxE,EAAG/4E,OAAO0zB,OAAQ,IAAMqlD,EAAGyB,YAAczB,EAAG/4E,OAAOi5E,KACjF2C,EAAY,IACdA,EAAY,GAEdC,EAAUr7E,KAAKgC,IAAIo5E,EAAY7C,EAAG2B,aAAe3B,EAAG/4E,OAAOi5E,KAAMr+E,EAAM5D,QAIzE,MAAMklF,EAAsB,GAE5B,IAAI1/E,EACJ,IAFAu8E,EAAGpZ,UAAW,EAETnjE,EAAIo/E,EAAWp/E,EAAIq/E,EAASr/E,GAAK,EAAG,CACvC,IAAI2/E,EAEJ,MAAMh7E,EAAQ43E,EAAGn+E,MAAMwB,QAAQxB,EAAM4B,IAEjCA,IAAMo/E,IAAW7C,EAAGqD,iBAAmBj7E,GACvC3E,IAAMq/E,EAAU,IAAG9C,EAAGsD,eAAiBl7E,GACvC43E,EAAGa,cACDb,EAAGn+E,MAAMuG,KAAW43E,EAAGa,cAAcb,EAAGa,cAAc5iF,OAAS,KAAI+hF,EAAGpZ,UAAW,GAC5Ex+D,IAAU43E,EAAGn+E,MAAM5D,OAAS,IAAG+hF,EAAGpZ,UAAW,GAGpDoZ,EAAG/4E,OAAOo5E,eACZ8C,EAAoBxgF,KAAKd,EAAM4B,IACtBu8E,EAAGmB,SAAS/4E,IACrBg7E,EAASpD,EAAGmB,SAAS/4E,GACrBg7E,EAAOtG,mBAAqB10E,IAExB43E,EAAGY,WACLZ,EAAGoB,eAAe59E,UAAYw8E,EAAGY,WAAW/+E,EAAM4B,GAAI2E,GAAOhF,OAE7D48E,EAAGoB,eAAe59E,UAAY3B,EAAM4B,GAAGwsB,WAAW7sB,OAEpDggF,EAASpD,EAAGoB,eAAepiF,WAAW,GAClCghF,EAAG/4E,OAAO6mB,QAAOkyD,EAAGmB,SAAS/4E,GAASg7E,GAC1CA,EAAOtG,mBAAqB10E,GAI1B3E,IAAMo/E,IAENE,EADE/C,EAAG8B,eAAiB9B,EAAG+B,WACXiB,EAECv/E,EAAIu8E,EAAG/4E,OAAO0zB,OAAUqlD,EAAG/4E,OAAOi5E,MAGhDF,EAAG/4E,OAAOo5E,iBACb+C,EAAOnkF,MAAM2P,IAAO,GAAEm0E,MAGtB/C,EAAG/jD,KAAK,6CAA8C+jD,EAAIoD,EAAQvhF,EAAM4B,IAGxEu8E,EAAGsB,SAASl3E,YAAYg5E,GAE5B,CAGKpD,EAAGe,kBACFf,EAAG8B,eAAiB9B,EAAG+B,WACzB/B,EAAGkB,YAAYjiF,MAAM07B,OAAU,GAAEsoD,MAEjCjD,EAAGkB,YAAYjiF,MAAM07B,OAAal3B,EAAIu8E,EAAG/4E,OAAO0zB,OAAUqlD,EAAG/4E,OAAOi5E,KAArC,MAK/BF,EAAG/4E,OAAOo5E,eACRx+E,GAA0B,IAAjBA,EAAM5D,SACjB+hF,EAAGpZ,UAAW,IAGhBoZ,EAAG/jD,KAAK,mCAAoC+jD,EAAIA,EAAGsB,UACnDtB,EAAGkB,YAAY19E,UAAY,GAE3Bw8E,EAAG/jD,KAAK,+CAAgD+jD,EAAIA,EAAGsB,UAE3Dz/E,GAA0B,IAAjBA,EAAM5D,QACjB+hF,EAAGpZ,UAAW,EACVoZ,EAAG/4E,OAAOs8E,gBAAevD,EAAGkB,YAAY19E,UAAYw8E,EAAG/4E,OAAOs8E,gBAElEvD,EAAGkB,YAAY92E,YAAY41E,EAAGsB,UAGhCtB,EAAG/jD,KAAK,6CAA8C+jD,EAAIA,EAAGsB,gBAGjC,IAAnBsB,GAAkCjlC,GAC3CqiC,EAAGc,oBAAoBtyE,UAAUo0E,EAAgB,GAE/C5C,EAAG/4E,OAAOo5E,gBACZL,EAAG/4E,OAAOo5E,eAAeL,EAAI,CAC3B6C,YACAC,UACAjB,WAAY7B,EAAG6B,WACfkB,cACAlhF,MAAOshF,IAGPnD,EAAG+B,YACL3gF,uBAAsB,KACpB4+E,EAAGoC,aAAY,EAAK,GAG1B,CAGAoB,YAAYC,EAASC,QAAc,IAAdA,OAAiB,GACpC,MAAM1D,EAAKr/E,KACXq/E,EAAGa,cAAgB,GACnB,IAAK,IAAIp9E,EAAI,EAAGA,EAAIggF,EAAQxlF,OAAQwF,GAAK,EACvCu8E,EAAGa,cAAcl+E,KAAKq9E,EAAGn+E,MAAM4hF,EAAQhgF,KAErCigF,IACF1D,EAAGc,oBAAoB,GAAGtyE,UAAY,GAExCwxE,EAAG3tB,QACL,CAEAsxB,cACE,MAAM3D,EAAKr/E,KACPq/E,EAAG/4E,OAAOm5E,sBACZJ,EAAGa,cAAgB,IAEnBb,EAAGa,cAAgB,YACZb,EAAGa,eAEZb,EAAG3tB,QACL,CAEAuxB,aAAax7E,GACX,MAAM43E,EAAKr/E,KACX,GAAIyH,EAAQ43E,EAAGn+E,MAAM5D,OAAQ,OAAO,EACpC,IAAIilF,EAAU,EACd,GAAIlD,EAAG8B,eAAiB9B,EAAG+B,WACzB,IAAK,IAAIt+E,EAAI,EAAGA,EAAI2E,EAAO3E,GAAK,EAC9By/E,GAAWlD,EAAGsC,QAAQ7+E,QAGxBy/E,EAAU96E,EAAQ43E,EAAG/4E,OAAO0zB,OAE9B,MAAMkpD,EAAU7D,EAAGvhD,IAAI,GAAGq9C,UAE1B,OADAkE,EAAG52E,QAAO,EAAMy6E,EAAUX,EAAUryD,SAASmvD,EAAGc,oBAAoBz0E,IAAI,eAAgB,MACjF,CACT,CAEAs7D,eACahnE,KACRyI,QACL,CAGAu4D,YACE,MAAMqe,EAAKr/E,KACX,SAAUq/E,EAAGv9E,GAAGsN,aAAeiwE,EAAGv9E,GAAGqN,cAAgBkwE,EAAGv9E,GAAGqhF,iBAAiB7lF,OAC9E,CAEAmvD,eACE,MAAM4yB,EAAKr/E,KACPq/E,EAAGre,cACLqe,EAAGwC,kBAAoB,GACvBxC,EAAGoC,cACHpC,EAAG52E,QAAO,GAEd,CAGA26E,YAAYliF,GACV,MAAMm+E,EAAKr/E,KACX,IAAK,IAAI8C,EAAI,EAAGA,EAAI5B,EAAM5D,OAAQwF,GAAK,EACrCu8E,EAAGn+E,MAAMc,KAAKd,EAAM4B,IAEtBu8E,EAAG3tB,QACL,CAEA2xB,WAAWrlB,GACEh+D,KACRojF,YAAY,CAACplB,GAClB,CAGAslB,gBAAgBpiF,GACd,MAAMm+E,EAAKr/E,KACXq/E,EAAGn+E,MAAQA,SACJm+E,EAAGa,cACVb,EAAGmB,SAAW,GACdnB,EAAG3tB,QACL,CAEA6xB,YAAY97E,EAAOu2D,GACjB,MAAMqhB,EAAKr/E,KACXq/E,EAAGn+E,MAAMuG,GAASu2D,EACdqhB,EAAG/4E,OAAO6mB,cAAckyD,EAAGmB,SAAS/4E,GACxC43E,EAAG3tB,QACL,CAGA8xB,aAAatiF,GACX,MAAMm+E,EAAKr/E,KACX,IAAK,IAAI8C,EAAI5B,EAAM5D,OAAS,EAAGwF,GAAK,EAAGA,GAAK,EAC1Cu8E,EAAGn+E,MAAMsN,QAAQtN,EAAM4B,IAEzB,GAAIu8E,EAAG/4E,OAAO6mB,MAAO,CACnB,MAAMs2D,EAAW,GACjB1mF,OAAOI,KAAKkiF,EAAGmB,UAAUpjF,SAAS2yD,IAChC0zB,EAASvzD,SAAS6/B,EAAQ,IAAM7uD,EAAM5D,QAAU+hF,EAAGmB,SAASzwB,EAAO,IAErEsvB,EAAGmB,SAAWiD,CAChB,CACApE,EAAG3tB,QACL,CAEAgyB,YAAY1lB,GACCh+D,KACRwjF,aAAa,CAACxlB,GACnB,CAGAse,SAAS18D,EAAMwB,GACb,MAAMi+D,EAAKr/E,KACLkiF,EAAYtiE,EAClB,IAAIuiE,EAAU/gE,EACd,GAAI8gE,IAAcC,EAAS,OAE3B,MAAMnkB,EAAOqhB,EAAGn+E,MAAMsM,OAAO00E,EAAW,GAAG,GAU3C,GATIC,GAAW9C,EAAGn+E,MAAM5D,QAEtB+hF,EAAGn+E,MAAMc,KAAKg8D,GACdmkB,EAAU9C,EAAGn+E,MAAM5D,OAAS,GAG5B+hF,EAAGn+E,MAAMsM,OAAO20E,EAAS,EAAGnkB,GAG1BqhB,EAAG/4E,OAAO6mB,MAAO,CACnB,MAAMs2D,EAAW,GACjB1mF,OAAOI,KAAKkiF,EAAGmB,UAAUpjF,SAAS2yD,IAChC,MAAM4zB,EAAczzD,SAAS6/B,EAAQ,IAC/B6zB,EAAY1B,EAAYC,EAAUD,EAAYC,EAC9C0B,EAAa3B,EAAYC,EAAUA,EAAUD,EAC7C4B,EAAa5B,EAAYC,GAAW,EAAI,GAC1CwB,EAAcC,GAAaD,EAAcE,KAC3CJ,EAASE,GAAetE,EAAGmB,SAASmD,IAClCA,IAAgBC,IAAWH,EAASI,GAAcxE,EAAGmB,SAASmD,IAC9DA,EAAcC,GAAaD,GAAeE,IAC5CJ,EAASE,EAAcG,GAAczE,EAAGmB,SAASmD,GAAY,IAEjEtE,EAAGmB,SAAWiD,CAChB,CACApE,EAAG3tB,QACL,CAGAqyB,iBAAiBt8E,EAAOu2D,GACtB,MAAMqhB,EAAKr/E,KACX,GAAc,IAAVyH,EAIJ,GAAIA,GAAS43E,EAAGn+E,MAAM5D,OACpB+hF,EAAGgE,WAAWrlB,OADhB,CAMA,GAFAqhB,EAAGn+E,MAAMsM,OAAO/F,EAAO,EAAGu2D,GAEtBqhB,EAAG/4E,OAAO6mB,MAAO,CACnB,MAAMs2D,EAAW,GACjB1mF,OAAOI,KAAKkiF,EAAGmB,UAAUpjF,SAAS2yD,IAChC,MAAM4zB,EAAczzD,SAAS6/B,EAAQ,IACjC4zB,GAAel8E,IACjBg8E,EAASE,EAAc,GAAKtE,EAAGmB,SAASmD,GAC1C,IAEFtE,EAAGmB,SAAWiD,CAChB,CACApE,EAAG3tB,QAbH,MANE2tB,EAAGqE,YAAY1lB,EAoBnB,CAGAgmB,YAAYlB,GACV,MAAMzD,EAAKr/E,KACX,IAAIikF,EACAH,EAAa,EACjB,IAAK,IAAIhhF,EAAI,EAAGA,EAAIggF,EAAQxlF,OAAQwF,GAAK,EAAG,CAC1C,IAAI2E,EAAQq7E,EAAQhgF,QACK,IAAdmhF,GACLx8E,EAAQw8E,IACVH,GAAchhF,GAGlB2E,GAASq8E,EACTG,EAAYnB,EAAQhgF,GAEpB,MAAMohF,EAAc7E,EAAGn+E,MAAMsM,OAAO/F,EAAO,GAAG,GAO9C,GAJI43E,EAAGa,eAAiBb,EAAGa,cAAcx9E,QAAQwhF,IAAgB,GAC/D7E,EAAGa,cAAc1yE,OAAO6xE,EAAGa,cAAcx9E,QAAQwhF,GAAc,GAG7D7E,EAAG/4E,OAAO6mB,MAAO,CACnB,MAAMs2D,EAAW,GACjB1mF,OAAOI,KAAKkiF,EAAGmB,UAAUpjF,SAAS2yD,IAChC,MAAM4zB,EAAczzD,SAAS6/B,EAAQ,IACjC4zB,IAAgBl8E,SACX43E,EAAGmB,SAAS/4E,GACVyoB,SAAS6/B,EAAQ,IAAMtoD,EAChCg8E,EAASE,EAAc,GAAKtE,EAAGmB,SAASzwB,GAExC0zB,EAASE,GAAetE,EAAGmB,SAASzwB,EACtC,IAEFsvB,EAAGmB,SAAWiD,CAChB,CACF,CACApE,EAAG3tB,QACL,CAEAyyB,iBACE,MAAM9E,EAAKr/E,KACXq/E,EAAGn+E,MAAQ,UACJm+E,EAAGa,cACNb,EAAG/4E,OAAO6mB,QAAOkyD,EAAGmB,SAAW,IACnCnB,EAAG3tB,QACL,CAEA6sB,WAAW92E,GACEzH,KACRgkF,YAAY,CAACv8E,GAClB,CAGA28E,aACapkF,KACRwgF,SAAW,EAChB,CAGA9uB,OAAO2yB,GACL,MAAMhF,EAAKr/E,KACPqkF,GAAehF,EAAG/4E,OAAO6mB,QAC3BkyD,EAAGmB,SAAW,IAEhBnB,EAAGwC,kBAAoB,GACvBxC,EAAGoC,cACHpC,EAAG52E,QAAO,EACZ,CAEA42B,OACE,MAAMggD,EAAKr/E,KACXq/E,EAAGvpC,eACHupC,EAAGoC,cACHpC,EAAG52E,QACL,CAEAs1B,UACE,IAAIshD,EAAKr/E,KACTq/E,EAAGtiB,eACHsiB,EAAGvhD,IAAI,GAAGu+C,cAAgB,YACnBgD,EAAGvhD,IAAI,GAAGu+C,cACjBrqD,GAAYqtD,GACZA,EAAK,IACP,GC3nBF,IAAAiF,GAAe,CACb9gF,KAAM,cACN65B,OAAQ,CACNinD,gBAEFxnD,SACc98B,KACRo8E,YAAc7+C,GAAmB,CACnCE,gBAAiB,gBACjB3gC,YAAawnF,GACb1mD,IAJU59B,KAKV29B,QAAS,iBAEb,G,OCXF,cAAwB/B,GACtB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IACf,MAAMn2B,EAAQzH,KAERi/B,EAAW,CACfn9B,GAAI,KACJyiF,OAAQ,KACRzB,QAAS,OACT0B,cAAe,GACfC,aAAc,GACdC,YAAY,EACZtQ,OAAO,EAEP6L,WAAUA,CAAC0E,EAAa5C,IACd,mBACA4C,mBACNliF,OAEJmiF,sBAAqBA,IACZ,gDAET9gF,GAAI,IAQN,IAAIg6B,EACA+mD,EACAlc,EACA2X,EAEJ,GATA74E,EAAMy0B,iBAAiB+C,GAEvBx3B,EAAMnB,OAAStJ,GAAOiiC,EAAU34B,IAO5BmB,EAAMnB,OAAOxE,GAGf,OAAO2F,EAGT,GALEq2B,EAAMz7B,EAAEoF,EAAMnB,OAAOxE,IAKnBg8B,EAAI,GAAGgnD,YACT,OAAOhnD,EAAI,GAAGgnD,YAahB,GAVAxE,EAAMxiD,EAAI+T,KAAK,MACI,IAAfyuC,EAAIhjF,SACNgjF,EAAMj+E,EAAE,aACRy7B,EAAIn0B,OAAO22E,IAGT74E,EAAMnB,OAAOi+E,SACfM,EAAUxiF,EAAEoF,EAAMnB,OAAOi+E,SAGE,SAAzB98E,EAAMnB,OAAOw8E,UAAuB+B,EACtC,OAAOp9E,EAiCT,SAASglD,IACP,MAAMzyB,EAAS,CAAEvyB,SACjBA,EAAMs9E,WACF/qD,IAAWvyB,EAAMuyB,QACnBvyB,EAAMgB,QAEV,CAEA,SAASgkE,EAAYvjE,GACnB,MAAM87E,EAAa3iF,EAAE6G,EAAEjM,QAAQ+M,QAAQ,MACvC,IAAKg7E,EAAW1nF,OAAQ,OAExB,IAAIykF,EAAYiD,EAAWv9E,QAC3B,GAAIA,EAAMw9E,SAAW,EAAG,CACtB,MAAM9wC,EAAa4tC,GAAaiD,EAAWE,SAAS,MAAM5nF,OAAS,GACnEykF,EAAYj7E,KAAKkO,OAAOvN,EAAMq7E,QAAQxlF,OAAS,GAAK62C,EACtD,CACA,MAAMwwC,EAAcl9E,EAAMq7E,QAAQf,GAElCt6E,EAAMq2B,IAAIj6B,QAAQ,kBAAmB,CAAEoqB,QAAS02D,EAAal9E,MAAOs6E,IACpEt6E,EAAM6zB,KAAK,8BAA+B7zB,EAAOk9E,EAAa5C,GAC9Dt6E,EAAMq2B,IAAIj6B,QAAQ,mBAAoB,CAAEoqB,QAAS02D,EAAal9E,MAAOs6E,IACrEt6E,EAAM6zB,KAAK,gCAAiC7zB,EAAOk9E,EAAa5C,GAE5Dt6E,EAAMo9E,SAAWp9E,EAAMnB,OAAOo+E,YAChCj9E,EAAM09E,kBAAkBR,EAAa5C,EAEzC,CAzDI8C,EACFlc,EAAiBkc,EAAQ56E,QAAQ,iBAAiBC,GAAG,IAErDy+D,EAAiB7qC,EAAIonD,SAAS,iBAAiBh7E,GAAG,GACpB,IAA1By+D,EAAerrE,SACjBqrE,EAAiB7qC,EAAI7zB,QAAQ,SAASC,GAAG,GAAG2nC,KAAK,iBAAiB3nC,GAAG,KAIzE4zB,EAAI,GAAGgnD,YAAcr9E,EAErBzK,GAAOyK,EAAO,CACZm2B,MACAE,MACAh8B,GAAIg8B,GAAOA,EAAI,GACfwiD,MACAR,GAAIQ,GAAOA,EAAI,GACfuE,UACAN,OAAQM,GAAWA,EAAQ,GAC3Blc,iBACAhkB,cAAegkB,GAAkBA,EAAe,GAChDma,QAASx8E,EAAOw8E,QAChB9oD,OAAQ,EACRirD,SAAU,IAIZx9E,EAAMs1B,aAgCN,MAAM6S,EAAe,GACrB,IAAID,EACA1J,EACAm/C,EACAC,EACAC,EACAC,EAAgB,KACpB,SAASl0C,EAAiBnoC,GACxB,MAAMs8E,EAAYlF,EAAIliF,WACjBonF,EAAUloF,SACf8nF,EAAWI,EAAU,GAAG93E,wBAAwBO,IAChDo3E,EACEG,EAAUA,EAAUloF,OAAS,GAAGoQ,wBAAwBO,IAAMu3E,EAAU,GAAGr2E,aAE7EygC,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACxEqG,GAAY,EACZ1J,GAAU,EACVs/C,EAAgB,KAClB,CACA,SAAS9zC,EAAgBvoC,GACvB,IAAKymC,EAAW,QACX1J,GAAWx+B,EAAMnB,OAAO8tE,QAC3BkR,EAAWjjF,EAAE,0CACby7B,EAAIn0B,OAAO27E,IAEbr/C,GAAU,EACV,MAAMqD,EAAmB,cAAXpgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACpEpgC,EAAE+/B,iBAEF,IAAIkL,GAAc7K,EAAQ87C,IAAaC,EAAcD,GACrDjxC,EAAartC,KAAKgC,IAAIhC,KAAK+B,IAAIsrC,EAAY,GAAI,GAE/C,MAAM4tC,EAAYj7E,KAAKkO,OAAOvN,EAAMq7E,QAAQxlF,OAAS,GAAK62C,GACpDwwC,EAAcl9E,EAAMq7E,QAAQf,GAE5B0D,EAAWJ,EAAcD,EACzBM,GAAgBj+E,EAAMuyB,OAASyrD,GAAY,GAAK,EAAItxC,GAAcsxC,EAEpE1D,IAAcwD,IACZ99E,EAAMnB,OAAO8tE,OACfkR,EAAS9iF,KAAKmiF,GAAavzE,UAAW,eAAcs0E,QAGlDj+E,EAAMo9E,SAAWp9E,EAAMnB,OAAOo+E,YAChCj9E,EAAM09E,kBAAkBR,EAAa5C,IAIzCwD,EAAgBxD,EAEhBt6E,EAAMq2B,IAAIj6B,QAAQ,oBAClB4D,EAAM6zB,KAAK,gCAAiC7zB,EAAOk9E,EAAa5C,EAClE,CACA,SAASntC,IACFjF,IACLA,GAAY,EACZ1J,GAAU,EACNx+B,EAAMnB,OAAO8tE,QACXkR,GAAUA,EAASz6E,SACvBy6E,OAAWh8E,GAEf,CACA,MAAMyuB,IAAkBN,KAAaM,iBAAkB,CAAEyQ,SAAS,GAgClE,OA/BA/gC,EAAMquC,aAAe,WACnBhY,EAAI7zB,QAAQ,QAAQnG,GAAG,WAAY2oD,GACnC3uB,EAAI7zB,QAAQ,SAASnG,GAAG,cAAe2oD,GACvC3uB,EAAI7zB,QAAQ,UAAUnG,GAAG,aAAc2oD,GACvC3uB,EACG7zB,QAAQ,kFACRnG,GAAG,aAAc2oD,GACpB7uB,EAAI95B,GAAG,SAAU2oD,GAEjB3uB,EAAIh6B,GAAG,QAAS2oE,GAChB3uC,EAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GAChD6F,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,E,EAE7BntC,EAAMs1D,aAAe,WACnBj/B,EAAI7zB,QAAQ,QAAQd,IAAI,WAAYsjD,GACpC3uB,EAAI7zB,QAAQ,SAASd,IAAI,cAAesjD,GACxC3uB,EAAI7zB,QAAQ,UAAUd,IAAI,aAAcsjD,GACxC3uB,EACG7zB,QAAQ,kFACRd,IAAI,aAAcsjD,GACrB7uB,EAAIz0B,IAAI,SAAUsjD,GAElB3uB,EAAI30B,IAAI,QAASsjE,GACjB3uC,EAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACjD6F,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,E,EAG9BntC,EAAM43B,OAEC53B,CACT,CAEA09E,kBAAkBR,EAAa5C,GAC7B,MAAMt6E,EAAQzH,MACR6kF,QAAEA,EAAOlc,eAAEA,EAAc/qC,IAAEA,GAAQn2B,EACzC,IAAKo9E,IAAYlc,GAA4C,IAA1BA,EAAerrE,OAAc,OAAOmK,EAEvE,IAAIk+E,EAQJ,GAPAd,EAAQhzC,KAAK,qBAAqB1qC,MAAMrF,IACtC,GAAI6jF,EAAa,OACjB,MAAM7nD,EAAMz7B,EAAEP,GACVg8B,EAAI9sB,SAAW2zE,IACjBgB,EAAc7nD,EAChB,KAEG6nD,GAAsC,IAAvBA,EAAYroF,OAAc,OAAOmK,EAErD,MAAMm+E,EAAYD,EAAYj8E,SAASi7B,SAAS12B,IAChD,IAAIupE,EAAatnD,SAASy4C,EAAej9D,IAAI,eAAgB,IAC7D,MAAMmC,EAAY86D,EAAe,GAAG96D,UAC9Bg4E,EAAgBF,EAAYhhD,SAAS12B,IAC3C,GAAI06D,EAAe1+D,QAAQ,2BAA2B3M,OAAQ,CAC5D,MAAMwoF,EAAgBloD,EAAIqc,OAAOC,YAC/ByuB,EAAe1+D,QAAQ,2BAA2BC,GAAG,IAEjDw7D,EAAgBrjE,EAAEyjF,GAAej0C,KAAK,gBACxC6zB,EAAcpoE,SAChBk6E,GAAc9R,EAAc,GAAGv2D,cAAgB,EAEnD,CAOA,OALIy2E,GAAapO,EACf7O,EAAe96D,UAAU+3E,EAAY/3E,EAAY2pE,GAEjD7O,EAAe96D,UAAUg4E,EAAgBh4E,EAAY2pE,GAEhD/vE,CACT,CAEAm9E,wBAEE,OADc5kF,KACDsG,OAAOs+E,sBAAsBxiF,KAD5BpC,KAEhB,CAEAigF,WAAW0E,EAAa5C,GAEtB,OADc/hF,KACDsG,OAAO25E,WAAW79E,KADjBpC,KAC6B2kF,EAAa5C,EAC1D,CAEAt5E,SACE,MAAMhB,EAAQzH,MACRsgF,IAAEA,EAAGwC,QAAEA,EAAOmC,SAAEA,GAAax9E,EACnC,IAAIs+E,EAEJ,MAAMvjF,EAAOsgF,EACVh9E,KAAI,CAAC6+E,EAAa5C,KACjB,GAAIA,EAAYkD,GAAa,GAAKA,EAAW,EAE3C,OADAc,GAAa,EACN,GAET,IAAIC,EAAWv+E,EAAMw4E,WAAW0E,EAAa5C,GAK7C,OAJIgE,IACFC,EAAWv+E,EAAMm9E,wBAA0BoB,GAE7CD,GAAa,EACNC,CAAQ,IAEhBv2D,KAAK,IAIR,OAFA6wD,EAAI99E,KAAKA,GAEFiF,CACT,CAEAs9E,WACE,MAAMt9E,EAAQzH,MACR49B,IAAEA,EAAGt3B,OAAEA,EAAMxE,GAAEA,EAAEghF,QAAEA,GAAYr7E,EAC/BuyB,EAASl4B,EAAGqN,aACZyyE,EAAat7E,EAAQ,GAAEs3B,EAAIxM,mBAC3B60D,EAAWn/E,KAAKoX,MAAM8b,EAAS4nD,GAC/B1gF,EAAQ4hF,EAAQxlF,OACtB,IAAI2nF,EAAW,EAQf,OAPI/jF,EAAQ+kF,IACVhB,EAAWn+E,KAAKsX,MAAc,EAARld,EAAY,GAAK+kF,IAGzCx+E,EAAMuyB,OAASA,EACfvyB,EAAMw9E,SAAWA,EAEVx9E,CACT,CAEAy+E,cACE,MAAMz+E,EAAQzH,KAad,MAZ6B,SAAzByH,EAAMnB,OAAOw8E,SACfr7E,EAAMq7E,QAAU,GAEhBr7E,EAAMo9E,QAAQhzC,KAAK,qBAAqB1qC,MAAMrF,IAC5C,MAAMqkF,EAAY9jF,EAAEP,GAAIkP,OACpBvJ,EAAMq7E,QAAQpgF,QAAQyjF,GAAa,GACrC1+E,EAAMq7E,QAAQ9gF,KAAKmkF,EACrB,KAGF1+E,EAAMq7E,QAAUr7E,EAAMnB,OAAOw8E,QAExBr7E,CACT,CAEAiqD,SACE,MAAMjqD,EAAQzH,KAKd,OAJAyH,EAAMy+E,cACNz+E,EAAMs9E,WACNt9E,EAAMgB,SAEChB,CACT,CAEA43B,OACE,MAAM53B,EAAQzH,KACdyH,EAAMy+E,cACNz+E,EAAMs9E,WACNt9E,EAAMgB,SACNhB,EAAMquC,cACR,CAEA/X,UACE,IAAIt2B,EAAQzH,KACZyH,EAAMq2B,IAAIj6B,QAAQ,0BAA2B4D,GAC7CA,EAAM6zB,KAAK,+CACX7zB,EAAMs1D,eACFt1D,EAAMq2B,IAAI,KACZr2B,EAAMq2B,IAAI,GAAGgnD,YAAc,YACpBr9E,EAAMq2B,IAAI,GAAGgnD,aAEtB9yD,GAAYvqB,GACZA,EAAQ,IACV,GC/VF,IAAA2+E,GAAe,CACb5iF,KAAM,YACN65B,OAAQ,CACN+oD,cAEFtpD,SACc98B,KACRqmF,UAAY9oD,GAAmB,CACjCE,gBAAiB,cACjB3gC,YAAaspF,GACbxoD,IAJU59B,KAKV29B,QAAS,e,EAGb75B,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,oBACL1qC,MAAMm/E,IACL,MAAMhgF,EAAStJ,GAAOqF,EAAEikF,GAAaj8E,UAAW,CAAEvI,GAAIwkF,IACtD1oD,EAAIyoD,UAAUvpD,OAAOx2B,EAAO,G,EAGlCigF,gBAAgBtmC,GACd59C,EAAE49C,GACCpO,KAAK,oBACL1qC,MAAMm/E,IACDA,EAAYxB,aAAawB,EAAYxB,YAAY/mD,SAAS,G,EAGpEsqC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,oBAAoB1qC,MAAMm/E,IACtC,MAAMhgF,EAAStJ,GAAOqF,EAAEikF,GAAaj8E,UAAW,CAAEvI,GAAIwkF,IACtD1oD,EAAIyoD,UAAUvpD,OAAOx2B,EAAO,G,EAGhC4hE,iBAAiB/jB,GACfA,EAAKrmB,IAAI+T,KAAK,oBAAoB1qC,MAAMm/E,IAClCA,EAAYxB,aAAawB,EAAYxB,YAAY/mD,SAAS,GAElE,GAEFrB,MAAO,CACL,kBAAmB,CACjB+0B,OAAO/0B,GACL,MACM4pD,EAAc5pD,EAAM4zB,IACpBhqD,EAAStJ,GAAOqF,EAAEikF,GAAaj8E,UAAW,CAAEvI,GAAIwkF,IAF1CtmF,KAGRqmF,UAAUvpD,OAAOx2B,E,EAEvBy3B,QAAQrB,GACN,MAAM4pD,EAAc5pD,EAAM4zB,IACtBg2B,EAAYxB,aAAawB,EAAYxB,YAAY/mD,SACvD,KCzDN,MAAMyoD,GAAM,CACVp+B,OACE,MAAMxqB,EAAM59B,KAEZ,IAAIigD,EACAwmC,EACAj/E,EACAu5C,EACA2lC,EAAa,QAAAhhF,EAAAhC,UAAApG,OAPXqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GAQU,IAAhBjC,EAAKrG,QAAgBqG,EAAK,IAAMA,EAAK,GAAG7G,cAAgBC,QAC1DkjD,EAAQt8C,EAAK,GAAGs8C,MAChBwmC,EAAY9iF,EAAK,GAAG8iF,UACpBj/E,EAAU7D,EAAK,GAAG6D,QAClBu5C,EAAWp9C,EAAK,GAAGo9C,SACnB2lC,EAAe/iF,EAAK,GAAG+iF,gBAEtBzmC,EAAOwmC,EAAWj/E,EAASu5C,GAAYp9C,EACjB,kBAAZA,EAAK,MACbs8C,EAAOz4C,EAASi/E,EAAW1lC,GAAYp9C,EACpCA,EAAKrG,OAAS,GAAKmpF,EAAU3pF,cAAgBC,UAC9CkjD,EAAOz4C,EAASu5C,EAAU0lC,GAAa9iF,UAIvB,IAAZ6D,IAAyBA,GAAU,GAE9C,MAAM6gD,EAAYhmD,EAAE49C,GAKpB,GAJIc,GAAYsH,EAAU,KACxBA,EAAU,GAAGs+B,WAAa5lC,IAGvB2lC,IAAsC,IAArBr+B,EAAU/qD,QAAgB+qD,EAAU9lB,SAAS,eACjE,MAAO,CACL8lB,YACAu+B,SAAUv+B,EAAU,IAIxB,IAAIw+B,EACAJ,IAAWI,EAAaxkF,EAAEokF,IAE9B,MAAMK,EAAUz+B,EAAU3+C,OAAO,SACjC,GAAuB,IAAnBo9E,EAAQxpF,OACV,MAAO,CACL+qD,YACAu+B,SAAUv+B,EAAU,IAKpBzqB,EAAI2T,WAAU3T,EAAI2T,SAAS0pC,WAAY,GAG3C,MAAM8L,EAAuB,GAK7B,SAASC,IACPD,EAAqB3pF,SAASsD,IAC5BA,GAAU,GAEd,CAEA,IAgBIumF,EAhBA1+B,GAAW,EAEf,GAAIu+B,EAAQp9E,SAAS64B,SAAS,sBAAuB,CACnDukD,EAAQp9E,SAASlC,EAAU,cAAgB,YAAY,gBAEvD,MAAM6J,EAAqBnJ,WAAW4+E,EAAQp7E,IAAI,uBAAuBzD,QAAQ,IAAK,MAClFT,GAAW6J,IACby1E,EAAQvxC,cAAcyxC,GACtBz+B,GAAW,GAGb,MAAM2+B,EAAqE,KAApDtpD,EAAIuD,IAAMknB,EAAU5gD,SAAW4gD,EAAU5gD,SAChEq/E,EAAQ11E,UAAW,eAAc81E,UACnC,CAIA,GAA0C,qBAAtCJ,EAAQ,GAAGjpF,SAAS4M,eAAwCmzB,EAAIqpD,OAAQ,CAC1EA,EAASH,EAAQ,GAAGG,OACpB,MAAME,EAAcF,EAAOG,OAAO1kF,QAAQ2lD,EAAU,IAChD4+B,GAAUA,EAAO5d,cAAgB8d,GACnC5+B,GAAW,EACX0+B,EACG9rD,KAAK,4BAA4B,KAChC6rD,GAAa,IAEdK,QAAQF,EAAa3/E,OAAU8B,EAAY,IACrC29E,GAAUA,EAAOvgF,YAC1B6hD,GAAW,EACX0+B,EAAO9rD,KAAK,4BAA4B,KACtC6rD,GAAa,IAGnB,CAGA,MAAM1+B,EAAYw+B,EAAQ1oF,SAAS,eA2BnC,GA1BAkqD,EAAU9lB,YAAY,eACjBkkD,KAAkBO,GAAWA,IAAWA,EAAOvgF,WAAeugF,GAAUlmC,KACvEuH,EAAU/lB,SAAS,SAAW+lB,EAAUlqD,SAAS,SAASd,QAC5DgrD,EAAUlqD,SAAS,SAAS+I,MAAMkyC,IAChCh3C,EAAEg3C,GAAQx1C,QAAQ,gBAClB+5B,EAAItC,KAAK,cAAe+d,EAAO,IAGnCiP,EAAUzkD,QAAQ,YAClB+5B,EAAItC,KAAK,UAAWgtB,EAAU,KAIhCD,EAAU/lB,SAAS,eACdokD,KAAkBO,GAAWA,IAAWA,EAAOvgF,WAAeugF,GAAUlmC,KACvEsH,EAAU9lB,SAAS,SAAW8lB,EAAUjqD,SAAS,SAASd,QAC5D+qD,EAAUjqD,SAAS,SAAS+I,MAAMkyC,IAChCh3C,EAAEg3C,GAAQx1C,QAAQ,gBAClB+5B,EAAItC,KAAK,cAAe+d,EAAO,IAGnCgP,EAAUxkD,QAAQ,YAClB+5B,EAAItC,KAAK,UAAW+sB,EAAU,MAI3Bw+B,IAE4BA,EAAaxkF,EAAvB,iBAAV49C,EAAoC,mBAAkBA,MAC5C,oBAAmBoI,EAAU99C,KAAK,aAElDs8E,GAAeA,GAAoC,IAAtBA,EAAWvpF,SAC3C+E,EAAE,cAAc8E,MAAMrF,IAChBumD,EAAUt+C,GAAG1H,EAAEP,GAAIyI,KAAK,eAAcs8E,EAAaxkF,EAAEP,GAAG,IAG5Di/C,KAAc8lC,GAAeA,GAAoC,IAAtBA,EAAWvpF,UACxDupF,EAAaxkF,EAAG,uBAAsB0+C,EAAS9T,MAAM8N,IAAIn6C,QAC/B,IAAtBimF,EAAWvpF,SACbupF,EAAaxkF,EAAG,mBAAkB0+C,EAASxuB,WAG3Cs0D,EAAWvpF,OAAS,GAAK+qD,EAAUp+C,QAAQ,SAAS3M,SAEtDupF,EAAaA,EAAW1kF,QAAQmlF,GACvBjlF,EAAEilF,GAAgBr9E,QAAQ,SAAS,KAAOo+C,EAAUp+C,QAAQ,SAAS,KAE5D,QAAd2zB,EAAIxM,OAAyC,IAAtBy1D,EAAWvpF,QAAgByjD,IAAU,CAC9D,MAAMgD,EAAUsE,EAAUp+C,QAAQ,SAC5BivC,EAAY72C,EAAEu7B,EAAIqc,OAAOC,YAAY6J,IAC3C8iC,EAAa3tC,EAAUrH,KAAM,uBAAsBkP,EAAS9T,MAAM8N,IAAIn6C,QAC5C,IAAtBimF,EAAWvpF,SACbupF,EAAa3tC,EAAUrH,KAAM,mBAAkBkP,EAASxuB,SAE5D,CAGJ,GAAIs0D,EAAWvpF,OAAS,EAAG,CAEzB,IAAIiqF,EACJ,GAAIj/B,GAAaA,EAAUhrD,OAAS,EAAG,CAErC,MAAMkqF,EAAWl/B,EAAU/9C,KAAK,MAC5Bi9E,IACFD,EAAgBllF,EAAG,oBAAmBmlF,SAEjCD,GAAkBA,GAA0C,IAAzBA,EAAcjqF,UACpDiqF,EAAgBllF,EAAG,gCAA+BmlF,WAIjDD,GAAkBA,GAA0C,IAAzBA,EAAcjqF,SACpD+E,EAAE,cAAc8E,MAAMmgF,IAChBh/B,EAAUv+C,GAAG1H,EAAEilF,GAAgB/8E,KAAK,eAAcg9E,EAAgBllF,EAAEilF,GAAe,MAGtFC,GAAkBA,GAA0C,IAAzBA,EAAcjqF,UACpDiqF,EAAgBV,EAAW3B,SAAS,oB,MAE7BnkC,IACTwmC,EAAgBV,EAAW3B,SAAS,qBAkBtC,GAdEqC,GACAA,EAAcjqF,OAAS,GACvBgrD,GACAA,EAAUr+C,QAAQ,SAAS3M,SAG3BiqF,EAAgBA,EAAcplF,QAAQmlF,GAC7BjlF,EAAEilF,GAAgBr9E,QAAQ,SAAS,KAAOq+C,EAAUr+C,QAAQ,SAAS,MAI5Es9E,GAAiBA,EAAcjqF,OAAS,GAAGiqF,EAAc/kD,YAAY,mBAGrEqkD,GAAcA,EAAWvpF,OAAS,EAAG,CACvCupF,EAAWvkD,SAAS,mBAEpB,MAAMymC,EAAY8d,EAAW58E,QAAQ,0BAEnC2zB,EAAI0rC,SACJP,EAAUzrE,OAAS,IAClByrE,EAAUxmC,SAAS,qBAAqC,QAAd3E,EAAIxM,QAE/CwM,EAAI0rC,QAAQT,aAAaE,EAE7B,CACF,CACA,MAAO,CACL1gB,YACAu+B,SAAUv+B,EAAU,GACpBC,YACAm/B,SAAUn/B,EAAU,GACpBE,cAlKF,SAAuB9nD,GACrBqmF,EAAqB/kF,KAAKtB,EAC5B,EAiKE6nD,WAEJ,GAEF,IAAAm/B,GAAe,CACblkF,KAAM,OACNs5B,SAEE9/B,GADYgD,KACA,CACV+6C,IAAK,CACHqN,KAAMo+B,GAAIp+B,KAAK1xB,KAHP12B,Q,EAOd8D,GAAI,CACF,sBAAuB,SAAgB6jF,GACrC,MACMC,EADMvlF,EAAEslF,EAAY7lF,IAAM6lF,GACN91C,KAAK,6CAA6C,GAC5E,IAAK+1C,EAAe,OACR5nF,KACR+6C,IAAIqN,KAAK,CAAEnI,MAAO2nC,EAAelB,cAAc,EAAMl/E,SAAS,GACpE,GAEFgmD,OAAQ,CACN,YAAa,SAAsBE,EAAY97C,GAC7C,QADiD,IAAJA,MAAO,IAEjD87C,EAAWnjD,KAAK,SAAoD,IAAzCmjD,EAAWnjD,KAAK,QAAQ7H,QAAQ,MAC5DgrD,EAAWnjD,KAAK,YAChB,CACYvK,KACR+6C,IAAIqN,KAAK,CACXnI,MAAOruC,EAAKmpC,KAAO2S,EAAWnjD,KAAK,QACnCk8E,UAAW/4B,EACXlmD,QAASoK,EAAKpK,SAElB,CACF,IC7PJ,SAASqgF,GAAep8B,GACtB,MAAM7tB,EAAM6tB,EAAM7tB,IACZrG,EAAUE,KAChB,GAAIg0B,EAAMK,qBAAsB,OAChC9uD,GAAOyuD,EAAO,CACZM,WAAW,EACXC,eAAgB,KAChBF,sBAAsB,IAExB,MAAMG,EAAU5pD,EAAE,SACZy7B,IAAEA,EAAGytC,YAAEA,EAAWpc,KAAEA,EAAIC,OAAEA,GAAW3D,EAC3C,IAAK3tB,EAAK,OAEV,IAAI6R,EACA1J,EACJ,MAAM2J,EAAe,GACrB,IAAIE,EACAg4C,EAEAnvC,EAEAovC,EACAC,EACAC,EAEJ,MAAMC,EAA4B,UAAX94B,GAAiC,aAAXA,EAE7C,SAAS/C,EAAkB96B,GACzB,IAAKA,EAAG,OAAO,KACf,GAAIA,EAAE7uB,QAAQ,MAAQ,GAAK6uB,EAAE7uB,QAAQ,OAAS,EAC5C,OAAQwtB,SAASqB,EAAG,IAAM,IAAOqM,EAAItF,MAEvC,MAAMg0B,EAAOp8B,SAASqB,EAAG,IACzB,OAAI6D,OAAOC,MAAMi3B,GAAc,KACxBA,CACT,CAMA,SAASjb,EAAiBnoC,GAHjBuiD,EAAMM,WAAajuB,EAAIyE,SAAS,qBAKvCqN,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACxErD,GAAU,EACV0J,GAAY,EACZo4C,EAAgB17B,EAAkBvuB,EAAIpyB,IAAI,cAC1Cs8E,EAAgB37B,EAAkBvuB,EAAIpyB,IAAI,cAC1Cu8E,EAAsBnqD,EAAIyE,SAAS,uBACrC,CACA,SAASkP,EAAgBvoC,GACvB,IAAKymC,EAAW,OAChB,MAAMtG,EAAmB,cAAXngC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAE/DpD,IACH6hD,EAAahqD,EAAI,GAAG1uB,YACpB0uB,EAAIkT,WAAW,GACflT,EAAIwE,SAAS,kBACb2pB,EAAQvgD,IAAI,SAAU,eAClBw8E,GAAkBD,KACpBtvC,EAAUt2C,EAAEopD,EAAM08B,aACd18B,EAAMqf,cAAgBrf,EAAMqf,aAAavoC,SAAS,SACpDoW,EAAQ1yC,IAAIwlD,EAAMqf,aAAa1sE,SAAS,gCAGxC8pF,IAAmBD,IACrB1c,EAAYv6B,WAAW,GACvB2H,EAAQ3H,WAAW,KAIvB/K,GAAU,EAEV/8B,EAAE+/B,iBAEF6G,EAAczG,EAAQuG,EAAav3B,EAEnC,IAAI+vE,EAAyB,SAATj5B,EAAkB24B,EAAah4C,EAAcg4C,EAAah4C,EAC1Ei4C,IAAkB3yD,OAAOC,MAAM0yD,KACjCK,EAAgBthF,KAAK+B,IAAIu/E,EAAeL,IAEtCC,IAAkB5yD,OAAOC,MAAM2yD,KACjCI,EAAgBthF,KAAKgC,IAAIs/E,EAAeJ,IAE1CI,EAAgBthF,KAAKgC,IAAIhC,KAAK+B,IAAIu/E,EAAe,GAAIxqD,EAAItF,OAEzDmzB,EAAMO,eAAiBo8B,EACvBtqD,EAAI,GAAGx/B,MAAMg6B,MAAS,GAAE8vD,MACpBF,IAAmBD,GACjBtvC,GACFA,EAAQvnC,UACL,eAAuB,SAAT+9C,EAAkBi5B,GAAiBA,cAGlD7c,GACFA,EAAYn6D,UACT,eAAuB,SAAT+9C,EAAkBi5B,GAAiBA,eAG7CH,GAAuBtvC,GAChCA,EAAQjtC,IAAK,UAASyjD,IAAS,GAAEi5B,OAGnCtqD,EAAIj6B,QAAQ,eAAgBukF,GAC5B38B,EAAMnwB,KAAK,4BAA6BmwB,EAAO28B,EACjD,CACA,SAASxzC,IAEP,GADAvyC,EAAE,QAAQqJ,IAAI,SAAU,KACnBikC,IAAc1J,EAGjB,OAFA0J,GAAY,OACZ1J,GAAU,GAGZ0J,GAAY,EACZ1J,GAAU,EAEVgmB,EAAQ,GAAG3tD,MAAMuhD,YAAa,cAAasP,UAAe,GAAE1D,EAAMO,oBAClEluB,EAAI,GAAGx/B,MAAMg6B,MAAQ,GACjB4vD,IAAmBD,IACrBtvC,EAAQvnC,UAAU,IAClBm6D,EAAYn6D,UAAU,KAExB0sB,EAAI0E,YAAY,kBAChBpQ,IAAU,KACR0L,EAAIkT,WAAW,IACXk3C,IACF3c,EAAYv6B,WAAW,IACnB2H,GAASA,EAAQ3H,WAAW,IAClC,GAEJ,CAEA,SAASyb,IACFhB,EAAMof,QAAWpf,EAAMO,iBAC5B+7B,EAAgB17B,EAAkBvuB,EAAIpyB,IAAI,cAC1Cs8E,EAAgB37B,EAAkBvuB,EAAIpyB,IAAI,cAEtCq8E,IAAkB3yD,OAAOC,MAAM0yD,IAAkBt8B,EAAMO,eAAiB+7B,IAC1Et8B,EAAMO,eAAiBllD,KAAK+B,IAAI4iD,EAAMO,eAAgB+7B,IAEpDC,IAAkB5yD,OAAOC,MAAM2yD,IAAkBv8B,EAAMO,eAAiBg8B,IAC1Ev8B,EAAMO,eAAiBllD,KAAKgC,IAAI2iD,EAAMO,eAAgBg8B,IAExDv8B,EAAMO,eAAiBllD,KAAKgC,IAAIhC,KAAK+B,IAAI4iD,EAAMO,eAAgB,GAAIpuB,EAAItF,OAEvE2zB,EAAQ,GAAG3tD,MAAMuhD,YAAa,cAAasP,UAAe,GAAE1D,EAAMO,oBACpE,CAEuD,IAAnDP,EAAM3tB,IAAI+T,KAAK,yBAAyBv0C,QAC1CmuD,EAAM3tB,IAAIn0B,OAAO,4CAEnB8hD,EAAMS,iBAAmBT,EAAM3tB,IAAI1/B,SAAS,yBAE5C0/B,EAAIwE,SAAS,mBAGb,MAAMkG,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GAErDijB,EAAM3tB,IAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO,wBAAyB0+B,EAAkB7I,GAC/E5K,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BhX,EAAI95B,GAAG,SAAU2oD,GACjBhB,EAAM3nD,GAAG,aAAc2oD,GAEvBhB,EAAMtwB,KAAK,gBAAgB,KACzB2C,EAAI0E,YAAY,mBAChBipB,EAAMS,iBAAiBrhD,SACvB4gD,EAAM3tB,IAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO,wBAAyB0+B,EAAkB7I,GAChF5K,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,GAC5BhX,EAAIz0B,IAAI,SAAUsjD,GAClBhB,EAAMtiD,IAAI,aAAcsjD,EAAa,GAEzC,C,OC3KA,cAAoB7wB,GAClB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxB,MAAMimE,EAAiBvvE,GAAO,CAAE8G,GAAI,IAAM85B,EAAIt3B,OAAOmlD,MAAOnlD,GAC5DnF,MAAMorE,EAAgB,CAAC3uC,IAEvB,MAAM6tB,EAAQzrD,KAUd,IAAI89B,EASJ,GAjBA2tB,EAAMnlD,OAASimE,EACf9gB,EAAMqf,aAAerf,EAAMnlD,OAAOykE,YAAc1oE,EAAEopD,EAAMnlD,OAAOykE,aAAa7gE,GAAG,GAAK0zB,EAAIE,IACxF2tB,EAAMsf,YAActf,EAAMqf,aAAa,GAClCrf,EAAMsf,cACTtf,EAAMqf,aAAeltC,EAAIE,IACzB2tB,EAAMsf,YAAcntC,EAAIE,IAAI,IAI1B2tB,EAAMnlD,OAAOxE,GACfg8B,EAAMz7B,EAAEopD,EAAMnlD,OAAOxE,IAAIoI,GAAG,GACnBuhD,EAAMnlD,OAAO2nB,UACtB6P,EAAMz7B,EAAEopD,EAAMnlD,OAAO2nB,SAClB9rB,QAAQiyD,GAA2B,IAAlBA,EAAKnxD,WACtBiH,GAAG,IAGW,IAAf4zB,EAAIxgC,OAAc,OAAOmuD,EAC7B,GAAI3tB,EAAI,GAAGuqD,QAAS,OAAOvqD,EAAI,GAAGuqD,QAElCvqD,EAAI,GAAGuqD,QAAU58B,EAEjB,IAaI8f,GAbApc,KAAEA,EAAIC,OAAEA,EAAMrD,UAAEA,GAAcN,EAAMnlD,OA0CxC,YAzCoB,IAAT6oD,IAAsBA,EAAOrxB,EAAIyE,SAAS,cAAgB,OAAS,cACxD,IAAX6sB,IAETA,EAAStxB,EAAIyE,SAAS,eAClB,QACAzE,EAAIyE,SAAS,cACb,OACAzE,EAAIyE,SAAS,kBACb,WACA,eACmB,IAAdwpB,IAA2BA,EAAYjuB,EAAIyE,SAAS,oBAG3DkpB,EAAMnlD,OAAO8kE,UAAY3f,EAAMnlD,OAAO4lE,WACxCX,EAAclpE,EAAEopD,EAAMnlD,OAAO4lE,YACpBzgB,EAAMnlD,OAAO8kE,WACtBG,EAAc9f,EAAMqf,aAAa1sE,SAAS,mBACf,IAAvBmtE,EAAYjuE,SACdiuE,EAAclpE,EAAE,sCAChBopD,EAAMqf,aAAaz7D,QAAQk8D,KAI/BvuE,GAAOyuD,EAAO,CACZ7tB,MACAuxB,OACAC,SACArD,YACAjuB,MACAh8B,GAAIg8B,EAAI,GACR+sC,QAAQ,EACRU,cACAW,WAAYX,GAAeA,EAAY,KAIzC9f,EAAM1uB,aAGN0uB,EAAMpsB,OAECosB,CACT,CAEA08B,YACE,MAAM18B,EAAQzrD,KACd,IAAIotD,EAMJ,OAJEA,EADE3B,EAAMqf,aAAa1sE,SAAS,UAAUd,OAAS,EACxCmuD,EAAMqf,aAAa1sE,SAAS,UAAU,GAEtCqtD,EAAMqf,aAAa1sE,SAAS,SAAS,GAEzCgvD,CACT,CAEAk7B,gBAAgBz5C,GACd,MAAM4c,EAAQzrD,MACRmvD,KAAEA,EAAIrtD,GAAEA,EAAEstD,OAAEA,GAAW3D,EAEvB2B,EAAS3B,EAAM08B,YACfI,EAAcn7B,GAAUA,EAAO5hD,SAAS1J,GACxC28B,GAAa2uB,GAAUm7B,EAAc98B,EAAMqf,aAAezoE,EAAE,QACpD,SAAVwsC,GACFpQ,EAAU6D,SAAU,yBAAwBmpB,EAAM0D,QAAQ1D,EAAM2D,UAEpD,mBAAVvgB,GACFpQ,EAAU6D,SAAS,sBAEP,YAAVuM,IACFpQ,EAAU6D,SAAS,sBACnB7D,EAAU+D,YAAa,yBAAwBipB,EAAM0D,QAAQ1D,EAAM2D,WAEvD,kBAAVvgB,GACFpQ,EAAU+D,YAAY,sBAEV,WAAVqM,GACFpQ,EAAU+D,YAAa,cAAa2sB,KAAQC,IAEhD,CAEAo5B,0BACE,MAAM/8B,EAAQzrD,KAGd,OAFAyrD,EAAMg9B,2BAA4B,EAClCh9B,EAAMi9B,uBACCj9B,CACT,CAEAk9B,2BACE,MAAMl9B,EAAQzrD,KAGd,OAFAyrD,EAAMg9B,2BAA4B,EAClCh9B,EAAMi9B,uBACCj9B,CACT,CAEAm9B,0BACE,MAAMn9B,EAAQzrD,KAGd,OAFAyrD,EAAMg9B,2BAA6Bh9B,EAAMg9B,0BACzCh9B,EAAMi9B,uBACCj9B,CACT,CAEAi9B,qBAAqBG,QAAU,IAAVA,OAAa,GAChC,MAAMp9B,EAAQzrD,KACR49B,EAAM6tB,EAAM7tB,IACb6tB,EAAMq9B,iCACTr9B,EAAMq9B,+BAAiC,WACrCr9B,EAAMi9B,sB,EAER9qD,EAAI95B,GAAG,SAAU2nD,EAAMq9B,iCAEzB,MAAM35B,KAAEA,EAAIrxB,IAAEA,EAAGgtC,aAAEA,EAAYxkE,OAAEA,EAAMmiF,0BAAEA,GAA8Bh9B,EACjEgrB,EAAanwE,EAAOyiF,kBACpBpwC,EAAUt2C,EAAEopD,EAAM08B,aAClBa,EAAalrD,EAAIyE,SAAS,uBAC5BuoC,GAAgBA,EAAavoC,SAAS,SACxCoW,EAAQ1yC,IAAI6kE,EAAa1sE,SAAS,+BAIlCw/B,EAAItF,OAASm+C,GAAb74C,MACO64C,IAENgS,EAEIO,EAcHrwC,EAAQjtC,IAAI,CACV,CAAE,UAASyjD,KAAU,GAAErxB,EAAIxF,eAd7BmzB,EAAM68B,gBAAgB,UACtBxqD,EAAIwE,SAAS,uBAAuBE,YAAY,+BAChDipB,EAAMuf,QAAO,GACbvf,EAAMwf,WACNtyB,EAAQjtC,IAAI,CACV,CAAE,UAASyjD,KAAU,GAAErxB,EAAIxF,cAE7BsF,EAAIqrD,gBAAiB,EACjBJ,IACFp9B,EAAMnwB,KAAK,oCAAqCmwB,GAChDA,EAAM3tB,IAAIj6B,QAAQ,sBAObmlF,IACTlrD,EAAI0E,YAAY,gCAChBipB,EAAMyf,UACNzf,EAAM0f,WACNxyB,EAAQjtC,IAAI,CACV,CAAE,UAASyjD,KAAS,KAElB05B,IACFp9B,EAAMnwB,KAAK,oCAAqCmwB,GAChDA,EAAM3tB,IAAIj6B,QAAQ,qBAGxB,CAEAqlF,4BACE,MAAMz9B,EAAQzrD,KAGd,OAFAyrD,EAAM09B,6BAA8B,EACpC19B,EAAM29B,yBACC39B,CACT,CAEA49B,6BACE,MAAM59B,EAAQzrD,KAGd,OAFAyrD,EAAM09B,6BAA8B,EACpC19B,EAAM29B,yBACC39B,CACT,CAEA69B,4BACE,MAAM79B,EAAQzrD,KAGd,OAFAyrD,EAAM09B,6BAA+B19B,EAAM09B,4BAC3C19B,EAAM29B,yBACC39B,CACT,CAEA29B,uBAAuBP,QAAU,IAAVA,OAAa,GAClC,MAAMp9B,EAAQzrD,KACR49B,EAAM6tB,EAAM7tB,IACb6tB,EAAM89B,mCACT99B,EAAM89B,iCAAmC,WACvC99B,EAAM29B,wB,EAERxrD,EAAI95B,GAAG,SAAU2nD,EAAM89B,mCAEzB,MAAMzrD,IAAEA,EAAGx3B,OAAEA,EAAM6iF,4BAAEA,GAAgC19B,EACrD,GAAI3tB,EAAIyE,SAAS,uBAAwB,OACzC,MAAMk0C,EAAanwE,EAAOkjF,oBACpBR,EAAalrD,EAAIyE,SAAS,sBAG9B3E,EAAItF,OAASm+C,GAAb74C,MACO64C,IAEN0S,EAEIH,IACHv9B,EAAM68B,gBAAgB,UACtBxqD,EAAIwE,SAAS,sBAAsBE,YAAY,YAC/CipB,EAAMg+B,WAAY,EAClB7rD,EAAIqrD,gBAAiB,EACjBJ,IACFp9B,EAAMnwB,KAAK,sDAAuDmwB,GAClEA,EAAM3tB,IAAIj6B,QAAQ,+BAGbmlF,IACTlrD,EAAI0E,YAAY,+BAChBipB,EAAMg+B,WAAY,EACdZ,IACFp9B,EAAMnwB,KAAK,sDAAuDmwB,GAClEA,EAAM3tB,IAAIj6B,QAAQ,8BAGxB,CAEA6lF,kBACE,MAAMj+B,EAAQzrD,KAOd,OANIyrD,EAAMK,sBACRL,EAAMM,WAAY,EAClBN,EAAM3tB,IAAIwE,SAAS,oBAEnBulD,GAAep8B,GAEVA,CACT,CAEAk+B,mBACE,MAAMl+B,EAAQzrD,KAGd,OAFAyrD,EAAMM,WAAY,EAClBN,EAAM3tB,IAAI0E,YAAY,mBACfipB,CACT,CAEAm+B,cACE,MAAMn+B,EAAQzrD,KAMd,OALIyrD,EAAMo+B,iBACRp+B,EAAMq+B,WAAY,EChRxB,SAAoBr+B,GAClB,MAAM7tB,EAAM6tB,EAAM7tB,IAClB,GAAI6tB,EAAMo+B,iBACR,OAEF7sF,GAAOyuD,EAAO,CACZq+B,WAAW,EACXD,kBAAkB,IAEpB,MAAMvjF,EAASmlD,EAAMnlD,QACfw3B,IAAEA,EAAGytC,YAAEA,EAAWpc,KAAEA,EAAIC,OAAEA,GAAW3D,EAC3C,IAAIs+B,EAEAp6C,EACAq6C,EACA/jD,EACAS,EACAujD,EACJ,MAAMr6C,EAAe,GACrB,IAAIG,EACAD,EACAurC,EACA6O,EACApC,EACA9xC,EAEA2C,EAEAwxC,EAAa,EACjB,SAAS94C,EAAiBnoC,GACxB,IAAKuiD,EAAMq+B,WAAaE,EAAkB,OAC1C,IAAKpsD,EAAI6tB,MAAMwvB,YAAe30E,EAAO8jF,QAAU9jF,EAAO+jF,gBAAmB16C,EAAW,OACpF,GAAIttC,EAAE,+DAA+D/E,OAAS,EAAG,OACjFysF,EAAansD,EAAI6tB,MAAMlqD,IAAa,SAAT4tD,EAAkB,QAAU,SAAW,GAClE,MAAMm7B,EACJP,EAAWlf,QAAUkf,EAAWjsD,MAAQisD,EAAWjsD,IAAIyE,SAAS,uBAClE,IAAKkpB,EAAMof,SAAUyf,KAGhBhkF,EAAO+jF,iBACNC,MAEFphF,EAAEjM,QAA8C,UAApCiM,EAAEjM,OAAOY,SAAS4M,eAA+C,UAAlBvB,EAAEjM,OAAOusC,SAGtEnnC,EAAE6G,EAAEjM,QAAQ+M,QACV,yFACA1M,OAAS,KAGbsyC,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,OACpEhjC,EAAO+jF,gBAAmB5+B,EAAMof,QAApC,CAGA,GAAIvkE,EAAOikF,kBAAoB9+B,EAAMof,OAAQ,CAC3C,GAAa,SAAT1b,GACEvf,EAAav3B,EAAI/R,EAAOikF,gBAAiB,OAE/C,GAAa,UAATp7B,GACEvf,EAAav3B,EAAIulB,EAAItF,MAAQhyB,EAAOikF,gBAAiB,MAE7D,CACAJ,EAAa,EACbxxC,EAAUt2C,EAAEopD,EAAM08B,aAClBliD,GAAU,EACV0J,GAAY,EACZjJ,OAAcp9B,EACd2gF,GAAgB,EAEhBl6C,EAAiB1d,KACjB2jB,OAAY1sC,CAjBZ,CAkBF,CACA,SAASmoC,EAAgBvoC,GACvB,IAAKymC,GAAaq6C,GAAoBC,EAAe,OAErD,GADAE,GAAc,EACVA,EAAa,EAAG,OACpB,GAAIjhF,EAAE+qC,qBAAuBrW,EAAIsW,8BAAgCtW,EAAI4sD,kBAEnE,YADA76C,GAAY,GAGd,MAAMtG,EAAmB,cAAXngC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC9DC,EAAmB,cAAXpgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MAMpE,QAL2B,IAAhB5C,IACTA,KACEA,GAAe5/B,KAAK+R,IAAIywB,EAAQsG,EAAah7B,GAAK9N,KAAK+R,IAAIwwB,EAAQuG,EAAav3B,KAGhFquB,EAEF,YADAiJ,GAAY,GAGd,IAAKqG,EAAW,CAOd,GALEA,EADE3M,EAAQuG,EAAav3B,EACX,WAEA,UAGV/R,EAAOikF,gBAAkB,IAAM9+B,EAAMof,OAAQ,CAC/C,GAAa,SAAT1b,GAAmBvf,EAAav3B,EAAI/R,EAAOikF,gBAE7C,YADA56C,GAAY,GAGd,GAAa,UAATwf,GAAoBvf,EAAav3B,EAAIulB,EAAItF,MAAQhyB,EAAOikF,gBAE1D,YADA56C,GAAY,EAGhB,CACA,GAAI7R,EAAIyE,SAAS,uBAEf,YADAoN,GAAY,GAId,GACY,SAATwf,GAAiC,YAAdnZ,IAA4BlY,EAAIyE,SAAS,aACnD,UAAT4sB,GAAkC,aAAdnZ,IAA6BlY,EAAIyE,SAAS,YAG/D,YADAoN,GAAY,EAGhB,CAEA,IAAI86C,EAAYh/B,EAAMof,OAAS,GAAKvkE,EAAOokF,eAC9B,UAATv7B,IAAkBs7B,GAAaA,GAE9BxkD,IACEwlB,EAAMof,SACTpf,EAAMk/B,eACN7sD,EAAIwE,SAAS,kBACTipC,GAAaA,EAAY7/D,IAAI,aAAc,WAC/CoyB,EAAIj6B,QAAQ,mBACZ4nD,EAAMnwB,KAAK,kCAAmCmwB,IAEhDq8B,EAAahqD,EAAI,GAAG1uB,YACL,WAAXggD,GAAuBtxB,EAAIyE,SAAS,wBACtCulD,GAAc5/E,WAAWywC,EAAQjtC,IAAK,UAASyjD,OAEjDrxB,EAAIkT,WAAW,IAGjB/K,GAAU,EACN/8B,EAAEyI,YACJzI,EAAE+/B,iBAGJ6G,EAAczG,EAAQuG,EAAav3B,EAAIoyE,EAEvC,MAAM3V,EAA4B,aAAX1lB,EAAwB,EAAI,EACtC,UAATD,EACa,UAAXC,GAAiC,SAAXA,GAAgC,aAAXA,GAC7CisB,EAAYvrC,GAAe2b,EAAMof,OAASiK,EAAiBgT,GACvDzM,EAAY,EAAIvG,IAAgBuG,GAAavG,GAC7CuG,EAAYyM,IACdzM,EAAYyM,KAGdzM,EAAYvrC,GAAe2b,EAAMof,OAASid,EAAa,GACnDzM,EAAY,IAAGA,EAAY,GAC3BA,GAAayM,IACfzM,GAAayM,KAIjBzM,EAAYvrC,GAAe2b,EAAMof,OAASid,EAAahT,GACnDuG,EAAY,IAAGA,EAAY,GAC3BA,EAAYyM,EAAahT,IAC3BuG,EAAYyM,EAAahT,IAG7B,MAAM8V,EAAmB9jF,KAAK+R,IAAIwiE,EAAYyM,GAC9C,GAAe,WAAX14B,EACG9oD,EAAOukF,gBACVlyC,EAAQvnC,UAAW,eAAciqE,YAAoBrqC,WAAW,GAC5Du6B,GAAaA,EAAYn6D,UAAW,eAAciqE,YAAoBrqC,WAAW,IAGvFlT,EAAIj6B,QAAQ,cAAeiD,KAAK+R,IAAIwiE,EAAYyM,IAChDr8B,EAAMnwB,KAAK,0BAA2BmwB,EAAO3kD,KAAK+R,IAAIwiE,EAAYyM,QAC7D,CAEL,GADa,SAAT34B,IAAiBksB,GAAayM,IAC7BxhF,EAAOukF,gBACVX,EAAkB,EAAIpjF,KAAK+R,IAAIwiE,EAAYyM,GACvCvc,IACFA,EAAYv6B,WAAW,GACvBu6B,EAAY7/D,IAAI,CAAE8nC,QAAS02C,KAG7BpsD,EAAI1sB,UAAW,eAAciqE,YAAoBrqC,WAAW,GAC7C,SAAXoe,GAAmB,CACrB,MAAM07B,EAAyB,SAAT37B,EAAkBksB,EAAYyM,EAAazM,EAAYyM,EAC7EnvC,EAAQvnC,UAAW,eAAc05E,YAAwB95C,WAAW,GAChEu6B,GACFA,EAAYn6D,UAAW,eAAc05E,YAAwB95C,WAAW,EAE5E,CAGFlT,EAAIj6B,QAAQ,cAAeiD,KAAK+R,IAAIwiE,EAAYyM,IAChDr8B,EAAMnwB,KAAK,0BAA2BmwB,EAAO3kD,KAAK+R,IAAIwiE,EAAYyM,GACpE,CAEIxhF,EAAOukF,gBAENp/B,EAAMof,QAA+B,IAArB+f,IAA6Bn/B,EAAMof,QAA+B,IAArB+f,KAE9DX,GAAgB,EAEhBr1C,EAAe1rC,GAGrB,CACA,SAAS0rC,EAAe1rC,GACtB,IAAKymC,IAAc1J,EAGjB,OAFA0J,GAAY,OACZ1J,GAAU,GAGZ,MAAM8kD,EAAuB,iBAAX7hF,EAAEsgC,MAA2BwgD,EAC/Cr6C,GAAY,EACZ1J,GAAU,EACV,MAAM6O,GAAW,IAAI10C,MAAOuI,UAAYonC,EACxC,IAAIxB,EACJ,MAAMumC,EAA4B,aAAX1lB,EAAkC,SAATD,EAAkB,GAAK,EAAK,EACtE/1B,GACHiiD,IAAcvG,GAAkBhuE,KAAK+R,IAAIwiE,KAAeyM,KAAgBxhF,EAAOukF,cAC5EJ,EAAYnkF,EAAOokF,gBAAkB,EAEzCn8C,EADEw8C,EACO,QACCt/B,EAAMof,OAuBI,UAAXzb,GAAiC,SAAXA,GAAgC,aAAXA,EAClC,IAAdisB,EACO,QACAvmC,EAAW,KAAOhuC,KAAK+R,IAAIwiE,GAAa,EACxC,OACAvmC,GAAY,KAAOhuC,KAAK+R,IAAIwiE,GAAayM,EAAa,EACtD,QAEA,OAEFzM,KAAeyM,EACf,QAERhzC,EAAW,KAAOhuC,KAAK+R,IAAIwiE,IAAc,GACzCvmC,GAAY,KAAOhuC,KAAK+R,IAAIwiE,IAAcyM,EAAa,EAE3C,SAAT34B,GAAmBksB,IAAcyM,EAAqB,QAC5C,OAEL,QAzCLhhF,KAAK+R,IAAIi3B,GAAe26C,EACjB,QACW,UAAXr7B,GAAiC,SAAXA,GAAgC,aAAXA,EAChDisB,IAAc,EAAIvG,GAEXhgC,EAAW,KAAOhuC,KAAK+R,IAAIwiE,GAAa,GAExCvmC,GAAY,KAAOhuC,KAAK+R,IAAIwiE,GAAayM,EAAa,EAHtD,OAMA,QAEY,IAAdzM,EACA,QAERvmC,EAAW,KAAOhuC,KAAK+R,IAAIwiE,GAAa,GACxCvmC,GAAY,KAAOhuC,KAAK+R,IAAIwiE,IAAcyM,EAAa,EAE/C,OAEA,QAuBE,SAAXv5C,IACEkd,EAAMof,OACRpf,EAAMltB,OAAOnF,GAEbqyB,EAAMxtB,MAAM7E,IAGhB,IAAI4xD,GAAqB,EACzB,GAAe,UAAXz8C,IACGkd,EAAMof,OACT,GAAIzxC,EAEF0E,EAAI0E,YAAY,sBACX,CACLwoD,GAAqB,EACrB,MAAM/tF,EAAoB,WAAXmyD,EAAsBzW,EAAU7a,EAC/C2tB,EAAM68B,gBAAgB,kBACtBrrF,EAAOs4C,eAAc,KACfzX,EAAIyE,SAAS,cACjBzE,EAAI0E,YAAY,kBAChBipB,EAAM68B,gBAAgB,iBAAgB,GAE1C,CAGW,WAAXl5B,GAAkC,SAAXA,GACzBh9B,IAAU,KACRumB,EAAQ3H,WAAW,IACnB2H,EAAQvnC,UAAU,GAAG,IAGrB45E,GACFltD,EAAI0E,YAAY,kBAElB1E,EAAIkT,WAAW,IAAI5/B,UAAU,IACzBm6D,GACFA,EAAYn6D,UAAU,IAAI4/B,WAAW,IAAItlC,IAAI,CAAE8nC,QAAS,GAAIy3C,WAAY,IAE5E,CACA,SAASC,EAAmBhiF,GAC1B8gF,GAAmB,EACnBp1C,EAAe1rC,EACjB,CACA,SAASiiF,IACPnB,GAAmB,CACrB,CAGApsD,EAAI95B,GAAG,qBAAsButC,GAC7BzT,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BhX,EAAI95B,GAAG,eAAgBonF,GACvBttD,EAAI95B,GAAG,aAAcqnF,GACrB1/B,EAAM3nD,GAAG,gBAAgB,KACvB85B,EAAIz0B,IAAI,qBAAsBkoC,GAC9BzT,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,GAC5BhX,EAAIz0B,IAAI,eAAgB+hF,GACxBttD,EAAIz0B,IAAI,aAAcgiF,EAAiB,GAE3C,CD3DMC,CAAW3/B,GAENA,CACT,CAEA4/B,eAGE,OAFcrrF,KACR8pF,WAAY,EADJ9pF,IAGhB,CAEAgrE,OAAOsgB,QAAiB,IAAjBA,OAAoB,GACzB,MAAM7/B,EAAQzrD,KAEdyrD,EAAM8/B,wBAAyB,EAC/B,MAAM3tD,EAAM6tB,EAAM7tB,IAElB6tB,EAAMof,QAAS,EACfjtC,EAAI6tB,MAAMwvB,WAAY,EAEtBxvB,EAAM3tB,IAAIj6B,QAAQ,oBAClB4nD,EAAMnwB,KAAK,oCAAqCmwB,GAE5C6/B,GACF7/B,EAAM68B,gBAAgB,QAGxB78B,EAAM3tB,IAAIj6B,QAAQ,cAClB4nD,EAAMnwB,KAAK,wBAAyBmwB,EACtC,CAEAwf,WACE,MAAMxf,EAAQzrD,KACFyrD,EAAM7tB,IAEd6tB,MAAMwvB,WAAY,EAEtBxvB,EAAM3tB,IAAIj6B,QAAQ,gBAClB4nD,EAAMnwB,KAAK,4BAA6BmwB,EAC1C,CAEAyf,UACE,MAAMzf,EAAQzrD,KACR49B,EAAM6tB,EAAM7tB,IAElB6tB,EAAMof,QAAS,EACfjtC,EAAI6tB,MAAMwvB,WAAY,EAEtBxvB,EAAM3tB,IAAIj6B,QAAQ,qBAClB4nD,EAAMnwB,KAAK,sCAAuCmwB,GAElDA,EAAM68B,gBAAgB,WAEtB78B,EAAM3tB,IAAIj6B,QAAQ,eAClB4nD,EAAMnwB,KAAK,0BAA2BmwB,EACxC,CAEA0f,WACE,MAAM1f,EAAQzrD,KACR49B,EAAM6tB,EAAM7tB,IAIlB,GAHAA,EAAI6tB,MAAMwvB,WAAY,EACtBxvB,EAAM68B,gBAAgB,iBACtB78B,EAAM3tB,IAAI0E,YAAY,aAClBipB,EAAM8f,YAAa,CACrB,MAAMwe,EAAansD,EAAI6tB,MAAMlqD,IAAI,eACLwoF,GAAeA,IAAeA,EAAWxe,cAEnE9f,EAAM8f,YAAY/oC,YAAY,oBAElC,CACAipB,EAAM3tB,IAAIj6B,QAAQ,gBAClB4nD,EAAMnwB,KAAK,4BAA6BmwB,EAC1C,CAEAt6C,OAAO3J,QAAO,IAAPA,OAAU,GACf,MAAMikD,EAAQzrD,KACRy2E,EAAahrB,EAAMnlD,OAAOyiF,kBAEhC,OADYt9B,EAAM7tB,IACVtF,OAASm+C,GAAb74C,MAAkC64C,EAC7BhrB,EAAMm9B,2BAEXn9B,EAAMof,OAAQpf,EAAMltB,MAAM/2B,GACzBikD,EAAMxtB,KAAKz2B,GACTikD,EACT,CAEAk/B,eACE,MAAMl/B,EAAQzrD,KACRV,EAAWF,KACX0+B,IAAEA,EAAGytC,YAAEA,EAAWT,aAAEA,GAAiBrf,EACrC+/B,EAAiB1tD,EAAIp0B,SACrBmiE,EAAW/tC,EAAI7zB,QAAQ3K,GAAUhC,OAAS,EAEhD,IAAKkuF,EAAezhF,GAAG+gE,IAAiBhtC,EAAI/sB,QAAQ,iBAAiBzT,OAAQ,CAC3E,MAAMk9E,EAAkB1P,EAAa1sE,SAAS,yBAAyB8L,GAAG,GACpEqwE,EAAiBzP,EAAa1sE,SAAS,mBAAmB8L,GAAG,GAE/DswE,EAAgBl9E,OAClBwgC,EAAI/xB,aAAayuE,GACRD,EACTz8C,EAAI/xB,aAAawuE,GAEjBzP,EAAaz7D,QAAQyuB,GAIrBytC,GACAA,EAAYjuE,UACTiuE,EAAY7hE,SAASK,GAAG+gE,IAA0D,IAAzCS,EAAYz6D,QAAQ,UAAUxT,QACvEiuE,EAAY7hE,SAASK,GAAG+gE,IAA0D,IAAzCS,EAAYz6D,QAAQ,UAAUxT,SAE1EiuE,EAAYx/D,aAAa+xB,GAG3B2tB,EAAMtwB,KAAK,eAAe,KACpB0wC,EACF2f,EAAe7hF,OAAOm0B,GAEtBA,EAAIjzB,QACN,GAEJ,CACF,CAEAozB,KAAKz2B,QAAO,IAAPA,OAAU,GACb,MAAMikD,EAAQzrD,KACR49B,EAAM6tB,EAAM7tB,IAElB,IAAKA,EAAI6tB,MAAMwvB,UAAW,OAAO,EAEjC,MAAM7rB,OAAEA,EAAMtxB,IAAEA,EAAGytC,YAAEA,EAAWV,OAAEA,EAAMC,aAAEA,GAAiBrf,EAE3D,IAAK3tB,GAAOA,EAAIyE,SAAS,YACvB,OAAOkpB,EAMT,GAHAA,EAAMk/B,eAGF9f,GAAU/sC,EAAIyE,SAAS,wBAA0BzE,EAAIyE,SAAS,YAAa,OAAO,EAGtF,MAAMkpD,EAAmB7tD,EAAI6tB,MAAMlqD,IAAI,aACnCkqF,GAAoBA,IAAqBhgC,GAC3CggC,EAAiBltD,MAAM/2B,GAGzBs2B,EAAIt2B,EAAU,cAAgB,YAAY,gBAC1Cs2B,EAAIwE,SAAS,YAETipC,IACFA,EAAYjpC,SAAS,qBACrBipC,EAAY/jE,EAAU,cAAgB,YAAY,iBAGhD,CAAC,QAAS,OAAQ,YAAYgqB,SAASi6B,EAAM2D,UAE/C3D,EAAMva,YAAcpT,EAAI,GAAGlwB,YAI7B,MAAM+qC,EAAUt2C,EAAEopD,EAAM08B,aACpBrd,GAAgBA,EAAavoC,SAAS,SACxCoW,EAAQ1yC,IAAI6kE,EAAa1sE,SAAS,yBAEpC,MAAMstF,EAAiC,WAAXt8B,EAAsBzW,EAAU7a,EAuC5D,OAnBIt2B,GACE+jE,GACFA,EAAY/oC,YAAY,gBAnB1BkpD,EAAoBC,iBAAgB,KAElClgC,EAAM8/B,wBAAyB,CAAI,IAIvC,SAASK,IACPF,EAAoBn2C,eAAersC,IAC7B7G,EAAE6G,EAAEjM,QAAQ8M,GAAG2hF,GACb5tD,EAAIyE,SAAS,aACfkpB,EAAM0f,WAEN1f,EAAMwf,WAEH2gB,GAAoB,GAE/B,CAMEA,GACA9tD,EAAI0E,YAAY,0BAA0BF,SAAS,YACnDmpB,EAAMuf,WAEFO,GACFA,EAAYjpC,SAAS,gBAEvBxE,EAAI0E,YAAY,aAAaF,SAAS,yBACtCmpB,EAAMuf,SACNvf,EAAMwf,WAENxf,EAAM8/B,wBAAyB,IAG1B,CACT,CAEAhtD,MAAM/2B,QAAO,IAAPA,OAAU,GACd,MAAMikD,EAAQzrD,MACRovD,OAAEA,EAAMtxB,IAAEA,EAAGytC,YAAEA,EAAWV,OAAEA,EAAMC,aAAEA,GAAiBrf,EAC3D,IAAKof,GAAU/sC,EAAIyE,SAAS,yBAA2BzE,EAAIyE,SAAS,YAAa,OAAOkpB,EAExF3tB,EAAIt2B,EAAU,cAAgB,YAAY,gBACtC+jE,GACFA,EAAY/jE,EAAU,cAAgB,YAAY,gBAGpD,MAAMmxC,EAAUt2C,EAAEopD,EAAM08B,aACpBrd,GAAgBA,EAAavoC,SAAS,SACxCoW,EAAQ1yC,IAAI6kE,EAAa1sE,SAAS,yBAEpC,MAAMstF,EAAiC,WAAXt8B,EAAsBzW,EAAU7a,EA6B5D,OA3BK2tB,EAAM8/B,yBAET/jF,GAAU,GAWRA,GACFkkF,EAAoBn2C,eAAc,KAR9BzX,EAAIyE,SAAS,aACfkpB,EAAM0f,WACGrtC,EAAIyE,SAAS,aACtBkpB,EAAMwf,WAERxf,EAAM68B,gBAAgB,gBAIL,IAEjBxqD,EAAI0E,YAAY,YAAYF,SAAS,aAErCmpB,EAAMyf,YAENptC,EAAIwE,SAAS,gBAAgBE,YAAY,YAAYF,SAAS,aAE9DmpB,EAAMyf,UACNzf,EAAM0f,YAGD1f,CACT,CAEApsB,OACE,MAAMosB,EAAQzrD,UAEgC,IAAnCyrD,EAAMnlD,OAAOyiF,mBACtBt9B,EAAMi9B,4BAEwC,IAArCj9B,EAAMnlD,OAAOkjF,qBACtB/9B,EAAM29B,yBAEJ39B,EAAMnlD,OAAO8jF,OACf3+B,EAAMm+B,cAEJn+B,EAAMM,WACRN,EAAMi+B,iBAEV,CAEA3rD,UACE,IAAI0tB,EAAQzrD,KACZ,MAAM49B,EAAM6tB,EAAM7tB,KACZktC,aAAEA,GAAiBrf,EAEzB,GAAKA,EAAM3tB,IAAX,CAcA,GATA2tB,EAAMnwB,KAAK,0CAA2CmwB,GACtDA,EAAM3tB,IAAIj6B,QAAQ,uBAEd4nD,EAAMq9B,gCACRlrD,EAAIz0B,IAAI,SAAUsiD,EAAMq9B,gCAEtBr9B,EAAM89B,kCACR3rD,EAAIz0B,IAAI,SAAUsiD,EAAM89B,kCAEtB99B,EAAM3tB,IAAIyE,SAAS,wBAA0BkpB,EAAM3tB,IAAIyE,SAAS,sBAAuB,CACzF,MAAMoW,EAAUt2C,EAAEopD,EAAM08B,aACpBrd,GAAgBA,EAAavoC,SAAS,SACxCoW,EAAQ1yC,IAAI6kE,EAAa1sE,SAAS,yBAEpCqtD,EAAM3tB,IAAI0E,YAAY,mDACtBmW,EAAQjtC,IAAI,CACV,CAAE,UAAS+/C,EAAM0D,QAAS,KAE5B1D,EAAMnwB,KAAK,oCAAqCmwB,GAChDA,EAAM3tB,IAAIj6B,QAAQ,mBACpB,CAEA4nD,EAAM3tB,IAAIj6B,QAAQ,iBAClB4nD,EAAMnwB,KAAK,8BAA+BmwB,GACtCA,EAAM3pD,KACR2pD,EAAM3pD,GAAGumF,QAAU,YACZ58B,EAAM3pD,GAAGumF,SAElBr2D,GAAYy5B,GAEZA,EAAQ,IAhCR,CAiCF,GExkBF,IAAAogC,GAAe,CACbroF,KAAM,QACN8C,OAAQ,CACNmlD,MAAO,CACLof,YAAQvhE,EACR6lD,UAAM7lD,EACN8lD,YAAQ9lD,EACRyiD,eAAWziD,EACX8hE,UAAU,EACVc,gBAAY5iE,EACZy/E,uBAAmBz/E,EACnBkgF,yBAAqBlgF,EACrB8gF,OAAO,EACPS,eAAe,EACfR,gBAAgB,EAChBE,gBAAiB,EACjBG,eAAgB,EAChBze,sBAAsB,EACtBlB,iBAAazhE,IAGjB+zB,OAAQ,CACNwuD,UAEF/uD,SACE,MAAMc,EAAM59B,KACZhD,GAAO4gC,EAAK,CACV6tB,MAAO,CACLwvB,WAAW,EACXn+C,OAAOx2B,GACE,IAAIulF,GAAMjuD,EAAKt3B,GAExB/E,IAAIO,GACF,QADI,IAAFA,MAAK,UACHA,aAAc+pF,GAAO,OAAO/pF,EACrB,SAAPA,GAAwB,UAAPA,IAAgBA,EAAM,UAASA,KACpD,MAAMg8B,EAAMz7B,EAAEP,GACd,OAAmB,IAAfg8B,EAAIxgC,QAAgBwgC,EAAIxgC,OAAS,OAArC,EACOwgC,EAAI,GAAGuqD,O,EAEhBtqD,QAAQj8B,QAAE,IAAFA,MAAK,UACX,MAAM2pD,EAAQ7tB,EAAI6tB,MAAMlqD,IAAIO,GAC5B,GAAI2pD,GAASA,EAAM1tB,QAAS,OAAO0tB,EAAM1tB,S,EAG3CE,KAAKn8B,EAAe0F,QAAb,IAAF1F,MAAK,UACG,SAAPA,GAAwB,UAAPA,IAAgBA,EAAM,UAASA,KACpD,IAAI2pD,EAAQ7tB,EAAI6tB,MAAMlqD,IAAIO,GAC1B,OAAI2pD,GAASA,EAAMxtB,KAAawtB,EAAMxtB,KAAKz2B,GACtCikD,OAAL,GACEA,EAAQ7tB,EAAI6tB,MAAM3uB,OAAO,CAAEh7B,OACpB2pD,EAAMxtB,KAAKz2B,G,EAItB+2B,MAAMz8B,EAAkB0F,QAAhB,IAAF1F,MAAK,aACE,SAAPA,GAAwB,UAAPA,IAAgBA,EAAM,UAASA,KACpD,IAAI2pD,EAAQ7tB,EAAI6tB,MAAMlqD,IAAIO,GAC1B,OAAI2pD,GAASA,EAAMxtB,KAAawtB,EAAMltB,MAAM/2B,GACvCikD,OAAL,GACEA,EAAQ7tB,EAAI6tB,MAAM3uB,OAAO,CAAEh7B,OACpB2pD,EAAMltB,MAAM/2B,G,EAIvB2J,OAAOrP,EAAe0F,QAAb,IAAF1F,MAAK,UACC,SAAPA,GAAwB,UAAPA,IAAgBA,EAAM,UAASA,KACpD,IAAI2pD,EAAQ7tB,EAAI6tB,MAAMlqD,IAAIO,GAC1B,OAAI2pD,GAASA,EAAMt6C,OAAes6C,EAAMt6C,OAAO3J,GAC1CikD,OAAL,GACEA,EAAQ7tB,EAAI6tB,MAAM3uB,OAAO,CAAEh7B,OACpB2pD,EAAMt6C,OAAO3J,GAGxB,I,EAIN1D,GAAI,CACFu7B,OACE,MAAMzB,EAAM59B,KACZqC,EAAE,eAAe8E,MAAM2kF,IACrB,MAAMxlF,EAASvJ,OAAOsJ,OAAO,CAAEvE,GAAIgqF,GAAWzpF,EAAEypF,GAASzhF,WAAa,IACtEuzB,EAAI6tB,MAAM3uB,OAAOx2B,EAAO,G,EAG5B+hE,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,eAAe1qC,MAAM2kF,IACjC,MAAMxlF,EAASvJ,OAAOsJ,OAAO,CAAEvE,GAAIgqF,GAAWzpF,EAAEypF,GAASzhF,WAAa,IACtEuzB,EAAI6tB,MAAM3uB,OAAOx2B,EAAO,G,EAG5B4hE,iBAAiB/jB,GACf,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,eAAe1qC,MAAM2kF,IACjC,MAAMrgC,EAAQ7tB,EAAI6tB,MAAMlqD,IAAIuqF,GACxBrgC,GAASA,EAAM1tB,SAAS0tB,EAAM1tB,SAAS,GAE/C,GAEFrB,MAAO,CACL,aAAc,CACZ+0B,OAAO/0B,GACL,MACMovD,EAAUpvD,EAAM4zB,IAChBhqD,EAASvJ,OAAOsJ,OAAO,CAAEvE,GAAIgqF,GAAWzpF,EAAEypF,GAASzhF,WAAa,IAF1DrK,KAGRyrD,MAAM3uB,OAAOx2B,E,EAEnBy3B,QAAQrB,GACN,MACMovD,EAAUpvD,EAAM4zB,IAChB7E,EAFMzrD,KAEMyrD,MAAMlqD,IAAIuqF,GACxBrgC,GAASA,EAAM1tB,SAAS0tB,EAAM1tB,SACpC,IAGJyvB,OAAQ,CACN,cAAe,SAAca,EAAWz8C,QAAI,IAAJA,MAAO,IACjC5R,KACRyrD,MAAMxtB,KAAKrsB,EAAK65C,MAAO75C,EAAKpK,Q,EAElC,eAAgB,SAAe6mD,EAAWz8C,QAAI,IAAJA,MAAO,IACnC5R,KACRyrD,MAAMltB,MAAM3sB,EAAK65C,MAAO75C,EAAKpK,Q,EAEnC,gBAAiB,SAAe6mD,EAAWz8C,QAAI,IAAJA,MAAO,IACpC5R,KACRyrD,MAAMt6C,OAAOS,EAAK65C,MAAO75C,EAAKpK,Q,EAEpC,kBAAmB,WACjB,MAAMo2B,EAAM59B,KACNuhF,EAAWl/E,EAAE,6BACnB,IAAKk/E,EAASjkF,OAAQ,OACtB,MAAMk5B,EAAW+qD,EAAS,IAAMA,EAAS,GAAG8G,QAC5C9G,EAAS19E,QAAQ,wBACb2yB,GACFA,EAAS8E,KAAK,gBAAiB9E,GAEjCoH,EAAItC,KAAK,qBAAsB9E,GAAY+qD,EAAS,IAChD/qD,IAAqD,IAAzCA,EAASlwB,OAAO2lE,sBAC5BruC,EAAIt3B,OAAOmlD,MAAMwgB,sBAAsBruC,EAAI6tB,MAAMltB,OACvD,IC1IJ,MAAMwtD,GAAiB,CACrB9tD,KAAK+tD,EAA6BxkF,QAAvB,IAANwkF,MAAS,yBAA2B,IAAPxkF,OAAU,GAC1C,MAAMo2B,EAAM59B,KACN64B,EAASN,KACTj5B,EAAWF,IACXm4B,EAAUE,KAEVw0D,EAAU5pF,EAAE2pF,GAAQ9hF,GAAG,GAC7B,IAAK+hF,IAAYA,EAAQ3uF,OAAQ,OACjC,GACE2uF,EAAQ1pD,SAAS,gBACjB0pD,EAAQ1pD,SAAS,iBACjB0pD,EAAQ1pD,SAAS,gBAEjB,OAEF,MAAMwhB,EAAUkoC,EAAQhiF,QAAQ,SAASC,GAAG,GAC5C,IAAK65C,EAAQzmD,OAAQ,OAErB,GAAIymD,EAAQlS,KAAK,gBAAgBv0C,OAC/B,OAGF,IAAI0hF,EAEJ,SAAS3rB,IACP2rB,GAAY,CACd,CAKA,GAHAiN,EAAQpoF,QAAQ,kBAAmB,CAAEwvD,YACrCz1B,EAAItC,KAAK,iBAAkB2wD,EAAQ,GAAI54B,GAEnC2rB,EAAW,OAEf,MAAMkN,EAAanvF,OAAOsJ,OAAO,CAAEmB,WAAWo2B,EAAIt3B,OAAO6lF,KAAMF,EAAQ5hF,WAEjEs+D,EAAiBsjB,EAAQhiF,QAAQ,iBAEvC,IAAIshE,EAYAryB,EACAuwB,EAZAwiB,EAAQ1hF,KAAK,sBACfghE,EAAclpE,EAAE4pF,EAAQ1hF,KAAK,uBAE1BghE,GAAe2gB,EAAW9gB,WAC7BG,EAAc5C,EAAe92B,KAAK,kBAC7B05B,EAAYjuE,SACfiuE,EAAclpE,EAAE,qCAChBsmE,EAAeh/D,OAAO4hE,KAMtB2gB,EAAWE,mBACblzC,EAAY6K,EAAQ3lD,SAAS,WACxB86C,EAAU57C,QACTymD,EAAQ,GAAG5O,SAAQ+D,EAAY6K,EAAQ,GAAG5O,OAAO+D,YAGrDgzC,EAAWG,oBACb5iB,EAAa1lB,EAAQ3lD,SAAS,YACzBqrE,EAAWnsE,SACdmsE,EAAa1lB,EAAQ95C,QAAQ,SAAS7L,SAAS,aAE5CqrE,EAAWnsE,SACdmsE,EAAa1lB,EAAQ95C,QAAQ,UAAU7L,SAAS,cAIpD,MAAMkuF,EAAgBL,EAAQvgF,IAAI,aAClC,IAAI6gF,EACAD,GAAiBA,EAAc5hF,MAAM,WACvC6hF,GAAe,GAEjB,MAAMC,EAAiBP,EAAQ7tF,SAAS,iBAElCquF,EAAcpqF,EAAE/C,EAASnB,cAAc,QAAQmkC,SAAS,wBAC9D2pD,EAAQtiF,OAAO8iF,GAEf,IAQIC,EARAC,EAAYV,EAAQ,GAAG78E,YACvBw9E,EAAaX,EAAQ,GAAG98E,aACxB09E,EAAY9oC,EAAQ,GAAG30C,YACvBsoE,EAAa3zB,EAAQ,GAAG50C,aAExBi9C,EAAWqgC,EAAY,GAAGr9E,aAAey9E,EACzCC,EAAYL,EAAY,GAAGt9E,cAAgBuoE,EAG3Cx+B,IAAcgzC,EAAWa,qBAAuBD,IAAcpV,IAChEgV,EAAkBx8D,SAASgpB,EAAUxtC,IAAI,sBAAuB,IAC5D0pB,OAAOC,MAAMq3D,KAAkBA,EAAkB,IAEnDA,IACFI,GAAaJ,GAGf,IAUIM,EACAC,EAXAC,EAAS9gC,EAAWugC,EACpBQ,EAASL,EAAYF,EAErBjoD,EAASsnD,EAAQtnD,SACjB+1C,EAAa32B,EAAQpf,SASzB,GARI+nD,IACFhS,EAAWzsE,KAAOy+E,EAAkB,GAEtC/nD,EAAOz2B,MAAQwsE,EAAWxsE,KAKtBq+E,EAAc,CAChB,MAAMa,EAAkBd,EACrBrkF,QAAQ,eAAgB,IACxB3E,MAAM,KACNwC,KAAKhE,GAAOA,EAAGW,SAClB,GAAI2qF,GAAmBA,EAAgB9vF,OAAS,EAAG,CACjD,MAAM+sE,EAAQniE,WAAWklF,EAAgB,IACzCJ,EAAiBroD,EAAOz2B,KAAQy+E,GAAa,EAAItiB,GAAU,EAC3D4iB,EAAgBtoD,EAAO12B,IAAMysE,EAAWzsE,IAAO2+E,GAAc,EAAIviB,GAAU,EACvEzsC,EAAIuD,MAAK6rD,GAAkBf,EAAQ,GAAGl+E,WAC5C,MACEi/E,EAAiBf,EAAQ,GAAG/sC,WAC5B+tC,EACEhB,EAAQ,GAAG9Q,WAAaxS,EAAerrE,OAASqrE,EAAe,GAAG96D,UAAY,EAEpF,MACEm/E,EAAiBroD,EAAOz2B,KACxB++E,EAAgBtoD,EAAO12B,IAAMysE,EAAWzsE,IACpC2vB,EAAIuD,MAAK6rD,GAAkBf,EAAQ,GAAGl+E,YAG5Ci/E,IAAmBH,EAAYzgC,GAAY,EAC3C6gC,IAAkBvV,EAAaoV,GAAa,EAE5C,IAAIO,EAAkBjhC,EAAWugC,EAAYK,EACzCpvD,EAAIuD,OACL6rD,EAAgBK,GAAmB,CAACA,EAAiBL,IAExD,IA8HIM,EACA39C,EACA1J,EACAH,EACAC,EACAwnD,EACAC,EACA9mD,EACA7/B,EACA4mF,EACAC,EACAC,EAzIAC,EAAmBd,EAAYF,EAAaK,EAC5CY,GAAcR,EAAkBL,GAAkB,EAClDc,GAAcF,EAAmBX,GAAiB,EA4BtD,SAAS13C,IACPwO,EAAQzhB,SAAS,yBACbzJ,EAAOxC,KAAOsyC,EAAerrE,SAC/BqrE,EAAej9D,IAAI,SAAW,GAAEi9D,EAAe,GAAGx5D,aAAe,OACjE7O,YAAW,KACTqoE,EAAej9D,IAAI,SAAU,GAAG,KAGpCugF,EAAQ3pD,SAAS,eACjB2pD,EAAQzpD,YAAY,gBACpBypD,EAAQpoF,QAAQ,eAChB+5B,EAAItC,KAAK,aAAc2wD,EAAQ,GAAIloC,EAAQ,GAC7C,CAyBA,SAASmzB,IACP+U,EAAQzpD,YAAY,sBACpBmqD,EAAYV,EAAQ,GAAG78E,YACvBw9E,EAAaX,EAAQ,GAAG98E,aACxB09E,EAAY9oC,EAAQ,GAAG30C,YACvBsoE,EAAa3zB,EAAQ,GAAG50C,aACxBi9C,EAAWqgC,EAAY,GAAGr9E,aAAey9E,EACzCC,EAAYL,EAAY,GAAGt9E,cAAgBuoE,EAE3CgV,EAAkB,EACdxzC,IAAcgzC,EAAWa,qBAAuBD,IAAcpV,IAChEgV,EAAkBx8D,SAASgpB,EAAUxtC,IAAI,sBAAuB,IAC5D0pB,OAAOC,MAAMq3D,KAAkBA,EAAkB,IAEnDA,IACFI,GAAaJ,GAGfQ,EAAS9gC,EAAWugC,EACpBQ,EAASL,EAAYF,EAErBX,EAAQ76E,UAAU,qCAClBuzB,EAASsnD,EAAQtnD,SACjB+1C,EAAa32B,EAAQpf,SACjB+nD,IACFhS,EAAWzsE,KAAOy+E,EAAkB,GAEtC/nD,EAAOz2B,MAAQwsE,EAAWxsE,KAC1By2B,EAAO12B,KAAOysE,EAAWzsE,IAEzB++E,EAAiBroD,EAAOz2B,MAAQ2+E,EAAYzgC,GAAY,EACpDxuB,EAAIuD,MAAK6rD,GAAkBf,EAAQ,GAAGl+E,YAC1Ck/E,EAAgBtoD,EAAO12B,KAAOypE,EAAaoV,GAAa,EAExDO,EAAkBjhC,EAAWugC,EAAYK,EACzCY,EAAmBd,EAAYF,EAAaK,EACxCrvD,EAAIuD,OACL6rD,EAAgBK,GAAmB,CAACA,EAAiBL,IAExDa,GAAcR,EAAkBL,GAAkB,EAClDc,GAAcF,EAAmBX,GAAiB,EAElDhB,EAAQ76E,UACL,eACCwsB,EAAIuD,KAAO0sD,EAAaA,QACnBC,iBAA0BZ,MAAWC,MAE9CX,EACG9gF,IAAI,CACH4sB,MAAQ,GAAE8zB,MACVpyB,OAAS,GAAE8yD,QAEZ17E,UACE,eACCwsB,EAAIuD,IAAM6rD,EAAiBa,GAAcb,EAAiBa,sBACvC,EAAIX,MAAW,EAAIC,KAE9C,CAcA,SAASY,EAAa7kF,GACf7G,EAAE6G,EAAEjM,QAAQ+M,QAAQiiF,GAAS3uF,QAAW4L,EAAEggC,WAC1C+iD,EAAQ1pD,SAAS,iBACtBorD,EAAoB1B,EAAQp6C,KAAKq6C,EAAW8B,cAO1CV,EAJAK,EAAkB,IAClBA,EAAkB,KAAOnB,EAAe,KACvCmB,EAAkB,GAAGniF,SAAStC,EAAEjM,QAEjB,EAEA0wF,EAAkB9/E,YAEpC8hC,GAAY,EACZ7J,EAAc58B,EAAEigC,cAAc,GAAGE,MACjCtD,EAAc78B,EAAEigC,cAAc,GAAGG,MACjC5C,OAAcp9B,EACdmkF,GAAM,EACNC,GAAM,EACR,CACA,SAASO,EAAY/kF,GACnB,GAAKymC,GAAczmC,EAAEggC,UAArB,CAgBA,GAfAqkD,EAAYrkF,EAAEigC,cAAc,GAAGE,MAC/BmkD,EAAYtkF,EAAEigC,cAAc,GAAGG,WACJ,IAAhB5C,IACTA,KACEA,GAAe5/B,KAAK+R,IAAI20E,EAAYznD,GAAej/B,KAAK+R,IAAI00E,EAAYznD,KAGvE4nD,GAAQD,KACN/mD,GAAex9B,EAAEigC,cAAc,GAAGU,SAAW,GAChD6jD,GAAM,EAEND,GAAM,IAIJC,IAAOD,GAASA,GAAyB,IAAlBH,EAG3B,OAFA39C,GAAY,OACZ1J,GAAU,GAGPA,GACHgmD,EAAQzpD,YAAY,sBAGtByD,GAAU,EACVp/B,EAAW4mF,EACP3mF,KAAK+B,KAAK2kF,EAAYznD,GAAe,IAAK,GAC1Cj/B,KAAK+B,KAAK0kF,EAAYznD,IAAgB6mD,EAAY,GAAI,IACrD9lF,EAAW,GAAK4mF,GAAQC,KACvBD,GAAO50D,EAAOxC,KAAOs3D,EAAkB,KAAOnB,EAAe,KAC/DmB,EAAkBjiF,IAAI,6BAA8B,QACpDiiF,EAAkB9/E,UAAU,IAE9B3E,EAAE+/B,kBAGApiC,EAAW,IAAGA,IAAa,IAC3BA,GAAY4mF,EAAM,IAAM,MAC1B99C,GAAY,EACZ1J,GAAU,EACVrI,EAAIuuD,KAAK5tD,MAAM0tD,IAEfA,EAAQ76E,UACL,eAAcwsB,EAAIuD,KAAO0sD,EAAaA,QAAiBC,iBACtDZ,GAAU,EAAe,GAAXrmF,OACXsmF,GAAU,EAAe,GAAXtmF,MA9CS,CAiDlC,CACA,SAASqnF,GAAWhlF,GACbymC,GAAc1J,GAAY/8B,EAAEggC,YACjCyG,GAAY,EACZ1J,GAAU,EACNpN,EAAOxC,KACTs3D,EAAkBjiF,IAAI,6BAA8B,IAElD7E,GAAY,GACd+2B,EAAIuuD,KAAK5tD,MAAM0tD,GAEfA,EACG3pD,SAAS,sBACTlxB,UACE,eACCwsB,EAAIuD,KAAO0sD,EAAaA,QACnBC,iBAA0BZ,MAAWC,MAGpD,CAjOIjB,EAAWE,kBAAoBlzC,GAAaA,EAAU57C,SACpD47C,EAAUlvC,QAAQ,kBAAkB1M,OAEtC2uF,EAAQ,GAAGkC,qBAAsB,UAE1BlC,EAAQ,GAAGkC,oBAClBvwD,EAAIqc,OAAOumB,KAAKtnB,EAAWgzC,EAAW1kF,QAAS0kF,EAAWa,qBAAqB,KAG/Eb,EAAWG,mBAAqB5iB,GAAcA,EAAWnsE,SACvDmsE,EAAWz/D,QAAQ,mBAAmB1M,OAExC2uF,EAAQ,GAAGmC,sBAAuB,UAE3BnC,EAAQ,GAAGmC,qBAClBxwD,EAAI0rC,QAAQ9I,KAAKiJ,EAAYyiB,EAAW1kF,WAGxC+jE,GACFA,EAAY/oC,YAAY,qBAAqBF,SAAS,oBAExD2pD,EAAQzpD,YAAY,sBAChB0pD,EAAW1kF,SACbykF,EAAQ3pD,SAAS,gBAEnB2pD,EAAQpoF,QAAQ,aAChB+5B,EAAItC,KAAK,WAAY2wD,EAAQ,IAc7BO,EACG9gF,IAAI,CACH4sB,MAAQ,GAAE8zB,MACVpyB,OAAS,GAAE8yD,QAEZ17E,UACE,eACCwsB,EAAIuD,IAAM6rD,EAAiBa,GAAcb,EAAiBa,sBACvC,EAAIX,MAAW,EAAIC,MAG5ClB,EAAQ76E,UACL,eACCwsB,EAAIuD,KAAO0sD,EAAaA,QACnBC,iBAA0BZ,MAAWC,MAE1CjB,EAAW1kF,QACbykF,EAAQ12C,eAAc,KACpBA,GAAe,IAGjBA,IAsKF02C,EAAQ,GAAGoC,oBAAsB,WAC/BzwD,EAAIz0B,IAAI,SAAU+tE,GACd3/C,EAAQG,OAASw0D,EAAWtb,eAC9BhzC,EAAIz0B,IAAI,qBAAsB4kF,GAC9BnwD,EAAIz0B,IAAI,mBAAoB8kF,GAC5BrwD,EAAIz0B,IAAI,mBAAoB+kF,I,EAIhCtwD,EAAI95B,GAAG,SAAUozE,GACb3/C,EAAQG,OAASw0D,EAAWtb,eAC9BhzC,EAAI95B,GAAG,qBAAsBiqF,GAC7BnwD,EAAI95B,GAAG,mBAAoBmqF,GAC3BrwD,EAAI95B,GAAG,mBAAoBoqF,I,EAG/B3vD,MAAMytD,EAAyCxkF,QAAnC,IAANwkF,MAAS,qCAAuC,IAAPxkF,OAAU,GACvD,MAAMo2B,EAAM59B,KACN64B,EAASN,KACT0zD,EAAU5pF,EAAE2pF,GAAQ9hF,GAAG,GAC7B,IAAK+hF,IAAYA,EAAQ3uF,OAAQ,OACjC,IACG2uF,EAAQ1pD,SAAS,gBAClB0pD,EAAQ1pD,SAAS,iBACjB0pD,EAAQ1pD,SAAS,gBAEjB,OAEF,MAAMiqD,EAAiBP,EAAQ7tF,SAAS,iBAClCuqE,EAAiBsjB,EAAQhiF,QAAQ,iBAEjC85C,EAAUkoC,EAAQhiF,QAAQ,SAASC,GAAG,GAC5C,IAAK65C,EAAQzmD,OAAQ,OAErB,MAAM4uF,EAAanvF,OAAOsJ,OAAO,CAAEmB,WAAWo2B,EAAIt3B,OAAO6lF,KAAMF,EAAQ5hF,WACjEsjF,EAAoB1B,EAAQp6C,KAAKq6C,EAAW8B,cAElD,IAAI90C,EACAuwB,EAEA8B,EACA0gB,EAAQ1hF,KAAK,sBACfghE,EAAclpE,EAAE4pF,EAAQ1hF,KAAK,sBAE3B2hF,EAAW9gB,WACbG,EAAc0gB,EAAQhiF,QAAQ,iBAAiB4nC,KAAK,mBAGlDq6C,EAAWE,mBACblzC,EAAY6K,EAAQ3lD,SAAS,WACxB86C,EAAU57C,QACTymD,EAAQ,GAAG5O,SAAQ+D,EAAY6K,EAAQ,GAAG5O,OAAO+D,WAEnDA,GAAaA,EAAU57C,SAAW2uF,EAAQ,GAAGkC,qBAC/CvwD,EAAIqc,OAAOmO,KAAKlP,EAAWgzC,EAAW1kF,SAAS,IAG/C0kF,EAAWG,oBACb5iB,EAAa1lB,EAAQ3lD,SAAS,YACzBqrE,EAAWnsE,SACdmsE,EAAa1lB,EAAQ95C,QAAQ,SAAS7L,SAAS,aAE5CqrE,EAAWnsE,SACdmsE,EAAa1lB,EAAQ95C,QAAQ,UAAU7L,SAAS,aAE9CqrE,GAAcA,EAAWnsE,SAAW2uF,EAAQ,GAAGmC,sBACjDxwD,EAAI0rC,QAAQlhB,KAAKqhB,EAAYyiB,EAAW1kF,UAI5Cu8C,EAAQvhB,YAAY,yBAEhB3J,EAAOxC,KAAOsyC,EAAerrE,SAC/BqrE,EAAej9D,IAAI,SAAW,GAAEi9D,EAAe,GAAGx5D,aAAe,OACjE7O,YAAW,KACTqoE,EAAej9D,IAAI,SAAU,GAAG,KAIhC6/D,GAAeA,EAAYjuE,QAC7BiuE,EAAY/oC,YAAY,oBAAoBF,SAAS,qBAGvD2pD,EAAQzpD,YAAY,kCAChB0pD,EAAW1kF,QACbykF,EAAQ3pD,SAAS,gBAEjB2pD,EAAQ3pD,SAAS,sBAEnB2pD,EAAQ76E,UAAU,IAClB66E,EAAQpoF,QAAQ,cAChB+5B,EAAItC,KAAK,YAAa2wD,EAAQ,GAAIloC,EAAQ,IAE1C,MAAMuqC,EAAerC,EAAQ1pD,SAAS,iCAEtC,SAASgT,IACF+4C,GACH9B,EAAe9gF,IAAI,CACjB4sB,MAAO,GACP0B,OAAQ,KAGRuxC,GAAeA,EAAYjuE,QAC7BiuE,EAAY/oC,YAAY,sCAE1BypD,EAAQzpD,YAAY,mCACpBypD,EAAQpoF,QAAQ,eAChBooF,EAAQp6C,KAAK,yBAAyBhnC,SACtC+yB,EAAItC,KAAK,aAAc2wD,EAAQ,GAAIloC,EAAQ,GAC7C,CACIuqC,GACF9B,EAAe9gF,IAAI,CACjB4sB,MAAO,GACP0B,OAAQ,KAIZwyD,EAAep7E,UAAU,IAAIvD,UAAU,EAAGrG,EAAU,IAAM,GACtDmmF,EAAkBrwF,QAAUqwF,EAAkB,KAAOnB,EAAe,IACtEmB,EAAkB9/E,UAAU,EAAGrG,EAAU,IAAM,GAE7CA,EACFglF,EAAej3C,eAAc,KAC3BA,GAAe,IAGjBA,IAGE02C,EAAQ,GAAGoC,sBACbpC,EAAQ,GAAGoC,6BACJpC,EAAQ,GAAGoC,oB,EAGtBl9E,OAAO66E,EAA6BxkF,QAAvB,IAANwkF,MAAS,oBACd,MAAMpuD,EAAM59B,KACNisF,EAAU5pF,EAAE2pF,GAAQ9hF,GAAG,GACxB+hF,EAAQ3uF,SACT2uF,EAAQ1pD,SAAS,eACnB3E,EAAIuuD,KAAK5tD,MAAM0tD,EAASzkF,GAExBo2B,EAAIuuD,KAAKluD,KAAKguD,EAASzkF,GAE3B,GAGF,IAAA+mF,GAAe,CACb/qF,KAAM,OACN8C,OAAQ,CACN6lF,KAAM,CACJC,kBAAkB,EAClBW,qBAAqB,EACrBV,mBAAmB,EACnB2B,aAAc,gBACdpd,cAAc,EACd3E,sBAAsB,EACtBb,UAAU,IAGdtuC,SAEEvG,GADYv2B,KACK,CACfmsF,KAAMJ,I,EAGVjoF,GAAI,CACFqkE,aAAahkB,GACX,MAAMvmB,EAAM59B,KASZ,GAPE49B,EAAIt3B,OAAO6lF,KAAKC,kBAChBjoC,EAAKhK,UACLgK,EAAKrmB,IAAI+T,KAAK,gCAAgCv0C,QAE9CsgC,EAAIqc,OAAOumB,KAAKrc,EAAKhK,UAAU,EAAMvc,EAAIt3B,OAAO6lF,KAAKY,qBAAqB,GAI1EnvD,EAAIt3B,OAAO6lF,KAAKE,mBAChBloC,EAAKrmB,IAAI+T,KAAK,gCAAgCv0C,OAC9C,CACA,IAAImsE,EAAatlB,EAAKrmB,IAAI1/B,SAAS,YAC9BqrE,EAAWnsE,SACdmsE,EAAatlB,EAAKrmB,IAAI7zB,QAAQ,SAAS7L,SAAS,aAE7CqrE,EAAWnsE,SACdmsE,EAAatlB,EAAKrmB,IAAI7zB,QAAQ,UAAU7L,SAAS,aAE/CqrE,GAAcA,EAAWnsE,QAC3BsgC,EAAI0rC,QAAQ9I,KAAKiJ,EAErB,CACF,GAEFjc,OAAQ,CACN,cAAe,SAAmBE,EAAY97C,GAChC5R,KACRmsF,KAAK5tD,MAAM3sB,EAAKu6E,KAAMv6E,EAAKpK,Q,EAEjC,aAAc,SAAmBkmD,EAAY97C,GAC/B5R,KACRmsF,KAAKluD,KAAKrsB,EAAKu6E,KAAMv6E,EAAKpK,Q,EAEhC,mBAAoB,SAA8BkmD,EAAY97C,EAAM1I,GAGhEwkD,EAAWnrB,SAAS,gBACpBmrB,EAAWnrB,SAAS,iBACpBmrB,EAAWnrB,SAAS,iBAGlBlgC,EAAE6G,EAAEjM,QAAQ+M,QAAQ,mCAAmC1M,QAP/C0C,KAQRmsF,KAAKluD,KAAKyvB,E,EAEhB,oBAAqB,WAEnB,IAAIuiB,GAAc,EADNjwE,KAEJsG,OAAO6lF,KAAKlgB,uBAAsBgE,GAAc,GACxD,MAAMue,EAAgBnsF,EAAE,gBACnBmsF,EAAclxF,SACwC,SAAvDkxF,EAAcjkF,KAAK,gCACrB0lE,GAAc,EACkD,UAAvDue,EAAcjkF,KAAK,kCAC5B0lE,GAAc,GAEZA,GAVQjwE,KAUSmsF,KAAK5tD,MAAMiwD,GAClC,ICjlBJ,MAAMC,GAAW,CACfluD,MAAMmuD,EAAM98E,GACV,MACM7Q,EAASF,IACf,IAAI8tF,EAASD,EAEb,MAAME,EAAUvsF,EAAEqsF,GACdE,EAAQtxF,QAAUsxF,EAAQ7kF,GAAG,SAAW6kF,EAAQrkF,KAAK,QACvDokF,EAASC,EAAQrkF,KAAK,OANZvK,KASR0uF,KAAK98E,KAAM,QAAO+8E,KAAY/8E,EAGlC7Q,EAAO+jD,aAAc,UAAS6pC,KAAY5pC,KAAKC,UAAUpzC,E,EAE3DrQ,IAAImtF,GACF,MAAM9wD,EAAM59B,KACNe,EAASF,IACf,IAAI8tF,EAASD,EAEb,MAAME,EAAUvsF,EAAEqsF,GAKlB,OAJIE,EAAQtxF,QAAUsxF,EAAQ7kF,GAAG,SAAW6kF,EAAQrkF,KAAK,QACvDokF,EAASC,EAAQrkF,KAAK,OAGpBxJ,EAAO+jD,aAAc,UAAS6pC,KACzB5pC,KAAK7a,MAAMnpC,EAAO+jD,aAAc,UAAS6pC,MAE9C/wD,EAAI8wD,KAAK98E,KAAM,QAAO+8E,KACjB/wD,EAAI8wD,KAAK98E,KAAM,QAAO+8E,UAD/B,C,EAKF9jF,OAAO6jF,GACL,MAAM9wD,EAAM59B,KACNe,EAASF,IACf,IAAI8tF,EAASD,EAEb,MAAME,EAAUvsF,EAAEqsF,GACdE,EAAQtxF,QAAUsxF,EAAQ7kF,GAAG,SAAW6kF,EAAQrkF,KAAK,QACvDokF,EAASC,EAAQrkF,KAAK,OAIpBqzB,EAAI8wD,KAAK98E,KAAM,QAAO+8E,OACxB/wD,EAAI8wD,KAAK98E,KAAM,QAAO+8E,KAAY,UAC3B/wD,EAAI8wD,KAAK98E,KAAM,QAAO+8E,MAI3B5tF,EAAO+jD,aAAc,UAAS6pC,OAChC5tF,EAAO+jD,aAAc,UAAS6pC,KAAY,GAC1C5tF,EAAO+jD,aAAa+pC,WAAY,UAASF,KAE7C,GAIIG,GAAc,CAClBzvD,KAAK0vD,GACH,MAAMnxD,EAAM59B,KACN4uF,EAAUvsF,EAAE0sF,GACZJ,EAASC,EAAQrkF,KAAK,MAC5B,IAAKokF,EAAQ,OACb,MAAMK,EAAcpxD,EAAI8wD,KAAKO,YAAYN,GACrCK,GACFpxD,EAAI8wD,KAAKQ,aAAaN,EAASI,GASjCJ,EAAQ9qF,GAAG,iBAPX,WACE,MAAM8N,EAAOgsB,EAAI8wD,KAAKS,cAAcP,GAC/Bh9E,IACLgsB,EAAI8wD,KAAKU,cAAcT,EAAQ/8E,GAC/Bg9E,EAAQ/qF,QAAQ,iBAAkB+N,GAClCgsB,EAAItC,KAAK,gBAAiBszD,EAAQ,GAAIh9E,GACxC,G,EAGFmsB,QAAQgxD,GACU1sF,EAAE0sF,GACV5lF,IAAI,gBACd,GAIF,SAASkmF,GAAWN,GAClB,MACMH,EAAUvsF,EAAE0sF,GAAQ7kF,GAAG,GAC7B,GAAuB,IAAnB0kF,EAAQtxF,OAAc,OAG1B,MAAMsU,EAAO,GAGP09E,EAAY,CAAC,SAAU,QAAS,SAAU,QAC1CC,EAAY,GAyClB,OAxCAX,EAAQ/8C,KAAK,2BAA2B1qC,MAAMqoF,IAC5C,MAAMC,EAAWptF,EAAEmtF,GACnB,GAAIC,EAASltD,SAAS,sBAAwBktD,EAASltD,SAAS,iBAC9D,OAEF,MAAM/+B,EAAOisF,EAASllF,KAAK,QACrBi/B,EAAOimD,EAASllF,KAAK,QACrBq0B,EAAM4wD,EAAQ3xF,SAAS4M,cAC7B,KAAI6kF,EAAU5sF,QAAQ8mC,IAAS,MAC3B+lD,EAAU7sF,QAAQc,IAAS,IAAMA,EACrC,GAAY,WAARo7B,GAAoB6wD,EAASznF,KAAK,YACpCunF,EAAUvtF,KAAKwB,GACfoO,EAAKpO,GAAQ,GACborF,EAAQ/8C,KAAM,gBAAeruC,cAAiB2D,MAAMrF,IAC9CA,EAAGqQ,UAAUP,EAAKpO,GAAMxB,KAAKF,EAAGL,MAAM,SAG5C,OAAQ+nC,GACN,IAAK,WACH+lD,EAAUvtF,KAAKwB,GACfoO,EAAKpO,GAAQ,GACborF,EAAQ/8C,KAAM,eAAcruC,OAAU2D,MAAMrF,IACtCA,EAAG4tF,SAAS99E,EAAKpO,GAAMxB,KAAKF,EAAGL,MAAM,IAE3C,MACF,IAAK,QACH8tF,EAAUvtF,KAAKwB,GACforF,EAAQ/8C,KAAM,eAAcruC,OAAU2D,MAAMrF,IACtCA,EAAG4tF,UAAS99E,EAAKpO,GAAQ1B,EAAGL,MAAK,IAEvC,MACF,QACEmQ,EAAKpO,GAAQisF,EAASr9E,MAG5B,IAEFw8E,EAAQ/qF,QAAQ,cAAe+N,GA/CnB5R,KAgDRs7B,KAAK,aAAcszD,EAAQ,GAAIh9E,GAE5BA,CACT,CACA,SAAS+9E,GAAaZ,EAAQa,GAC5B,MAAMhyD,EAAM59B,KACN4uF,EAAUvsF,EAAE0sF,GAAQ7kF,GAAG,GAC7B,IAAK0kF,EAAQtxF,OAAQ,OAErB,IAAIsU,EAAOg+E,EACX,MAAMjB,EAASC,EAAQrkF,KAAK,MAM5B,IAJKqH,GAAQ+8E,IACX/8E,EAAOgsB,EAAI8wD,KAAKO,YAAYN,KAGzB/8E,EAAM,OAGX,MAAM09E,EAAY,CAAC,SAAU,QAAS,SAAU,QAC1CC,EAAY,GAElBX,EAAQ/8C,KAAK,2BAA2B1qC,MAAMqoF,IAC5C,MAAMC,EAAWptF,EAAEmtF,GACnB,GAAIC,EAASltD,SAAS,sBAAwBktD,EAASltD,SAAS,iBAC9D,OAEF,MAAM/+B,EAAOisF,EAASllF,KAAK,QACrBi/B,EAAOimD,EAASllF,KAAK,QACrBq0B,EAAM4wD,EAAQ3xF,SAAS4M,cAC7B,QAA0B,IAAfmH,EAAKpO,IAAwC,OAAfoO,EAAKpO,MAC1C8rF,EAAU5sF,QAAQ8mC,IAAS,MAC3B+lD,EAAU7sF,QAAQc,IAAS,IAAMA,EAArC,CACA,GAAY,WAARo7B,GAAoB6wD,EAASznF,KAAK,YACpCunF,EAAUvtF,KAAKwB,GACforF,EAAQ/8C,KAAM,gBAAeruC,cAAiB2D,MAAMrF,IAClD,MAAM+tF,EAAW/tF,EACb8P,EAAKpO,GAAMd,QAAQZ,EAAGL,QAAU,EAAGouF,EAAS19E,UAAW,EACtD09E,EAAS19E,UAAW,CAAK,SAGhC,OAAQq3B,GACN,IAAK,WACH+lD,EAAUvtF,KAAKwB,GACforF,EAAQ/8C,KAAM,eAAcruC,OAAU2D,MAAMrF,IAC1C,MAAMguF,EAAahuF,EACf8P,EAAKpO,GAAMd,QAAQZ,EAAGL,QAAU,EAAGquF,EAAWJ,SAAU,EACvDI,EAAWJ,SAAU,CAAK,IAEjC,MACF,IAAK,QACHH,EAAUvtF,KAAKwB,GACforF,EAAQ/8C,KAAM,eAAcruC,OAAU2D,MAAMrF,IAC1C,MAAMiuF,EAAUjuF,EACZ8P,EAAKpO,KAAU1B,EAAGL,MAAOsuF,EAAQL,SAAU,EAC1CK,EAAQL,SAAU,CAAK,IAE9B,MACF,QACED,EAASr9E,IAAIR,EAAKpO,IAIZ,WAARo7B,GAA4B,UAARA,GAA2B,aAARA,GACzC6wD,EAAS5rF,QAAQ,SAAU,WAhCc,CAiC3C,IAEF+qF,EAAQ/qF,QAAQ,gBAAiB+N,GACjCgsB,EAAItC,KAAK,eAAgBszD,EAAQ,GAAIh9E,EACvC,CAEA,SAASo+E,KACP,MAAMpyD,EAAM59B,KACNe,EAASF,IACTvB,EAAWF,IAyDjBiD,EAAE/C,GAAUwE,GACV,gBACA,yDAzDF,SAAwBoF,EAAG+mF,GACzB,MAAMrB,EAAUvsF,EAAErC,MAClB,GAAe,WAAXkJ,EAAEsgC,OAAsBolD,EAAQrsD,SAAS,6BAA8B,OAG3E,GAFe,WAAXr5B,EAAEsgC,MAAmBtgC,EAAE+/B,iBAEZ,WAAX//B,EAAEsgC,MAAkC,aAAbymD,EAAyB,OAEpD,MAAM/0D,GAAU0zD,EAAQrkF,KAAK,WAAa,OAAOK,cAC3CslF,EAActB,EAAQrkF,KAAK,YAAcqkF,EAAQ5mF,KAAK,WAE5D,IAGI4J,EAHA2gB,EAAMq8D,EAAQrkF,KAAK,UAClBgoB,IAGU,SAAX2I,EAEgB,sCAAhBg1D,GACgB,qBAAhBA,GAEAt+E,EAAOgsB,EAAI8wD,KAAKS,cAAcP,EAAQ,IAClB,qBAAhBsB,IACFt+E,EAAOmzC,KAAKC,UAAUpzC,KAGxBA,EAAO,IAAI7Q,EAAO0tF,SAASG,EAAQ,KAGrCh9E,EAAO6hB,GAAgBmK,EAAI8wD,KAAKS,cAAcP,EAAQ,KAClDr8D,EAAIf,SAAS,KACfe,GAAQ,IAAG3gB,IAEX2gB,GAAQ,IAAG3gB,KAIfg9E,EAAQ/qF,QAAQ,sBAAuB,CAAE+N,SACzCgsB,EAAItC,KAAK,qBAAsBszD,EAAQ,GAAIh9E,GAE3C6xB,MAAMlR,EAAK,CACT2I,SACAi1D,QAAS,CAAE,eAAgBD,GAAe,wCAC3B,SAAXh1D,GAAgC,QAAXA,EAAmB,CAAE19B,KAAMoU,GAAS,KAE5D8xB,MAAM0sD,IACLxB,EAAQ/qF,QAAQ,oBAAqB,CAAE+N,OAAMw+E,aAC7CxyD,EAAItC,KAAK,mBAAoBszD,EAAQ,GAAIh9E,EAAMw+E,GAE/CxB,EAAQ/qF,QAAQ,mBAAoB,CAAE+N,OAAMw+E,aAC5CxyD,EAAItC,KAAK,kBAAmBszD,EAAQ,GAAIh9E,EAAMw+E,EAAS,IAExDtsD,OAAO/X,IACN6iE,EAAQ/qF,QAAQ,iBAAkB,CAAE+N,OAAMma,UAC1C6R,EAAItC,KAAK,gBAAiBszD,EAAQ,GAAIh9E,EAAMma,EAAM,IAExD,GAMF,CAEA,IAAAskE,GAAe,CACb7sF,KAAM,OACNs5B,SACE,MAAMc,EAAM59B,KACZhD,GAAO4gC,EAAK,CACV8wD,KAAM,CACJ98E,KAAM,GACNw9E,cAAeX,GAASluD,MAAM7J,KAAKkH,GACnCqxD,YAAaR,GAASltF,IAAIm1B,KAAKkH,GAC/B0yD,eAAgB7B,GAAS5jF,OAAO6rB,KAAKkH,GACrCuxD,cAAeE,GAAW34D,KAAKkH,GAC/BsxD,aAAcS,GAAaj5D,KAAKkH,GAChC2yD,QAAS,CACPlxD,KAAMyvD,GAAYzvD,KAAK3I,KAAKkH,GAC5BG,QAAS+wD,GAAY/wD,QAAQrH,KAAKkH,M,EAK1C95B,GAAI,CACFu7B,OAEE2wD,GAAa5tF,KADDpC,K,EAGdumF,gBAAgBtmC,GACd,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,oBACL1qC,MAAM4nF,IACLnxD,EAAI8wD,KAAK6B,QAAQxyD,QAAQgxD,EAAO,G,EAGtCtV,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,oBACL1qC,MAAM4nF,IACLnxD,EAAI8wD,KAAK6B,QAAQlxD,KAAK0vD,EAAO,G,EAGnC7mB,iBAAiB/jB,GACf,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,oBAAoB1qC,MAAM4nF,IACtCnxD,EAAI8wD,KAAK6B,QAAQxyD,QAAQgxD,EAAO,G,EAGpC1mB,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,oBAAoB1qC,MAAM4nF,IACtCnxD,EAAI8wD,KAAK6B,QAAQlxD,KAAK0vD,EAAO,GAEjC,ICnUJ,MAAMyB,GAAQ,CACZC,YAAa,CAAC,WAAY,SAAU,SAAU,QAAS,QAAS,SAChEC,gCACE,MAAMpxF,EAAWF,IACXuxF,EAAYtuF,EAAE/C,EAASnB,cAAc,aAC3CwyF,EAAUruD,SAAS,6BACnBquD,EAAU3oF,KAAK,CACbssE,UAAU,EACVsc,UAAU,IAEZJ,GAAMK,wBAA0BF,C,EAElCE,6BAAyBvnF,EACzBwnF,eAAeC,GACb,MAAMnzD,EAAM59B,KACNe,EAASF,IACTmwF,EAAc3uF,EAAE0uF,GACjBP,GAAMK,yBACTL,GAAME,gCAER,MAAMC,EAAYH,GAAMK,wBACxB,IAAKG,EAAY1zF,OAAQ,OACzB,IAAK0zF,EAAYzuD,SAAS,aAAc,OACe,IAAnDiuD,GAAMK,wBAAwB5mF,UAAU3M,QAC1CsgC,EAAIE,IAAIn0B,OAAOgnF,GAGjB,MAAMzhF,EAASnO,EAAOd,iBAAiB+wF,EAAY,IACnD,8OACG1tF,MAAM,KACNlG,SAASkB,IACR,IAAI2yF,EAAa/hF,EAAO5Q,GACpB,6CAA6CgF,MAAM,KAAKZ,QAAQpE,IAAU,IAC5E2yF,EAAaA,EAAWhpF,QAAQ,IAAK,MAEvC0oF,EAAUjlF,IAAIpN,EAAO2yF,EAAW,IAEpC,MAAMC,EAAgBF,EAAY,GAAGG,aAErCR,EAAUv+E,IAAI,IACd,MAAMg/E,EAAgBT,EAAU,GAAGjgF,aAEnCigF,EAAUv+E,IAAI4+E,EAAY5+E,OAC1Bu+E,EAAUjlF,IAAI,SAAU,GACxB,MAAMgF,EAAeigF,EAAU,GAAGjgF,aAE9BwgF,IAAkBxgF,IAChBA,EAAe0gF,EACjBJ,EAAYtlF,IAAI,SAAW,GAAEgF,OACpBA,EAAewgF,GACxBF,EAAYtlF,IAAI,SAAU,KAExBgF,EAAe0gF,GAAiB1gF,EAAewgF,KACjDF,EAAYntF,QAAQ,kBAAmB,CAAEutF,gBAAeF,gBAAexgF,iBACvEktB,EAAItC,KAAK,iBAAkB,CAAE81D,gBAAeF,gBAAexgF,kB,EAIjEs7B,SAASwjD,GACP,MAAMC,EAAWptF,EAAEmtF,GACnB,IAAKC,EAASnyF,OAAQ,OAAO,EAC7B,MAAM+zF,EAAe5B,EAASxlF,QAAQ,eAChCqnF,EAAe7B,EAASxlF,QAAQ,UAMtC,SAASsnF,IACH9B,EAAS,GAAG+B,qBACd/B,EAAS,GAAGgC,UAAW,EAE3B,CARMhC,EAAS,GAAG+B,qBACd/B,EAAS,GAAGgC,UAAW,GAS3B,MAAMC,EAAWjC,EAAS,GAAGiC,SACvBC,EACJlC,EAASplF,UAAUunF,cAAgBnC,EAAS,GAAGkC,mBAAqB,GACtE,IAAKD,EAEH,OADAH,KACO,EAET,IAAKG,EAASG,MAAO,CACnB,IAAIC,EAAWrC,EAAS3+E,QAAQ,mDAoBhC,OAnBI6gF,IACsB,IAApBG,EAASx0F,SACXw0F,EAAWzvF,EACR,eACCivF,EAAah0F,OAAS,sBAAwB,sCAGlDw0F,EAAShkB,YAAY2hB,IAEvBqC,EAAS9gF,KAAK2gF,IAEZG,EAASx0F,OAAS,IACpB+zF,EAAa/uD,SAAS,iCACtBgvD,EAAahvD,SAAS,6BAExB+uD,EAAa/uD,SAAS,sBACtBgvD,EAAahvD,SAAS,iBACtBmtD,EAASntD,SAAS,iBAClBivD,KACO,CACT,CAKA,OAJAF,EAAa7uD,YAAY,oDACzB8uD,EAAa9uD,YAAY,0CACzBitD,EAASjtD,YAAY,iBACrB+uD,KACO,C,EAETQ,eAAejwF,GACb,MAAM87B,EAAM59B,KAIZ,OAHkBqC,EAAEP,GACjB+vC,KAAK,2BACL/rC,KAAK0pF,GAAY5xD,EAAI9qB,MAAMk5B,SAASwjD,KACtB9sF,SAAQ,GAAS,C,EAEpCsB,MAAMwrF,GACJ,MAAMC,EAAWptF,EAAEmtF,GACbhmD,EAAOimD,EAASllF,KAAK,QACvBimF,GAAMC,YAAY/tF,QAAQ8mC,IAAS,IACvCimD,EAASxlF,QAAQ,eAAeq4B,SAAS,sBACzCmtD,EAASxlF,QAAQ,UAAUq4B,SAAS,iBACpCmtD,EAASntD,SAAS,iB,EAEpB1kC,KAAK4xF,GACH,MAAMC,EAAWptF,EAAEmtF,GACnBC,EAASxlF,QAAQ,eAAeu4B,YAAY,sBAC5CitD,EAASxlF,QAAQ,UAAUu4B,YAAY,iBACvCitD,EAASjtD,YAAY,gB,EAEvBwvD,gBAAgBxC,GACd,MAAM5xD,EAAM59B,KACZ,IAAIyvF,EAAWptF,EAAEmtF,GAIjB,GAHKC,EAAS1lF,GAAG,4DACf0lF,EAAWA,EAAS59C,KAAK,0DAA0D3nC,GAAG,KAEnFulF,EAASnyF,OAAQ,OAEtB,IAAImE,EAEoDA,EAH9BguF,EAAS,GAAGwC,aAAa,mBAG7CxC,EAAS59C,KAAK,4BAA4Bv0C,OAAgB,GACjDmyF,EAASjtF,OAEditF,EAASr9E,MAEnB,MAAMi/E,EAAe5B,EAASxlF,QAAQ,eAChCqnF,EAAe7B,EAASxlF,QAAQ,UAEnCxI,GAA0B,iBAAVA,GAAuC,KAAjBA,EAAMgB,QAC5CxB,MAAMc,QAAQN,IAAUA,EAAMnE,OAAS,GAExC+zF,EAAa/uD,SAAS,yBACtBgvD,EAAahvD,SAAS,oBACtBmtD,EAASntD,SAAS,oBAClBmtD,EAAS5rF,QAAQ,kBACjB+5B,EAAItC,KAAK,gBAAiBm0D,EAAS,MAEnC4B,EAAa7uD,YAAY,yBACzB8uD,EAAa9uD,YAAY,oBACzBitD,EAASjtD,YAAY,oBACrBitD,EAAS5rF,QAAQ,eACjB+5B,EAAItC,KAAK,aAAcm0D,EAAS,I,EAGpCyC,eAAe1C,EAASjpF,EAAc4rF,EAAUn1C,QAAhB,IAARz2C,MAAW,GACjC,MAAMkpF,EAAWptF,EAAEmtF,GACb4C,EAAgB3C,EACnBxlF,QAAQ,yDACRC,GAAG,GACN,IAAKkoF,EAAc90F,OACjB,OAAO,EAET,MAAM+0F,EAAgBD,EAAc,GAAGjjF,aACjCmjF,EAAmBF,EAAc,GAAGvkF,UACpC0kF,EAAoBriE,SAASkiE,EAAc1mF,IAAI,eAAgB,IAC/D8mF,EAAuBtiE,SAASkiE,EAAc1mF,IAAI,kBAAmB,IACrE+mF,EAAmBL,EAAcztD,SAAS12B,IAAMqkF,EAEhDI,EAAiBjD,EAAS9qD,SAAS12B,IAAMwkF,EAGzC3pF,EAAM4pF,EAAiBJ,EAAmBC,EAC1C1pF,EACJ6pF,EAAiBJ,EAAmBD,EAAgBG,EAJlC/C,EAAS,GAAGtgF,aAK1BwjF,EAAmB7pF,GAAOD,EAAMC,GAAO,EAE7C,OAAIwpF,EAAmBxpF,GACrBspF,EAAcvkF,UAAUskF,EAAWQ,EAAmB7pF,EAAKvC,IACpD,GAEL+rF,EAAmBzpF,GACrBupF,EAAcvkF,UAAUskF,EAAWQ,EAAmB9pF,EAAKtC,IACpD,IAELy2C,GACFo1C,EAAcvkF,UAAUskF,EAAWQ,EAAmB9pF,EAAKtC,IAEtD,E,EAET84B,OACE,MAAMzB,EAAM59B,KACN64B,EAASN,KACTx3B,EAASF,IACTvB,EAAWF,IACjBoxF,GAAME,gCAsFNruF,EAAE/C,GAAUwE,GAAG,QAAS,uBAVxB,WACE,MACM2rF,EADWptF,EAAErC,MACOklF,SAAS,mBAAmBh7E,GAAG,GACnD0oF,EAAgBnD,EAASr9E,MAC/Bq9E,EAASr9E,IAAI,IAAIvO,QAAQ,gBAAgBG,QAAQH,QAAQ,cAAe+uF,GACxEh1D,EAAItC,KAAK,aAAcs3D,EACzB,IAKAvwF,EAAE/C,GAAUwE,GAAG,YAAa,uBAJ5B,SAAwBoF,GACtBA,EAAE+/B,gBACJ,IAGA5mC,EAAE/C,GAAUwE,GACV,eACA,0DAhDF,WACE,MAAM2rF,EAAWptF,EAAErC,MACbwpC,EAAOimD,EAASllF,KAAK,QACrBq0B,EAAM6wD,EAAS,GAAG5xF,SAAS4M,cAC3BooF,EAAoBpD,EAAS,GAAGwC,aAAa,mBAC/CzB,GAAMC,YAAY/tF,QAAQ8mC,IAAS,IAGvC5L,EAAI9qB,MAAMk/E,gBAAgBvC,GACtBoD,IAIyC,OAA3CpD,EAASllF,KAAK,2BACbklF,EAASplF,UAAU2hC,UAA0C,OAA9ByjD,EAASllF,KAAK,aAE9CqzB,EAAI9qB,MAAMk5B,SAASyjD,GAIT,aAAR7wD,GAAsB6wD,EAASltD,SAAS,cAC1C3E,EAAI9qB,MAAMg+E,eAAerB,IAE7B,IA2BE,GAEFptF,EAAE/C,GAAUwE,GACV,QACA,0DA/FF,WACE,MAAM0rF,EAAUxvF,KACZ49B,EAAIt3B,OAAOwM,MAAMggF,wBACfj6D,EAAOC,QACTz2B,EAAEtB,GAAQo6B,KAAK,UAAU,KACnB77B,GAAYA,EAAS3B,gBAAkB6xF,GACzC5xD,EAAI9qB,MAAMo/E,eACR1C,EACA5xD,EAAIt3B,OAAOwM,MAAMigF,uBACjBn1D,EAAIt3B,OAAOwM,MAAMkgF,uBACjBp1D,EAAIt3B,OAAOwM,MAAMmgF,qBAErB,IAGFr1D,EAAI9qB,MAAMo/E,eACR1C,EACA5xD,EAAIt3B,OAAOwM,MAAMigF,uBACjBn1D,EAAIt3B,OAAOwM,MAAMkgF,uBACjBp1D,EAAIt3B,OAAOwM,MAAMmgF,uBAIvBr1D,EAAI9qB,MAAM9O,MAAMwrF,EAClB,IAyEE,GAEFntF,EAAE/C,GAAUwE,GAAG,OAAQ,0DA1EvB,WACE,MAAM2rF,EAAWptF,EAAErC,MACb4+B,EAAM6wD,EAAS,GAAG5xF,SAAS4M,cACjCmzB,EAAI9qB,MAAMlV,KAAK6xF,IAEbA,EAASplF,UAAU2hC,UACW,OAA9ByjD,EAASllF,KAAK,aAC6B,OAA3CklF,EAASllF,KAAK,2BAEdqzB,EAAI9qB,MAAMk5B,SAASyjD,GAGT,aAAR7wD,GAAsB6wD,EAASltD,SAAS,cACtCiuD,GAAMK,yBAAyBL,GAAMK,wBAAwBhmF,QAErE,IA2DyF,GACzFxI,EAAE/C,GAAUwE,GAAG,UAAW,2BAnC1B,SAAmBoF,GACjB,MAAMumF,EAAWptF,EAAErC,MAE0B,OAA3CyvF,EAASllF,KAAK,2BACbklF,EAASplF,UAAU2hC,UAA0C,OAA9ByjD,EAASllF,KAAK,cAE9CrB,EAAE+/B,iBACFrL,EAAI9qB,MAAMk5B,SAASyjD,GAEvB,IA0BgE,EAClE,GAGF,IAAAyD,GAAe,CACb1vF,KAAM,QACN8C,OAAQ,CACNwM,MAAO,CACLggF,2BAAuBxpF,EACvB0pF,wBAAwB,EACxBD,uBAAwB,EACxBE,sBAAsB,IAG1Bn2D,SACE,MAAMc,EAAM59B,UAC0C,IAA3C49B,EAAIt3B,OAAOwM,MAAMggF,wBAC1Bl1D,EAAIt3B,OAAOwM,MAAMggF,sBAAwBv6D,KAAYO,SAEvDvC,GAAYqH,EAAK,CACf9qB,MAAO09E,I,EAGX1sF,GAAI,CACFu7B,OACcr/B,KACR8S,MAAMusB,M,EAEZo6C,WAAWx5B,GACT,MAAMriB,EAAM59B,KACN4hD,EAASv/C,EAAE49C,GACjB2B,EAAO/P,KAAK,uBAAuB1qC,MAAMgsF,IAClB9wF,EAAE8wF,GACVthD,KAAK,8CAA8C1qC,MAAMqoF,IACpE,MAAMC,EAAWptF,EAAEmtF,GACfgB,GAAMC,YAAY/tF,QAAQ+sF,EAASllF,KAAK,UAAY,GACxDqzB,EAAI9qB,MAAMk/E,gBAAgBvC,EAAS,GACnC,IAEJ7tC,EAAO/P,KAAK,sBAAsB1qC,MAAM4pF,IACtCnzD,EAAI9qB,MAAMg+E,eAAeC,EAAW,G,EAGxC1oB,SAASlkB,GACP,MAAMvmB,EAAM59B,KACN+jD,EAAUI,EAAKrmB,IACrBimB,EAAQlS,KAAK,uBAAuB1qC,MAAMgsF,IACnB9wF,EAAE8wF,GACVthD,KAAK,8CAA8C1qC,MAAMqoF,IACpE,MAAMC,EAAWptF,EAAEmtF,GACfgB,GAAMC,YAAY/tF,QAAQ+sF,EAASllF,KAAK,UAAY,GACxDqzB,EAAI9qB,MAAMk/E,gBAAgBvC,EAAS,GACnC,IAEJ1rC,EAAQlS,KAAK,sBAAsB1qC,MAAM4pF,IACvCnzD,EAAI9qB,MAAMg+E,eAAeC,EAAW,G,EAGxC,kHACE,SAAqBv6D,GACnB,MAAMoH,EAAM59B,KACRw2B,GAAYA,EAASsH,IACvBtH,EAASsH,IAAI+T,KAAK,sBAAsB1qC,MAAM4pF,IAC5CnzD,EAAI9qB,MAAMg+E,eAAeC,EAAW,IAGtC1uF,EAAE,sBAAsB8E,MAAM4pF,IAC5BnzD,EAAI9qB,MAAMg+E,eAAeC,EAAW,GAG1C,I,OCxXN,cAAqBn1D,GACnB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IACf,MAAMzsB,EAASnR,KACTu3B,EAAUE,KAEVwH,EAAW,GAGjB9tB,EAAO+qB,iBAAiB+C,GAExB9tB,EAAO7K,OAAStJ,GAAOiiC,EAAU34B,GAEjC,MAAMxE,EAAKqP,EAAO7K,OAAOxE,GACzB,IAAKA,EAAI,OAAOqP,EAEhB,MAAM2sB,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OAAO6T,EAE7B,GAAI2sB,EAAI,GAAGs1D,SAAU,OAAOt1D,EAAI,GAAGs1D,SAEnC,MAAM3D,EAAW3xD,EAAI1/B,SAAS,0BA+B9B,IAAIuxC,EA7BJ3yC,GAAOmU,EAAQ,CACbysB,MACAE,MACAh8B,GAAIg8B,EAAI,GACR2xD,WACAD,QAASC,EAAS,GAClBnb,SACEx2C,EAAIyE,SAAS,aACbktD,EAASltD,SAAS,aAClBktD,EAASllF,KAAK,aACdklF,EAAS,GAAGnb,WAGhBv3E,OAAOuE,eAAe6P,EAAQ,UAAW,CACvCujB,YAAY,EACZspB,cAAc,EACdx8C,IAAIkuF,GACGv+E,QAAqC,IAApBA,EAAOs+E,UACzBt+E,EAAOu+E,UAAYA,IACvBD,EAAS,GAAGC,QAAUA,EACtBv+E,EAAOs+E,SAAS5rF,QAAQ,U,EAE1BtC,IAAGA,IACMkuF,EAAS,GAAGC,UAIvB5xD,EAAI,GAAGs1D,SAAWjiF,EAGlB,MAAMy+B,EAAe,GACrB,IAAIlJ,EACAoJ,EACAujD,EACAtjD,EACAujD,EACJ,SAASjiD,EAAiBnoC,GACpBymC,GAAax+B,EAAOmjE,WACxB1kC,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACxEwG,EAAc,EAEdH,GAAY,EACZjJ,OAAcp9B,EACdymC,EAAiB1d,KACjBihE,EAAoBniF,EAAOu+E,QAE3B2D,EAAcv1D,EAAI,GAAG1uB,YACrB8iB,IAAS,KACHyd,GACF7R,EAAIwE,SAAS,sBACf,IAEJ,CACA,SAASmP,EAAgBvoC,GACvB,IAAKymC,GAAax+B,EAAOmjE,SAAU,OACnC,MAAMjrC,EAAmB,cAAXngC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC9DC,EAAmB,cAAXpgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MAC9DyI,EAAWnU,EAAIuD,KAAO,EAAI,EAOhC,QAL2B,IAAhBuF,IACTA,KACEA,GAAe5/B,KAAK+R,IAAIywB,EAAQsG,EAAah7B,GAAK9N,KAAK+R,IAAIwwB,EAAQuG,EAAav3B,KAGhFquB,EAEF,YADAiJ,GAAY,GAOd,IAAI4jD,EAJJrqF,EAAE+/B,iBAEF6G,EAAczG,EAAQuG,EAAav3B,EAIjCy3B,EAAciC,EAAW,GACzBjrC,KAAK+R,IAAIi3B,GAAeujD,EAAc,GACtCC,IAEAC,GAAU,GAGVzjD,EAAciC,EAAW,GACzBjrC,KAAK+R,IAAIi3B,GAAeujD,EAAc,IACrCC,IAEDC,GAAU,GAERA,IACF3jD,EAAav3B,EAAIgxB,EACjBl4B,EAAOu+E,SAAW4D,EAClBA,GAAqBA,EAEzB,CACA,SAAS1+C,IACP,IAAKjF,GAAax+B,EAAOmjE,SAGvB,OAFI5tC,GAAa5I,EAAI0E,YAAY,4BACjCmN,GAAY,GAGd,MAAMoC,EAAWnU,EAAIuD,KAAO,EAAI,EAKhC,IAAIoyD,EAJJ5jD,GAAY,EAEZ7R,EAAI0E,YAAY,uBAGZnQ,KAAQ0d,EAAiB,MACvBD,EAAciC,EAAW,GAAKuhD,IAChCC,GAAU,GAERzjD,EAAciC,EAAW,IAAMuhD,IACjCC,GAAU,GAERA,IACFpiF,EAAOu+E,SAAW4D,GAGxB,CACA,SAASE,IACPriF,EAAO2sB,IAAIj6B,QAAQ,iBACnBsN,EAAOmqB,KAAK,6BAA8BnqB,EAC5C,CACAA,EAAO2kC,aAAe,WACpB,MAAMtN,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACrD1K,EAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GAChD5K,EAAI95B,GAAG,YAAa2tC,GACpB7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BzjC,EAAOs+E,SAAS3rF,GAAG,SAAU0vF,E,EAE/BriF,EAAO4rD,aAAe,WACpB,MAAMv0B,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACrD1K,EAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GACjD5K,EAAIz0B,IAAI,YAAasoC,GACrB7T,EAAIz0B,IAAI,mBAAoByrC,GAC5BzjC,EAAOs+E,SAAStmF,IAAI,SAAUqqF,E,EAIhCriF,EAAO4rB,aAGP5rB,EAAOkuB,MACT,CAEAluB,SACiBnR,KACR0vF,SADQ1vF,KACU0vF,OAC3B,CAEArwD,OACiBr/B,KACR81C,cACT,CAEA/X,UACE,IAAI5sB,EAASnR,KACbmR,EAAO2sB,IAAIj6B,QAAQ,wBACnBsN,EAAOmqB,KAAK,2CAA4CnqB,UACjDA,EAAO2sB,IAAI,GAAGs1D,SACrBjiF,EAAO4rD,eACP/qC,GAAY7gB,GACZA,EAAS,IACX,GC1LF,IAAAsiF,GAAe,CACbjwF,KAAM,SACNs5B,SACc98B,KACRmR,OAASosB,GAAmB,CAC9BE,gBAAiB,UACjB3gC,YAAa22F,GACb71D,IAJU59B,KAKV29B,QAAS,Y,EAGbN,OAAQ,CACNo2D,WAEF3vF,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,gBACL1qC,MAAMusF,GAAa91D,EAAIzsB,OAAO2rB,OAAO,CAAEh7B,GAAI4xF,K,EAEhDnN,gBAAgBtmC,GACd59C,EAAE49C,GACCpO,KAAK,gBACL1qC,MAAMusF,IACDA,EAASN,UAAUM,EAASN,SAASr1D,SAAS,G,EAGxDsqC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,gBAAgB1qC,MAAMusF,GAAa91D,EAAIzsB,OAAO2rB,OAAO,CAAEh7B,GAAI4xF,K,EAE3ExrB,iBAAiB/jB,GACfA,EAAKrmB,IAAI+T,KAAK,gBAAgB1qC,MAAMusF,IAC9BA,EAASN,UAAUM,EAASN,SAASr1D,SAAS,GAEtD,GAEFrB,MAAO,CACL,cAAe,CACb+0B,OAAO/0B,GACL,MACMg3D,EAAWh3D,EAAM4zB,IADXtwD,KAERmR,OAAO2rB,OAAO,CAAEh7B,GAAI4xF,G,EAE1B31D,QAAQrB,GACN,MAAMg3D,EAAWh3D,EAAM4zB,IACnBojC,EAASN,UAAUM,EAASN,SAASr1D,SAC3C,K,OC/CN,cAAoBnC,GAClB9+B,YAAY8gC,EAAKt3B,GACfnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAM+1D,EAAQ3zF,KACRu3B,EAAUE,KAEVwH,EAAW,CACfn9B,GAAI,KACJ0tF,QAAS,KACToE,MAAM,EACNC,KAAM,EACNzf,OAAO,EACPtrE,IAAK,EACLD,IAAK,IACLpH,MAAO,EACPqyF,cAAc,EACdC,UAAU,EACVC,kBAAkB,EAClBC,YAAa,KACb5pB,OAAO,EACP6pB,WAAY,EACZC,cAAe,EACfC,iBAAkB,KAClBC,kBAAiC,QAAdz2D,EAAIxM,OAIzBuiE,EAAMz3D,iBAAiB+C,GAEvB00D,EAAMrtF,OAAStJ,GAAOiiC,EAAU34B,GAEhC,MAAMxE,EAAK6xF,EAAMrtF,OAAOxE,GACxB,IAAKA,EAAI,OAAO6xF,EAEhB,MAAM71D,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OAAOq2F,EAE7B,GAAI71D,EAAI,GAAGw2D,QAAS,OAAOx2D,EAAI,GAAGw2D,QAElC,MAAMjqF,EAAUyzB,EAAIzzB,UAoBpB,IAAIolF,EAlBJ,8CAA8CnsF,MAAM,KAAKlG,SAAS0+C,SAC/B,IAAtBx1C,EAAOw1C,SAA4D,IAAvBzxC,EAAQyxC,KAC7D63C,EAAMrtF,OAAOw1C,GAAa5zC,WAAWmC,EAAQyxC,IAC/C,IAEF,6CAA6Cx4C,MAAM,KAAKlG,SAAS0+C,SAC9B,IAAtBx1C,EAAOw1C,SAA4D,IAAvBzxC,EAAQyxC,KAC7D63C,EAAMrtF,OAAOw1C,GAAazxC,EAAQyxC,GACpC,IAGG63C,EAAMrtF,OAAO7E,aACa,IAAlB4I,EAAQ5I,QAAuBkyF,EAAMrtF,OAAO7E,MAAQ4I,EAAQ5I,YACtC,IAAtB4I,EAAQkqF,gBAA2D,IAAvBlqF,EAAQmqF,aAC7Db,EAAMrtF,OAAO7E,MAAQ,CAACyG,WAAWmC,EAAQkqF,WAAYrsF,WAAWmC,EAAQmqF,eAKvEb,EAAMrtF,OAAOstF,OACZD,EAAMrtF,OAAOkpF,QACfC,EAAWptF,EAAEsxF,EAAMrtF,OAAOkpF,SACjB1xD,EAAI+T,KAAK,uBAAuBv0C,SACzCmyF,EAAW3xD,EAAI+T,KAAK,uBAAuB3nC,GAAG,KAIlD,MAAM0pF,KACJA,EAAIC,KACJA,EAAIzf,MACJA,EAAKtrE,IACLA,EAAGD,IACHA,EAAGpH,MACHA,EAAKsyF,SACLA,EAAQC,iBACRA,EAAgB3pB,MAChBA,EAAK6pB,WACLA,EAAUC,cACVA,EAAaE,kBACbA,GACEV,EAAMrtF,OAEVtJ,GAAO22F,EAAO,CACZ/1D,MACAE,MACAh8B,GAAIg8B,EAAI,GACR2xD,WACAD,QAASC,EAAWA,EAAS,QAAKnmF,EAClCsqF,OACAC,OACAzf,QACAtrE,MACAD,MACApH,QACAmxF,cAAenxF,EACfsyF,WACAC,mBACA3pB,QACA6pB,aACAC,gBACAE,sBAGE5E,IACF,eAAensF,MAAM,KAAKlG,SAAS0+C,KAC5Bx1C,EAAOw1C,IAAc2zC,EAASllF,KAAKuxC,KACtC63C,EAAMrtF,OAAOw1C,GAAa5zC,WAAWunF,EAASllF,KAAKuxC,IACnD63C,EAAM73C,GAAa5zC,WAAWunF,EAASllF,KAAKuxC,IAC9C,SAE4B,IAAnB2zC,EAASr9E,QAClBuhF,EAAMrtF,OAAO7E,MAAQyG,WAAWunF,EAASr9E,OACzCuhF,EAAMlyF,MAAQyG,WAAWunF,EAASr9E,SAKlCuhF,EAAMC,MACR91D,EAAIwE,SAAS,qBAEXqxD,EAAMvf,OACRt2C,EAAIwE,SAAS,sBAIXqxD,EAAMI,UACRj2D,EAAIwE,SAAS,yBACTqxD,EAAMK,kBACRl2D,EAAIwE,SAAS,mCAGfxE,EAAIwE,SAAS,2BAIf,MAAMmyD,EAASpyF,EAAE,iCACXqyF,EAAeryF,EAAE,wCACvBoyF,EAAO9qF,OAAO+qF,GAId,MAAMC,EAAY,0FAGZhB,EAAMvf,MAAQ,uCAAyC,yBAGvDwgB,EAAQ,CAACvyF,EAAEsyF,IAEbhB,EAAMC,MACRgB,EAAM5yF,KAAKK,EAAEsyF,IAGf72D,EAAIn0B,OAAO8qF,GACXG,EAAMx3F,SAASy3F,IACb/2D,EAAIn0B,OAAOkrF,EAAQ,IAIrB,MAAMC,EAAS,GASf,IAAIC,EAqBAplD,EA7BAgkD,EAAMvf,QACR0gB,EAAO9yF,KAAK4yF,EAAM,GAAG/iD,KAAK,sBACtB8hD,EAAMC,MACRkB,EAAO9yF,KAAK4yF,EAAM,GAAG/iD,KAAK,uBAM1B8hD,EAAMtpB,OAASspB,EAAMO,YAAc,IACrCa,EAAW1yF,EAAG,kDAERsxF,EAAMqB,yCAGZl3D,EAAIn0B,OAAOorF,IAGb/3F,GAAO22F,EAAO,CACZiB,QACAE,SACAL,SACAC,eACAK,aAGFj3D,EAAI,GAAGw2D,QAAUX,EAIjB,MAAM/jD,EAAe,GACrB,IAAIlJ,EACAuuD,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAuJAC,EACAC,EACAC,EAxJJ,SAASC,IACPL,GAAsB,CACxB,CACA,SAASjkD,EAAiBnoC,GACxB,GAAIymC,EAAW,OACf,IAAKgkD,EAAMrtF,OAAOwtF,cACkC,IAA9CzxF,EAAE6G,EAAEjM,QAAQ+M,QAAQ,eAAe1M,OACrC,OAgBJ,IAAIuJ,EAbJyuF,GAAsB,EACtB1lD,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACzD,eAAXpgC,EAAEsgC,OACJ+rD,EAAwBrsF,EAAEigC,cAAc,GAAGysD,YAG7CjmD,GAAY,EACZjJ,OAAcp9B,EACd2rF,EAAcn3D,EAAI6G,SAClBuwD,EAAkBD,EAAY/mF,KAC9BinF,EAAiBF,EAAYhnF,IAGzB0lF,EAAMI,UACRltF,GAAY+oC,EAAah7B,EAAIugF,GAAkBxB,EAAMkC,YAChDlC,EAAMK,mBAAkBntF,EAAW,EAAIA,IAE5CA,EADS8sF,EAAM/1D,IAAIuD,KACP+zD,EAAkBvB,EAAMmC,WAAalmD,EAAav3B,GAAKs7E,EAAMmC,YAE7DlmD,EAAav3B,EAAI68E,GAAmBvB,EAAMmC,WAGxD,IAAIC,EAAWlvF,GAAY8sF,EAAM9qF,IAAM8qF,EAAM7qF,KAAO6qF,EAAM7qF,IACtD6qF,EAAMC,KACJ9sF,KAAK+R,IAAI86E,EAAMlyF,MAAM,GAAKs0F,GAAYjvF,KAAK+R,IAAI86E,EAAMlyF,MAAM,GAAKs0F,IAClEV,EAAiB,EACjBD,EAAiBzB,EAAMiB,MAAM,GAC7BmB,EAAW,CAACA,EAAUpC,EAAMlyF,MAAM,MAElC4zF,EAAiB,EACjBD,EAAiBzB,EAAMiB,MAAM,GAC7BmB,EAAW,CAACpC,EAAMlyF,MAAM,GAAIs0F,KAG9BX,EAAiBzB,EAAMiB,MAAM,GAC7BmB,EAAWlvF,GAAY8sF,EAAM9qF,IAAM8qF,EAAM7qF,KAAO6qF,EAAM7qF,KAExDopB,IAAS,KACHyd,GAAWylD,EAAe9yD,SAAS,0BAA0B,GAChE,IACHqxD,EAAM7vF,GAAG,SAAU6xF,GACnBhC,EAAMqC,SAASD,GAAU,EAC3B,CACA,SAAStkD,EAAgBvoC,GACvB,IAAKymC,EAAW,OAChB,IAAItG,EACAC,EAyBAziC,EAxBJ,GAAe,cAAXqC,EAAEsgC,KACJ,IAAK,IAAI1mC,EAAI,EAAGA,EAAIoG,EAAEigC,cAAc7rC,OAAQwF,GAAK,EAC3CoG,EAAEigC,cAAcrmC,GAAG8yF,aAAeL,IACpClsD,EAAQngC,EAAEigC,cAAcrmC,GAAGumC,MAC3BC,EAAQpgC,EAAEigC,cAAcrmC,GAAGwmC,YAI/BD,EAAQngC,EAAEmgC,MACVC,EAAQpgC,EAAEogC,MAEZ,QAAqB,IAAVD,QAA0C,IAAVC,EAAuB,OAOlE,QAL2B,IAAhB5C,GAAgCitD,EAAMI,WAC/CrtD,KACEA,GAAe5/B,KAAK+R,IAAIywB,EAAQsG,EAAah7B,GAAK9N,KAAK+R,IAAIwwB,EAAQuG,EAAav3B,KAGhFquB,EAEF,YADAiJ,GAAY,GAGdzmC,EAAE+/B,iBAGE0qD,EAAMI,UACRltF,GAAYyiC,EAAQ6rD,GAAkBxB,EAAMkC,YACvClC,EAAMK,mBAAkBntF,EAAW,EAAIA,IAE5CA,EADS8sF,EAAM/1D,IAAIuD,KACP+zD,EAAkBvB,EAAMmC,WAAazsD,GAASsqD,EAAMmC,YAEpDzsD,EAAQ6rD,GAAmBvB,EAAMmC,WAG/C,IAAIC,EAAWlvF,GAAY8sF,EAAM9qF,IAAM8qF,EAAM7qF,KAAO6qF,EAAM7qF,IAC1D,GAAI6qF,EAAMC,KAAM,CACd,IAAIqC,EACAC,EACmB,IAAnBb,GACFY,EAAYF,EACZG,EAAavC,EAAMlyF,MAAM,GACrBw0F,EAAYC,IACdA,EAAaD,KAGfA,EAAYtC,EAAMlyF,MAAM,GACxBy0F,EAAaH,EACTG,EAAaD,IACfA,EAAYC,IAGhBH,EAAW,CAACE,EAAWC,EACzB,CACAvC,EAAMqC,SAASD,GAAU,EAC3B,CACA,SAASnhD,EAAe1rC,GACtB,GAAe,aAAXA,EAAEsgC,KAAqB,CACzB,IAAI2sD,EACJ,IAAK,IAAIrzF,EAAI,EAAGA,EAAIoG,EAAEktF,eAAe94F,OAAQwF,GAAK,EAC5CoG,EAAEktF,eAAetzF,GAAG8yF,aAAeL,IAAuBY,GAAa,GAE7E,IAAKA,EAAY,MACnB,CACA,IAAKxmD,EAGH,OAFIjJ,GAAa0uD,EAAe5yD,YAAY,gCAC5CmN,GAAY,GAGdgkD,EAAMxqF,IAAI,SAAUwsF,GACpBhmD,GAAY,EACZylD,EAAe5yD,YAAY,2BACvB8yD,GAAuB3B,EAAMlE,WAAakE,EAAMC,MAClDD,EAAMlE,SAAS5rF,QAAQ,UAEzByxF,GAAsB,OACa,IAAxB3B,EAAMf,gBAEZe,EAAMC,OACJD,EAAMf,cAAc,KAAOe,EAAMlyF,MAAM,IACtCkyF,EAAMf,cAAc,KAAOe,EAAMlyF,MAAM,MACzCkyF,EAAMC,MAAQD,EAAMf,gBAAkBe,EAAMlyF,SAE9CkyF,EAAM71D,IAAIj6B,QAAQ,gBAAiB8vF,EAAMlyF,OACzCkyF,EAAMr4D,KAAK,8BAA+Bq4D,EAAOA,EAAMlyF,OAG7D,CAEA,SAASgrD,IACPknC,EAAM5O,WACN4O,EAAM0C,QACR,CA+CA,OA3CA1C,EAAM79C,aAAe,WACnB,MAAMtN,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACrDmrD,EAAM71D,IAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GACtD5K,EAAI95B,GAAG,YAAa2tC,GACpB7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BhX,EAAI95B,GAAG,UAAW2oD,GAClB7uB,EAAI95B,GAAG,SAAU2oD,GACjB+oC,EAAe7B,EAAM71D,IAAI7zB,QACvB,kFAEFurF,EAAa1xF,GAAG,aAAc2oD,GAC9BgpC,EAAc9B,EAAM71D,IAAI7zB,QAAQ,UAChCwrF,EAAY3xF,GAAG,0BAA2B2oD,GAC1CipC,EAAa/B,EAAM71D,IAAI7zB,QAAQ,SAASC,GAAG,GAC3CwrF,EAAW5xF,GAAG,cAAe2oD,E,EAE/BknC,EAAM52B,aAAe,WACnB,MAAMv0B,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACrDmrD,EAAM71D,IAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GACvD5K,EAAIz0B,IAAI,YAAasoC,GACrB7T,EAAIz0B,IAAI,mBAAoByrC,GAC5BhX,EAAIz0B,IAAI,UAAWsjD,GACnB7uB,EAAIz0B,IAAI,SAAUsjD,GACd+oC,GACFA,EAAarsF,IAAI,aAAcsjD,GAE7BgpC,GACFA,EAAYtsF,IAAI,0BAA2BsjD,GAEzCipC,GACFA,EAAWvsF,IAAI,cAAesjD,GAEhC+oC,EAAe,KACfC,EAAc,KACdC,EAAa,I,EAIf/B,EAAM52D,aAGN42D,EAAMt0D,OAECs0D,CACT,CAEA5O,WACE,MAAM4O,EAAQ3zF,KACd,GAAI2zF,EAAMI,SAAU,CAClB,MAAM/5D,EAAS25D,EAAM71D,IAAIi1C,cACzB,GAAe,IAAX/4C,EAAc,OAClB25D,EAAMkC,YAAc77D,EACpB25D,EAAM2C,WAAa3C,EAAMiB,MAAM,GAAG7hB,aACpC,KAAO,CACL,MAAMz6C,EAAQq7D,EAAM71D,IAAI+lC,aACxB,GAAc,IAAVvrC,EAAa,OACjBq7D,EAAMmC,WAAax9D,EACnBq7D,EAAM4C,UAAY5C,EAAMiB,MAAM,GAAG/wB,YACnC,CACF,CAEAwyB,SACE,MAAM1C,EAAQ3zF,MACR49B,IACJA,EAAG24D,UACHA,EAASD,WACTA,EAAUR,WACVA,EAAUD,YACVA,EAAW/sF,IACXA,EAAGD,IACHA,EAAG+rF,MACHA,EAAKF,aACLA,EAAYjzF,MACZA,EAAK2yE,MACLA,EAAK0gB,OACLA,EAAMf,SACNA,EAAQC,iBACRA,EAAgBK,kBAChBA,GACEV,EACE6C,EAAWzC,EAAWuC,EAAaC,EACnCE,EAAY1C,EAAW8B,EAAcC,EAErCY,EAAmB3C,EACrBC,EACE,MACA,SACFp2D,EAAIuD,IACJ,QACA,OACJ,GAAIwyD,EAAMC,KAAM,CACd,MAAM/sF,EAAW,EAAEpF,EAAM,GAAKqH,IAAQD,EAAMC,IAAOrH,EAAM,GAAKqH,IAAQD,EAAMC,IAC5E4rF,EAAahpF,IAAI,CACfgrF,CAACA,GAAoC,IAAd7vF,EAAS,GAAX,IACrB,CAACktF,EAAW,SAAW,SAA2C,KAA7BltF,EAAS,GAAKA,EAAS,IAA1B,MAEpC+tF,EAAMx3F,SAAQ,CAACy3F,EAAS8B,KACtB,IAAIC,EAAWH,EAAY5vF,EAAS8vF,GACpC,GAAItC,EAAmB,CACrB,MAAMwC,EAAeJ,EAAY5vF,EAAS8vF,GAAaH,EAAW,EAC9DK,EAAe,IAAGD,EAAWJ,EAAW,GACxCK,EAAeL,EAAWC,IAAWG,EAAWH,EAAYD,EAAW,EAC7E,CACA3B,EAAQnpF,IAAIgrF,EAAmB,GAAEE,OAC7BxiB,GACF0gB,EAAO6B,GAAW3lF,KAAK2iF,EAAMM,YAAYxyF,EAAMk1F,GAAY7B,EAAO6B,GAAW,IAAI,GAEvF,KAAO,CACL,MAAM9vF,GAAYpF,EAAQqH,IAAQD,EAAMC,GACxC4rF,EAAahpF,IAAIqoF,EAAW,SAAW,QAAuB,IAAXltF,EAAF,KAEjD,IAAI+vF,EAAWH,EAAY5vF,EAC3B,GAAIwtF,EAAmB,CACrB,MAAMwC,EAAeJ,EAAY5vF,EAAW2vF,EAAW,EACnDK,EAAe,IAAGD,EAAWJ,EAAW,GACxCK,EAAeL,EAAWC,IAAWG,EAAWH,EAAYD,EAAW,EAC7E,CACA5B,EAAM,GAAGlpF,IAAIgrF,EAAmB,GAAEE,OAC9BxiB,GAAO0gB,EAAO,GAAG9jF,KAAK2iF,EAAMM,YAAYxyF,EAAOqzF,EAAO,GAAG,IAC/D,CACKnB,EAAMC,MAAQnyF,EAAMiB,QAAQoG,IAAQ,IAAQ6qF,EAAMC,MAAQnyF,IAAUqH,EACvE6qF,EAAM71D,IAAIwE,SAAS,oBAEnBqxD,EAAM71D,IAAI0E,YAAY,oBAEnBmxD,EAAMC,MAAQnyF,EAAMiB,QAAQmG,IAAQ,IAAQ8qF,EAAMC,MAAQnyF,IAAUoH,EACvE8qF,EAAM71D,IAAIwE,SAAS,oBAEnBqxD,EAAM71D,IAAI0E,YAAY,mBAE1B,CAEAwzD,SAASD,EAAUe,GACjB,MAAMnD,EAAQ3zF,MACR6zF,KAAEA,EAAI/qF,IAAEA,EAAGD,IAAEA,GAAQ8qF,EAC3B,IAAIoD,EACAC,EACJ,GAAIrD,EAAMC,KAAM,CACdoD,EAAW,CAACrD,EAAMlyF,MAAM,GAAIkyF,EAAMlyF,MAAM,IACxC,IAAIw1F,EAAYlB,EAQhB,GAPK90F,MAAMc,QAAQk1F,KAAYA,EAAY,CAAClB,EAAUA,IAClDA,EAAS,GAAKA,EAAS,KACzBkB,EAAY,CAACA,EAAU,GAAIA,EAAU,KAEvCA,EAAYA,EAAUnxF,KAAKrE,GACzBqF,KAAK+B,IAAI/B,KAAKgC,IAAIhC,KAAKkO,MAAMvT,EAAQoyF,GAAQA,EAAMhrF,GAAMC,KAEvDmuF,EAAU,KAAOtD,EAAMlyF,MAAM,IAAMw1F,EAAU,KAAOtD,EAAMlyF,MAAM,GAClE,OAAOkyF,EAETsD,EAAU75F,SAAQ,CAACqE,EAAOy1F,KACxBvD,EAAMlyF,MAAMy1F,GAAcz1F,CAAK,IAEjCs1F,EAAeC,EAAS,KAAOC,EAAU,IAAMD,EAAS,KAAOC,EAAU,GACzEtD,EAAM0C,QACR,KAAO,CACLW,EAAWrD,EAAMlyF,MACjB,MAAMA,EAAQqF,KAAK+B,IAAI/B,KAAKgC,IAAIhC,KAAKkO,MAAM+gF,EAAWlC,GAAQA,EAAMhrF,GAAMC,GAC1E6qF,EAAMlyF,MAAQA,EACdkyF,EAAM0C,SACNU,EAAeC,IAAav1F,CAC9B,CAMA,OAJIs1F,IACFpD,EAAMf,cAAgBoE,GAGnBD,GACLpD,EAAM71D,IAAIj6B,QAAQ,eAAgB8vF,EAAMlyF,OACpCkyF,EAAMlE,WAAakE,EAAMC,OAC3BD,EAAMlE,SAASr9E,IAAIuhF,EAAMlyF,OACpBq1F,EAGHnD,EAAMlE,SAAS5rF,QAAQ,SAFvB8vF,EAAMlE,SAAS5rF,QAAQ,iBAKtBizF,IACHnD,EAAM71D,IAAIj6B,QAAQ,gBAAiB8vF,EAAMlyF,OACzCkyF,EAAMr4D,KAAK,8BAA+Bq4D,EAAOA,EAAMlyF,QAEzDkyF,EAAMr4D,KAAK,4BAA6Bq4D,EAAOA,EAAMlyF,OAC9CkyF,GAfmBA,CAgB5B,CAEAwD,WACE,OAAOn3F,KAAKyB,KACd,CAEAwyF,YAAYxyF,EAAO21F,GACjB,MAAMzD,EAAQ3zF,KACd,OAAI2zF,EAAMrtF,OAAO2tF,YAAoBN,EAAMrtF,OAAO2tF,YAAY7xF,KAAKuxF,EAAOlyF,EAAO21F,GAC1E31F,CACT,CAEA2yF,iBAAiB3yF,GACf,MAAMkyF,EAAQ3zF,KACd,OAAI2zF,EAAMrtF,OAAO8tF,iBAAyBT,EAAMrtF,OAAO8tF,iBAAiBhyF,KAAKuxF,EAAOlyF,GAC7EA,CACT,CAEAuzF,cACE,MAAMrB,EAAQ3zF,MACR49B,IAAEA,EAAGo2D,iBAAEA,EAAgBD,SAAEA,GAAaJ,EAGtC+C,EAAmB3C,EACrBC,EACE,MACA,SACFp2D,EAAIuD,IACJ,QACA,OAEJ,IAAI3+B,EAAO,GAqBX,OApBAvB,MAAM2e,KAAK,CAAEtiB,OAAQq2F,EAAMO,WAAa,IAAK92F,SAAQ,CAACi6F,EAAS5vF,KAC7D,MAAM6vF,GAAkB3D,EAAM9qF,IAAM8qF,EAAM7qF,KAAO6qF,EAAMO,WACjDqD,EAAa5D,EAAM7qF,IAAMwuF,EAAiB7vF,EAC1CZ,GAAY0wF,EAAa5D,EAAM7qF,MAAQ6qF,EAAM9qF,IAAM8qF,EAAM7qF,KAC/DtG,GAAS,wCAAuCk0F,MACnC,IAAX7vF,OACI8sF,EAAMS,iBAAiBmD,WAEzB5D,EAAMQ,eAAiBR,EAAMQ,cAAgB,GAAK1sF,EAAQksF,EAAMO,YAClEjzF,MAAM2e,KAAK,CAAEtiB,OAAQq2F,EAAMQ,cAAgB,IAAK/2F,SAAQ,CAACo6F,EAAWC,KAClE,MAAMC,EAAUJ,EAAiB3D,EAAMQ,cAEjCwD,GADgBJ,EAAaG,GAAWD,EAAW,GACpB9D,EAAM7qF,MAAQ6qF,EAAM9qF,IAAM8qF,EAAM7qF,KACrEtG,GAAS,4DAA2Dk0F,MACpD,IAAdiB,YACS,GAEf,IAGKn1F,CACT,CAEAo1F,cACE,MAAMjE,EAAQ3zF,KACd,IAAK2zF,EAAMtpB,OAASspB,EAAMO,WAAa,EAGrC,OAFIP,EAAMoB,UAAUpB,EAAMoB,SAASlqF,qBAC5B8oF,EAAMoB,SAGVpB,EAAMoB,WACTpB,EAAMoB,SAAW1yF,EAAE,mCACnBsxF,EAAM71D,IAAIn0B,OAAOgqF,EAAMoB,WAGzBpB,EAAMoB,SAASvyF,KAAKmxF,EAAMqB,cAC5B,CAEA31D,OACE,MAAMs0D,EAAQ3zF,KAId,OAHA2zF,EAAM5O,WACN4O,EAAM0C,SACN1C,EAAM79C,eACC69C,CACT,CAEA51D,UACE,IAAI41D,EAAQ3zF,KACZ2zF,EAAM71D,IAAIj6B,QAAQ,uBAClB8vF,EAAMr4D,KAAK,0CAA2Cq4D,UAC/CA,EAAM71D,IAAI,GAAGw2D,QACpBX,EAAM52B,eACN/qC,GAAY2hE,GACZA,EAAQ,IACV,GC/mBF,IAAAkE,GAAe,CACbr0F,KAAM,QACNs5B,SACE,MAAMc,EAAM59B,KACZ49B,EAAI+1D,MAAQ32F,GACVugC,GAAmB,CACjBE,gBAAiB,gBACjB3gC,YAAa+6F,GACbj6D,MACAD,QAAS,YAEX,CACEw5D,SAASr1F,QAAE,IAAFA,MAAK,iBACZ,MAAM6xF,EAAQ/1D,EAAI+1D,MAAMpyF,IAAIO,GAC5B,GAAI6xF,EAAO,OAAOA,EAAMwD,U,EAG1BnB,SAASl0F,EAAsBL,QAApB,IAAFK,MAAK,iBACZ,MAAM6xF,EAAQ/1D,EAAI+1D,MAAMpyF,IAAIO,GAC5B,GAAI6xF,EAAO,OAAOA,EAAMqC,SAASv0F,EAEnC,G,EAIN47B,OAAQ,CACNw6D,UAEF/zF,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,sBACL1qC,MACE2wF,GACC,IAAID,GAAMj6D,EAAK,CACb97B,GAAIg2F,K,EAIdvR,gBAAgBtmC,GACd59C,EAAE49C,GACCpO,KAAK,sBACL1qC,MAAM2wF,IACDA,EAAQxD,SAASwD,EAAQxD,QAAQv2D,SAAS,G,EAGpDsqC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,sBAAsB1qC,MACjC2wF,GACC,IAAID,GAAMj6D,EAAK,CACb97B,GAAIg2F,K,EAIZ5vB,iBAAiB/jB,GACfA,EAAKrmB,IAAI+T,KAAK,sBAAsB1qC,MAAM2wF,IACpCA,EAAQxD,SAASwD,EAAQxD,QAAQv2D,SAAS,GAElD,GAEFrB,MAAO,CACL,oBAAqB,CACnB+0B,OAAO/0B,GACL,MAAMo7D,EAAUp7D,EAAM4zB,IACVtwD,KACR2zF,MAAM72D,OAAO,CAAEh7B,GAAIg2F,G,EAEzB/5D,QAAQrB,GACN,MAAMo7D,EAAUp7D,EAAM4zB,IAClBwnC,EAAQxD,SAASwD,EAAQxD,QAAQv2D,SACvC,K,OCzEN,cAAsBnC,GACpB9+B,YAAY8gC,EAAKt3B,GACfnF,MAAMmF,EAAQ,CAACs3B,IACf,MAAMm6D,EAAU/3F,KAEVi/B,EAAW,CACfn9B,GAAI,KACJ0tF,QAAS,KACTwI,QAAS,KACTv2F,MAAO,EACPw2F,YAAa,KACbpE,KAAM,EACN/qF,IAAK,EACLD,IAAK,IACLqvF,YAAY,EACZC,YAAY,EACZC,mBAAmB,EACnBC,OAAO,EACPC,iBAAiB,EACjBC,aAAc,EACdC,qBAAqB,GAIvBT,EAAQ77D,iBAAiB+C,GAEzB84D,EAAQzxF,OAAStJ,GAAOiiC,EAAU34B,GAC9ByxF,EAAQzxF,OAAO7E,MAAQs2F,EAAQzxF,OAAOwC,MACxCivF,EAAQzxF,OAAO7E,MAAQs2F,EAAQzxF,OAAOwC,KAEpCivF,EAAQzxF,OAAO7E,MAAQs2F,EAAQzxF,OAAOuC,MACxCkvF,EAAQzxF,OAAO7E,MAAQs2F,EAAQzxF,OAAOuC,KAGxC,MAAM/G,EAAKi2F,EAAQzxF,OAAOxE,GAC1B,IAAKA,EAAI,OAAOi2F,EAEhB,MAAMj6D,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OAAOy6F,EAE7B,GAAIj6D,EAAI,GAAG26D,UAAW,OAAO36D,EAAI,GAAG26D,UAEpC,IAAIhJ,EA+BAiJ,EAxBJ,GANIX,EAAQzxF,OAAOkpF,QACjBC,EAAWptF,EAAE01F,EAAQzxF,OAAOkpF,SACnB1xD,EAAI+T,KAAK,uBAAuBA,KAAK,mBAAmBv0C,SACjEmyF,EAAW3xD,EAAI+T,KAAK,uBAAuBA,KAAK,mBAAmB3nC,GAAG,IAGpEulF,GAAYA,EAASnyF,OAAQ,CAC/B,eAAegG,MAAM,KAAKlG,SAAS0+C,KAC5Bx1C,EAAOw1C,IAAc2zC,EAASllF,KAAKuxC,KACtCi8C,EAAQzxF,OAAOw1C,GAAa5zC,WAAWunF,EAASllF,KAAKuxC,IACvD,IAGF,MAAMy8C,EAAeroE,SAAS6nE,EAAQzxF,OAAOiyF,aAAc,IACvDnjE,OAAOC,MAAMkjE,GACfR,EAAQzxF,OAAOiyF,aAAe,EAE9BR,EAAQzxF,OAAOiyF,aAAeA,EAGhC,MAAMnpB,EAAalnE,WAAWunF,EAASr9E,YAEb,IAAjB9L,EAAO7E,OACb2zB,OAAOC,MAAM+5C,KACbA,GAA6B,IAAfA,IAEf2oB,EAAQzxF,OAAO7E,MAAQ2tE,EAE3B,CAGI2oB,EAAQzxF,OAAO0xF,QACjBU,EAAWr2F,EAAE01F,EAAQzxF,OAAO0xF,SACnBl6D,EAAI+T,KAAK,kBAAkBv0C,SACpCo7F,EAAW56D,EAAI+T,KAAK,kBAAkB3nC,GAAG,IAG3C,MAAMyuF,EAAgB76D,EAAI+T,KAAK,wBACzB+mD,EAAiB96D,EAAI+T,KAAK,0BAE1BgiD,KAAEA,EAAI/qF,IAAEA,EAAGD,IAAEA,EAAGpH,MAAEA,EAAK82F,aAAEA,GAAiBR,EAAQzxF,OAExDtJ,GAAO+6F,EAAS,CACdn6D,MACAE,MACAh8B,GAAIg8B,EAAI,GACR66D,gBACAE,aAAcF,EAAc,GAC5BC,iBACAE,cAAeF,EAAe,GAC9BnJ,WACAD,QAASC,EAAWA,EAAS,QAAKnmF,EAClCovF,WACAV,QAASU,EAAWA,EAAS,QAAKpvF,EAClCuqF,OACA/qF,MACAD,MACApH,QACA82F,eACAQ,iBAAiB,IAGnBj7D,EAAI,GAAG26D,UAAYV,EAGnB,MAAMnoD,EAAe,GACrB,IAAID,EACAjJ,EACAsyD,EACAC,EACAxgB,EACAygB,EAAmB,KACnBC,GAAqB,EACrBC,GAAc,EAElB,SAASC,EAAc/qC,EAASgrC,EAAcC,EAAUC,EAAiBC,EAAalrD,GACpFhuC,aAAak4E,GACbA,EAAYn4E,YACV,KACkB,IAAZguD,IACF0qC,GAAqB,EACrBG,GAAqB,GAEvBO,cAAcT,GACd1qD,IACA0qD,EAAaU,aAAY,KACvBprD,GAAQ,GACPkrD,GACCnrC,EAAUgrC,GACZD,EACE/qC,EAAU,EACVgrC,EACAC,EACAC,EACAC,EAAc,EACdlrD,EAEJ,GAEU,IAAZ+f,EAAgBirC,EAAWC,EAE/B,CAEA,SAASzL,EAAa7kF,GACpB,GAAIymC,EAAW,OACf,GAAIypD,EACF,OAOF,GALI/2F,EAAE6G,EAAEjM,QAAQ+M,QAAQ2uF,GAAer7F,OACrC47F,EAAmB,YACV72F,EAAE6G,EAAEjM,QAAQ+M,QAAQ4uF,GAAgBt7F,SAC7C47F,EAAmB,cAEhBA,EAAkB,OAEvBtpD,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACxEqG,GAAY,EACZjJ,OAAcp9B,EAGd+vF,EAAc,EADOtB,EAAQzxF,OAAO8xF,kBAAoB,EAAI,EAC7B,IAAK,IAAM,KAAK,KAC7CL,EAAQmB,IAAmB,GAE/B,CACA,SAASjL,EAAY/kF,GACnB,IAAKymC,EAAW,OAChB,GAAIypD,EACF,OAEF,MAAM/vD,EAAmB,cAAXngC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC9DC,EAAmB,cAAXpgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,WAEzC,IAAhB5C,GAAgCyyD,IACzCzyD,KACEA,GAAe5/B,KAAK+R,IAAIywB,EAAQsG,EAAah7B,GAAK9N,KAAK+R,IAAIwwB,EAAQuG,EAAav3B,KAGpF,MAAMZ,IAAa4xB,EAAQuG,EAAav3B,IAAM,GAAKixB,EAAQsG,EAAah7B,IAAM,IAAM,IAEhF8xB,GAAejvB,EAAW,MAC5Bk4B,GAAY,EACZpvC,aAAak4E,GACbihB,cAAcT,GAElB,CACA,SAAS/K,IACP3tF,aAAak4E,GACbihB,cAAcT,GACdC,EAAmB,KACnBC,GAAqB,EACrBxpD,GAAY,CACd,CAEA,SAASiqD,IACHR,EACErB,EAAQzxF,OAAOkyF,sBACjBY,GAAc,EACdrB,EAAQ8B,aAAY,IAIpBb,EACFA,GAAqB,EAGvBjB,EAAQ+B,WAAU,EACpB,CACA,SAASC,IACHX,EACErB,EAAQzxF,OAAOkyF,sBACjBY,GAAc,EACdrB,EAAQ8B,aAAY,IAIpBb,EACFA,GAAqB,EAGvBjB,EAAQiC,WAAU,EACpB,CACA,SAASC,EAAa/wF,IACfA,EAAEjM,OAAOw0F,UAAYsG,EAAQzxF,OAAOgyF,kBACvCc,GAAc,EACyB,iBAA5BlwF,EAAEjM,OAAOi9F,iBAClBhxF,EAAEjM,OAAOi9F,eAAiBhxF,EAAEjM,OAAOwE,MAAMnE,OACzC4L,EAAEjM,OAAOk9F,aAAejxF,EAAEjM,OAAOwE,MAAMnE,QAG7C,CACA,SAAS88F,EAAWlxF,GACA,KAAdA,EAAEqkE,SAA8B,KAAZrkE,EAAE8gC,QACxB9gC,EAAE+/B,iBACFmwD,GAAc,EACdrB,EAAQ8B,cAEZ,CACA,SAASQ,IACPjB,GAAc,EACdrB,EAAQ8B,aAAY,EACtB,CACA,SAASS,EAAQpxF,GACXkwF,EACFrB,EAAQwC,UAAUrxF,EAAEjM,OAAOwE,OAGzByH,EAAEuI,QAAUvI,EAAEuI,OAAO+oF,iBACzBzC,EAAQ/B,SAAS9sF,EAAEjM,OAAOwE,OAAO,EACnC,CAiCA,OAhCAs2F,EAAQjiD,aAAe,WACrB8iD,EAAe90F,GAAG,QAAS81F,GAC3BjB,EAAc70F,GAAG,QAASi2F,GACtBhC,EAAQzxF,OAAO4xF,YAAczI,GAAYA,EAASnyF,SACpDmyF,EAAS3rF,GAAG,QAASw2F,GACrB7K,EAAS3rF,GAAG,QAASm2F,GACrBxK,EAAS3rF,GAAG,OAAQu2F,GACpB5K,EAAS3rF,GAAG,QAASs2F,IAEnBrC,EAAQzxF,OAAO6xF,aACjBv6D,EAAI95B,GAAG,qBAAsBiqF,GAC7BnwD,EAAI95B,GAAG,mBAAoBmqF,GAC3BrwD,EAAI95B,GAAG,mBAAoBoqF,G,EAG/B6J,EAAQh7B,aAAe,WACrB67B,EAAezvF,IAAI,QAASywF,GAC5BjB,EAAcxvF,IAAI,QAAS4wF,GACvBhC,EAAQzxF,OAAO4xF,YAAczI,GAAYA,EAASnyF,SACpDmyF,EAAStmF,IAAI,QAASmxF,GACtB7K,EAAStmF,IAAI,QAAS8wF,GACtBxK,EAAStmF,IAAI,OAAQkxF,GACrB5K,EAAStmF,IAAI,QAASixF,G,EAK1BrC,EAAQh7D,aAGRg7D,EAAQ14D,OAED04D,CACT,CAEA0C,QACE,OAAOz6F,KAAK85F,WACd,CAEAY,OACE,OAAO16F,KAAKg6F,WACd,CAEAF,YACE,MAAM/B,EAAU/3F,KAChB,OAAO+3F,EAAQ/B,SAAS+B,EAAQt2F,MAAQs2F,EAAQlE,MAAM,GAAO,EAC/D,CAEAmG,YACE,MAAMjC,EAAU/3F,KAChB,OAAO+3F,EAAQ/B,SAAS+B,EAAQt2F,MAAQs2F,EAAQlE,MAAM,GAAO,EAC/D,CAEAmC,SAASD,EAAU4E,EAAaC,GAC9B,MAAM7C,EAAU/3F,MACV6zF,KAAEA,EAAI/qF,IAAEA,EAAGD,IAAEA,GAAQkvF,EAErBf,EAAWe,EAAQt2F,MAEzB,IAAIA,EAAQqF,KAAKkO,MAAM+gF,EAAWlC,GAAQA,EACtCkE,EAAQzxF,OAAO+xF,OAASuC,GACtBn5F,EAAQoH,IAAKpH,EAAQqH,GACrBrH,EAAQqH,IAAKrH,EAAQoH,IAEzBpH,EAAQqF,KAAK+B,IAAI/B,KAAKgC,IAAIrH,EAAOoH,GAAMC,GAGrCssB,OAAOC,MAAM5zB,KACfA,EAAQu1F,GAEVe,EAAQt2F,MAAQA,EAKhB,KAHqBu1F,IAAav1F,KAGZk5F,EAAa,OAAO5C,EAE1CA,EAAQj6D,IAAIj6B,QAAQ,iBAAkBk0F,EAAQt2F,OAC9C,MAAMo5F,EAAiB9C,EAAQE,YAAYF,EAAQt2F,OASnD,OARIs2F,EAAQtI,UAAYsI,EAAQtI,SAASnyF,SACvCy6F,EAAQtI,SAASr9E,IAAIyoF,GACrB9C,EAAQtI,SAAS5rF,QAAQ,eAAgB,CAAE22F,iBAAiB,KAE1DzC,EAAQW,UAAYX,EAAQW,SAASp7F,QACvCy6F,EAAQW,SAASl2F,KAAKq4F,GAExB9C,EAAQz8D,KAAK,8BAA+By8D,EAASA,EAAQt2F,OACtDs2F,CACT,CAEA8B,YAAYiB,GACV,MAAM/C,EAAU/3F,MACV8I,IAAEA,EAAGD,IAAEA,GAAQkvF,EACrB,IAAIt2F,EAAQyG,WAAW6vF,EAAQt2F,OAO/B,GALI2zB,OAAOC,MAAM5zB,KAAQA,EAAQ,GAEjCA,EAAQqF,KAAK+B,IAAI/B,KAAKgC,IAAIrH,EAAOoH,GAAMC,GAEvCivF,EAAQt2F,MAAQA,GACXs2F,EAAQgB,gBAIX,OAHIhB,EAAQtI,UAAYsI,EAAQtI,SAASnyF,SAAWw9F,GAClD/C,EAAQtI,SAAS7xF,OAEZm6F,EAETA,EAAQgB,iBAAkB,EAE1BhB,EAAQj6D,IAAIj6B,QAAQ,iBAAkBk0F,EAAQt2F,OAC9C,MAAMo5F,EAAiB9C,EAAQE,YAAYF,EAAQt2F,OAUnD,OATIs2F,EAAQtI,UAAYsI,EAAQtI,SAASnyF,SACvCy6F,EAAQtI,SAASr9E,IAAIyoF,GACrB9C,EAAQtI,SAAS5rF,QAAQ,eAAgB,CAAE22F,iBAAiB,IACvDM,GAAQ/C,EAAQtI,SAAS7xF,QAE5Bm6F,EAAQW,UAAYX,EAAQW,SAASp7F,QACvCy6F,EAAQW,SAASl2F,KAAKq4F,GAExB9C,EAAQz8D,KAAK,8BAA+By8D,EAASA,EAAQt2F,OACtDs2F,CACT,CAEAwC,UAAU94F,GACR,MAAMs2F,EAAU/3F,KAChB+3F,EAAQgB,iBAAkB,EAC1B,IAAIgC,EAAW9pE,OAAOxvB,GACtB,GAAwB,IAApBs5F,EAASz9F,QAA6B,MAAby9F,EAAkB,OAAOhD,EACtD,GACEgD,EAASC,YAAY,KAAO,IAAMD,EAASz9F,QAC3Cy9F,EAASC,YAAY,KAAO,IAAMD,EAASz9F,OAWtC,CACL,IAAIy4F,EAAW7tF,WAAW6yF,EAAS9yF,QAAQ,IAAK,MAChD,GAAiB,IAAb8tF,EAGF,OAFAgC,EAAQt2F,MAAQs5F,EAAS9yF,QAAQ,IAAK,KACtC8vF,EAAQtI,SAASr9E,IAAI2lF,EAAQt2F,OACtBs2F,EAET,GAAI3iE,OAAOC,MAAM0gE,GAGf,OAFAgC,EAAQt2F,MAAQ,EAChBs2F,EAAQtI,SAASr9E,IAAI2lF,EAAQt2F,OACtBs2F,EAET,MAAMkD,EAAS,IAAMlD,EAAQzxF,OAAOiyF,aAIpC,OAHAxC,EAAWjvF,KAAKkO,MAAM+gF,EAAWkF,GAAQC,QAAQnD,EAAQzxF,OAAOiyF,aAAe,GAAK0C,EACpFlD,EAAQt2F,MAAQyG,WAAW+oB,OAAO8kE,GAAU9tF,QAAQ,IAAK,MACzD8vF,EAAQtI,SAASr9E,IAAI2lF,EAAQt2F,OACtBs2F,CACT,CA1BE,OACEgD,EAASC,YAAY,OAASD,EAASr4F,QAAQ,MAC/Cq4F,EAASC,YAAY,OAASD,EAASr4F,QAAQ,MAE/Cq4F,EAAWA,EAAS/qE,MAAM,GAAI,GAC9B+nE,EAAQt2F,MAAQs5F,EAChBhD,EAAQtI,SAASr9E,IAAI2lF,EAAQt2F,OACtBs2F,IAoBXA,EAAQt2F,MAAQs5F,EAChBhD,EAAQtI,SAASr9E,IAAI2oF,GACdhD,EACT,CAEAZ,WACE,OAAOn3F,KAAKyB,KACd,CAEAw2F,YAAYx2F,GACV,MAAMs2F,EAAU/3F,KAChB,OAAK+3F,EAAQzxF,OAAO2xF,YACbF,EAAQzxF,OAAO2xF,YAAY71F,KAAK21F,EAASt2F,GADRA,CAE1C,CAEA49B,OACE,MAAM04D,EAAU/3F,KAEhB,GADA+3F,EAAQjiD,eACJiiD,EAAQW,UAAYX,EAAQW,SAASp7F,OAAQ,CAC/C,MAAMu9F,EAAiB9C,EAAQE,YAAYF,EAAQt2F,OACnDs2F,EAAQW,SAASl2F,KAAKq4F,EACxB,CACA,OAAO9C,CACT,CAEAh6D,UACE,IAAIg6D,EAAU/3F,KACd+3F,EAAQj6D,IAAIj6B,QAAQ,yBACpBk0F,EAAQz8D,KAAK,4CAA6Cy8D,UACnDA,EAAQj6D,IAAI,GAAG26D,UACtBV,EAAQh7B,eACR/qC,GAAY+lE,GACZA,EAAU,IACZ,GC3bF,IAAAoD,GAAe,CACb33F,KAAM,UACNs5B,SACE,MAAMc,EAAM59B,KACZ49B,EAAIm6D,QAAU/6F,GACZugC,GAAmB,CACjBE,gBAAiB,WACjB3gC,YAAaq+F,GACbv9D,MACAD,QAAS,cAEX,CACEw5D,SAASr1F,QAAE,IAAFA,MAAK,YACZ,MAAMi2F,EAAUn6D,EAAIm6D,QAAQx2F,IAAIO,GAChC,GAAIi2F,EAAS,OAAOA,EAAQZ,U,EAG9BnB,SAASl0F,EAAiBL,QAAf,IAAFK,MAAK,YACZ,MAAMi2F,EAAUn6D,EAAIm6D,QAAQx2F,IAAIO,GAChC,GAAIi2F,EAAS,OAAOA,EAAQ/B,SAASv0F,EAEvC,G,EAIN47B,OAAQ,CACN89D,YAEFr3F,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,iBACL1qC,MAAMi0F,IACL,MAAM/wF,EAAUhI,EAAE+4F,GAAW/wF,UAC7BuzB,EAAIm6D,QAAQj7D,OAAO9/B,GAAO,CAAE8E,GAAIs5F,GAAa/wF,GAAW,IAAI,G,EAGlEk8E,gBAAgBtmC,GACd59C,EAAE49C,GACCpO,KAAK,iBACL1qC,MAAMi0F,IACDA,EAAU3C,WAAW2C,EAAU3C,UAAU16D,SAAS,G,EAG5DsqC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,iBAAiB1qC,MAAMi0F,IACnC,MAAM/wF,EAAUhI,EAAE+4F,GAAW/wF,UAC7BuzB,EAAIm6D,QAAQj7D,OAAO9/B,GAAO,CAAE8E,GAAIs5F,GAAa/wF,GAAW,IAAI,G,EAGhE69D,iBAAiB/jB,GACfA,EAAKrmB,IAAI+T,KAAK,iBAAiB1qC,MAAMi0F,IAC/BA,EAAU3C,WAAW2C,EAAU3C,UAAU16D,SAAS,GAE1D,GAEFrB,MAAO,CACL,eAAgB,CACd+0B,OAAO/0B,GACL,MACM0+D,EAAY1+D,EAAM4zB,IAClBjmD,EAAUhI,EAAE+4F,GAAW/wF,UAFjBrK,KAGR+3F,QAAQj7D,OAAO9/B,GAAO,CAAE8E,GAAIs5F,GAAa/wF,GAAW,I,EAE1D0zB,QAAQrB,GACN,MAAM0+D,EAAY1+D,EAAM4zB,IACpB8qC,EAAU3C,WAAW2C,EAAU3C,UAAU16D,SAC/C,KCzEN,MAAMs9D,GAA6B,CACjC,CACEt8E,KAAM,IACNu8E,QACE,sCAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,OACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,MACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,IAAKu8E,QAAS,aACtB,CACEv8E,KAAM,IACNu8E,QAAS,gBAEX,CACEv8E,KAAM,IACNu8E,QAAS,kBAEX,CAAEv8E,KAAM,KAAMu8E,QAAS,MACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,MACvB,CACEv8E,KAAM,IACNu8E,QACE,kCAEJ,CAAEv8E,KAAM,IAAKu8E,QAAS,UACtB,CACEv8E,KAAM,IACNu8E,QACE,mBAEJ,CACEv8E,KAAM,IACNu8E,QAAS,kBAEX,CACEv8E,KAAM,IACNu8E,QACE,wBAEJ,CAAEv8E,KAAM,IAAKu8E,QAAS,SACtB,CACEv8E,KAAM,IACNu8E,QAAS,kBAEX,CACEv8E,KAAM,IACNu8E,QACE,sBAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,IAAKu8E,QAAS,YACtB,CACEv8E,KAAM,IACNu8E,QACE,oBAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CACEv8E,KAAM,IACNu8E,QACE,+CAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,MACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,MACvB,CAAEv8E,KAAM,IAAKu8E,QAAS,cACtB,CAAEv8E,KAAM,IAAKu8E,QAAS,UACtB,CACEv8E,KAAM,IACNu8E,QACE,qBAEJ,CACEv8E,KAAM,IACNu8E,QACE,qBAEJ,CACEv8E,KAAM,IACNu8E,QACE,mBAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CACEv8E,KAAM,IACNu8E,QACE,sCAEJ,CAAEv8E,KAAM,IAAKu8E,QAAS,YACtB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,IAAKu8E,QAAS,cACtB,CAAEv8E,KAAM,IAAKu8E,QAAS,SACtB,CACEv8E,KAAM,IACNu8E,QACE,mBAEJ,CACEv8E,KAAM,IACNu8E,QAAS,kBAEX,CACEv8E,KAAM,IACNu8E,QACE,uCAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,OACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,MACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,IAAKu8E,QAAS,aACtB,CACEv8E,KAAM,IACNu8E,QAAS,iBAEX,CACEv8E,KAAM,IACNu8E,QAAS,kBAEX,CAAEv8E,KAAM,KAAMu8E,QAAS,MACvB,CACEv8E,KAAM,IACNu8E,QACE,mCAEJ,CAAEv8E,KAAM,IAAKu8E,QAAS,UACtB,CACEv8E,KAAM,IACNu8E,QACE,mBAEJ,CACEv8E,KAAM,IACNu8E,QACE,mBAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CACEv8E,KAAM,IACNu8E,QACE,wBAEJ,CAAEv8E,KAAM,IAAKu8E,QAAS,UACtB,CACEv8E,KAAM,IACNu8E,QAAS,kBAEX,CACEv8E,KAAM,IACNu8E,QACE,uBAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,IAAKu8E,QAAS,YACtB,CACEv8E,KAAM,IACNu8E,QACE,qBAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CACEv8E,KAAM,IACNu8E,QACE,+CAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,IAAKu8E,QAAS,cACtB,CAAEv8E,KAAM,IAAKu8E,QAAS,UACtB,CACEv8E,KAAM,IACNu8E,QACE,qBAEJ,CACEv8E,KAAM,IACNu8E,QACE,sBAEJ,CACEv8E,KAAM,IACNu8E,QACE,oBAEJ,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CACEv8E,KAAM,IACNu8E,QACE,sCAEJ,CAAEv8E,KAAM,IAAKu8E,QAAS,YACtB,CAAEv8E,KAAM,KAAMu8E,QAAS,KACvB,CAAEv8E,KAAM,IAAKu8E,QAAS,eACtB,CAAEv8E,KAAM,IAAKu8E,QAAS,SACtB,CACEv8E,KAAM,IACNu8E,QACE,oBAEJ,CACEv8E,KAAM,IACNu8E,QAAS,mBAIPC,GAAgB,GACtB,IAAK,IAAIz4F,EAAI,EAAGA,EAAIu4F,GAA2B/9F,OAAQwF,GAAK,EAAG,CAC7D,MAAMw4F,EAAUD,GAA2Bv4F,GAAGw4F,QAC9C,IAAK,IAAIj2F,EAAI,EAAGA,EAAIi2F,EAAQh+F,OAAQ+H,GAAK,EACvCk2F,GAAcD,EAAQj2F,IAAMg2F,GAA2Bv4F,GAAGic,IAE9D,CAEA,SAASy8E,GAAiBrxD,GACxB,OAAOA,EAAIliC,QAAQ,qBAAsBlF,GAAMw4F,GAAcx4F,IAAMA,GACrE,C,OC3NA,cAA0B64B,GACxB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IACf,MAAM69D,EAAKz7F,KAELi/B,EAAWjiC,GACf,CACE8G,GAAI,IAEN85B,EAAIt3B,OAAOo1F,aAIbD,EAAGv/D,iBAAiB+C,GAEpBw8D,EAAGn1F,OAAStJ,GAAO,GAAIiiC,EAAU34B,GAEjCm1F,EAAG79D,IAAMA,EAET,MAAME,EAAMz7B,EAAEo5F,EAAGn1F,OAAOxE,IAAIoI,GAAG,GAC/B,GAAmB,IAAf4zB,EAAIxgC,OAAc,OAAOm+F,EAE7B,GAAI39D,EAAI,GAAG69D,cAAe,OAAO79D,EAAI,GAAG69D,cAExC,MAAMC,EAAY99D,EAAI+T,KAAK,UAAU3nC,GAAG,GACxC,GAAyB,IAArB0xF,EAAUt+F,OAAc,OAAOm+F,EAEnC,IAAI/C,EACA+C,EAAGn1F,OAAOu1F,eACZnD,EAAWr2F,EAAEo5F,EAAGn1F,OAAO0xF,SACC,IAApBU,EAASp7F,SACXo7F,EAAW56D,EAAI+T,KAAK,gBAEE,IAApB6mD,EAASp7F,SACXo7F,EAAWr2F,EAAE,kCACbq2F,EAAS5qB,YAAYhwC,EAAI+T,KAAK,kBAKlC,IAAItf,EAAMjsB,EAAOisB,IACZA,IACCuL,EAAIvzB,KAAK,SAAgC,MAArBuzB,EAAIvzB,KAAK,QAAiBgoB,EAAMuL,EAAIvzB,KAAK,QACxDqxF,EAAUrxF,KAAK,UAASgoB,EAAO,GAAEqpE,EAAUrxF,KAAK,QAAQE,0BAE9D8nB,IAAKA,EAAMkpE,EAAGn1F,OAAOisB,KAE1B,MAAMxgB,EAAW6pF,EAAU,GAAG7pF,SACxB+pF,EAAY/pF,EAAW,WAAa,QACpCgqF,EAAWn7F,KAqBjB,SAAS6/D,IACPg7B,EAAGx9D,MACL,CACA,SAAS+9D,IACP,MAAMv6F,EAAQg6F,EAAGG,UAAUxpF,MAC3BqpF,EAAG39D,IAAIj6B,QAAQ,qBAAsBpC,GACrCg6F,EAAGngE,KAAK,kCAAmCmgE,EAAIh6F,GAC3Cg6F,EAAGpc,IACLoc,EAAGpc,GAAG+E,aAERqX,EAAGI,cACL,CAUA,SAASrI,IACP,IAAIyI,EACAjrF,EACJ,MAAMw+E,EAAUxvF,KACVyB,EAAQ+tF,EAAQ/tF,MACtB,IACIy6F,EADAC,EAAa,GAEjB,GAAqB,aAAjB3M,EAAQhmD,KAAqB,CAC/B,IAAK,IAAI1mC,EAAI,EAAGA,EAAI24F,EAAG5L,SAAS39E,QAAQ5U,OAAQwF,GAAK,EACnDm5F,EAAWR,EAAG5L,SAAS39E,QAAQpP,GAC3Bm5F,EAASx6F,QAAUA,IACrBw6F,EAAS9pF,SAAWq9E,EAAQE,SAE1BuM,EAAS9pF,WACX+pF,EAAYD,EAAS5xF,QACjB4xF,EAAS5xF,QAAQ6xF,UACjB75F,EAAE45F,GAAUrqF,KAAK,oBACrBZ,EAAOkrF,QAAkC,IAAdA,EAA4BA,EAAYD,EAAShxF,YAC5EkxF,EAAWn6F,KAAKgP,EAAKvO,SAGrBg5F,EAAGW,WACLX,EAAGY,gBAEP,MACEJ,EAAWR,EAAGG,UAAU/pD,KAAM,iBAAgBpwC,OAAW,GACpDw6F,IACHA,EAAWR,EAAGG,UAAU/pD,KAAK,UAAU1vC,QAAQm6F,GAAUA,EAAM76F,QAAUA,IAAO,IAElFy6F,EAAYD,EAAS5xF,QAAU4xF,EAAS5xF,QAAQ6xF,UAAY75F,EAAE45F,GAAUrqF,KAAK,cAC7EZ,EAAOkrF,QAAkC,IAAdA,EAA4BA,EAAYD,EAAShxF,YAC5EkxF,EAAa,CAACnrF,GACdyqF,EAAG5L,SAASpuF,MAAQA,EAGtBg6F,EAAGG,UAAU/3F,QAAQ,UACjB43F,EAAGn1F,OAAOu1F,cACZJ,EAAGc,uBAAuBJ,GAExBV,EAAGn1F,OAAOk2F,eAAkC,UAAjBf,EAAGK,WAChCL,EAAGl9D,OAEP,CAuBA,OAzGAvhC,GAAOy+F,EAAI,CACT39D,MACAh8B,GAAIg8B,EAAI,GACR89D,YACA/L,SAAU+L,EAAU,GACpBlD,WACAV,QAASU,GAAYA,EAAS,GAC9BnmE,MACAxgB,WACA+pF,YACAl7F,GAAIm7F,EACJU,UAAY,GAAEX,KAAaC,IAC3BW,WAAYd,EAAUrxF,KAAK,QAC3B6xF,UAAWR,EAAUrxF,KAAK,cAAgBjE,EAAO81F,YAGnDt+D,EAAI,GAAG69D,cAAgBF,EAevBA,EAAG3lD,aAAe,WAChBhY,EAAIh6B,GAAG,QAAS28D,GAChB3iC,EAAIh6B,GAAG,SAAU,SAAUk4F,E,EAE7BP,EAAG1+B,aAAe,WAChBj/B,EAAI30B,IAAI,QAASs3D,GACjB3iC,EAAI30B,IAAI,SAAU,SAAU6yF,E,EA+C9BP,EAAGkB,mBAAqB,WACtBlB,EAAG3wB,aAAahnE,GACd,SACA,8CACA0vF,E,EAGJiI,EAAGmB,mBAAqB,WACtBnB,EAAG3wB,aAAa3hE,IACd,SACA,8CACAqqF,E,EAKJiI,EAAG1+D,aAGH0+D,EAAGp8D,OAEIo8D,CACT,CAEAzF,SAASv0F,GACP,MAAMg6F,EAAKz7F,KACX,IAEIi8F,EACAC,EACAlrF,EAJA+kF,EAAWt0F,EACX06F,EAAa,GAIjB,GAAIV,EAAG1pF,SAAU,CACV9Q,MAAMc,QAAQg0F,KAAWA,EAAW,CAACA,IAC1C,IAAK,IAAIjzF,EAAI,EAAGA,EAAI24F,EAAG5L,SAAS39E,QAAQ5U,OAAQwF,GAAK,EACnDm5F,EAAWR,EAAG5L,SAAS39E,QAAQpP,GAC3BizF,EAASrzF,QAAQu5F,EAASx6F,QAAU,EACtCw6F,EAAS9pF,UAAW,EAEpB8pF,EAAS9pF,UAAW,EAElB8pF,EAAS9pF,WACX+pF,EAAYD,EAAS5xF,QACjB4xF,EAAS5xF,QAAQ6xF,UACjB75F,EAAE45F,GAAUrqF,KAAK,oBACrBZ,EAAOkrF,QAAkC,IAAdA,EAA4BA,EAAYD,EAAShxF,YAC5EkxF,EAAWn6F,KAAKgP,EAAKvO,QAG3B,MACEw5F,EAAWR,EAAGG,UAAU/pD,KAAM,iBAAgBkkD,OAAc,GACxDkG,IACFC,EAAYD,EAAS5xF,QAAU4xF,EAAS5xF,QAAQ6xF,UAAY75F,EAAE45F,GAAUrqF,KAAK,cAC7EZ,EAAOkrF,QAAkC,IAAdA,EAA4BA,EAAYD,EAAShxF,YAC5EkxF,EAAa,CAACnrF,IAEhByqF,EAAG5L,SAASpuF,MAAQs0F,EAMtB,OAJI0F,EAAGn1F,OAAOu1F,cACZJ,EAAGc,uBAAuBJ,GAE5BV,EAAGG,UAAU/3F,QAAQ,UACd43F,CACT,CAEAoB,aACE,MAAMpB,EAAKz7F,KACPy7F,EAAGn1F,OAAOu1F,cACZJ,EAAGc,uBAAuB,IAE5Bd,EAAGG,UAAU/pD,KAAK,UAAU1qC,MAAM80F,IAChCA,EAAS9pF,UAAW,EACpB8pF,EAASvM,SAAU,CAAK,IAE1B+L,EAAGG,UAAU,GAAGn6F,MAAQ,KAEpBg6F,EAAG3wB,cACL2wB,EAAG3wB,aACAj5B,KACE,eAAc4pD,EAAGgB,6CAA6ChB,EAAGgB,6BAEnEz0F,KAAK,WAAW,GAErByzF,EAAGG,UAAU/3F,QAAQ,SACvB,CAEAszF,WAEE,OADWn3F,KACD47F,UAAUxpF,KACtB,CAEA,QAAI68B,GACF,MAAM3oC,OAAEA,EAAMw3B,IAAEA,GAAQ99B,KACxB,IAAIivC,EAOJ,GANI3oC,EAAO2oC,OACTA,EAAO3oC,EAAO2oC,MAEXA,IACHA,EAAOnR,EAAI7zB,QAAQ,SAAS3M,QAAUwgC,EAAI7zB,QAAQ,SAAS,GAAG6iD,SAE3D7d,GAA0B,SAAlB3oC,EAAO2gD,OAClB,MAAMhjC,MAAM,0CAEd,OAAOgrB,CACT,CAEAotD,iBACE,MAAMZ,EAAKz7F,KACL8qE,EAAe2wB,EAAG3wB,aACpB2wB,EAAG5L,SAAS59E,gBAAgB3U,QAAUm+F,EAAGW,UAC3CtxB,EAAaj5B,KAAK,0BAA0B1qC,MAAMqoF,IAC3CA,EAAQE,QAGXrtF,EAAEmtF,GAASvlF,QAAQ,MAAMu4B,YAAY,YAFrCngC,EAAEmtF,GAASvlF,QAAQ,MAAMq4B,SAAS,WAGpC,IAGFwoC,EAAaj5B,KAAK,aAAarP,YAAY,WAE/C,CAEA+5D,uBAAuBvqF,GACrB,MAAMypF,EAAKz7F,KACL88F,EAAiBrB,EAAGsB,gBAAgB/qF,GACtC8qF,EAAetrE,SAAS,MAAQsrE,EAAetrE,SAAS,KAC1DiqE,EAAG/C,SAASl2F,KAAKs6F,GAEjBrB,EAAG/C,SAAS1nF,KAAK8rF,EAErB,CAEAC,gBAAgB/qF,GACd,MAAMypF,EAAKz7F,KACX,IAAIg9F,EAMJ,OAJEA,EADEvB,EAAGn1F,OAAOy2F,gBACAtB,EAAGn1F,OAAOy2F,gBAAgB36F,KAAKq5F,EAAIzpF,EAAQypF,GAE3CzpF,EAAOyd,KAAK,MAEnButE,CACT,CAEAnB,aAAap6F,GACX,MAAMg6F,EAAKz7F,KACX,IAAIi9F,EAAa,QACI,IAAVx7F,EAEPw7F,EADEh8F,MAAMc,QAAQN,GACHA,EAEA,CAACA,GAGhBg6F,EAAGG,UAAU/pD,KAAK,UAAU1qC,MAAM80F,IAChC,MAAMiB,EAAY76F,EAAE45F,GACpB,GAAIA,EAAS9pF,SAAU,CACrB,MAAM+pF,EAAYD,EAAS5xF,QACvB4xF,EAAS5xF,QAAQ6xF,UACjBgB,EAAUtrF,KAAK,oBACfsqF,QAAkC,IAAdA,EACtBe,EAAWj7F,KAAKk6F,GAEhBe,EAAWj7F,KAAKi6F,EAAShxF,YAAYxI,OAEzC,KAGAg5F,EAAGn1F,OAAOu1F,cACZJ,EAAGc,uBAAuBU,EAE9B,CAEAE,eACE,MAAM1B,EAAKz7F,KACLoxB,EAAQqqE,EAAG79D,IAAIxM,MACflwB,EAAQ,GACd,IAAIk8F,EAoDJ,OAnDA3B,EAAGG,UAAU/pD,KAAK,UAAU1qC,MAAM80F,IAChC,MAAMiB,EAAY76F,EAAE45F,GACdoB,EAAaH,EAAU7yF,UACvBizF,EAAcD,EAAWC,aAAe7B,EAAGn1F,OAAOg3F,YAClDC,EAAaF,EAAWE,YAAc9B,EAAGn1F,OAAOi3F,WAChDC,EACM,QAAVpsE,IAAoBisE,EAAWG,eAAiB/B,EAAGn1F,OAAOk3F,eACtDC,EAAyB,OAAVrsE,IAAmBisE,EAAWI,cAAgBhC,EAAGn1F,OAAOm3F,cACvEC,EACJL,EAAWM,mBAAqBlC,EAAGn1F,OAAOq3F,mBAAqB,GAE3DC,EAAiBN,GAAeC,GAAcC,GAAiBC,EAC/DI,EAAcR,EAAWQ,YAE/B,IAAIC,EAAkBT,EAAWU,aAAe,GAC5Cb,EAAU,GAAG5oB,WAAUwpB,GAAmB,aAE9C,MAAME,EAAgBd,EAAUxzF,OAAO,YAAY,GAC7Cu0F,EAAmBD,GAAiBA,EAAc5pB,MACxD,IAAI8pB,GAAgB,EAChBF,GAAiBA,IAAkBZ,IACrCc,GAAgB,EAChBd,EAAkBY,EAClB98F,EAAMc,KAAK,CACTm8F,WAAYF,EACZG,QAASF,KAGbh9F,EAAMc,KAAK,CACTP,MAAOy7F,EAAU,GAAGz7F,MACpBuP,KAAMksF,EAAU,GAAGjyF,YAAYxI,OAC/B0P,SAAU+qF,EAAU,GAAG/qF,SACvBksF,QAASL,EACTG,WAAYF,EACZK,MAAOhB,EACP/oB,KAAMgpB,EACNgB,QAASf,EACTgB,OAAQf,EACRE,kBAAmBD,EACnBntE,MAAOstE,EACPtyF,UAAWuyF,EACXxpB,SAAU4oB,EAAU,GAAG5oB,SACvB1zE,GAAI66F,EAAG76F,GACP69F,SAAUb,EACVc,SAA2B,aAAjBjD,EAAGK,UACb6C,MAAwB,UAAjBlD,EAAGK,UACVW,UAAWhB,EAAGgB,UACdX,UAAWL,EAAGK,WACd,IAEJL,EAAGv6F,MAAQA,EACJA,CACT,CAEA09F,kBACE,MAAMnD,EAAKz7F,KACX,OAAIy7F,EAAGn1F,OAAOs4F,gBAAwBnD,EAAGn1F,OAAOs4F,gBAAgBx8F,KAAKq5F,GAEnE98D,GAAA,QAAM0zB,MAAM,aACV1zB,GAAA,OAAK0zB,MAAM,mBACT1zB,GAAA,OAAK0zB,MAAM,wBACT1zB,GAAA,SACE6K,KAAK,SACLq1D,WAAYpD,EAAGn1F,OAAOw4F,qBAAuB,QAC7CC,YAAatD,EAAGn1F,OAAO04F,uBAEzBrgE,GAAA,KAAG0zB,MAAM,mBACT1zB,GAAA,QAAM0zB,MAAM,wBAEbopC,EAAGn1F,OAAO24F,wBACTtgE,GAAA,QAAM0zB,MAAM,4BAA4BopC,EAAGn1F,OAAO44F,uBAK5D,CAEAjf,WAAWjiB,EAAMv2D,GACf,MAAMg0F,EAAKz7F,KACX,GAAIy7F,EAAGn1F,OAAO25E,WAAY,OAAOwb,EAAGn1F,OAAO25E,WAAW79E,KAAKq5F,EAAIz9B,EAAMv2D,GAkBrE,IAAIu+E,EACJ,GAAIhoB,EAAKogC,QACPpY,EAAY,gCAA+BhoB,EAAKmgC,sBAC3C,CACL,IACI7pB,EADAniE,EAAW6rD,EAAK7rD,SAEpB,GAAIspF,EAAGn1F,OAAO81E,YAAa,CACzB,MAAM+iB,EAAU1D,EAAGtE,WACnBhlF,EAAWspF,EAAG1pF,SAAWotF,EAAQz8F,QAAQs7D,EAAKv8D,QAAU,EAAI09F,IAAYnhC,EAAKv8D,MACzEg6F,EAAG1pF,WACLuiE,EAAWmnB,EAAG1pF,WAAaI,GAAYgtF,EAAQ7hG,SAAW4yB,SAASurE,EAAGW,UAAW,IAErF,CAEA,MAAM7nB,KAAEA,EAAIgqB,QAAEA,EAAOC,OAAEA,GAAWxgC,EAC5BohC,EAAU7qB,GAAQgqB,GAAWC,EAC7Ba,QAhCyB,KAATC,EAgCa/qB,GAAQgqB,GAAWC,GAAU,MAhC1Cc,EAAY,IAC9BA,EAAU58F,QAAQ,MAAQ,EACrB48F,EAAUh8F,MAAM,KAAK,GAEvB,IA6BDi8F,EA3BR,SAAsBD,GACpB,QAD6B,IAATA,MAAY,IAC5BA,EAAU58F,QAAQ,MAAQ,EAAG,CAC/B,IAAI6I,EAAY+zF,EAAUh8F,MAAM,KAAK,GAGrC,MAFkB,OAAdiI,IAAoBA,EAAY,YAClB,aAAdA,IAA0BA,EAAY,kBACnCA,CACT,CACA,OAAO+zF,CACT,CAmBoBE,CAAajrB,GAAQgqB,GAAWC,GAAU,IAE5DxY,EACErnD,GAAA,MAAI0zB,MAAQ,GAAE2L,EAAKzyD,WAAa,KAAK+oE,EAAW,YAAc,MAC5D31C,GAAA,SACE0zB,MAAQ,QAAO2L,EAAK89B,aAClB99B,EAAK2/B,kBAAqB,QAAO3/B,EAAK89B,kBAAkB99B,EAAK2/B,oBAAsB,mBAGrFh/D,GAAA,SACE6K,KAAMw0B,EAAK89B,UACXt4F,KAAMw6D,EAAKy+B,UACXh7F,MAAOu8D,EAAKv8D,MACZg+F,SAAUttF,IAEZwsB,GAAA,KAAG0zB,MAAQ,aAAY2L,EAAK89B,cAC3B99B,EAAKygC,UACJ9/D,GAAA,OAAK0zB,MAAM,cACR+sC,GAAWzgE,GAAA,KAAG0zB,MAAQ,QAAOktC,KAAcF,GAC3CrhC,EAAKsgC,OAAS3/D,GAAA,OAAKzhC,IAAK8gE,EAAKsgC,SAGlC3/D,GAAA,OAAK0zB,MAAM,cACT1zB,GAAA,OAAK0zB,MAAQ,cAAY2L,EAAKztC,MAAS,eAAcytC,EAAKztC,QAAU,KACjEytC,EAAKhtD,QAMlB,CA/DA,IAAwBsuF,EAgExB,OAAOtZ,CACT,CAEA0Z,cACE,MAAMjE,EAAKz7F,KACX,GAAIy7F,EAAGn1F,OAAOo5F,YAAa,OAAOjE,EAAGn1F,OAAOo5F,YAAYt9F,KAAKq5F,EAAIA,EAAGv6F,OACpE,MAAMy+F,EAAa,WACflE,EAAGv6F,MAAM4E,KAAI,CAACk4D,EAAMv2D,IAAW,GAAEg0F,EAAGxb,WAAWjiB,EAAMv2D,OAAUgoB,KAAK,YAExE,OAAOkwE,CACT,CAEAC,aACE,MAAMnE,EAAKz7F,KACX,GAAIy7F,EAAGn1F,OAAOs5F,WAAY,OAAOnE,EAAGn1F,OAAOs5F,WAAWx9F,KAAKq5F,EAAIA,EAAGv6F,OAClE,IAAI2+F,EAAYpE,EAAGn1F,OAAOu5F,UAC1B,QAAyB,IAAdA,EAA2B,CACpC,MAAMC,EAAerE,EAAG39D,IAAI+T,KAAK,eACjCguD,EAAYC,EAAaxiG,OAASwiG,EAAa9uF,OAAOvO,OAAS,EACjE,CACA,MAAMoqE,EAAW4uB,EAAGn1F,OAAOumE,SAC3B,OACEluC,GAAA,OACE0zB,MAAQ,0BAAyBwa,IACjC,YAAU,oBACV,mBAAkB4uB,EAAGiB,YAErB/9D,GAAA,OACE0zB,MAAQ,WACNopC,EAAGn1F,OAAOy5F,iBAAoB,SAAQtE,EAAGn1F,OAAOy5F,mBAAqB,KAGvEphE,GAAA,OAAK0zB,MAAM,cACX1zB,GAAA,OACE0zB,MAAQ,yBACNopC,EAAGn1F,OAAOy5F,iBAAoB,SAAQtE,EAAGn1F,OAAOy5F,mBAAqB,KAGvEphE,GAAA,OAAK0zB,MAAM,QACT1zB,GAAA,KAAG0zB,MAAM,aACP1zB,GAAA,KAAG0zB,MAAM,mBACT1zB,GAAA,QAAM0zB,MAAM,aAAaopC,EAAGn1F,OAAO05F,oBAGtCH,GAAalhE,GAAA,OAAK0zB,MAAM,SAASwtC,GACjCpE,EAAGn1F,OAAO25F,WAAathE,GAAA,OAAK0zB,MAAM,aAAaopC,EAAGmD,qBAGtDnD,EAAGn1F,OAAO25F,WAAathE,GAAA,OAAK0zB,MAAM,uBACnC1zB,GAAA,OAAK0zB,MAAM,gBACT1zB,GAAA,OACE0zB,MAAQ,6EACNopC,EAAG76F,MACD66F,EAAGn1F,OAAO81E,YAAc,gBAAkB,MAC5Cqf,EAAGn1F,OAAO45F,eAAkB,SAAQzE,EAAGn1F,OAAO45F,iBAAmB,MAGnEvhE,GAAA,WAAM88D,EAAGn1F,OAAO81E,aAAeqf,EAAGiE,YAAYjE,EAAGv6F,UAK3D,CAEAi/F,cACE,MAAM1E,EAAKz7F,KACX,GAAIy7F,EAAGn1F,OAAO65F,YAAa,OAAO1E,EAAGn1F,OAAO65F,YAAY/9F,KAAKq5F,EAAIA,EAAGv6F,OACpE,IAAI2+F,EAAYpE,EAAGn1F,OAAOu5F,UAC1B,QAAyB,IAAdA,EAA2B,CACpC,MAAMC,EAAerE,EAAG39D,IAAI+T,KAAK,eACjCguD,EAAYC,EAAaxiG,OAASwiG,EAAa9uF,OAAOvO,OAAS,EACjE,CACA,MAAMoqE,EAAW4uB,EAAGn1F,OAAOumE,UAAY,GACvC,OACEluC,GAAA,OACE0zB,MAAQ,4BAA2Bwa,KACjC4uB,EAAGn1F,OAAO85F,sBAAwB,0BAA4B,KAEhE,mBAAkB3E,EAAGiB,YAErB/9D,GAAA,OAAK0zB,MAAM,QACT1zB,GAAA,OACE0zB,MAAQ,2BAAyBopC,EAAGn1F,OAAO25F,UAAY,sBAAwB,IAC/E,YAAU,qBAEVthE,GAAA,OACE0zB,MAAQ,WACNopC,EAAGn1F,OAAOy5F,iBAAoB,SAAQtE,EAAGn1F,OAAOy5F,mBAAqB,KAGvEphE,GAAA,OAAK0zB,MAAM,cACX1zB,GAAA,OAAK0zB,MAAM,wBACRwtC,GAAalhE,GAAA,OAAK0zB,MAAM,SAASwtC,GAClClhE,GAAA,OAAK0zB,MAAM,SACT1zB,GAAA,KACE0zB,MAAM,mBACN,aAAa,yCAAwCopC,EAAGiB,gBAEvDjB,EAAGn1F,OAAO+5F,qBAGd5E,EAAGn1F,OAAO25F,WAAathE,GAAA,OAAK0zB,MAAM,aAAaopC,EAAGmD,qBAGtDnD,EAAGn1F,OAAO25F,WAAathE,GAAA,OAAK0zB,MAAM,uBACnC1zB,GAAA,OAAK0zB,MAAM,gBACT1zB,GAAA,OACE0zB,MAAQ,6EACNopC,EAAG76F,MACD66F,EAAGn1F,OAAO81E,YAAc,gBAAkB,MAC5Cqf,EAAGn1F,OAAO45F,eAAkB,SAAQzE,EAAGn1F,OAAO45F,iBAAmB,MAGnEvhE,GAAA,WAAM88D,EAAGn1F,OAAO81E,aAAeqf,EAAGiE,YAAYjE,EAAGv6F,YAO/D,CAEAo/F,cACE,MAAM7E,EAAKz7F,KACX,GAAIy7F,EAAGn1F,OAAOg6F,YAAa,OAAO7E,EAAGn1F,OAAOg6F,YAAYl+F,KAAKq5F,EAAIA,EAAGv6F,OACpE,MAAM2rE,EAAW4uB,EAAGn1F,OAAOumE,SAE3B,OACEluC,GAAA,OAAK0zB,MAAQ,kCAAiCwa,IAAY,mBAAkB4uB,EAAGiB,YAC7E/9D,GAAA,OAAK0zB,MAAQ,wBAAsBopC,EAAGn1F,OAAOi6F,kBAAqB,SAAQ9E,EAAGn1F,OAAOi6F,oBAAsB,KACxG5hE,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,OAAK0zB,MAAM,SACX1zB,GAAA,OAAK0zB,MAAM,SACT1zB,GAAA,KAAG0zB,MAAM,oBAAoBopC,EAAGn1F,OAAOk6F,uBAI7C7hE,GAAA,OAAK0zB,MAAM,qBACT1zB,GAAA,OAAK0zB,MAAM,gBACT1zB,GAAA,OAAK0zB,MAAQ,4DAA2DopC,EAAG76F,MAAM66F,EAAGn1F,OAAO81E,YAAc,gBAAkB,MAAMqf,EAAGn1F,OAAO45F,eAAkB,SAAQzE,EAAGn1F,OAAO45F,iBAAmB,MAChMvhE,GAAA,WAAM88D,EAAGn1F,OAAO81E,aAAeqf,EAAGiE,YAAYjE,EAAGv6F,WAM7D,CAEAwyE,gBACE,MAAM+nB,EAAKz7F,KACX,GAAIy7F,EAAGn1F,OAAOotE,cAAe,OAAO+nB,EAAGn1F,OAAOotE,cAActxE,KAAKq5F,EAAIA,EAAGv6F,OACxE,MAAM2rE,EAAW4uB,EAAGn1F,OAAOumE,SAE3B,OACEluC,GAAA,OAAK0zB,MAAQ,gCAA+Bwa,IAAY,mBAAkB4uB,EAAGiB,YAC3E/9D,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,OAAK0zB,MAAQ,4DAA2DopC,EAAG76F,MAAM66F,EAAGn1F,OAAO81E,YAAc,gBAAkB,MAAMqf,EAAGn1F,OAAO45F,eAAkB,SAAQzE,EAAGn1F,OAAO45F,iBAAmB,MAChMvhE,GAAA,WAAM88D,EAAGn1F,OAAO81E,aAAeqf,EAAGiE,YAAYjE,EAAGv6F,UAM3D,CAEAu/F,uBACE,MAAMhF,EAAKz7F,MACLsG,OAAEA,EAAMwkE,aAAEA,GAAiB2wB,EACjC,IAAKA,EAAG5wB,OAAQ,OAAO4wB,EACvB,GAAIn1F,EAAO81E,YAAa,CACtB,IAAIskB,EACJjF,EAAGpc,GAAGn+E,MAAM9D,SAAQ,CAAC4gE,EAAMv2D,UACI,IAAlBi5F,GAAiC1iC,EAAK7rD,WAC/CuuF,EAAgBj5F,EAClB,SAE2B,IAAlBi5F,GACTjF,EAAGpc,GAAG4D,aAAayd,EAEvB,KAAO,CACL,MAAMC,EAAkB71B,EAAaj5B,KAAK,iBAAiB5nC,QAAQ,MACnE,IAAK02F,EAAgBrjG,OAAQ,OAAOm+F,EACpC,MAAMrJ,EAAgBtnB,EAAaj5B,KAAK,iCACxC,IAAKugD,EAAc90F,OAAQ,OAAOm+F,EAClCrJ,EAAcvkF,UACZ8yF,EAAgBh8D,SAAS12B,IACvBmkF,EAAcztD,SAAS12B,IACvBiiB,SAASkiE,EAAc1mF,IAAI,eAAgB,IAEjD,CACA,OAAO+vF,CACT,CAEAzwB,OAAOxhC,EAAMuhC,GACX,MAAM0wB,EAAKz7F,KACL49B,EAAM69D,EAAG79D,IACTktC,EAAezoE,EAAE0oE,GA2BvB,GA1BA0wB,EAAG3wB,aAAeA,EAClB2wB,EAAGmF,SAAWp3D,EACdiyD,EAAG5wB,QAAS,EAGR4wB,EAAGn1F,OAAO81E,cACZqf,EAAGpc,GAAKzhD,EAAIw+C,YAAYt/C,OAAO,CAC7Bh7B,GAAIgpE,EAAaj5B,KAAK,iBACtB3wC,MAAOu6F,EAAGv6F,MACV++E,WAAYwb,EAAGxb,WAAWvpD,KAAK+kE,GAC/BzhE,OAAQyhE,EAAGn1F,OAAOu6F,kBAClBjhB,aAAYA,CAACptD,EAAOwrC,OAEhBA,EAAKhtD,MACLwqF,GAAiBx9B,EAAKhtD,MAAMvG,cAAc/H,QAAQ8vB,EAAM/vB,OAAOgI,gBAAkB,MAOrFgxF,EAAGn1F,OAAOm6F,sBACZhF,EAAGgF,uBAIDhF,EAAGn1F,OAAO25F,UAAW,CACvB,IAAIa,EAAeh2B,EAAaj5B,KAAK,cAKrC,GAJa,SAATrI,GAAiC,QAAd5L,EAAIxM,QACzB0vE,EAAez+F,EAAEu7B,EAAIqc,OAAOC,YAAY4wB,IAAej5B,KAAK,eAG1D4pD,EAAGn1F,OAAOy6F,0BAAqC,SAATv3D,GAA4B,UAATA,GAAmB,CAC9E,IAAIw3D,EAAc,KAGhBA,EAD+C,iBAAtCvF,EAAGn1F,OAAOy6F,wBACL1+F,EACX,0CAAyCo5F,EAAGn1F,OAAOy6F,iCAEA,kBAAtCtF,EAAGn1F,OAAOy6F,wBACZ1+F,EAAE,8DAEFo5F,EAAGn1F,OAAOy6F,wBAGtBC,GACFl2B,EAAaj5B,KAAK,iBAAiBloC,OAAOq3F,EAAY,GAE1D,CAEA,MAAMC,EAAkBjkG,GACtB,CACE8E,GAAIg/F,EACJ50B,WAAYpB,EAAaj5B,KAAK,uBAC9BqvD,gBAAkB,sBAAqBzF,EAAG76F,KAC1CugG,SAAU,eAEmB,iBAAxB1F,EAAGn1F,OAAO25F,UAAyBxE,EAAGn1F,OAAO25F,UAAY,IAGlExE,EAAGwE,UAAYriE,EAAIqiE,UAAUnjE,OAAOmkE,EACtC,CAGIxF,EAAGW,WACLX,EAAGY,iBAIDZ,EAAGn1F,OAAOk2F,eACZf,EAAG3wB,aACAj5B,KAAM,6BAA4B4pD,EAAGgB,uBACrCxyF,QAAQ,SACRkxB,KAAK,SAAS,KACbsgE,EAAGl9D,OAAO,IAKhBk9D,EAAGkB,qBAEHlB,EAAG39D,IAAIj6B,QAAQ,oBACf43F,EAAGngE,KAAK,8BAA+BmgE,EACzC,CAEAxwB,WACE,MAAMwwB,EAAKz7F,KAEXy7F,EAAG39D,IAAIj6B,QAAQ,sBACf43F,EAAGngE,KAAK,kCAAmCmgE,EAC7C,CAEAvwB,UACE,MAAMuwB,EAAKz7F,KACPy7F,EAAGrvB,YAGHqvB,EAAGpc,IAAMoc,EAAGpc,GAAGthD,UACjB09D,EAAGpc,GAAGthD,UACN09D,EAAGpc,GAAK,YACDoc,EAAGpc,IAIRoc,EAAGwE,WAAaxE,EAAGwE,UAAUliE,UAC/B09D,EAAGwE,UAAUliE,UACb09D,EAAGwE,UAAY,YACRxE,EAAGwE,WAGZxE,EAAGmB,qBAEHnB,EAAG39D,IAAIj6B,QAAQ,qBACf43F,EAAGngE,KAAK,gCAAiCmgE,GAC3C,CAEAtwB,WACE,MAAMswB,EAAKz7F,KACPy7F,EAAGrvB,YACPqvB,EAAG5wB,QAAS,EACZ4wB,EAAG3wB,aAAe,YACX2wB,EAAG3wB,aAEV2wB,EAAG39D,IAAIj6B,QAAQ,sBACf43F,EAAGngE,KAAK,kCAAmCmgE,GAC7C,CAEA2F,WACE,MAAM3F,EAAKz7F,KACX,GAAIy7F,EAAG5wB,OAAQ,OAAO4wB,EACtBA,EAAG0B,eACH,MAAMkE,EAAW5F,EAAGmE,WAAWnE,EAAGv6F,OAuBlC,OArBAu6F,EAAGxsD,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAKkpE,EAAGlpE,IACR0a,MAAO,CACLhf,QAASozE,EACTp2D,KAAMwwD,EAAGlpE,IACTzuB,GAAI,CACFqkE,aAAaj/D,EAAGi7C,GACds3C,EAAGzwB,OAAO,OAAQ7mB,EAAKriD,G,EAEzBukD,YAAYn9C,EAAGi7C,GACbs3C,EAAGxwB,SAAS,OAAQ9mB,EAAKriD,G,EAE3Bw/F,cAAcp4F,EAAGi7C,GACfs3C,EAAGvwB,QAAQ,OAAQ/mB,EAAKriD,G,EAE1By/F,aAAar4F,EAAGi7C,GACds3C,EAAGtwB,SAAS,OAAQhnB,EAAKriD,GAC3B,MAIC25F,CACT,CAEA+F,YACE,MAAM/F,EAAKz7F,KACX,GAAIy7F,EAAG5wB,OAAQ,OAAO4wB,EACtBA,EAAG0B,eACH,MAEMsE,EAAc,CAClBxzE,QAHgBwtE,EAAG0E,YAAY1E,EAAGv6F,OAIlCc,KAAMy5F,EAAGn1F,OAAOo7F,UAChB9wB,aAAc6qB,EAAGn1F,OAAOq7F,kBACxB11B,qBAAsBwvB,EAAGn1F,OAAO2lE,qBAChCnoE,GAAI,CACF89F,UAAUhzC,GACR6sC,EAAGzwB,OAAO,QAASpc,EAAM9sD,G,EAE3B+/F,YAAYjzC,GACV6sC,EAAGxwB,SAAS,QAASrc,EAAM9sD,G,EAE7BggG,WAAWlzC,GACT6sC,EAAGvwB,QAAQ,QAAStc,EAAM9sD,G,EAE5BigG,YAAYnzC,GACV6sC,EAAGtwB,SAAS,QAASvc,EAAM9sD,GAC7B,IAeJ,OAXI25F,EAAGn1F,OAAO07F,gBAAkBvG,EAAGxsD,KACjCwsD,EAAGxsD,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAKkpE,EAAGlpE,IACR0a,MAAO,CACLhC,KAAMwwD,EAAGlpE,IACTq8B,MAAO6yC,KAIXhG,EAAGrjD,MAAQqjD,EAAG79D,IAAIgxB,MAAM9xB,OAAO2kE,GAAaxjE,OAEvCw9D,CACT,CAEAwG,YACE,MAAMxG,EAAKz7F,KACX,GAAIy7F,EAAG5wB,OAAQ,OAAO4wB,EACtBA,EAAG0B,eACH,MAEM+E,EAAc,CAClBj0E,QAHgBwtE,EAAG6E,YAAY7E,EAAGv6F,OAIlCkqE,SAAUqwB,EAAGn1F,OAAO67F,cACpB7qB,WAAYmkB,EAAG39D,IACf+zC,qBAAqB,EACrB7vE,KAAMy5F,EAAGn1F,OAAO87F,UAChBxxB,aAAc6qB,EAAGn1F,OAAO+7F,kBACxBp2B,qBAAsBwvB,EAAGn1F,OAAO2lE,qBAChCnoE,GAAI,CACFw+F,UAAUtuD,GACRynD,EAAGzwB,OAAO,QAASh3B,EAAMlyC,G,EAE3BygG,YAAYvuD,GACVynD,EAAGxwB,SAAS,QAASj3B,EAAMlyC,G,EAE7B0gG,WAAWxuD,GACTynD,EAAGvwB,QAAQ,QAASl3B,EAAMlyC,G,EAE5B2gG,YAAYzuD,GACVynD,EAAGtwB,SAAS,QAASn3B,EAAMlyC,GAC7B,IAeJ,OAXI25F,EAAGn1F,OAAO07F,gBAAkBvG,EAAGxsD,KACjCwsD,EAAGxsD,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAKkpE,EAAGlpE,IACR0a,MAAO,CACLhC,KAAMwwD,EAAGlpE,IACTyhB,MAAOkuD,KAIXzG,EAAGrjD,MAAQqjD,EAAG79D,IAAIoW,MAAMlX,OAAOolE,GAAajkE,OAEvCw9D,CACT,CAEAiH,cACE,MAAMjH,EAAKz7F,KACX,GAAIy7F,EAAG5wB,OAAQ,OAAO4wB,EACtBA,EAAG0B,eACH,MACMwF,EAAgB,CACpB10E,QAFkBwtE,EAAG/nB,cAAc+nB,EAAGv6F,OAGtCg9B,SAAUu9D,EAAG39D,IACbmuC,qBAAsBwvB,EAAGn1F,OAAO2lE,qBAChCnoE,GAAI,CACF8+F,YAAY9zC,GACV2sC,EAAGzwB,OAAO,UAAWlc,EAAQhtD,G,EAE/B+gG,cAAc/zC,GACZ2sC,EAAGxwB,SAAS,UAAWnc,EAAQhtD,G,EAEjCghG,aAAah0C,GACX2sC,EAAGvwB,QAAQ,UAAWpc,EAAQhtD,G,EAEhCihG,cAAcj0C,GACZ2sC,EAAGtwB,SAAS,UAAWrc,EAAQhtD,GACjC,IAcJ,OAXI25F,EAAGn1F,OAAO07F,gBAAkBvG,EAAGxsD,KACjCwsD,EAAGxsD,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAKkpE,EAAGlpE,IACR0a,MAAO,CACLhC,KAAMwwD,EAAGlpE,IACTu8B,QAAS6zC,KAIblH,EAAGrjD,MAAQqjD,EAAG79D,IAAIkxB,QAAQhyB,OAAO6lE,GAAe1kE,OAE3Cw9D,CACT,CAEAx9D,KAAKuL,GACH,MAAMiyD,EAAKz7F,KACX,GAAIy7F,EAAG5wB,OAAQ,OAAO4wB,EACtB,IAAIzc,GAAY,EAChB,SAAS3rB,IACP2rB,GAAY,CACd,CAKA,GAJIyc,EAAG39D,KACL29D,EAAG39D,IAAIj6B,QAAQ,yBAA0B,CAAEwvD,YAE7CooC,EAAGngE,KAAK,0CAA2CmgE,EAAIpoC,GACnD2rB,EAAW,OAAOyc,EAWtB,OATAA,EACG,QAFYjyD,GAAQiyD,EAAGn1F,OAAO2gD,QAG5B3jD,MAAM,IACNwC,KAAI,CAAChE,EAAI2F,IACM,IAAVA,EAAoB3F,EAAG8I,cACpB9I,IAER2tB,KAAK,SAEHgsE,CACT,CAEAl9D,QACE,MAAMk9D,EAAKz7F,KACX,OAAKy7F,EAAG5wB,QACH4wB,EAAGn1F,OAAO07F,gBAAkBvG,EAAGxsD,MAAyB,SAAhBwsD,EAAGmF,SAC9CnF,EAAGxsD,KAAKhN,OAAOniC,QAEf27F,EAAGrjD,MAAMjd,KAAK,eAAe,KAC3BjJ,IAAS,KACHupE,EAAGrvB,YACPqvB,EAAGrjD,MAAMra,iBACF09D,EAAGrjD,MAAK,GACf,IAEJqjD,EAAGrjD,MAAM7Z,SAEJk9D,GAbgBA,CAczB,CAEAp8D,OACar/B,KACR81C,eADQ91C,KAER67F,cACL,CAEA99D,UACE,MAAM09D,EAAKz7F,KACXy7F,EAAGngE,KAAK,gDAAiDmgE,GACzDA,EAAG39D,IAAIj6B,QAAQ,6BACf43F,EAAG1+B,sBACI0+B,EAAG39D,IAAI,GAAG69D,cACjB3pE,GAAYypE,GACZA,EAAGrvB,WAAY,CACjB,GCj+BF,IAAA42B,GAAe,CACbx/F,KAAM,cACN8C,OAAQ,CACNo1F,YAAa,CACX55F,QAAIwH,EACJ0uF,aAAS1uF,EACTuyF,cAAc,EACdkB,gBAAiB,KACjB91C,OAAQ,OACRy6C,WAAW,EACXC,uBAAmBr4F,EACnB84F,WAAW,EACXC,uBAAmB/4F,EACnB64F,eAAe,EACftC,eAAWv2F,EACX02F,iBAAkB,OAClBK,mBAAoB,QACpBD,uBAAuB,EACvBn0B,sBAAsB,EACtBu0B,mBAAoB,OACpBP,WAAW,EACXjB,qBAAsB,SACtBE,qBAAsB,SACtBD,wBAAwB,EACxBH,qBAAqB,EACrBtC,eAAe,EACfpgB,aAAa,EACbykB,uBAAmBv3F,EACnBm3F,sBAAsB,EACtBP,oBAAgB52F,EAChBy2F,sBAAkBz2F,EAClB04F,gBAAgB,EAChBzvE,IAAK,UACLorE,kBAAmB,QACnB9wB,SAAU,GAIV+yB,gBAAYt2F,EACZ62F,iBAAa72F,EACbg3F,iBAAah3F,EACboqE,mBAAepqE,EACfo2F,iBAAap2F,EACb22E,gBAAY32E,EACZs1F,qBAAiBt1F,IAGrB+zB,OAAQ,CACN2lE,gBAEFlmE,SACE,MAAMc,EAAM59B,KACZ49B,EAAI89D,YAAc1+F,GAChBugC,GAAmB,CACjBE,gBAAiB,gBACjB3gC,YAAakmG,GACbplE,MACAD,QAAS,kBAEX,CACEM,KAAKglE,GACH,MAAMxH,EAAK79D,EAAI89D,YAAYn6F,IAAI0hG,GAC/B,GAAIxH,GAAMA,EAAGx9D,KAAM,OAAOw9D,EAAGx9D,M,EAG/BM,MAAM0kE,GACJ,MAAMxH,EAAK79D,EAAI89D,YAAYn6F,IAAI0hG,GAC/B,GAAIxH,GAAMA,EAAGl9D,MAAO,OAAOk9D,EAAGl9D,OAEhC,G,EAKNz6B,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,sBACL1qC,MAAM87F,IACLrlE,EAAI89D,YAAY5+D,OAAO9/B,GAAO,CAAE8E,GAAImhG,GAAiB5gG,EAAE4gG,GAAe54F,WAAW,G,EAGvFk8E,gBAAgBtmC,GACd59C,EAAE49C,GACCpO,KAAK,sBACL1qC,MAAM87F,IACDA,EAActH,eAAiBsH,EAActH,cAAc59D,SAC7DklE,EAActH,cAAc59D,SAC9B,G,EAGNsqC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,sBAAsB1qC,MAAM87F,IACxCrlE,EAAI89D,YAAY5+D,OAAO9/B,GAAO,CAAE8E,GAAImhG,GAAiB5gG,EAAE4gG,GAAe54F,WAAW,G,EAGrF69D,iBAAiB/jB,GACfA,EAAKrmB,IAAI+T,KAAK,sBAAsB1qC,MAAM87F,IACpCA,EAActH,eAAiBsH,EAActH,cAAc59D,SAC7DklE,EAActH,cAAc59D,SAC9B,GAEJ,GAEFyvB,OAAQ,CACN,gBAAiB,SAAcE,EAAY97C,GACzC,MAAMgsB,EAAM59B,KACZ,IAAK0tD,EAAW,GAAGiuC,cAAe,CACrB/9D,EAAI89D,YAAY5+D,OAAO9/B,GAAO,CAAE8E,GAAI4rD,GAAc97C,IAC1DqsB,MACL,CACF,GAEFvB,MAAO,CACL,oBAAqB,CACnB+0B,OAAO/0B,GACL,MACMumE,EAAgBvmE,EAAM4zB,IADhBtwD,KAER07F,YAAY5+D,OAAO9/B,GAAO,CAAE8E,GAAImhG,GAAiB5gG,EAAE4gG,GAAe54F,W,EAExE0zB,QAAQrB,GACN,MAAMumE,EAAgBvmE,EAAM4zB,IACxB2yC,EAActH,eAAiBsH,EAActH,cAAc59D,SAC7DklE,EAActH,cAAc59D,SAEhC,K,OC5HN,cAAuBnC,GACrB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IACf,MAAMslE,EAAWljG,KAIjB,IAAI8qE,EAMA2kB,EALJ,GAHAyT,EAAS58F,OAAStJ,GAAO,GAAI4gC,EAAIt3B,OAAO48F,SAAU58F,GAG9C48F,EAAS58F,OAAOykE,cAClBD,EAAezoE,EAAE6gG,EAAS58F,OAAOykE,aACL,IAAxBD,EAAaxtE,QAAc,OAAO4lG,EAIpCA,EAAS58F,OAAOkpF,UAClBC,EAAWptF,EAAE6gG,EAAS58F,OAAOkpF,UAG/B,MAAM2T,EAA6C,eAA9BD,EAAS58F,OAAO0vC,UAErC,IAAIjE,EAAW,EACXoxD,IACFpxD,EAAWnU,EAAIuD,KAAO,EAAI,GAG5BnkC,GAAOkmG,EAAU,CACftlE,MACAktC,eACAC,YAAaD,GAAgBA,EAAa,GAC1Cs4B,OAAQt4B,GAAgBA,EAAaxtE,OAAS,EAC9CmyF,WACAD,QAASC,GAAYA,EAAS,GAC9B5xE,aAAa,EACbgtD,QAAQ,EACRt4C,IAAK2wE,EAAS58F,OAAOisB,IACrB4wE,eACApxD,WACArrC,WAAW,EACX28F,gBAAgB,EAChBC,cACEJ,EAAS58F,OAAOi9F,aAAeL,EAAS58F,OAAOk9F,cAAgBN,EAAS58F,OAAOyL,WAEnFmxF,EAASO,aAAgBC,GACL,IAAIC,KAAKC,eAAeV,EAAS58F,OAAOu9F,OAAQ,CAAEC,IAAK,YACxDC,OAAOL,GAAMz7F,QAAQ,IAAK,IAE7Ci7F,EAASc,eAAkBN,GACP,IAAIC,KAAKC,eAAeV,EAAS58F,OAAOu9F,OAAQ,CAAEI,MAAO,SAC1DF,OAAOL,GAE1BR,EAASgB,cAAiBR,GACN,IAAIC,KAAKC,eAAeV,EAAS58F,OAAOu9F,OAAQ,CAAEM,KAAM,YACzDJ,OAAOL,GAE1BR,EAASkB,sBAAyBV,GACd,IAAIC,KAAKC,eACzBV,EAAS58F,OAAOu9F,OAChBX,EAAS58F,OAAO+9F,kBAEDN,OAAOL,GAE1B,MAAMY,EAAsBpB,EAASkB,sBAAsB,IAAIhkG,MAAQqK,cACvEy4F,EAASqB,gBACPD,EAAoB5hG,QAAQ,OAAS,GAAK4hG,EAAoB5hG,QAAQ,OAAS,EAGjF,IAAI8hG,WAAEA,EAAUC,gBAAEA,EAAeC,SAAEA,EAAQC,cAAEA,GAAkBzB,EAAS58F,OACxE,MAAMs+F,eAAEA,EAAcC,oBAAEA,EAAmBC,aAAEA,EAAYC,kBAAEA,GACzD7B,EAAS8B,eAaX,SAAS/K,IACPiJ,EAASjlE,MACX,CACA,SAASgnE,EAAa/7F,GACpBA,EAAE+/B,gBACJ,CACA,SAASi8D,IACPhC,EAASlN,SAAS,IACdkN,EAASr4B,QACXq4B,EAASxxC,QAEb,CACA,SAASyzC,EAAYj8F,GACnB,MAAMu1B,EAAYp8B,EAAE6G,EAAEjM,SAClBimG,EAAS92B,WAAc82B,EAAS58F,SAChC48F,EAASkC,aACRlC,EAASr4B,SAAUq4B,EAASmC,UAC7B5mE,EAAUz0B,QAAQ,uBAAuB1M,QACzC4lG,EAASoC,oBAAsBpC,EAASqC,mBAAqBrC,EAASsC,oBAEtE/V,GAAYA,EAASnyF,OAAS,EAE9BmhC,EAAU,KAAOgxD,EAAS,IACoC,IAA9DhxD,EAAUz0B,QAAQ,iCAAiC1M,QAEnD4lG,EAAS3kE,QAE8D,IAAhEl8B,EAAE6G,EAAEjM,QAAQ+M,QAAQ,iCAAiC1M,QAC9D4lG,EAAS3kE,UAEb,CAwQA,MAlTmB,SAAfimE,IAAuBA,EAAaI,GAChB,SAApBH,IAA4BA,EAAkBI,GACjC,SAAbH,IAAqBA,EAAWI,GACd,SAAlBH,IAA0BA,EAAgBI,GAE9C/nG,GAAOkmG,EAAU,CACfsB,aACAC,kBACAC,WACAC,kBAoCF3nG,GAAOkmG,EAAU,CACfuC,oBACEvC,EAASzT,SAAS3rF,GAAG,QAASm2F,GAC9BiJ,EAASzT,SAAS3rF,GAAG,cAAeohG,GAChChC,EAAS58F,OAAOo/F,gBAClBxC,EAASzT,SAAS3rF,GAAG,kBAAmBmhG,GACpC/B,EAASzT,SAAS,KACpByT,EAASzT,SAAS,GAAG+B,oBAAqB,G,EAIhDmU,oBACEzC,EAASzT,SAAStmF,IAAI,QAAS8wF,GAC/BiJ,EAASzT,SAAStmF,IAAI,cAAe+7F,GACjChC,EAAS58F,OAAOo/F,gBAClBxC,EAASzT,SAAStmF,IAAI,kBAAmB87F,GACrC/B,EAASzT,SAAS,WACbyT,EAASzT,SAAS,GAAG+B,mB,EAIlCoU,mBACEhoE,EAAI95B,GAAG,QAASqhG,E,EAElBU,mBACEjoE,EAAIz0B,IAAI,QAASg8F,EACnB,IAEFjC,EAAS4C,qBAAuB,WAC9B,IACIn2D,EACA1J,EACAH,EACAC,EACA0D,EACAC,EACAqG,EACAg2D,EACAhxB,EACAixB,EACAC,EACA9xD,EACArE,EACApJ,EAdAw/D,GAAiB,EAgBrB,MAAMpoE,IAAEA,EAAGqoE,WAAEA,GAAejD,EAE5B,SAAS7xD,EAAiBnoC,GACpB+8B,GAAW0J,IAAczmC,EAAEggC,YAC/ByG,GAAY,EACZ7J,EAAyB,eAAX58B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACrEI,EAAgB3D,EAChBC,EAAyB,eAAX78B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACrEI,EAAgB3D,EAChBgK,GAAiB,IAAI3vC,MAAOuI,UAC5BwrC,EAAa,EACb+xD,GAAiB,EACjBx/D,OAAcp9B,EACdyrE,EAAmBmuB,EAASkD,gBAC9B,CACA,SAAS30D,EAAgBvoC,GACvB,IAAKymC,IAAczmC,EAAEggC,UAAW,OAChC,MAAQi6D,aAAczV,GAAQwV,EAE9Bz5D,EAA2B,cAAXvgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACtEK,EAA2B,cAAXxgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,WAC3C,IAAhB5C,IACTA,KACEA,GACA5/B,KAAK+R,IAAI6wB,EAAgB3D,GAAej/B,KAAK+R,IAAI4wB,EAAgB3D,KAGhE4nD,GAAOhnD,IAAiBw8D,EAASG,eACpC1zD,GAAY,GAGdzmC,EAAE+/B,iBACEi6D,EAASx8F,UACXipC,GAAY,GAGdu2D,GAAiB,EACZjgE,IAEHA,GAAU,EACV+/D,EAAeG,EAAW,GAAG/2F,YAC7B62F,EAAgBE,EAAW,GAAGh3F,aAC9Bg3F,EAAWn1D,WAAW,IAGxBlB,EAAc49C,EAAMjkD,EAAgB3D,EAAc4D,EAAgB3D,EAClEoO,EAAarE,GAAe49C,EAAMsY,EAAeC,GACjDlxB,EAAiF,KAA7DmuB,EAASkD,gBAAkBlD,EAASnxD,SAAWoC,GAGnEgyD,EAAW/0F,UACR,eAAcs8E,EAAM3Y,EAAmB,OAAO2Y,EAAM,EAAI3Y,WAE7D,CACA,SAASngC,EAAe1rC,GACtB,IAAKymC,IAAc1J,IAAY/8B,EAAEggC,UAG/B,OAFAyG,GAAY,OACZ1J,GAAU,GAGZ0J,GAAY,EACZ1J,GAAU,EAEV8/D,GAAe,IAAI3lG,MAAOuI,UACtBo9F,EAAeh2D,EAAiB,IAC9BjpC,KAAK+R,IAAIi3B,GAAe,GAC1BozD,EAASmD,aACAv2D,GAAe,GACpBlS,EAAIuD,IAAK+hE,EAASoD,YACjBpD,EAASqD,YACL3oE,EAAIuD,IAAK+hE,EAASqD,YACxBrD,EAASoD,YACLnyD,IAAe,GACpBvW,EAAIuD,IAAK+hE,EAASqD,YACjBrD,EAASoD,YACLnyD,GAAc,GACnBvW,EAAIuD,IAAK+hE,EAASoD,YACjBpD,EAASqD,YAEdrD,EAASmD,aAIX/lG,YAAW,KACT4lG,GAAiB,CAAI,GACpB,IACL,CAEA,SAASM,EAAet9F,GACtB,IAAKg9F,EAAgB,OACrB,IAAIO,EAASpkG,EAAE6G,EAAEjM,QAAQgN,QAAQ,iBAIjC,GAHsB,IAAlBw8F,EAAOnpG,QAAgB+E,EAAE6G,EAAEjM,QAAQslC,SAAS,kBAC9CkkE,EAASpkG,EAAE6G,EAAEjM,SAEO,IAAlBwpG,EAAOnpG,OAAc,OACzB,GAAImpG,EAAOlkE,SAAS,yBAA0B,OACzC2gE,EAAS58F,OAAOk9F,cACfiD,EAAOlkE,SAAS,sBAAsB2gE,EAASoD,YAC/CG,EAAOlkE,SAAS,sBAAsB2gE,EAASqD,aAErD,MAAMG,EAAWx2E,SAASu2E,EAAOl8F,KAAK,aAAc,IAC9Co8F,EAAYz2E,SAASu2E,EAAOl8F,KAAK,cAAe,IAChDq8F,EAAU12E,SAASu2E,EAAOl8F,KAAK,YAAa,IASlD,GARA24F,EAAS5nE,KACP,mCACA4nE,EACAuD,EAAO,GACPC,EACAC,EACAC,IAGCH,EAAOlkE,SAAS,0BACjB2gE,EAAS58F,OAAOyL,UAChBmxF,EAAS58F,OAAOk9F,YAChB,CACA,MAAMqD,EAAa,IAAIzmG,KAAKsmG,EAAUC,EAAWC,EAAS,EAAG,EAAG,GAC5D1D,EAASI,gBACPJ,EAASzhG,OAASyhG,EAASzhG,MAAM,GACnColG,EAAWC,SAAS5D,EAASzhG,MAAM,GAAGslG,WAAY7D,EAASzhG,MAAM,GAAGulG,cAEpEH,EAAWC,UAAS,IAAI1mG,MAAO2mG,YAAY,IAAI3mG,MAAO4mG,eAG1D9D,EAAS+D,SAASJ,EACpB,CACI3D,EAAS58F,OAAOk2F,gBAEf0G,EAAS58F,OAAOk9F,aAAyC,IAA1BN,EAASzhG,MAAMnE,SAC9C4lG,EAAS58F,OAAOk9F,cAEjBN,EAAS3kE,OAGf,CAEA,SAAS2oE,IACPhE,EAASoD,WACX,CAEA,SAASa,IACPjE,EAASqD,WACX,CAEA,SAASa,IACPlE,EAASmE,UACX,CAEA,SAASC,IACPpE,EAASqE,UACX,CAEA,SAASC,IACPtE,EAASuE,iBACX,CAEA,SAASC,IACPxE,EAASyE,gBACX,CAEA,SAASC,IACP1E,EAAS2E,gBACX,CAEA,MAAM9vE,IACsB,eAA1B6F,EAAI8H,YAAY/yB,QAA0B8kB,KAAaM,kBACnD,CAAEyQ,SAAS,EAAMz7B,SAAS,GAGhC+wB,EAAI+T,KAAK,+BAA+B/tC,GAAG,QAASqjG,GACpDrpE,EAAI+T,KAAK,+BAA+B/tC,GAAG,QAASojG,GACpDppE,EAAI+T,KAAK,8BAA8B/tC,GAAG,QAASwjG,GACnDxpE,EAAI+T,KAAK,8BAA8B/tC,GAAG,QAASsjG,GAC/ClE,EAAS58F,OAAOwhG,aAClBhqE,EAAI+T,KAAK,wBAAwB/tC,GAAG,QAAS0jG,GAE3CtE,EAAS58F,OAAOyhG,YAClBjqE,EAAI+T,KAAK,uBAAuB/tC,GAAG,QAAS4jG,GAE1CxE,EAASI,eACXxlE,EAAI+T,KAAK,6BAA6B/tC,GAAG,QAAS8jG,GAGpDzB,EAAWriG,GAAG,QAAS0iG,GAEnBtD,EAAS58F,OAAO0hG,YAClB7B,EAAWriG,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACvD6F,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,IAG7BsuD,EAAS+E,qBAAuB,WAC9BnqE,EAAI+T,KAAK,+BAA+B1oC,IAAI,QAASg+F,GACrDrpE,EAAI+T,KAAK,+BAA+B1oC,IAAI,QAAS+9F,GACrDppE,EAAI+T,KAAK,8BAA8B1oC,IAAI,QAASm+F,GACpDxpE,EAAI+T,KAAK,8BAA8B1oC,IAAI,QAASi+F,GAChDlE,EAAS58F,OAAOwhG,aAClBhqE,EAAI+T,KAAK,wBAAwB1oC,IAAI,QAASq+F,GAE5CtE,EAAS58F,OAAOyhG,YAClBjqE,EAAI+T,KAAK,uBAAuB1oC,IAAI,QAASu+F,GAE3CxE,EAASI,eACXxlE,EAAI+T,KAAK,6BAA6B1oC,IAAI,QAASy+F,GAErDzB,EAAWh9F,IAAI,QAASq9F,GACpBtD,EAAS58F,OAAO0hG,YAClB7B,EAAWh9F,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACxD6F,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,G,GAKlCsuD,EAAS7jE,OAEF6jE,CACT,CAEA,QAAIj0D,GACF,MAAMwgD,SAAEA,EAAQ7xD,IAAEA,EAAGt3B,OAAEA,GAAWtG,KAClC,IAAIivC,EAOJ,OANI3oC,EAAO2oC,KACTA,EAAO3oC,EAAO2oC,KACLwgD,IACTxgD,EAAOwgD,EAASxlF,QAAQ,SAAS3M,QAAUmyF,EAASxlF,QAAQ,SAAS,GAAG6iD,QAErE7d,IAAMA,EAAOrR,EAAIoR,MAAM6d,MACrB5d,CACT,CAEA+1D,eACE,MAAM9B,EAAWljG,KACX6jG,EAASX,EAAS58F,OAAOu9F,OAEzBe,EAAiB,GACjBC,EAAsB,GACtBC,EAAe,GACfC,EAAoB,GACpBmD,EAAsB,IAAIvE,KAAKC,eAAeC,EAAQ,CAAEI,MAAO,SAC/DkE,EAA2B,IAAIxE,KAAKC,eAAeC,EAAQ,CAAEI,MAAO,UACpEmE,EAAoB,IAAIzE,KAAKC,eAAeC,EAAQ,CAAEwE,QAAS,SAC/DC,EAAyB,IAAI3E,KAAKC,eAAeC,EAAQ,CAAEwE,QAAS,UAC1E,IAAIlE,EACAoE,EACAC,EACJ,IAAK,IAAI1lG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,MAAM4gG,GAAO,IAAItjG,MAAOqoG,SAAS3lG,EAAG,GAC9B4lG,EAAcxF,EAASgB,cAAcR,GAEvCS,GAAQuE,IAAgBvE,IACtBoE,IAAaC,GAAY,GAC7BD,GAAc,EACdpE,EAAOuE,GAEJvE,IACHA,EAAOuE,GAELH,GAAepE,IAASuE,IAAgBF,IAC1C5D,EAAe5iG,KAAKkmG,EAAoBnE,OAAOL,IAC/CmB,EAAoB7iG,KAAKmmG,EAAyBpE,OAAOL,IAE7D,CACA,MAAMiF,GAAU,IAAIvoG,MAAOwoG,SAC3B,IAAK,IAAI9lG,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAC7B,MAAM4gG,GAAO,IAAItjG,MAAOuI,UAA4B,IAAf7F,EAAI6lG,GAAgB,GAAK,GAAK,IACnE7D,EAAa9iG,KAAKomG,EAAkBrE,OAAOL,IAC3CqB,EAAkB/iG,KAAKsmG,EAAuBvE,OAAOL,GACvD,CAEA,MAAO,CACLkB,iBACAC,sBACAC,eACAC,oBAEJ,CAEA8D,cAAcnF,GACZ,MACM5tF,EAAI,IAAI1V,KAAKsjG,GACnB,OAFiB1jG,KAEJsjG,cACJ,IAAIljG,KAAK0V,EAAEgzF,cAAehzF,EAAEizF,WAAYjzF,EAAEkzF,UAAWlzF,EAAEixF,WAAYjxF,EAAEkxF,cAEvE,IAAI5mG,KAAK0V,EAAEgzF,cAAehzF,EAAEizF,WAAYjzF,EAAEkzF,UACnD,CAEAC,gBAAgBj3F,GACd,MAAMkxF,EAAWljG,KACjB,IAAIi3F,EAAY,GAIhB,OAHIjlF,GAAU/Q,MAAMc,QAAQiQ,KAC1BilF,EAAYjlF,EAAOlM,KAAKsM,GAAQ8wF,EAAS2F,cAAcz2F,MAElD6kF,CACT,CAEAiS,YACE,MAAMhG,EAAWljG,KACZkjG,EAASzT,UACVyT,EAAS58F,OAAOo/F,eAAexC,EAASzT,SAASznF,KAAK,YAAY,EACxE,CAEAo9F,YACE,MAAMlC,EAAWljG,MACX49B,IAAEA,EAAGwa,MAAEA,EAAK9xC,OAAEA,GAAW48F,EACzBrqE,EAASN,KACf,GAAsB,UAAlBjyB,EAAO2gD,OAAoB,OAAO,EACtC,GAAI7O,GAAwB,YAAfA,EAAM5O,KAAoB,OAAO,EAE9C,IAAK05D,EAASE,QAAUF,EAAS1T,QAAS,CACxC,GAAsB,YAAlBlpF,EAAO2gD,OAAsB,OAAO,EACxC,GAAIpuB,EAAOxC,IACT,QAASwC,EAAOM,KAElB,GAAIyE,EAAItF,OAAS,IACf,OAAO,CAEX,CACA,OAAO,CACT,CAEA6wE,WAAWrzF,GACT,MAAMotF,EAAWljG,KACX0jG,EAAO,IAAItjG,KAAK0V,GAChBquF,EAAOT,EAAKoF,cACZ7E,EAAQP,EAAKqF,WACbK,EAASnF,EAAQ,EACjBH,EAAMJ,EAAKsF,UACXL,EAAUjF,EAAKkF,UACfpE,WAAEA,EAAUC,gBAAEA,EAAeC,SAAEA,EAAQC,cAAEA,GAAkBzB,GAC3DmG,WAAEA,EAAUxF,OAAEA,GAAWX,EAAS58F,OAExC,SAASgjG,EAAUC,GACjB,OAAOA,EAAS,GAAM,IAAGA,IAAWA,CACtC,CACA,GAA0B,iBAAfF,EAAyB,CAClC,MAAMj/D,EAAS,CACbo/D,KAAMrF,EACNsF,GAAIx4E,OAAOkzE,GAAMt+C,UAAU,GAC3B6jD,GAAIJ,EAAUF,GACdhyF,EAAGgyF,EACHO,GAAInF,EAAWP,GACfvoF,EAAG+oF,EAAgBR,GACnB2F,GAAIN,EAAUxF,GACdhuF,EAAGguF,EACH+F,GAAInF,EAASiE,GACbmB,EAAGnF,EAAcgE,IAEnB,GAAIzF,EAAS58F,OAAOi9F,WAAY,CAC9B,MAAMwG,EAAQrG,EAAKqD,WACbiD,EAAUtG,EAAKsD,aACfiD,EAAUvG,EAAKwG,aACrB,IAAIC,EAAUJ,EACVA,EAAQ,KAAII,EAAUJ,EAAQ,IACpB,IAAVA,IAAaI,EAAU,IAC3B,MAAMpnG,EAAIgnG,GAAS,IAAgB,IAAVA,EAAc,KAAO,KAE9ChtG,OAAOsJ,OAAO+jC,EAAQ,CACpBggE,GAAId,EAAUS,GACdM,EAAGN,EACHO,GAAIhB,EAAUa,GACdnwF,EAAGmwF,EACH1O,GAAI6N,EAAUW,GACd5yF,EAAG4yF,EACH,MAAOX,EAAUU,GACjB,KAAMA,EACNjnG,IACAwnG,EAAGxnG,EAAE6H,eAET,CACA,MAAM4/F,EAAS,IAAIt+D,OACjBnvC,OAAOI,KAAKitC,GACTtkC,KAAKmP,GAAO,IAAGA,OACfwa,KAAK,KACR,KAEF,OAAO45E,EAAWphG,QAAQuiG,GAASv+D,GAC7BA,KAAS7B,EAAeA,EAAO6B,GAC5BA,GAEX,CACA,GAA0B,mBAAfo9D,EACT,OAAOA,EAAW3F,GAIpB,OADkB,IAAIC,KAAKC,eAAeC,EAAQwF,GACjCtF,OAAOL,EAC1B,CAEAzL,cACE,MAAMiL,EAAWljG,MACXyB,MAAEA,GAAUyhG,EAClB,OAAIA,EAAS58F,OAAO2xF,YACXiL,EAAS58F,OAAO2xF,YAAY71F,KAAK8gG,EAAUzhG,GAE7CA,EACJqE,KAAKyrB,GAAM2xE,EAASiG,WAAW53E,KAC/B9B,KAAKyzE,EAAS58F,OAAOk9F,YAAc,MAAQ,KAChD,CAEAyD,SAASlR,GACP,MAAMmN,EAAWljG,MACX+R,SAAEA,EAAQyxF,YAAEA,EAAWiH,mBAAEA,EAAkBC,mBAAEA,GAAuBxH,EAAS58F,OACnF,GAAIyL,EAAU,CAEZ,IAAI44F,EADCzH,EAASzhG,QAAOyhG,EAASzhG,MAAQ,IAEtC,IAAK,IAAIqB,EAAI,EAAGA,EAAIogG,EAASzhG,MAAMnE,OAAQwF,GAAK,EAC1C,IAAI1C,KAAK21F,GAAUptF,YAAc,IAAIvI,KAAK8iG,EAASzhG,MAAMqB,IAAI6F,YAC/DgiG,EAAgB7nG,QAGS,IAAlB6nG,EACTzH,EAASzhG,MAAMO,KAAK+zF,GAEpBmN,EAASzhG,MAAM+L,OAAOm9F,EAAe,GAEvCzH,EAAS0H,a,MACApH,GACJN,EAASzhG,QAAOyhG,EAASzhG,MAAQ,IACR,IAA1ByhG,EAASzhG,MAAMnE,QAA0C,IAA1B4lG,EAASzhG,MAAMnE,SAChD4lG,EAASzhG,MAAQ,IAIS,IAA1ByhG,EAASzhG,MAAMnE,QACdwJ,KAAK+R,IAAIqqF,EAASzhG,MAAM,GAAGkH,UAAYotF,EAASptF,YACpB,IAA1B8hG,EAAqB,GAAU,GAAK,GAAK,MAClB,IAAvBC,GACC5jG,KAAK+R,IAAIqqF,EAASzhG,MAAM,GAAGkH,UAAYotF,EAASptF,YACnB,IAA1B+hG,EAAqB,GAAU,GAAK,GAAK,KAEhDxH,EAASzhG,MAAMO,KAAK+zF,GACjBmN,EAASzhG,MAAQ,GAEtByhG,EAASzhG,MAAMg4D,MAAK,CAAC12D,EAAGoW,IAAMpW,EAAIoW,IAClC+pF,EAAS0H,gBAET1H,EAASzhG,MAAQ,CAACs0F,GAClBmN,EAAS0H,cAEb,CAEA5U,SAAShkF,GACP,MAAMkxF,EAAWljG,KACXmI,EAAe+6F,EAASzhG,MAC9B,GACER,MAAMc,QAAQoG,IACdlH,MAAMc,QAAQiQ,IACd7J,EAAa7K,SAAW0U,EAAO1U,OAC/B,CACA,IAAIutG,GAAQ,EAIZ,GAHA1iG,EAAa/K,SAAQ,CAACm0B,EAAG9pB,KACnB8pB,IAAMvf,EAAOvK,KAAQojG,GAAQ,EAAK,IAEpCA,EAAO,MACb,CACA3H,EAASzhG,MAAQuQ,EACjBkxF,EAAS0H,aACX,CAEAzT,WAEE,OADiBn3F,KACDyB,KAClB,CAEAmpG,YAAYE,GACV,MAAM5H,EAAWljG,MACX89B,IAAEA,EAAGqoE,WAAEA,EAAU1W,SAAEA,EAAQhuF,MAAEA,EAAK6E,OAAEA,GAAW48F,EACrD,IAAIpgG,EACJ,GAAIg7B,GAAOA,EAAIxgC,OAAS,EAAG,CAMzB,IAAIytG,EAEJ,GAPA5E,EACGt0D,KAAK,0BACLrP,YACC,4GAIAl8B,EAAOk9F,aAAgC,IAAjB/hG,EAAMnE,OAAc,CAC5C,MAAM0tG,EAAW,IAAI5qG,KAAKqB,EAAM,IAAIkH,UAC9BsiG,EAAY,IAAI7qG,KAAKqB,EAAM,IAAIkH,UACrC,IAAK7F,EAAIkoG,EAAUloG,GAAKmoG,EAAWnoG,GAAK,MAAqB,CAC3DioG,EAAY,IAAI3qG,KAAK0C,GACrB,IAAIw/B,EAAW,wBACX0oE,IAAaC,IACXnoG,IAAMkoG,GAAYloG,IAAMmoG,IAC1B3oE,GAAY,gCAEVx/B,IAAMkoG,IACR1oE,GAAY,+BAEVx/B,IAAMmoG,IACR3oE,GAAY,iCAGhB6jE,EACGt0D,KACE,4BAA2Bk5D,EAAUjC,iBAAiBiC,EAAUhC,cAAcgC,EAAU/B,eAE1F1mE,SAASA,EACd,CACAyoE,EAAY,IAAI3qG,KAAK4qG,GACrB7E,EACGt0D,KACE,4BAA2Bk5D,EAAUjC,iBAAiBiC,EAAUhC,cAAcgC,EAAU/B,eAE1FxmE,YAAY,+BACZF,SAAS,oDACZyoE,EAAY,IAAI3qG,KAAK6qG,GACrB9E,EACGt0D,KACE,4BAA2Bk5D,EAAUjC,iBAAiBiC,EAAUhC,cAAcgC,EAAU/B,eAE1FxmE,YAAY,+BACZF,SAAS,oDACd,MACE,IAAKx/B,EAAI,EAAGA,EAAIogG,EAASzhG,MAAMnE,OAAQwF,GAAK,EAC1CioG,EAAY,IAAI3qG,KAAKqB,EAAMqB,IAC3BqjG,EACGt0D,KACE,4BAA2Bk5D,EAAUjC,iBAAiBiC,EAAUhC,cAAcgC,EAAU/B,eAE1F1mE,SAAS,wBAGlB,CAeA,GAdKwoE,GACH5H,EAAS5nE,KAAK,+BAAgC4nE,EAAUzhG,GAGtDq8B,GAAOA,EAAIxgC,OAAS,GAAK4lG,EAASI,eACpCxlE,EACG+T,KAAK,6BACL7gC,KACCvP,GAASA,EAAMnE,OACX4lG,EAASkB,sBAAsB3iG,EAAM,IACrCyhG,EAAS58F,OAAO4kG,uBAIrBzb,GAAYA,EAASnyF,QAAWgJ,EAAO6kG,OAAQ,CAClD,MAAM/7B,EAAa8zB,EAASjL,YAAYx2F,GACpC6E,EAAO6kG,QAAUrtE,GAAOA,EAAIxgC,QAC9BwgC,EAAI+T,KAAK,2BAA2B7gC,KAAKo+D,GAEvCqgB,GAAYA,EAASnyF,SAAWwtG,IAClCrb,EAASr9E,IAAIg9D,GACbqgB,EAAS5rF,QAAQ,UAErB,CACF,CAEAunG,uBAAuBC,GACrB,MAAMnI,EAAWljG,MACXsrG,QAAEA,EAAOxtE,IAAEA,EAAG0mE,WAAEA,GAAetB,EACrC,IAAIqI,EACAC,OACe,IAARH,GACTnI,EAASuI,aAAev7E,SAASo7E,EAAQphG,GAAG,GAAGK,KAAK,cAAe,IACnE24F,EAASwF,YAAcx4E,SAASo7E,EAAQphG,GAAG,GAAGK,KAAK,aAAc,IACjEghG,EAAqBD,EAAQphG,GAAG,GAAGK,KAAK,qBACxCihG,EAAoBF,EAAQphG,GAAG,GAAGK,KAAK,sBAEvC24F,EAASuI,aAAev7E,SACtBo7E,EAAQphG,GAAW,SAARmhG,EAAiBC,EAAQhuG,OAAS,EAAI,GAAGiN,KAAK,cACzD,IAEF24F,EAASwF,YAAcx4E,SACrBo7E,EAAQphG,GAAW,SAARmhG,EAAiBC,EAAQhuG,OAAS,EAAI,GAAGiN,KAAK,aACzD,IAEFghG,EAAqBD,EAClBphG,GAAW,SAARmhG,EAAiBC,EAAQhuG,OAAS,EAAI,GACzCiN,KAAK,qBACRihG,EAAoBF,EACjBphG,GAAW,SAARmhG,EAAiBC,EAAQhuG,OAAS,EAAI,GACzCiN,KAAK,qBAEVuzB,EAAI+T,KAAK,wBAAwB7gC,KAAKwzF,EAAW+G,IACjDztE,EAAI+T,KAAK,uBAAuB7gC,KAAKw6F,EACvC,CAEA95C,SACE,MAAMwxC,EAAWljG,MACX0oG,YAAEA,EAAW+C,aAAEA,EAAYtF,WAAEA,GAAejD,EAC5CwI,EAAc,IAAItrG,KAAKsoG,EAAa+C,GACpCE,EAAgBzI,EAAS0I,YAAYF,EAAa,QAClDG,EAAmB3I,EAAS0I,YAAYF,GACxCI,EAAgB5I,EAAS0I,YAAYF,EAAa,QAExDvF,EACGn1D,WAAW,GACXxuC,KAAM,GAAEmpG,IAAgBE,IAAmBC,KAC3C16F,UAAU,sBACb8xF,EAASoI,QAAUnF,EAAWt0D,KAAK,mBACnCqxD,EAASkD,gBAAkB,EAC3BlD,EAAS6I,qBACT7I,EAASoI,QAAQnkG,MAAM6kG,IACrB9I,EAAS5nE,KAAK,mCAAoC0wE,EAAQ,GAE9D,CAEAC,mBAAmBZ,GACjB,MAAMnI,EAAWljG,MACXsrG,QAAEA,EAAO5C,YAAEA,EAAW+C,aAAEA,GAAiBvI,EAC/CA,EAASkI,uBAAuBC,GAChCC,EAAQ9oE,YAAY,kEACpB,MAAM0pE,EAAuB,SAARb,EAAiBC,EAAQhuG,OAAS,EAAI,EAE3DguG,EAAQphG,GAAGgiG,GAAc5pE,SAAS,0BAClCgpE,EACGphG,GAAW,SAARmhG,EAAiBa,EAAe,EAAIA,EAAe,GACtD5pE,SAAiB,SAAR+oE,EAAiB,sBAAwB,uBAErDnI,EAAS5nE,KACP,2DACA4nE,EACAwF,EACA+C,EAEJ,CAEAU,iBAAiBd,EAAKe,GACpB,MAAMlJ,EAAWljG,MACX0oG,YAAEA,EAAW+C,aAAEA,EAAYtF,WAAEA,EAAUC,gBAAEA,GAAoBlD,EAEnE,IAAI4I,EACAH,EACAE,EAHJ3I,EAASx8F,WAAY,EAIrBy/F,EACGt0D,KACC,oGAEDhnC,cAEgB,IAARwgG,IACTA,EAAM,OACNe,GAAc,GAEXA,GAGHjG,EAAWt0D,KAAK,8CAA8ChnC,SAC9D8gG,EAAgBzI,EAAS0I,YAAY,IAAIxrG,KAAKsoG,EAAa+C,GAAe,QAC1EK,EAAgB5I,EAAS0I,YAAY,IAAIxrG,KAAKsoG,EAAa+C,GAAe,SAJ1EI,EAAmB3I,EAAS0I,YAAY,IAAIxrG,KAAKsoG,EAAa+C,GAAeJ,IAMnE,SAARA,GAAkBe,IACpBjG,EAAWx8F,OAAOkiG,GAAoBC,IAE5B,SAART,GAAkBe,IACpBjG,EAAW92F,QAAQw8F,GAAoBF,GAEzC,MAAML,EAAUnF,EAAWt0D,KAAK,mBAChCqxD,EAASoI,QAAUA,EACnBpI,EAAS6I,mBAAmB3F,GAC5BlD,EAAS5nE,KACP,mCACA4nE,EACQ,SAARmI,EAAiBC,EAAQphG,GAAGohG,EAAQhuG,OAAS,GAAG,GAAKguG,EAAQphG,GAAG,GAAG,IAErEg5F,EAAS5nE,KACP,uDACA4nE,EACAwF,EACA+C,EAEJ,CAEAM,mBAAmB1wB,GACjB,MAAM6nB,EAAWljG,MACXsrG,QAAEA,EAASnI,aAAczV,EAAG37C,SAAEA,GAAamxD,EAEjD7nB,EAAYA,GAAa6nB,EAASkD,iBAAmB,OACb,IAA7BlD,EAASkD,kBAClBlD,EAASkD,gBAAkB/qB,GAE7BiwB,EAAQ9oE,YAAY,kEACpB,MAAM6pE,EAAwC,MAAjBhxB,EAAY,GAAWtpC,EAC9Cu6D,EAAqC,KAAZjxB,EAAkBtpC,EAC3Cw6D,EAAwC,MAAjBlxB,EAAY,GAAWtpC,EACpDu5D,EACGphG,GAAG,GACHkH,UACE,eAAcs8E,EAAM2e,EAAqB,OAAO3e,EAAM,EAAI2e,UAE5D/pE,SAAS,uBACZgpE,EACGphG,GAAG,GACHkH,UACE,eAAcs8E,EAAM4e,EAAwB,OAAO5e,EAAM,EAAI4e,UAE/DhqE,SAAS,0BACZgpE,EACGphG,GAAG,GACHkH,UACE,eAAcs8E,EAAM6e,EAAqB,OAAO7e,EAAM,EAAI6e,UAE5DjqE,SAAS,sBACd,CAEAgkE,UAAUt1D,GACR,MAAMkyD,EAAWljG,MACXsG,OAAEA,EAAM6/F,WAAEA,EAAUp0D,SAAEA,EAAUoxD,aAAczV,GAAQwV,OAClC,IAAflyD,GAAoD,iBAAfA,IAC9CA,EAAa,GACR1qC,EAAOkB,UAASwpC,EAAa,IAEpC,MAAMs1D,EAAYp2E,SAChBgzE,EAASoI,QAAQphG,GAAGg5F,EAASoI,QAAQhuG,OAAS,GAAGiN,KAAK,cACtD,IAEI88F,EAAWn3E,SACfgzE,EAASoI,QAAQphG,GAAGg5F,EAASoI,QAAQhuG,OAAS,GAAGiN,KAAK,aACtD,IAGIiiG,EADW,IAAIpsG,KAAKinG,EAAUf,GACN39F,UACxB8jG,GAAyBvJ,EAASx8F,UACxC,GAAIJ,EAAOomG,SACLF,EAAe,IAAIpsG,KAAKkG,EAAOomG,SAAS/jG,UAE1C,YADAu6F,EAASmD,aAKb,GADAnD,EAASkD,iBAAmB,EACxBE,IAAcpD,EAASuI,aAAc,CACvC,MAAMc,EAAiD,KAA3BrJ,EAASkD,gBAAwBr0D,EACvD+5D,EAAgBzpG,EAAE6gG,EAAS0I,YAAYY,EAAc,SACxDp7F,UACE,eAAcs8E,EAAM6e,EAAqB,OAAO7e,EAAM,EAAI6e,UAE5DjqE,SAAS,uBACZ6jE,EAAWx8F,OAAOmiG,EAAc,IAChC5I,EAASoI,QAAUnF,EAAWt0D,KAAK,mBACnCqxD,EAAS5nE,KACP,mCACA4nE,EAASoI,QAAQphG,GAAGg5F,EAASoI,QAAQhuG,OAAS,GAAG,GAErD,CACA4lG,EAASx8F,WAAY,EACrBw8F,EAAS+I,mBAAmB,QAC5B,MAAM5wB,EAAuC,IAA3B6nB,EAASkD,gBAAwBr0D,EAEnDo0D,EACGn1D,WAAWA,GACX5/B,UAAW,eAAcs8E,EAAMrS,EAAY,OAAOqS,EAAM,EAAIrS,UAC3DoxB,GACFtG,EAAW5wD,eAAc,KACvB2tD,EAASiJ,iBAAiB,OAAO,IAGhC7lG,EAAOkB,SACV07F,EAASiJ,iBAAiB,OAE9B,CAEA5F,UAAUv1D,GACR,MAAMkyD,EAAWljG,MACXsG,OAAEA,EAAM6/F,WAAEA,EAAUp0D,SAAEA,EAAUoxD,aAAczV,GAAQwV,OAClC,IAAflyD,GAAoD,iBAAfA,IAC9CA,EAAa,GACR1qC,EAAOkB,UAASwpC,EAAa,IAEpC,MAAMu1D,EAAYr2E,SAASgzE,EAASoI,QAAQphG,GAAG,GAAGK,KAAK,cAAe,IAChEg9F,EAAWr3E,SAASgzE,EAASoI,QAAQphG,GAAG,GAAGK,KAAK,aAAc,IAE9DoiG,EADW,IAAIvsG,KAAKmnG,EAAUhB,EAAY,GAAI,GACtB59F,UACxB8jG,GAAyBvJ,EAASx8F,UACxC,GAAIJ,EAAOsmG,QAAS,CAClB,IAAIA,EAAU,IAAIxsG,KAAKkG,EAAOsmG,SAE9B,GADAA,EAAU,IAAIxsG,KAAKwsG,EAAQ9D,cAAe8D,EAAQ7D,WAAY,GAC1D4D,EAAeC,EAAQjkG,UAEzB,YADAu6F,EAASmD,YAGb,CAEA,GADAnD,EAASkD,iBAAmB,EACxBG,IAAcrD,EAASuI,aAAc,CACvC,MAAMY,EAAiD,KAA3BnJ,EAASkD,gBAAwBr0D,EACvD45D,EAAgBtpG,EAAE6gG,EAAS0I,YAAYe,EAAc,SACxDv7F,UACE,eAAcs8E,EAAM2e,EAAqB,OAAO3e,EAAM,EAAI2e,UAE5D/pE,SAAS,uBACZ6jE,EAAW92F,QAAQs8F,EAAc,IACjCzI,EAASoI,QAAUnF,EAAWt0D,KAAK,mBACnCqxD,EAAS5nE,KAAK,mCAAoC4nE,EAASoI,QAAQphG,GAAG,GAAG,GAC3E,CACAg5F,EAASx8F,WAAY,EACrBw8F,EAAS+I,mBAAmB,QAC5B,MAAM5wB,EAAuC,IAA3B6nB,EAASkD,gBAAwBr0D,EACnDo0D,EACGn1D,WAAWA,GACX5/B,UAAW,eAAcs8E,EAAMrS,EAAY,OAAOqS,EAAM,EAAIrS,UAC3DoxB,GACFtG,EAAW5wD,eAAc,KACvB2tD,EAASiJ,iBAAiB,OAAO,IAGhC7lG,EAAOkB,SACV07F,EAASiJ,iBAAiB,OAE9B,CAEA9F,WAAWr1D,QAAU,IAAVA,MAAa,IACtB,MACMm1D,WAAEA,EAAUp0D,SAAEA,EAAUoxD,aAAczV,EAAG0Y,gBAAEA,GADhCpmG,KAEXq7E,EAA8B,IAAlB+qB,EAAwBr0D,EAC1Co0D,EACGn1D,WAAWA,GACX5/B,UAAW,eAAcs8E,EAAMrS,EAAY,OAAOqS,EAAM,EAAIrS,SACjE,CAEAwxB,aAAa1I,EAAMF,EAAOjzD,GACxB,MAAMkyD,EAAWljG,MACXsG,OAAEA,EAAQ68F,aAAczV,EAAGyY,WAAEA,EAAUp0D,SAAEA,GAAamxD,EAW5D,IAAI4J,EAMJ,QAfoB,IAAT3I,IAAsBA,EAAOjB,EAASwF,kBAE5B,IAAVzE,IAAuBA,EAAQf,EAASuI,mBACzB,IAAfz6D,GAAoD,iBAAfA,IAE9CA,EAAa,GAER1qC,EAAOkB,UAASwpC,EAAa,IAIlC87D,EADE3I,EAAOjB,EAASwF,YACL,IAAItoG,KAAK+jG,EAAMF,EAAQ,GAAI,GAAGt7F,UAE9B,IAAIvI,KAAK+jG,EAAMF,GAAOt7F,UAEjCrC,EAAOomG,SAAWI,EAAa,IAAI1sG,KAAKkG,EAAOomG,SAAS/jG,UAC1D,OAAO,EAET,GAAIrC,EAAOsmG,QAAS,CAClB,IAAIA,EAAU,IAAIxsG,KAAKkG,EAAOsmG,SAE9B,GADAA,EAAU,IAAIxsG,KAAKwsG,EAAQ9D,cAAe8D,EAAQ7D,WAAY,GAC1D+D,EAAaF,EAAQjkG,UACvB,OAAO,CAEX,CACA,MAAM+iG,EAAc,IAAItrG,KAAK8iG,EAASwF,YAAaxF,EAASuI,cAAc9iG,UACpE0iG,EAAMyB,EAAapB,EAAc,OAAS,OAC1CqB,EAAe7J,EAAS0I,YAAY,IAAIxrG,KAAK+jG,EAAMF,IACzDf,EAASkD,gBAAkBlD,EAASkD,iBAAmB,EACvD,MAAMvqB,EAAgBqnB,EAASkD,gBAC/B,IAAI4G,EACJ,MAAMP,GAAyBvJ,EAASx8F,WAA4B,IAAfsqC,EACjD87D,EAAapB,GAEfxI,EAASkD,iBAAmB,EACvBlD,EAASx8F,WAAWw8F,EAASoI,QAAQphG,GAAGg5F,EAASoI,QAAQhuG,OAAS,GAAGuN,SAC1Es7F,EAAWx8F,OAAOojG,GAClB7J,EAASoI,QAAUnF,EAAWt0D,KAAK,mBACnCm7D,EAAwC,MAArBnxB,EAAgB,GAAW9pC,EAC9CmxD,EAASoI,QACNphG,GAAGg5F,EAASoI,QAAQhuG,OAAS,GAC7B8T,UAAW,eAAcs8E,EAAMsf,EAAiB,OAAOtf,EAAM,EAAIsf,UACjE1qE,SAAS,yBAGZ4gE,EAASkD,iBAAmB,EACvBlD,EAASx8F,WAAWw8F,EAASoI,QAAQphG,GAAG,GAAGW,SAChDs7F,EAAW92F,QAAQ09F,GACnB7J,EAASoI,QAAUnF,EAAWt0D,KAAK,mBACnCm7D,EAAwC,MAArBnxB,EAAgB,GAAW9pC,EAC9CmxD,EAASoI,QACNphG,GAAG,GACHkH,UAAW,eAAcs8E,EAAMsf,EAAiB,OAAOtf,EAAM,EAAIsf,UACjE1qE,SAAS,wBAEd4gE,EAAS5nE,KACP,mCACQ,SAAR+vE,EACInI,EAASoI,QAAQphG,GAAGg5F,EAASoI,QAAQhuG,OAAS,GAAG,GACjD4lG,EAASoI,QAAQphG,GAAG,GAAG,IAG7Bg5F,EAASx8F,WAAY,EACrBw8F,EAAS+I,mBAAmBZ,GAC5B,MAAM4B,EAA8C,IAA3B/J,EAASkD,gBAAwBr0D,EAC1Do0D,EACGn1D,WAAWA,GACX5/B,UAAW,eAAcs8E,EAAMuf,EAAmB,OAAOvf,EAAM,EAAIuf,UAClER,GACFtG,EAAW5wD,eAAc,KACvB2tD,EAASiJ,iBAAiBd,GAAK,EAAK,IAGnC/kG,EAAOkB,SAA0B,IAAfwpC,GACrBkyD,EAASiJ,iBAAiBd,GAAK,EAEnC,CAEAhE,WACmBrnG,KACR6sG,aADQ7sG,KACc0oG,YAAc,EAC/C,CAEAnB,WACmBvnG,KACR6sG,aADQ7sG,KACc0oG,YAAc,EAC/C,CAEAwE,YAAYC,EAASxZ,GACnB,IACI7wF,EADA4H,GAAQ,EAEZ,IAAKipF,EAAO,OAAO,EACnB,GAAI1yF,MAAMc,QAAQ4xF,GAChB,IAAK7wF,EAAI,EAAGA,EAAI6wF,EAAMr2F,OAAQwF,GAAK,EAC7B6wF,EAAM7wF,GAAG8c,MAAQ+zE,EAAM7wF,GAAGse,GACxBuyE,EAAM7wF,GAAG8c,MAAQ+zE,EAAM7wF,GAAGse,GAE1B+rF,GAAW,IAAI/sG,KAAKuzF,EAAM7wF,GAAGse,IAAIzY,WACjCwkG,GAAW,IAAI/sG,KAAKuzF,EAAM7wF,GAAG8c,MAAMjX,YAEnC+B,GAAQ,GAEDipF,EAAM7wF,GAAG8c,KACdutF,GAAW,IAAI/sG,KAAKuzF,EAAM7wF,GAAG8c,MAAMjX,YACrC+B,GAAQ,GAEDipF,EAAM7wF,GAAGse,IACd+rF,GAAW,IAAI/sG,KAAKuzF,EAAM7wF,GAAGse,IAAIzY,YACnC+B,GAAQ,GAGHipF,EAAM7wF,GAAG4gG,KACdyJ,IAAY,IAAI/sG,KAAKuzF,EAAM7wF,GAAG4gG,MAAM/6F,YACtC+B,GAAQ,GAEDyiG,IAAY,IAAI/sG,KAAKuzF,EAAM7wF,IAAI6F,YACxC+B,GAAQ,QAGHipF,EAAM/zE,MAAQ+zE,EAAMvyE,GACzBuyE,EAAM/zE,MAAQ+zE,EAAMvyE,GAClB+rF,GAAW,IAAI/sG,KAAKuzF,EAAMvyE,IAAIzY,WAAawkG,GAAW,IAAI/sG,KAAKuzF,EAAM/zE,MAAMjX,YAC7E+B,GAAQ,GAEDipF,EAAM/zE,KACXutF,GAAW,IAAI/sG,KAAKuzF,EAAM/zE,MAAMjX,YAClC+B,GAAQ,GAEDipF,EAAMvyE,IACX+rF,GAAW,IAAI/sG,KAAKuzF,EAAMvyE,IAAIzY,YAChC+B,GAAQ,GAGHipF,EAAM+P,KACfh5F,EAAQyiG,IAAY,IAAI/sG,KAAKuzF,EAAM+P,MAAM/6F,UACf,mBAAVgrF,IAChBjpF,EAAQipF,EAAM,IAAIvzF,KAAK+sG,KAEzB,OAAOziG,CACT,CAEA0iG,YAAY1J,GACV,MAAM5tF,EAAI,IAAI1V,KAAKsjG,GACnB,OAAO,IAAItjG,KAAK0V,EAAEgzF,cAAehzF,EAAEizF,WAAa,EAAG,GAAGC,SACxD,CAEAqE,aAAa3J,GACX,MAAMR,EAAWljG,KACjB,OAAIkjG,EAAS58F,OAAO+mG,aACXnK,EAAS58F,OAAO+mG,aAAajrG,KAAK8gG,EAAUQ,GAGnD/kE,GAAA,OAAK0zB,MAAM,2BACR6wC,EAAS0I,YAAYlI,EAAM,QAC3BR,EAAS0I,YAAYlI,GACrBR,EAAS0I,YAAYlI,EAAM,QAGlC,CAEAkI,YAAY91F,EAAG6uB,GACb,MAAMu+D,EAAWljG,MACXsG,OAAEA,EAAM7E,MAAEA,GAAUyhG,EAC1B,GAAI58F,EAAOslG,YACT,OAAOtlG,EAAOslG,YAAYxpG,KAAK8gG,EAAUptF,EAAG6uB,GAE9C,IAAI++D,EAAO,IAAItjG,KAAK0V,GAChBquF,EAAOT,EAAKoF,cACZ7E,EAAQP,EAAKqF,WACbuE,EAAcpK,EAASsB,WAAW9hG,QAAQwgG,EAASc,eAAeN,IAClE4J,EAAc,IAAGA,EAAcrJ,GACnC,IAAIsJ,EAAarK,EAASgB,cAAcR,GAEzB,SAAX/+D,IACgB++D,EAAJ,KAAVO,EAAqB,IAAI7jG,KAAK+jG,EAAO,EAAG,GAChC,IAAI/jG,KAAK+jG,EAAMF,EAAQ,EAAG,IAEzB,SAAXt/D,IACe++D,EAAH,IAAVO,EAAoB,IAAI7jG,KAAK+jG,EAAO,EAAG,IAC/B,IAAI/jG,KAAK+jG,EAAMF,EAAQ,EAAG,IAEzB,SAAXt/D,GAAgC,SAAXA,IACvBs/D,EAAQP,EAAKqF,WACb5E,EAAOT,EAAKoF,cACZwE,EAAcpK,EAASsB,WAAW9hG,QAAQwgG,EAASc,eAAeN,IAC9D4J,EAAc,IAAGA,EAAcrJ,GACnCsJ,EAAarK,EAASgB,cAAcR,IAGtC,MAAM8J,EAAgB,GAChBC,GAAQ,IAAIrtG,MAAO0mG,SAAS,EAAG,EAAG,EAAG,GACrC8F,EAAUtmG,EAAOsmG,QAAU,IAAIxsG,KAAKkG,EAAOsmG,SAASjkG,UAAY,KAChE+jG,EAAUpmG,EAAOomG,QAAU,IAAItsG,KAAKkG,EAAOomG,SAAS/jG,UAAY,KAGhE+kG,EAAkBxK,EAASkK,YAC/B,IAAIhtG,KAAKsjG,EAAKoF,cAAepF,EAAKqF,YAAYpgG,UAAY,OAEtDykG,EAAclK,EAASkK,YAAY1J,GACnCiK,EAAmC,IAApBrnG,EAAOsnG,SAAiB,EAAI,EAEjD,IAEIt5B,EACAu5B,EAHAC,EAAY,GACZC,EAAgBznG,EAAOsnG,SAAW,EAAvB,EAGXI,EAAuB,IAAI5tG,KAAKsjG,EAAKoF,cAAepF,EAAKqF,YAAYH,SAGzE,GAF6B,IAAzBoF,IAA4BA,EAAuB,GAEnDvsG,GAASA,EAAMnE,OACjB,IAAK,IAAIwF,EAAI,EAAGA,EAAIrB,EAAMnE,OAAQwF,GAAK,EACrC0qG,EAAcxrG,KAAK,IAAI5B,KAAKqB,EAAMqB,IAAIgkG,SAAS,EAAG,EAAG,EAAG,IAI5D,IAAK,IAAI5zF,EAAM,EAAGA,GArBL,EAqBkBA,GAAO,EAAG,CACvC,IAAI+6F,EAAU,GACd,IAAK,IAAIC,EAAM,EAAGA,GAtBP,EAsBoBA,GAAO,EAAG,CAEvC,IAAIf,EADJY,GAAY,EAEZ,IAAII,EAAYJ,EAAWC,EACvB1rE,EAAW,GACH,IAARpvB,GAAqB,IAARg7F,GAAaC,EAAYR,GAAoC,IAApBrnG,EAAOsnG,WAC/DG,GAAY,EACZI,EAAYJ,EAAWC,GAGzB,MAAMI,EACJF,EAAM,EAAI5nG,EAAOsnG,SAAW,EAAIM,EAAM,EAAI,EAAI5nG,EAAOsnG,SAAWM,EAAM,EAAI5nG,EAAOsnG,SAE/EO,EAAY,GACdA,EAAYT,EAAkBS,EAAY,EAC1C7rE,GAAY,qBACZ6qE,EAAU,IAAI/sG,KACZ6jG,EAAQ,EAAI,EAAIE,EAAO,EAAIA,EAC3BF,EAAQ,EAAI,EAAI,GAAKA,EAAQ,EAC7BkK,GACAxlG,YAEFwlG,GAAa,EACTA,EAAYf,GACde,GAAaf,EACb9qE,GAAY,qBACZ6qE,EAAU,IAAI/sG,KACZ6jG,EAAQ,EAAI,GAAKE,EAAO,EAAIA,EAC5BF,EAAQ,EAAI,GAAK,EAAIA,EAAQ,EAC7BkK,GACAxlG,WAEFwkG,EAAU,IAAI/sG,KAAK+jG,EAAMF,EAAOkK,GAAWxlG,WAI3CwkG,IAAYM,IAAOnrE,GAAY,uBAG/Bh8B,EAAOk9F,aAAwC,IAAzBgK,EAAclwG,QAClC6vG,GAAWK,EAAc,IAAML,GAAWK,EAAc,KAC1DlrE,GAAY,0BAEVkrE,EAAc,KAAOA,EAAc,KACjCL,EAAUK,EAAc,IAAML,EAAUK,EAAc,KACxDlrE,GAAY,gCAEV6qE,IAAYK,EAAc,KAC5BlrE,GAAY,+BAEV6qE,IAAYK,EAAc,KAC5BlrE,GAAY,kCAGPkrE,EAAc9qG,QAAQyqG,IAAY,IAAG7qE,GAAY,0BAExDh8B,EAAO+nG,YAAY3rG,QAAQ0rG,IAAiB,IAC9C9rE,GAAY,yBAGd,IAAIgsE,EAAa,GAOjB,GANAT,GAAY,EACRvnG,EAAO0G,QACLk2F,EAASgK,YAAYC,EAAS7mG,EAAO0G,UACvC6gG,GAAY,GAGZA,IACFvrE,GAAY,2BAEZgsE,EAAc,4IAKVrtG,MAAMc,QAAQuE,EAAO0G,SAAS,CAChC,MAAMuhG,EAAY,GAClBjoG,EAAO0G,OAAO5P,SAASm5D,IACrB,MAAMhmC,EAAQgmC,EAAGhmC,OAAS,GACtBg+E,EAAU7rG,QAAQ6tB,GAAS,GAAK2yE,EAASgK,YAAYC,EAAS52C,IAChEg4C,EAAUvsG,KAAKuuB,EACjB,IAGF+9E,EAAc,uEAERC,EAAUzoG,KAAIyqB,GAAU,+DACkBA,EAAS,qBAAoBA,IAAU,gCACjF9tB,SAAQgtB,KAAK,0CAGrB,CAGF,GAAInpB,EAAOkoG,cACT,IAAK,IAAInlG,EAAI,EAAGA,EAAI/C,EAAOkoG,cAAclxG,OAAQ+L,GAAK,EAChD65F,EAASgK,YAAYC,EAAS7mG,EAAOkoG,cAAcnlG,GAAGsqF,SACxDrxD,GAAa,IAAGh8B,EAAOkoG,cAAcnlG,GAAGwjE,YAK9CyH,GAAW,GACNs4B,GAAWO,EAAUP,GAAaF,GAAWS,EAAUT,KAC1Dp4B,GAAW,GAEThuE,EAAOguE,UACL4uB,EAASgK,YAAYC,EAAS7mG,EAAOguE,YACvCA,GAAW,GAGXA,IACFhyC,GAAY,0BAGd6qE,EAAU,IAAI/sG,KAAK+sG,GACnB,MAAMsB,EAAUtB,EAAQrE,cAClB4F,EAAWvB,EAAQpE,WAGzBkF,GAAY,+BACQQ,kBAAwBC,gBAAuBP,yBAAiC7rE,iBAAwBmsE,KAAWC,KAAYP,sDAH1HjL,EAASO,aAAa0J,KAIYmB,6BACjD7rG,MACZ,CACAqrG,GAAc,6BAA4BG,SAC5C,CAEA,OADAH,EAAa,0CAAyC3J,kBAAqBF,wBAA4BsJ,yBAAkCD,MAAgBQ,UAClJA,CACT,CAEAa,mBACE,MAAMzL,EAAWljG,KACjB,GAAIkjG,EAAS58F,OAAOqoG,iBAClB,OAAOzL,EAAS58F,OAAOqoG,iBAAiBvsG,KAAK8gG,GAE/C,MAAM58F,OAAEA,GAAW48F,EACnB,IAAI0L,EAAe,GACnB,IAAK,IAAI9rG,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAC7B,MAAMirG,EAAWjrG,EAAIwD,EAAOsnG,SAAW,EAAI9qG,EAAI,EAAIwD,EAAOsnG,SAAW9qG,EAAIwD,EAAOsnG,SAEhFgB,GAAiB,kCADD1L,EAASyB,cAAcoJ,UAEzC,CACA,OAAOpvE,GAAA,OAAK0zB,MAAM,wBAAwBu8C,EAC5C,CAEAC,sBACE,MAAM3L,EAAWljG,KACjB,OAAIkjG,EAAS58F,OAAOuoG,oBACX3L,EAAS58F,OAAOuoG,oBAAoBzsG,KAAK8gG,GAGhDvkE,GAAA,OAAK0zB,MAAM,2BACT1zB,GAAA,KAAG0zB,MAAM,6CACP1zB,GAAA,KAAG0zB,MAAM,oBAEV6wC,EAAS58F,OAAOwhG,YACfnpE,GAAA,KAAG0zB,MAAM,6BAET1zB,GAAA,QAAM0zB,MAAM,wBAEd1zB,GAAA,KAAG0zB,MAAM,6CACP1zB,GAAA,KAAG0zB,MAAM,oBAIjB,CAEAy8C,qBACE,MAAM5L,EAAWljG,KACjB,OAAIkjG,EAAS58F,OAAOwoG,mBACX5L,EAAS58F,OAAOwoG,mBAAmB1sG,KAAK8gG,GAG/CvkE,GAAA,OAAK0zB,MAAM,0BACT1zB,GAAA,KAAG0zB,MAAM,4CACP1zB,GAAA,KAAG0zB,MAAM,oBAEV6wC,EAAS58F,OAAOyhG,WACfppE,GAAA,KAAG0zB,MAAM,4BAET1zB,GAAA,QAAM0zB,MAAM,uBAEd1zB,GAAA,KAAG0zB,MAAM,4CACP1zB,GAAA,KAAG0zB,MAAM,oBAIjB,CAGA08C,qBACE,MAAM7L,EAAWljG,KACXyB,EAAQyhG,EAASzhG,OAASyhG,EAASzhG,MAAM,GAC/C,IAAIutG,EAEJ,OADIvtG,IAAOutG,EAAa9L,EAASkB,sBAAsB3iG,IAErDk9B,GAAA,OAAK0zB,MAAM,0BACT1zB,GAAA,YAAOukE,EAAS58F,OAAO2oG,iBACvBtwE,GAAA,KAAG0zB,MAAM,QAAQ28C,GAAc9L,EAAS58F,OAAO4kG,uBAGrD,CAEAgE,eACE,MAAMhM,EAAWljG,KACjB,OAAIkjG,EAAS58F,OAAO4oG,aACXhM,EAAS58F,OAAO4oG,aAAa9sG,KAAK8gG,GAGzCvkE,GAAA,OAAK0zB,MAAM,mBACT1zB,GAAA,OAAK0zB,MAAM,0BAA0B6wC,EAAS58F,OAAO6oG,mBAG3D,CAEAC,eACE,MAAMlM,EAAWljG,KACX49B,EAAMslE,EAAStlE,IACrB,OAAIslE,EAAS58F,OAAO8oG,aACXlM,EAAS58F,OAAO8oG,aAAahtG,KAAK8gG,GAGzCvkE,GAAA,OAAK0zB,MAAM,mBACT1zB,GAAA,KACE0zB,OACgB,OAAdz0B,EAAIxM,MAAiB,sBAAwB,QADvC,6CAIP8xE,EAAS58F,OAAO+oG,kBAIzB,CAEAC,gBACE,MAAMpM,EAAWljG,KACjB,OAAIkjG,EAAS58F,OAAOgpG,cACXpM,EAAS58F,OAAOgpG,cAAcltG,KAAK8gG,EAAUA,GAItDvkE,GAAA,OAAK0zB,MAAM,uBACT1zB,GAAA,OAAK0zB,MAAM,iBACR6wC,EAAS58F,OAAOipG,cAAgBrM,EAAS2L,sBAAwB,GACjE3L,EAAS58F,OAAOkpG,aAAetM,EAAS4L,qBAAuB,IAItE,CAEAW,eACE,MAAMvM,EAAWljG,MACX6sE,SAAEA,EAAQvD,QAAEA,EAAO6hC,OAAEA,EAAMuE,OAAEA,EAAMlM,YAAEA,EAAWmM,WAAEA,GAAezM,EAAS58F,QAC1E7E,MAAEA,EAAK6hG,cAAEA,GAAkBJ,EAC3BQ,EAAOjiG,GAASA,EAAMnE,OAASmE,EAAM,IAAK,IAAIrB,MAAO0mG,SAAS,EAAG,EAAG,GAC1E,OACEnoE,GAAA,OACE0zB,MAAQ,4BAA2BmxC,EAAc,iBAAmB,MAAM32B,GAAY,MAErFs+B,GAAUjI,EAASgM,eACnB5lC,GAAW45B,EAASoM,gBACpBK,GAAczM,EAASyL,mBACxBhwE,GAAA,OAAK0zB,MAAM,mBAAmB6wC,EAASmK,aAAa3J,IACnDJ,GAAiBJ,EAAS6L,qBAC1BW,GAAUxM,EAASkM,eAG1B,CAEAQ,oBACE,MAAM1M,EAAWljG,MACX6sE,SAAEA,EAAQvD,QAAEA,EAAO6hC,OAAEA,EAAMuE,OAAEA,EAAMlM,YAAEA,EAAWmM,WAAEA,GAAezM,EAAS58F,QAC1E7E,MAAEA,EAAK6hG,cAAEA,GAAkBJ,EAC3BQ,EAAOjiG,GAASA,EAAMnE,OAASmE,EAAM,IAAK,IAAIrB,MAAO0mG,SAAS,EAAG,EAAG,GAC1E,OACEnoE,GAAA,OACE0zB,MAAQ,2BAA0BmxC,EAAc,iBAAmB,MAAM32B,GAAY,MAEpFs+B,GAAUjI,EAASgM,eACnB5lC,GAAW45B,EAASoM,gBACpBK,GAAczM,EAASyL,mBACxBhwE,GAAA,OAAK0zB,MAAM,mBAAmB6wC,EAASmK,aAAa3J,IACnDJ,GAAiBJ,EAAS6L,qBAC1BW,GAAUxM,EAASkM,eAG1B,CAEA9O,cACE,MAAM4C,EAAWljG,MACX6sE,SAAEA,EAAQvD,QAAEA,EAAO6hC,OAAEA,EAAMuE,OAAEA,EAAMlM,YAAEA,EAAWmM,WAAEA,GAAezM,EAAS58F,QAC1E7E,MAAEA,EAAK6hG,cAAEA,GAAkBJ,EAC3BQ,EAAOjiG,GAASA,EAAMnE,OAASmE,EAAM,IAAK,IAAIrB,MAAO0mG,SAAS,EAAG,EAAG,GAC1E,OACEnoE,GAAA,OACE0zB,MAAQ,uCAAsCmxC,EAAc,iBAAmB,MAC7E32B,GAAY,MAGbs+B,GAAUjI,EAASgM,eACnB5lC,GAAW45B,EAASoM,gBACpBK,GAAczM,EAASyL,mBACxBhwE,GAAA,OAAK0zB,MAAM,qCAAqC6wC,EAASmK,aAAa3J,IACrEJ,GAAiBJ,EAAS6L,qBAC1BW,GAAUxM,EAASkM,eAG1B,CAEA17B,gBACE,MAAMwvB,EAAWljG,MACX6sE,SAAEA,EAAQvD,QAAEA,EAAO6hC,OAAEA,EAAMuE,OAAEA,EAAMlM,YAAEA,EAAWmM,WAAEA,GAAezM,EAAS58F,QAC1E7E,MAAEA,EAAK6hG,cAAEA,GAAkBJ,EAC3BQ,EAAOjiG,GAASA,EAAMnE,OAASmE,EAAM,IAAK,IAAIrB,MAAO0mG,SAAS,EAAG,EAAG,GAC1E,OACEnoE,GAAA,OAAK0zB,MAAM,4BACT1zB,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,OAAK0zB,MAAQ,YAAWmxC,EAAc,iBAAmB,MAAM32B,GAAY,MACxEs+B,GAAUjI,EAASgM,eACnB5lC,GAAW45B,EAASoM,gBACpBK,GAAczM,EAASyL,mBACxBhwE,GAAA,OAAK0zB,MAAM,mBAAmB6wC,EAASmK,aAAa3J,IACnDJ,GAAiBJ,EAAS6L,qBAC1BW,GAAUxM,EAASkM,iBAK9B,CAEA3mG,SACE,MAAMy6F,EAAWljG,MACXsG,OAAEA,GAAW48F,EACnB,GAAI58F,EAAOmC,OAAQ,OAAOnC,EAAOmC,OAAOrG,KAAK8gG,GAC7C,IAAKA,EAASE,OAAQ,CACpB,IAAInrD,EAAY3xC,EAAO2gD,OAGvB,MAFkB,SAAdhP,IAAsBA,EAAYirD,EAASkC,YAAc,UAAY,SAEvD,YAAdntD,EAAgCirD,EAASxvB,gBAC3B,UAAdz7B,EAA8BirD,EAAS5C,cACpC4C,EAAS0M,mBAClB,CACA,OAAO1M,EAASuM,cAClB,CAEAhI,kBACE,MAAMvE,EAAWljG,MACX89B,IAAEA,EAAGF,IAAEA,GAAQslE,EACrB,IAAKplE,IAAQA,EAAIxgC,OAAQ,OAEzBwgC,EAAIn0B,OACF,wJAGFu5F,EAASoC,mBAAqB1nE,EAAIkxB,QAAQhyB,OAAO,CAC/Ch7B,GAAIg8B,EAAI+T,KAAK,kCACb3T,SAAUJ,EAAI+T,KAAK,4BACnBu5B,UAAU,EACVC,gBAAgB,EAChBvnE,GAAI,CACFy6B,QACE2kE,EAAS2M,kB,EAEX57B,SACMivB,EAASoC,mBAAmBxnE,KAAKolE,EAASoC,mBAAmBxnE,IAAIjzB,SACrEq4F,EAASoC,mBAAmBvnE,UACxBmlE,EAAS4M,sBACX5M,EAAS4M,oBAAoBvxE,QAC7B2kE,EAAS4M,oBAAoB/xE,kBAExBmlE,EAAS4M,2BACT5M,EAASoC,kBAClB,KAGJpC,EAASoC,mBAAmBrnE,OAE5B,MAAMqvE,EAAcp9E,SAClBgzE,EAASplE,IAAI+T,KAAK,2BAA2BtnC,KAAK,qBAClD,IAGIyH,EAAS,GACT+9F,EAAgB,GACtB7M,EAASsB,WAAWpnG,SAAQ,CAACga,EAAG3P,KAC9BuK,EAAOhQ,KAAKyF,GACZsoG,EAAc/tG,KAAKoV,EAAE,IAGvB8rF,EAAS4M,oBAAsBlyE,EAAIoyE,OAAOlzE,OAAO,CAC/CiuC,YAAam4B,EAASoC,mBAAmBxnE,IAAI+T,KAAK,0BAClDpwC,MAAO,CAAC6rG,GACRhkC,QAAS45B,EAAS58F,OAAO2pG,mBACzBC,cAAc,EACdb,iBAAkBnM,EAAS58F,OAAO6pG,qBAClC5wB,KAAM,CACJ,CACEvtE,SACA+9F,mBAIR,CAEAF,mBACE,MAAM3M,EAAWljG,KACbkjG,EAASoC,oBAAsBpC,EAASoC,mBAAmBz6B,QAC7Dq4B,EAASoC,mBAAmB/mE,QAE9B,MAOM6xE,EAPQlN,EAAS4M,oBAAoBruG,MAAM,IACxByuB,SACvBgzE,EAASplE,IAAI+T,KAAK,2BAA2BtnC,KAAK,qBAClD,IAEiB24F,EAASuI,cAG5BvI,EAAS2J,aAAa3J,EAASwF,YAAa0H,EAAW,EACzD,CAEAzI,iBACE,MAAMzE,EAAWljG,MACX89B,IAAEA,EAAGF,IAAEA,GAAQslE,EACrB,IAAKplE,IAAQA,EAAIxgC,OAAQ,OAEzBwgC,EAAIn0B,OACF,sJAGFu5F,EAASqC,kBAAoB3nE,EAAIkxB,QAAQhyB,OAAO,CAC9Ch7B,GAAIg8B,EAAI+T,KAAK,iCACb3T,SAAUJ,EAAI+T,KAAK,2BACnBu5B,UAAU,EACVC,gBAAgB,EAChBvnE,GAAI,CACFy6B,QACE2kE,EAASmN,iB,EAEXp8B,SACMivB,EAASqC,kBAAkBznE,KAAKolE,EAASqC,kBAAkBznE,IAAIjzB,SACnEq4F,EAASqC,kBAAkBxnE,UACvBmlE,EAASoN,qBACXpN,EAASoN,mBAAmB/xE,QAC5B2kE,EAASoN,mBAAmBvyE,kBAEvBmlE,EAASoN,0BACTpN,EAASqC,iBAClB,KAGJrC,EAASqC,kBAAkBtnE,OAE3B,MAAMyqE,EAAcxF,EAASwF,YAC7B,IAAI6H,EAAUrN,EAAS58F,OAAOkqG,gBAAiB,IAAIpwG,MAAO0oG,cAAgB,IACtE5F,EAAS58F,OAAOsmG,UAClB2D,EAAUzpG,KAAK+B,IAAI0nG,EAAS,IAAInwG,KAAK8iG,EAAS58F,OAAOsmG,SAAS9D,gBAEhE,IAAI2H,EAAUvN,EAAS58F,OAAOoqG,gBAAiB,IAAItwG,MAAO0oG,cAAgB,IACtE5F,EAAS58F,OAAOomG,UAClB+D,EAAU3pG,KAAKgC,IAAI2nG,EAAS,IAAIrwG,KAAK8iG,EAAS58F,OAAOomG,SAAS5D,gBAEhE,MAAM6H,EAAQ,GACd,IAAK,IAAI7tG,EAAIytG,EAASztG,GAAK2tG,EAAS3tG,GAAK,EACvC6tG,EAAM3uG,KAAKc,GAGbogG,EAASoN,mBAAqB1yE,EAAIoyE,OAAOlzE,OAAO,CAC9CiuC,YAAam4B,EAASqC,kBAAkBznE,IAAI+T,KAAK,yBACjDpwC,MAAO,CAACinG,GACRp/B,QAAS45B,EAAS58F,OAAOsqG,kBACzBV,cAAc,EACdb,iBAAkBnM,EAAS58F,OAAOuqG,oBAClCtxB,KAAM,CACJ,CACEvtE,OAAQ2+F,KAIhB,CAEAN,kBACE,MAAMnN,EAAWljG,KACbkjG,EAASqC,mBAAqBrC,EAASqC,kBAAkB16B,QAC3Dq4B,EAASqC,kBAAkBhnE,QAC7B2kE,EAAS2J,aAAa3J,EAASoN,mBAAmB7uG,MAAM,QAAI6H,EAAW,EACzE,CAEAu+F,iBACE,MAAM3E,EAAWljG,MACX89B,IAAEA,EAAGF,IAAEA,EAAG2mE,gBAAEA,GAAoBrB,EACtC,IAAKplE,IAAQA,EAAIxgC,OAAQ,OACzBwgC,EAAIn0B,OACF,sJAEF,MAAMmnG,EAAW,GACXC,EAAa,GAEbC,EAAWzM,EAAkB,GAAK,GACxC,IAAK,IAAIzhG,EAFQyhG,EAAkB,EAAI,EAEhBzhG,GAAKkuG,EAAUluG,GAAK,EACzCguG,EAAS9uG,KAAKc,GAEhB,IAAK,IAAIA,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5BiuG,EAAW/uG,KAAKc,GAElB,IAAIrB,EAEFA,EADEyhG,EAASzhG,OAASyhG,EAASzhG,MAAMnE,OAC3B,CAAC4lG,EAASzhG,MAAM,GAAGslG,WAAY7D,EAASzhG,MAAM,GAAGulG,cAEjD,EAAC,IAAI5mG,MAAO2mG,YAAY,IAAI3mG,MAAO4mG,cAEzCzC,IACF9iG,EAAMO,KAAKP,EAAM,GAAK,GAAK,KAAO,MAC9BA,EAAM,GAAK,KAAIA,EAAM,IAAM,IACd,IAAbA,EAAM,KAAUA,EAAM,GAAK,KAEjCyhG,EAASsC,kBAAoB5nE,EAAIkxB,QAAQhyB,OAAO,CAC9Ch7B,GAAIg8B,EAAI+T,KAAK,iCACb3T,SAAUJ,EAAI+T,KAAK,iCACnBu5B,UAAU,EACVC,gBAAgB,EAChBvnE,GAAI,CACFy6B,QACE2kE,EAAS+N,iB,EAEXh9B,SACMivB,EAASsC,kBAAkB1nE,KAAKolE,EAASsC,kBAAkB1nE,IAAIjzB,SACnEq4F,EAASsC,kBAAkBznE,UACvBmlE,EAASgO,qBACXhO,EAASgO,mBAAmB3yE,QAC5B2kE,EAASgO,mBAAmBnzE,kBAEvBmlE,EAASgO,0BACThO,EAASsC,iBAClB,KAGJtC,EAASsC,kBAAkBvnE,OAC3BilE,EAASgO,mBAAqBtzE,EAAIoyE,OAAOlzE,OAAO,CAC9CiuC,YAAam4B,EAASsC,kBAAkB1nE,IAAI+T,KAAK,yBACjDpwC,QACA6nE,QAAS45B,EAAS58F,OAAO6qG,kBACzBjB,cAAc,EACdb,iBAAkBnM,EAAS58F,OAAO8qG,oBAClC7xB,KAAM,CACJ,CACEvtE,OAAQ8+F,GAEV,CACEO,SAAS,EACTpjF,QAAS,KAEX,CACEjc,OAAQ++F,EACRhB,cAAegB,EAAWjrG,KAAKsR,GAAOA,EAAI,GAAM,IAAGA,IAAMA,QAEvDmtF,EACA,CACE,CACEvyF,OAAQ,CAAC,KAAM,QAGnB,KAGV,CAEAi/F,kBACE,MAAM/N,EAAWljG,MACXukG,gBAAEA,GAAoBrB,EAC5B,GAAIA,EAASgO,mBAAoB,CAC/B,MAAMI,EAAkBpO,EAASgO,mBAAmBzvG,MACpD,IAAIsoG,EAAQ75E,SAASohF,EAAgB,GAAI,IACzC,MAAMtH,EAAU95E,SAASohF,EAAgB,GAAI,IACvCC,EAASrO,EAASgO,mBAAmBzvG,MAAM,GAC7C8iG,IACa,OAAXgN,GAA6B,KAAVxH,EACrBA,EAAQ,EACY,OAAXwH,GAA6B,KAAVxH,IAC5BA,GAAS,KAIb,IAAItoG,EAAQyhG,EAASzhG,OAASyhG,EAASzhG,MAAMnE,QAAU4lG,EAASzhG,MAAM,GACjEA,GAIHA,EAAQ,IAAIrB,KAAKqB,GACjBA,EAAMqlG,SAASiD,EAAOC,KAJtBvoG,EAAQ,IAAIrB,KACZqB,EAAMqlG,SAASiD,EAAOC,EAAS,EAAG,IAKpC9G,EAASlN,SAAS,CAACv0F,IACfyhG,EAASsC,mBAAqBtC,EAASsC,kBAAkB36B,QAC3Dq4B,EAASsC,kBAAkBjnE,OAC/B,CACF,CAEAysC,SACE,MAAMk4B,EAAWljG,MACX6d,YAAEA,EAAWigB,IAAEA,EAAGF,IAAEA,EAAG6xD,SAAEA,EAAQ2T,OAAEA,EAAM3hG,MAAEA,EAAK6E,OAAEA,GAAW48F,EACnEA,EAASmC,SAAU,EACnBnC,EAASr4B,QAAS,EAClBq4B,EAASsO,SAAU,EAGnBtO,EAAS4C,uBAET,MAAM8E,GAAenpG,GAAS6E,EAAO7E,MAGhCoc,EAKMpc,GACTyhG,EAASlN,SAASv0F,EAAO,GALrBA,EAAOyhG,EAASlN,SAASv0F,EAAO,GAC3B6E,EAAO7E,OACdyhG,EAASlN,SAASkN,EAAS+F,gBAAgB3iG,EAAO7E,OAAQ,GAO9DyhG,EAASkI,yBAGTlI,EAASkD,gBAAkB,EAC3BlD,EAAS6I,qBAGLnB,EAAa1H,EAAS0H,cACjBtkG,EAAO6kG,QAAU1pG,GACxByhG,EAAS0H,aAAY,IAIlBxH,GAAU3T,GAAYA,EAASnyF,QAAwB,OAAdsgC,EAAIxM,OAChDq+D,EAAS5rF,QAAQ,SAGnBq/F,EAASrlF,aAAc,EAEvBqlF,EAASoI,QAAQnkG,MAAM6kG,IACrB9I,EAAS5nE,KAAK,mCAAoC0wE,EAAQ,IAIxDluE,GACFA,EAAIj6B,QAAQ,iBAEV4rF,GACFA,EAAS5rF,QAAQ,iBAEnBq/F,EAAS5nE,KAAK,2BAA4B4nE,EAC5C,CAEAj4B,WACE,MAAMi4B,EAAWljG,KACjBkjG,EAASsO,SAAU,EACftO,EAASplE,KACXolE,EAASplE,IAAIj6B,QAAQ,mBAEnBq/F,EAASzT,UACXyT,EAASzT,SAAS5rF,QAAQ,mBAE5Bq/F,EAAS5nE,KAAK,+BAAgC4nE,EAChD,CAEAh4B,UACE,MAAMg4B,EAAWljG,KACX49B,EAAMslE,EAAStlE,IAIrB,GAHAslE,EAASsO,SAAU,EACnBtO,EAASmC,SAAU,EAEfnC,EAASzT,SACX,GAAkB,OAAd7xD,EAAIxM,MACN8xE,EAASzT,SAAS5rF,QAAQ,YACrB,CACL,MAAMmoC,EAAWk3D,EAASzT,SAASllF,KAAK,YAClCknG,EAAWvO,EAASzT,SAASllF,KAAK,YACpCyhC,GAAYylE,GACd7zE,EAAI9qB,MAAMk5B,SAASk3D,EAASzT,SAEhC,CAEEyT,EAAS+E,sBACX/E,EAAS+E,uBAGP/E,EAASplE,KACXolE,EAASplE,IAAIj6B,QAAQ,kBAEnBq/F,EAASzT,UACXyT,EAASzT,SAAS5rF,QAAQ,kBAE5Bq/F,EAAS5nE,KAAK,6BAA8B4nE,EAC9C,CAEA/3B,WACE,MAAM+3B,EAAWljG,KACjBkjG,EAASr4B,QAAS,EAClBq4B,EAASmC,SAAU,EAEdnC,EAASE,QACZlxE,IAAS,KACHgxE,EAAS9qD,OAAS8qD,EAAS9qD,MAAMt2C,IAAMohG,EAAS9qD,MAAMra,UACnDmlE,EAAS58F,OAAO07F,gBACnBkB,EAAS9qD,MAAMra,kBAGZmlE,EAAS9qD,KAAK,IAGrB8qD,EAASgO,qBACPhO,EAASgO,mBAAmBnzE,SAASmlE,EAASgO,mBAAmBnzE,iBAC9DmlE,EAASgO,oBAEdhO,EAASplE,KACXolE,EAASplE,IAAIj6B,QAAQ,mBAEnBq/F,EAASzT,UACXyT,EAASzT,SAAS5rF,QAAQ,mBAE5Bq/F,EAAS5nE,KAAK,+BAAgC4nE,EAChD,CAEAjlE,OACE,MAAMilE,EAAWljG,MACX49B,IAAEA,EAAGitC,OAAEA,EAAMu4B,OAAEA,EAAM3T,SAAEA,EAAQnpF,OAAEA,GAAW48F,EAClD,GAAIr4B,EAAQ,OAEZ,GAAIu4B,EAQF,OAPAF,EAASplE,IAAMz7B,EAAE6gG,EAASz6F,UAC1By6F,EAASplE,IAAI,GAAG4zE,WAAaxO,EAC7BA,EAASiD,WAAajD,EAASplE,IAAI+T,KAAK,4BACxCqxD,EAASoI,QAAUpI,EAASiD,WAAWt0D,KAAK,mBAC5CqxD,EAASp4B,aAAanhE,OAAOu5F,EAASplE,KACtColE,EAASl4B,cACTk4B,EAASj4B,WAGX,IAAIhzB,EAAY3xC,EAAO2gD,OACL,SAAdhP,IACFA,EAAYirD,EAASkC,YAAc,UAAY,SAEjD,MAAM16C,EAAew4C,EAASz6F,SAExBihD,EAAc,CAClBxrB,SAAUuxD,EACVnY,WAAYhxE,EAAOqrG,cAAgBliB,OAAWnmF,EAC9C2kB,QAASy8B,EACT0gB,UACsB,IAApB9kE,EAAO8kE,WACS,YAAdnzB,GAAyC,gBAAdA,KACK,IAAhCra,EAAIt3B,OAAOwoD,QAAQsc,WACC,IAApB9kE,EAAO8kE,SACXa,qBAAsB3lE,EAAO2lE,qBAC7BnoE,GAAI,CACFm6B,OACE,MAAMma,EAAQp4C,KACdkjG,EAAS9qD,MAAQA,EACjB8qD,EAASplE,IAAoB,YAAdma,EAA0BG,EAAMta,IAAI+T,KAAK,aAAeuG,EAAMta,IAC7EolE,EAASiD,WAAajD,EAASplE,IAAI+T,KAAK,4BACxCqxD,EAASoI,QAAUpI,EAASiD,WAAWt0D,KAAK,mBAC5CqxD,EAASplE,IAAI,GAAG4zE,WAAaxO,EACX,gBAAdjrD,GACF51C,EAAE6gG,EAASplE,KACR+T,KAAK,mBACL1W,KAAK,SAAS,KACb+nE,EAAS3kE,OAAO,IAGtB2kE,EAASl4B,Q,EAEXH,SACEq4B,EAASj4B,U,EAEX1sC,QACE2kE,EAASh4B,S,EAEX+I,SACEivB,EAAS/3B,UACX,IAGc,UAAdlzB,IACFyR,EAAY1nD,KAAOsE,EAAO87F,UAC1B14C,EAAYknB,aAAetqE,EAAO+7F,mBAEhC/7F,EAAO07F,gBAAkBkB,EAASj0D,KACpCi0D,EAASj0D,KAAKhN,OAAOyM,SAAS,CAC5Bnc,IAAK2wE,EAAS3wE,IACd0a,MAAO,CACLhC,KAAMi4D,EAAS3wE,IACf0lB,CAACA,GAAYyR,MAIjBw5C,EAAS9qD,MAAQxa,EAAIqa,GAAWnb,OAAO4sB,GACvCw5C,EAAS9qD,MAAMna,OAEnB,CAEAM,QACE,MAAM2kE,EAAWljG,MACX6qE,OAAEA,EAAMu4B,OAAEA,GAAWF,EAC3B,GAAKr4B,EACL,OAAIu4B,GACFF,EAASh4B,eACTg4B,EAAS/3B,iBAGP+3B,EAAS58F,OAAO07F,gBAAkBkB,EAASj0D,KAC7Ci0D,EAASj0D,KAAKhN,OAAOniC,OAErBojG,EAAS9qD,MAAM7Z,QAEnB,CAEAc,OACE,MAAM6jE,EAAWljG,KAIjB,GAFAkjG,EAASgG,YAELhG,EAASE,OAGX,OAFAF,EAASjlE,YACTilE,EAAS5nE,KAAK,2BAA4B4nE,IAIvCA,EAASrlF,aAAeqlF,EAAS58F,OAAO7E,OAC3CyhG,EAASlN,SAASkN,EAAS+F,gBAAgB/F,EAAS58F,OAAO7E,QAIzDyhG,EAASzT,UACXyT,EAASuC,oBAEPvC,EAAS58F,OAAOurE,qBAClBqxB,EAAS0C,mBAEX1C,EAAS5nE,KAAK,2BAA4B4nE,EAC5C,CAEAnlE,UACE,MAAMmlE,EAAWljG,KACjB,GAAIkjG,EAAS92B,UAAW,OACxB,MAAMtuC,IAAEA,GAAQolE,EAChBA,EAAS5nE,KAAK,6CAA8C4nE,GACxDplE,GAAKA,EAAIj6B,QAAQ,0BAErBq/F,EAAS3kE,QAGL2kE,EAASzT,UACXyT,EAASyC,oBAEPzC,EAAS58F,OAAOurE,qBAClBqxB,EAAS2C,mBAGP3C,EAASgO,qBACPhO,EAASgO,mBAAmBnzE,SAASmlE,EAASgO,mBAAmBnzE,iBAC9DmlE,EAASgO,oBAGdpzE,GAAOA,EAAIxgC,eAAe4lG,EAASplE,IAAI,GAAG4zE,WAC9C1/E,GAAYkxE,GACZA,EAAS92B,WAAY,CACvB,GC7gEF,IAAAwlC,GAAe,CACbpuG,KAAM,WACN65B,OAAQ,CACNu0E,aAEF90E,SACE,MAAMc,EAAM59B,KACZ49B,EAAIslE,SAAW3lE,GAAmB,CAChCE,gBAAiB,YACjB3gC,YAAa80G,GACbh0E,MACAD,QAAS,eAEXC,EAAIslE,SAAS3kE,MAAQ,SAAez8B,QAAE,IAAFA,MAAK,aACvC,MAAMg8B,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OACtB,MAAM4lG,EAAWplE,EAAI,GAAG4zE,YACnBxO,GAAaA,IAAaA,EAASr4B,QACxCq4B,EAAS3kE,O,GAGbj4B,OAAQ,CACN48F,SAAU,CAERmG,gBAAY//F,EACZk7F,WAAY,OACZC,gBAAiB,OACjBC,SAAU,OACVC,cAAe,OACfd,YAAQv6F,EACRskG,SAAU,EACVS,YAAa,CAAC,EAAG,GACjBt8F,UAAU,EACVyxF,aAAa,EACbiH,mBAAoB,EACpBC,mBAAoB,EACpB10D,UAAW,aACX42D,QAAS,KACTF,QAAS,KACTp4B,SAAU,KACVtnE,OAAQ,KACRwhG,cAAe,KACfxG,WAAW,EACXxgG,SAAS,EACTg1F,eAAe,EACf+S,eAAe,EACfzH,aAAa,EACbmI,oBAAoB,EACpBE,qBAAsB,OACtBX,cAAc,EACdzH,YAAY,EACZ6I,mBAAmB,EACnBJ,mBAAelnG,EACfonG,mBAAepnG,EACfunG,oBAAqB,OACrBtN,YAAY,EACZ4N,mBAAmB,EACnBlC,gBAAiB,OACjB5K,iBAAkB,CAAEwN,KAAM,UAAWC,OAAQ,WAC7C5G,sBAAuB,cACvBkG,oBAAqB,OACrBzB,YAAY,EACZluG,MAAO,KAEPspE,YAAa,KACb9jB,OAAQ,OACRm7C,WAAW,EACXC,uBAAmB/4F,EACnB2uF,YAAa,KACbzI,QAAS,KACTkW,eAAe,EACf7zB,qBAAqB,EACrB8/B,eAAe,EACfxG,QAAQ,EACRgE,kBAAmB,cACnB7lC,SAAS,EACT+lC,iBAAkB,OAClBK,QAAQ,EACR7iC,SAAU,KACVm1B,gBAAgB,EAChB/yD,KAAM,KACN1c,IAAK,QACL64C,SAAU,KACVa,sBAAsB,EAEtB0iC,iBAAkB,KAClBtB,aAAc,KACdzB,YAAa,KACbiD,oBAAqB,KACrBC,mBAAoB,KACpBI,aAAc,KACdE,aAAc,KACdE,cAAe,KACfG,aAAc,KACd/7B,cAAe,KACf4sB,YAAa,KACb73F,OAAQ,QClGC,SAASspG,GAAaC,EAAOC,GAC1C,MAAMjC,EAAShwG,KAETkyG,EAAS7vG,EAAE2vG,GACXG,EAAWD,EAAOzqG,QAClBymG,EAAM8B,EAAOzwB,KAAK4yB,GACxB,GAAIjE,EAAImD,QAAS,OAOjB,IAAIzvB,EACAwwB,EA6FJ,SAASprC,IACPknC,EAAI+D,aACN,CAEA,SAASxlC,IACP,MAAMhrE,EAAQY,EAAErC,MAAMuK,KAAK,qBAC3B2jG,EAAIlY,SAASv0F,EACf,CA1GAysG,EAAIpwE,IAAMo0E,EACVhE,EAAIpsG,GAAKowG,EAAO,GAChBhE,EAAImE,SAAWnE,EAAIpwE,IAAI+T,KAAK,iBAC5Bq8D,EAAIhtG,MAAQgtG,EAAImE,SAASxgE,KAAK,gBAK9Bq8D,EAAIoE,cAAgB,SAA0BtgG,EAAQ+9F,GACpD7B,EAAInxC,eACJmxC,EAAIl8F,OAASA,EACbk8F,EAAI6B,cAAgBA,EACpB7B,EAAImE,SAAS7vG,KAAKwtG,EAAOuC,aAAarE,GAAK,IAC3CA,EAAIhtG,MAAQgtG,EAAImE,SAASxgE,KAAK,gBAC9Bq8D,EAAInpB,WACJmpB,EAAIlY,SAASkY,EAAIl8F,OAAO,IAAI,GAC5Bk8F,EAAIp4D,c,EAENo4D,EAAInpB,SAAW,WACbqtB,EAAYlE,EAAIpwE,IAAI,GAAG3uB,aACvByyE,EAAassB,EAAIhtG,MAAM,GAAGiO,aAE1B,MAAMqjG,EAAatE,EAAIpsG,GAAGxD,MAAM4B,iBAAiB,8BACjDguG,EAAIpsG,GAAGxD,MAAMuhD,YAAY,8BAAkCuyD,EAAYxwB,GAAc,EAA7B,MACnD4wB,IACHtE,EAAImE,SAAS,GAAGxkG,UAAY,E,EAIhCqgG,EAAIlY,SAAW,SAAqBD,EAAU0c,GAC5C,MAAMC,EAAiBxE,EAAImE,SACxBxgE,KAAM,mCAAkCkkD,OACxCtuF,QACH,QAA8B,IAAnBirG,IAAsD,IAApBA,EAC3C,OAEF,MAAMC,EAAeD,EAAiB9wB,EACtCssB,EAAImE,SAAS,GAAGxkG,UAAY8kG,EAG5BzE,EAAI+D,YAAYS,EAAgBC,EAAcF,E,EAGhDvE,EAAI+D,YAAc,SAAwB5oC,EAAax7D,EAAW4kG,QACvC,IAAd5kG,IAETA,EAAYqgG,EAAImE,SAAS,GAAGxkG,gBAIH,IAAhBw7D,IACTA,EAAcviE,KAAKkO,MAAMnH,EAAY+zE,IAEnCvY,EAAc,IAAGA,EAAc,GAC/BA,GAAe6kC,EAAIhtG,MAAM5D,SAAQ+rE,EAAc6kC,EAAIhtG,MAAM5D,OAAS,GAEtE,MAAMs1G,EAAsB1E,EAAI7kC,YAChC6kC,EAAI7kC,YAAcA,EAClB6kC,EAAImE,SAASxgE,KAAK,yBAAyBrP,YAAY,wBAEvD,MAAMqwE,EAAe3E,EAAIhtG,MAAMgJ,GAAGm/D,GAClCwpC,EAAavwE,SAAS,wBAAwBlkC,WAAWgT,UAAU,IAE/D4+F,EAAO1pG,OAAO4pG,cAChBhC,EAAIhtG,MAAMiG,MAAMs7E,IACd,MAAMqwB,EAAUzwG,EAAEogF,GAGZtuC,GADasuC,EAAOtH,WAAai3B,EAAYxwB,GAAc,EAAI/zE,GACrC+zE,EAC1BmxB,EAAWjsG,KAAKsX,KAAK8vF,EAAIl0E,OAAS4nD,EAAa,GAAK,EAE1D,IAAI9lE,GAAS,GAAKq4B,EACdr4B,EAAQ,MAAKA,EAAQ,KACrBA,GAAS,MAAKA,GAAS,KACvBhV,KAAK+R,IAAIs7B,GAAc4+D,EACzBD,EAAQxwE,SAAS,mBAEjBwwE,EAAQtwE,YAAY,mBAEtBswE,EACG10G,SAAS,QACTgT,UAAW,mBAAkB+iC,EAAaytC,wBAAiC9lE,QAAY,KAI1F22F,QAA4C,IAAnBA,KAE3BvE,EAAIzsG,MAAQoxG,EAAatoG,KAAK,qBAC9B2jG,EAAI8E,aAAe9E,EAAI6B,cAAgB7B,EAAI6B,cAAc1mC,GAAe6kC,EAAIzsG,MAExEmxG,IAAwBvpC,IACtB6kC,EAAIlS,UACNkS,EAAIlS,SAASgU,EAAQ9B,EAAIzsG,MAAOysG,EAAI8E,cAEtChD,EAAOpF,e,EAcbsD,EAAIp4D,aAAe,WACjBo4D,EAAImE,SAASvuG,GAAG,SAAUkjE,GAC1BknC,EAAIhtG,MAAM4C,GAAG,QAAS2oE,E,EAExByhC,EAAInxC,aAAe,WACjBmxC,EAAIhtG,MAAMiI,IAAI,QAASsjE,E,EAGzByhC,EAAI7uE,KAAO,WACT6uE,EAAInpB,WACa,IAAbotB,GAAgBjE,EAAIpwE,IAAIwE,SAAS,uBACjC6vE,IAAanC,EAAOzwB,KAAKjiF,OAAS,GAAG4wG,EAAIpwE,IAAIwE,SAAS,sBACtD0tE,EAAO1pG,OAAO2sG,UAAU/E,EAAIpwE,IAAIwE,SAAS,2BAEzC2vE,GAAa/D,EAAI+D,YAAY,GAEjC/D,EAAIp4D,c,EAGNo4D,EAAInwE,QAAU,WACZmwE,EAAInxC,c,EAGNmxC,EAAI7uE,MACN,C,OCnIA,cAAqBzD,GACnB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IACf,MAAMoyE,EAAShwG,KACT64B,EAASN,KACTx3B,EAASF,IAGf,IAAIiqE,EAMA2kB,EALJ,GAHAugB,EAAO1pG,OAAStJ,GAAO,GAAI4gC,EAAIt3B,OAAO0pG,OAAQ1pG,GAG1C0pG,EAAO1pG,OAAOykE,cAChBD,EAAezoE,EAAE2tG,EAAO1pG,OAAOykE,aACH,IAAxBD,EAAaxtE,QAAc,OAAO0yG,EAIpCA,EAAO1pG,OAAOkpF,UAChBC,EAAWptF,EAAE2tG,EAAO1pG,OAAOkpF,UAG7B,IAAI7J,EAAcqqB,EAAO1pG,OAAOqrG,cAAgBliB,OAAWnmF,EAC3D,GAAI0mG,EAAO1pG,OAAOgxE,WAAY,CAC5B,MAAMA,EAAaj1E,EAAE2tG,EAAO1pG,OAAOgxE,YAC/BA,EAAWh6E,OAAS,IACtBqoF,EAAcrO,EAElB,CAqBA,SAASJ,IACP84B,EAAOkD,YACT,CACA,SAASjZ,IACP+V,EAAO/xE,MACT,CACA,SAASgnE,EAAa/7F,GACpBA,EAAE+/B,gBACJ,CA3BAjsC,GAAOgzG,EAAQ,CACbpyE,MACAktC,eACAC,YAAaD,GAAgBA,EAAa,GAC1Cs4B,OAAQt4B,GAAgBA,EAAaxtE,OAAS,EAC9C61G,eACEt6E,EAAOxC,KACNt1B,EAAOvB,UAAUC,UAAUgL,cAAc/H,QAAQ,WAAa,GAC7D3B,EAAOvB,UAAUC,UAAUgL,cAAc/H,QAAQ,UAAY,IAC5Dm2B,EAAOC,QACZymD,KAAM,GACNkQ,WACAD,QAASC,GAAYA,EAAS,GAC9B9J,cACA9nE,aAAa,EACbgtD,QAAQ,EACRt4C,IAAKy9E,EAAO1pG,OAAOisB,MAYrB,IAAI6gF,EAAuB,KAC3B,SAASC,EAAiBnqG,GACxBkqG,EAAuBlqG,EAAEjM,MAC3B,CACA,SAASkoG,EAAYj8F,GACnB,GAAI8mG,EAAO5jC,YAAc4jC,EAAO1pG,OAAQ,OACxC,MAAMm4B,EAAYp8B,EAAE6G,EAAEjM,QAClB+yG,EAAO5K,aACN4K,EAAOnlC,SAAUmlC,EAAO3K,UACzB5mE,EAAUz0B,QAAQ,uBAAuB1M,SACzCmyF,GAAYA,EAASnyF,OAAS,EAE9B81G,IAAyBlqG,EAAEjM,QAC3BwhC,EAAU,KAAOgxD,EAAS,IACmB,IAA7ChxD,EAAUz0B,QAAQ,gBAAgB1M,QAElC0yG,EAAOzxE,QAE+C,IAA/Cl8B,EAAE6G,EAAEjM,QAAQ+M,QAAQ,gBAAgB1M,QAC7C0yG,EAAOzxE,SAEX,CAwCA,OArCAvhC,GAAOgzG,EAAQ,CACbsD,oBACE11E,EAAI95B,GAAG,SAAUozE,E,EAEnBq8B,oBACE31E,EAAIz0B,IAAI,SAAU+tE,E,EAEpBuuB,oBACEuK,EAAOvgB,SAAS3rF,GAAG,QAASm2F,GACxB+V,EAAO1pG,OAAOo/F,gBAChBsK,EAAOvgB,SAAS3rF,GAAG,kBAAmBmhG,GAClC+K,EAAOvgB,SAAS,KAClBugB,EAAOvgB,SAAS,GAAG+B,oBAAqB,G,EAI9CmU,oBACEqK,EAAOvgB,SAAStmF,IAAI,QAAS8wF,GACzB+V,EAAO1pG,OAAOo/F,gBAChBsK,EAAOvgB,SAAStmF,IAAI,kBAAmB87F,GACnC+K,EAAOvgB,SAAS,WACXugB,EAAOvgB,SAAS,GAAG+B,mB,EAIhCoU,mBACEhoE,EAAI95B,GAAG,QAASqhG,GAChBvnE,EAAI95B,GAAG,aAAcuvG,E,EAEvBxN,mBACEjoE,EAAIz0B,IAAI,QAASg8F,GACjBvnE,EAAIz0B,IAAI,aAAckqG,EACxB,IAGFrD,EAAO3wE,OAEA2wE,CACT,CAEA,QAAI/gE,GACF,MAAMrR,IAAEA,EAAGt3B,OAAEA,EAAMmpF,SAAEA,GAAazvF,KAClC,IAAIivC,EAOJ,OANI3oC,EAAO2oC,KACTA,EAAO3oC,EAAO2oC,KACLwgD,IACTxgD,EAAOwgD,EAASxlF,QAAQ,SAAS3M,QAAUmyF,EAASxlF,QAAQ,SAAS,GAAG6iD,QAErE7d,IAAMA,EAAOrR,EAAIoR,MAAM6d,MACrB5d,CACT,CAEAi6D,YACE,MAAM8G,EAAShwG,KACVgwG,EAAOvgB,UACRugB,EAAO1pG,OAAOo/F,eAAesK,EAAOvgB,SAASznF,KAAK,YAAY,EACpE,CAEAkrG,aACE,MAAMlD,EAAShwG,KACf,GAAKgwG,EAAOnlC,OACZ,IAAK,IAAI/nE,EAAI,EAAGA,EAAIktG,EAAOzwB,KAAKjiF,OAAQwF,GAAK,EACtCktG,EAAOzwB,KAAKz8E,GAAGuuG,UAClBrB,EAAOzwB,KAAKz8E,GAAGiiF,WACfirB,EAAOzwB,KAAKz8E,GAAGkzF,SAASga,EAAOzwB,KAAKz8E,GAAGrB,OAAO,GAGpD,CAEA2jG,YACE,MAAM4K,EAAShwG,MACT49B,IAAEA,EAAGwa,MAAEA,EAAK9xC,OAAEA,GAAW0pG,EACzBn3E,EAASN,KACf,GAAsB,UAAlBjyB,EAAO2gD,OAAoB,OAAO,EACtC,GAAI7O,GAAwB,YAAfA,EAAM5O,KAAoB,OAAO,EAE9C,IAAKwmE,EAAO5M,QAAU4M,EAAOxgB,QAAS,CACpC,GAAsB,YAAlBlpF,EAAO2gD,OAAsB,OAAO,EACxC,GAAIpuB,EAAOxC,IACT,QAASwC,EAAOM,KAElB,GAAIyE,EAAItF,OAAS,IACf,OAAO,CAEX,CACA,OAAO,CACT,CAEA2/D,cACE,MAAM+X,EAAShwG,MACTyB,MAAEA,EAAKuxG,aAAEA,GAAiBhD,EAChC,OAAIA,EAAO1pG,OAAO2xF,YACT+X,EAAO1pG,OAAO2xF,YAAY71F,KAAK4tG,EAAQvuG,EAAOuxG,GAEhDvxG,EAAMguB,KAAK,IACpB,CAEAumE,SAAShkF,GACP,MAAMg+F,EAAShwG,KACf,IAAIk3F,EAAa,EACjB,GAA2B,IAAvB8Y,EAAOzwB,KAAKjiF,OAGd,OAFA0yG,EAAOvuG,MAAQuQ,OACfg+F,EAAOpF,YAAY54F,GAGrB,IAAK,IAAIlP,EAAI,EAAGA,EAAIktG,EAAOzwB,KAAKjiF,OAAQwF,GAAK,EACvCktG,EAAOzwB,KAAKz8E,KAAOktG,EAAOzwB,KAAKz8E,GAAGuuG,UACpCrB,EAAOzwB,KAAKz8E,GAAGkzF,SAAShkF,EAAOklF,IAC/BA,GAAc,EAGpB,CAEAC,WAEE,OADen3F,KACDyB,KAChB,CAEAmpG,YAAY4I,GACV,MAAMxD,EAAShwG,KACT+1F,EAAWyd,GAAe,GAC1BC,EAAkB,GACxB,IAAIC,EACJ,GAA2B,IAAvB1D,EAAOzwB,KAAKjiF,OAAc,CAC5B,MAAMq2G,EAAmB3D,EAAO1pG,OAAOi5E,KAAKp9E,QAAQ4D,IAAOA,EAAEsrG,UAC7D,IAAK,IAAIvuG,EAAI,EAAGA,EAAI6wG,EAAiBr2G,OAAQwF,GAAK,EAChD4wG,EAASC,EAAiB7wG,QAECwG,IAAzBoqG,EAAO3D,oBACWzmG,IAAlBoqG,EAAO1hG,SACiC,IAAxC0hG,EAAO1hG,OAAOtP,QAAQqzF,EAASjzF,IAE/B2wG,EAAgBzxG,KAAK0xG,EAAO3D,cAAc2D,EAAO1hG,OAAOtP,QAAQqzF,EAASjzF,MAEzE2wG,EAAgBzxG,KAAK+zF,EAASjzF,GAGpC,MACE,IAAK,IAAIA,EAAI,EAAGA,EAAIktG,EAAOzwB,KAAKjiF,OAAQwF,GAAK,EACtCktG,EAAOzwB,KAAKz8E,GAAGuuG,UAClBtb,EAAS/zF,KAAKguG,EAAOzwB,KAAKz8E,GAAGrB,OAC7BgyG,EAAgBzxG,KAAKguG,EAAOzwB,KAAKz8E,GAAGkwG,eAKtCjd,EAASrzF,aAAQ4G,IAAc,IAGnC0mG,EAAOvuG,MAAQs0F,EACfia,EAAOgD,aAAeS,EACtBzD,EAAO10E,KAAK,6BAA8B00E,EAAQA,EAAOvuG,MAAOuuG,EAAOgD,cACnEhD,EAAOxgB,UACTwgB,EAAOvgB,SAASr9E,IAAI49F,EAAO/X,eAC3B+X,EAAOvgB,SAAS5rF,QAAQ,WAE5B,CAEA+vG,WAAW5B,EAAOC,GAEhBF,GAAa3vG,KADEpC,KACWgyG,EAAOC,EACnC,CAEA4B,cAAc7B,GACZ,MAAMhC,EAAShwG,KAETyH,EADSpF,EAAE2vG,GACIvqG,QACjBuoG,EAAOzwB,KAAK93E,IAAUuoG,EAAOzwB,KAAK93E,GAAOs2B,SAC3CiyE,EAAOzwB,KAAK93E,GAAOs2B,SAEvB,CAEAuxE,gBACE,MAAMU,EAAShwG,KACf,OAAIgwG,EAAO1pG,OAAOgpG,cAAsBU,EAAO1pG,OAAOgpG,cAAcltG,KAAK4tG,EAAQA,GAE/ErxE,GAAA,OAAK0zB,MAAM,uBACT1zB,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,OAAK0zB,MAAM,SACX1zB,GAAA,OAAK0zB,MAAM,SACT1zB,GAAA,KAAG0zB,MAAM,kCAAkC29C,EAAO1pG,OAAO+oG,oBAKnE,CAEAkD,aAAarE,EAAK4F,GAChB,MAAMC,EAAc,iBAAgB7F,EAAI8F,UAAa,iBAAgB9F,EAAI8F,YAAc,MACrF9F,EAAIrhC,UAAY,KAElB,IAAIonC,EACAC,EAsBJ,OApBIhG,EAAImD,QAEN4C,EAAc,yBACEF,4BAAqC7F,EAAIjgF,yBAIzDimF,EAAkBhG,EAAIl8F,OAAOlM,KAAI,CAACrE,EAAOgG,IAAW,yDACJhG,wBACpCysG,EAAI6B,cAAgB7B,EAAI6B,cAActoG,GAAShG,qCAExDguB,KAAK,IAERwkF,EAAc,yBACEF,4CACgBG,mCAK3BJ,EAAYI,EAAgBzxG,OAASwxG,EAAWxxG,MACzD,CAEAgtG,eACE,MAAMO,EAAShwG,MACTkwG,aAAEA,EAAYrjC,SAAEA,EAAQvD,QAAEA,GAAY0mC,EAAO1pG,OAWnD,OATEq4B,GAAA,OAAK0zB,MAAQ,wBAAuB69C,EAAe,YAAc,MAAMrjC,GAAY,MAChFvD,GAAW0mC,EAAOV,gBACnB3wE,GAAA,OAAK0zB,MAAM,kBACR29C,EAAOzwB,KAAKz5E,KAAKooG,GAAQ8B,EAAOuC,aAAarE,KAC9CvvE,GAAA,OAAK0zB,MAAM,6BAMnB,CAEAiuC,cACE,MAAM0P,EAAShwG,MACTkwG,aAAEA,EAAYrjC,SAAEA,EAAQvD,QAAEA,GAAY0mC,EAAO1pG,OAenD,OAbEq4B,GAAA,OACE0zB,MAAQ,mCAAkC69C,EAAe,YAAc,MACrErjC,GAAY,MAGbvD,GAAW0mC,EAAOV,gBACnB3wE,GAAA,OAAK0zB,MAAM,oCACR29C,EAAOzwB,KAAKz5E,KAAKooG,GAAQ8B,EAAOuC,aAAarE,KAC9CvvE,GAAA,OAAK0zB,MAAM,6BAMnB,CAEAqhB,gBACE,MAAMs8B,EAAShwG,MACTkwG,aAAEA,EAAYrjC,SAAEA,EAAQvD,QAAEA,GAAY0mC,EAAO1pG,OAenD,OAbEq4B,GAAA,OAAK0zB,MAAM,0BACT1zB,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,OAAK0zB,MAAQ,UAAS69C,EAAe,YAAc,MAAMrjC,GAAY,MAClEvD,GAAW0mC,EAAOV,gBACnB3wE,GAAA,OAAK0zB,MAAM,kBACR29C,EAAOzwB,KAAKz5E,KAAKooG,GAAQ8B,EAAOuC,aAAarE,KAC9CvvE,GAAA,OAAK0zB,MAAM,+BAQvB,CAEA5pD,SACE,MAAMunG,EAAShwG,KACf,OAAIgwG,EAAO1pG,OAAOmC,OAAeunG,EAAO1pG,OAAOmC,OAAOrG,KAAK4tG,GACtDA,EAAO5M,OAIL4M,EAAOP,eAHRO,EAAO5K,YAAoB4K,EAAOt8B,gBAC/Bs8B,EAAO1P,aAGlB,CAEAt1B,SACE,MAAMglC,EAAShwG,MACT6d,YAAEA,EAAWigB,IAAEA,EAAGF,IAAEA,EAAG6xD,SAAEA,EAAQ2T,OAAEA,EAAM3hG,MAAEA,EAAK6E,OAAEA,GAAW0pG,EACnEA,EAAOnlC,QAAS,EAChBmlC,EAAO3K,SAAU,EACjB2K,EAAOwB,SAAU,EAGjBxB,EAAOsD,oBAGPx1E,EAAI+T,KAAK,kBAAkB1qC,MAAM6qG,IAC/B,IAAIC,GAAc,IACZp0F,GAAevX,EAAO7E,OAAWoc,GAAepc,KACpDwwG,GAAc,GAEhBjC,EAAO4D,WAAW5B,EAAOC,EAAY,IAIlCp0F,EAKMpc,GACTuuG,EAAOha,SAASv0F,GALZA,EAAOuuG,EAAOha,SAASv0F,GAClB6E,EAAO7E,OACduuG,EAAOha,SAAS1vF,EAAO7E,QAOtB2hG,GAAU3T,GAAYA,EAASnyF,QAAwB,OAAdsgC,EAAIxM,OAChDq+D,EAAS5rF,QAAQ,SAGnBmsG,EAAOnyF,aAAc,EAGjBigB,GACFA,EAAIj6B,QAAQ,eAEV4rF,GACFA,EAAS5rF,QAAQ,eAEnBmsG,EAAO10E,KAAK,yBAA0B00E,EACxC,CAEA/kC,WACE,MAAM+kC,EAAShwG,KACfgwG,EAAOwB,SAAU,EAEbxB,EAAOlyE,KACTkyE,EAAOlyE,IAAIj6B,QAAQ,iBAEjBmsG,EAAOvgB,UACTugB,EAAOvgB,SAAS5rF,QAAQ,iBAE1BmsG,EAAO10E,KAAK,6BAA8B00E,EAC5C,CAEA9kC,UACE,MAAM8kC,EAAShwG,KACT49B,EAAMoyE,EAAOpyE,IAWnB,GAVAoyE,EAAOwB,SAAU,EACjBxB,EAAO3K,SAAU,EAGjB2K,EAAOuD,oBAEPvD,EAAOzwB,KAAKniF,SAAS8wG,IACfA,EAAInwE,SAASmwE,EAAInwE,SAAS,IAG5BiyE,EAAOvgB,SACT,GAAkB,OAAd7xD,EAAIxM,MACN4+E,EAAOvgB,SAAS5rF,QAAQ,YACnB,CACL,MAAMmoC,EAAWgkE,EAAOvgB,SAASllF,KAAK,YAChCknG,EAAWzB,EAAOvgB,SAASllF,KAAK,YAClCyhC,GAAYylE,GACd7zE,EAAI9qB,MAAMk5B,SAASgkE,EAAOvgB,SAE9B,CAGEugB,EAAOlyE,KACTkyE,EAAOlyE,IAAIj6B,QAAQ,gBAEjBmsG,EAAOvgB,UACTugB,EAAOvgB,SAAS5rF,QAAQ,gBAE1BmsG,EAAO10E,KAAK,2BAA4B00E,EAC1C,CAEA7kC,WACE,MAAM6kC,EAAShwG,KACfgwG,EAAOnlC,QAAS,EAChBmlC,EAAO3K,SAAU,EAEZ2K,EAAO5M,QACVlxE,IAAS,KACH89E,EAAO53D,OAAS43D,EAAO53D,MAAMt2C,IAAMkuG,EAAO53D,MAAMra,UAC7CiyE,EAAO1pG,OAAO07F,gBACjBgO,EAAO53D,MAAMra,kBAGViyE,EAAO53D,KAAK,IAInB43D,EAAOlyE,KACTkyE,EAAOlyE,IAAIj6B,QAAQ,iBAEjBmsG,EAAOvgB,UACTugB,EAAOvgB,SAAS5rF,QAAQ,iBAE1BmsG,EAAO10E,KAAK,6BAA8B00E,EAC5C,CAEA/xE,OACE,MAAM+xE,EAAShwG,MACT49B,IAAEA,EAAGitC,OAAEA,EAAMu4B,OAAEA,EAAM3T,SAAEA,EAAQ9J,YAAEA,EAAWr/E,OAAEA,GAAW0pG,EAC/D,GAAInlC,EAAQ,OAMZ,GAL2B,IAAvBmlC,EAAOzwB,KAAKjiF,QAAgBgJ,EAAOi5E,KAAKjiF,QAC1CgJ,EAAOi5E,KAAKniF,SAAS8wG,IACnB8B,EAAOzwB,KAAKv9E,KAAKksG,EAAI,IAGrB9K,EAMF,OALA4M,EAAOlyE,IAAMz7B,EAAE2tG,EAAOvnG,UACtBunG,EAAOlyE,IAAI,GAAGq2E,SAAWnE,EACzBA,EAAOllC,aAAanhE,OAAOqmG,EAAOlyE,KAClCkyE,EAAOhlC,cACPglC,EAAO/kC,WAGT,MAAMm6B,EAAY4K,EAAO5K,YACnBntD,EAAYmtD,EAAY,UAAY,QACpC17C,EAAc,CAClBxrB,SAAUuxD,EACVnY,WAAYqO,EACZ13D,QAAS+hF,EAAOvnG,SAChB2iE,cAAqC,IAApB9kE,EAAO8kE,SAA2B9kE,EAAO8kE,SAAWg6B,EACrEthG,GAAI,CACFm6B,OACE,MAAMma,EAAQp4C,KACdgwG,EAAO53D,MAAQA,EACf43D,EAAOlyE,IAAMsnE,EAAYhtD,EAAMta,IAAI+T,KAAK,WAAauG,EAAMta,IAC3DkyE,EAAOlyE,IAAI,GAAGq2E,SAAWnE,EACzBA,EAAOhlC,Q,EAETH,SACEmlC,EAAO/kC,U,EAET1sC,QACEyxE,EAAO9kC,S,EAET+I,SACE+7B,EAAO7kC,UACT,IAGc,UAAdlzB,IACFyR,EAAY1nD,KAAOsE,EAAO87F,UAC1B14C,EAAYknB,aAAetqE,EAAO+7F,mBAEhC/7F,EAAO07F,gBAAkBgO,EAAO/gE,KAClC+gE,EAAO/gE,KAAKhN,OAAOyM,SAAS,CAC1Bnc,IAAKy9E,EAAOz9E,IACZ0a,MAAO,CACLhC,KAAM+kE,EAAOz9E,IACb0lB,CAACA,GAAYyR,MAIjBsmD,EAAO53D,MAAQxa,EAAIqa,GAAWnb,OAAO4sB,GACrCsmD,EAAO53D,MAAMna,OAEjB,CAEAM,QACE,MAAMyxE,EAAShwG,MACT6qE,OAAEA,EAAMu4B,OAAEA,GAAW4M,EAC3B,GAAKnlC,EACL,OAAIu4B,GACF4M,EAAO9kC,eACP8kC,EAAO7kC,iBAGL6kC,EAAO1pG,OAAO07F,gBAAkBgO,EAAO/gE,KACzC+gE,EAAO/gE,KAAKhN,OAAOniC,OAEnBkwG,EAAO53D,MAAM7Z,QAEjB,CAEAc,OACE,MAAM2wE,EAAShwG,KAIf,GAFAgwG,EAAO9G,YAEH8G,EAAO5M,OAGT,OAFA4M,EAAO/xE,YACP+xE,EAAO10E,KAAK,yBAA0B00E,IAInCA,EAAOnyF,aAAemyF,EAAO1pG,OAAO7E,OACvCuuG,EAAOha,SAASga,EAAO1pG,OAAO7E,OAI5BuuG,EAAOvgB,UACTugB,EAAOvK,oBAELuK,EAAO1pG,OAAOurE,qBAChBm+B,EAAOpK,mBAEToK,EAAO10E,KAAK,yBAA0B00E,EACxC,CAEAjyE,UACE,MAAMiyE,EAAShwG,KACf,GAAIgwG,EAAO5jC,UAAW,OACtB,MAAMtuC,IAAEA,GAAQkyE,EAChBA,EAAO10E,KAAK,2CAA4C00E,GACpDlyE,GAAKA,EAAIj6B,QAAQ,wBAErBmsG,EAAOzxE,QAGHyxE,EAAOvgB,UACTugB,EAAOrK,oBAELqK,EAAO1pG,OAAOurE,qBAChBm+B,EAAOnK,mBAGL/nE,GAAOA,EAAIxgC,eAAe0yG,EAAOlyE,IAAI,GAAGq2E,SAC5CniF,GAAYg+E,GACZA,EAAO5jC,WAAY,CACrB,GCjmBF,IAAAgoC,GAAe,CACb5wG,KAAM,SACN65B,OAAQ,CACN+2E,WAEFt3E,SACE,MAAMc,EAAM59B,KACZ49B,EAAIoyE,OAASzyE,GAAmB,CAC9BE,gBAAiB,UACjB3gC,YAAas3G,GACbx2E,MACAD,QAAS,aAEXC,EAAIoyE,OAAOzxE,MAAQ,SAAez8B,QAAE,IAAFA,MAAK,WACrC,MAAMg8B,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OACtB,MAAM0yG,EAASlyE,EAAI,GAAGq2E,UACjBnE,GAAWA,IAAWA,EAAOnlC,QAClCmlC,EAAOzxE,O,GAGXj4B,OAAQ,CACN0pG,OAAQ,CAENE,cAAc,EACd+C,UAAU,EACV1zB,KAAM,GAENxU,YAAa,KACb9jB,OAAQ,OACRm7C,WAAW,EACXC,uBAAmB/4F,EACnB8hE,cAAU9hE,EACV2uF,YAAa,KACbzI,QAAS,KACTkW,eAAe,EACf7zB,qBAAqB,EACrB8/B,eAAe,EACfr6B,gBAAYhuE,EACZggE,SAAS,EACT+lC,iBAAkB,OAClBxiC,SAAU,KACVm1B,gBAAgB,EAChB/yD,KAAM,KACN1c,IAAK,UAEL+8E,cAAe,KACf7mG,OAAQ,QChDd,MAAM4rG,GAAiB,CACrB1lE,OAAO7sC,EAAIoH,GACT,MAAM00B,EAAM59B,KACN89B,EAAMz7B,EAAEP,GACR+L,EAAYiwB,EAAI,GAAGjwB,UACnB6C,EAAeotB,EAAI,GAAGptB,aACtBspB,EAAS8D,EAAI,GAAG3uB,aACtB,IAAIsI,EAAWqmB,EAAI,GAAGj0B,aAAa,0BAEnC,MAAMyqG,EAAuBx2E,EAAI+T,KAAK,iBACtC,IAAIuqC,EAEJ,MAAMm4B,EAAQz2E,EAAIyE,SAAS,uBAM3B,GALK9qB,IAAUA,EAAW,IACF,iBAAbA,GAAyBA,EAAS/U,QAAQ,MAAQ,IAC3D+U,EAAYyY,SAASzY,EAAU,IAAM,IAAOuiB,GAE1CviB,EAAWuiB,IAAQviB,EAAWuiB,GAC9Bu6E,EACE1mG,EAAY4J,IACdqmB,EAAIj6B,QAAQ,WAAYqF,GACxB00B,EAAItC,KAAK,WAAYwC,EAAI,GAAI50B,SAE1B,GAAI2E,EAAYmsB,GAAUtpB,EAAe+G,EAAU,CACxD,GAAI68F,EAAqBh3G,OAAS,IAChC8+E,EAAck4B,EAAqBpqG,IAAI,GAAG,GAAGmyE,cACzCD,IAAgBA,EAAYnW,WAAamW,EAAY91E,OAAO85E,iBAC9D,OAGJtiD,EAAIj6B,QAAQ,WAAYqF,GACxB00B,EAAItC,KAAK,WAAYwC,EAAI,GAAI50B,EAC/B,C,EAEF4zB,OAAOh7B,GACL,MAAMg8B,EAAMz7B,EAAEP,GACR87B,EAAM59B,KACZ,SAASw0G,EAActrG,GACrB00B,EAAI62E,eAAe9lE,OAAO3uC,KAAMkJ,EAClC,CACA40B,EAAI32B,MAAM4B,IACRA,EAAQ2rG,wBAA0BF,EAClCzrG,EAAQtL,iBAAiB,SAAUsL,EAAQ2rG,wBAAwB,G,EAGvE32E,QAAQj8B,GACMO,EAAEP,GACVqF,MAAM4B,IACRA,EAAQrL,oBAAoB,SAAUqL,EAAQ2rG,gCACvC3rG,EAAQ2rG,uBAAuB,GAE1C,GAEF,IAAAC,GAAe,CACbnxG,KAAM,iBACNs5B,SAEEvG,GADYv2B,KACK,CACfy0G,eAAgBJ,I,EAGpBvwG,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACN4hD,EAASv/C,EAAE49C,GACX20D,EAAShzD,EAAO/P,KAAK,4BACvB+P,EAAO73C,GAAG,6BAA6B6qG,EAAO3uG,IAAI27C,GACtDgzD,EAAOztG,MAAMrF,IACX87B,EAAI62E,eAAe33E,OAAOh7B,EAAG,G,EAGjCykF,gBAAgBtmC,GACd,MAAM2B,EAASv/C,EAAE49C,GACXriB,EAAM59B,KACN40G,EAAShzD,EAAO/P,KAAK,4BACvB+P,EAAO73C,GAAG,6BAA6B6qG,EAAO3uG,IAAI27C,GACtDgzD,EAAOztG,MAAMrF,IACX87B,EAAI62E,eAAe12E,QAAQj8B,EAAG,G,EAGlCumE,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,4BAA4B1qC,MAAMrF,IAC9C87B,EAAI62E,eAAe33E,OAAOh7B,EAAG,G,EAGjComE,iBAAiB/jB,GACf,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,4BAA4B1qC,MAAMrF,IAC9C87B,EAAI62E,eAAe12E,QAAQj8B,EAAG,GAElC,I,OCxFJ,cAA4B85B,GAC1B9+B,YAAY8gC,EAAK97B,GACfX,MAAM,GAAI,CAACy8B,IACX,MAAMi3E,EAAM70G,KACN64B,EAASN,KACThB,EAAUE,KACVqG,EAAMz7B,EAAEP,GACRgzG,EAAeh3E,EAAI+T,KAAK,kBAE9BgjE,EAAI/2E,IAAMA,EACV+2E,EAAI/yG,GAAKg8B,EAAI,GACb+2E,EAAIj3E,IAAMA,EAEVi3E,EAAIE,OAASF,EAAI/2E,IAAIyE,SAAS,cAG9BsyE,EAAI34E,iBAAiB,IAErB,MAAM84E,EAA2B,OAAdp3E,EAAIxM,MACjB6jF,EAAsB,QAAdr3E,EAAIxM,MA6BlB,IAAI8jF,EACAvlE,EACA1J,EA5BJ4uE,EAAIxtG,KAAO,WACT,MAAM8tG,EAAoBH,EAAaF,EAAeh3E,EAChDs3E,EAAkBlsG,IAClB7G,EAAE6G,EAAEjM,QAAQ+M,QAAQ8qG,GAAcx3G,SACtCwgC,EAAI0E,YAAY,2DAChB1E,EAAIj6B,QAAQ,YACZgxG,EAAIv5E,KAAK,sBAAuBwC,EAAI,IACpCq3E,EAAkBhsG,IAAI,gBAAiBisG,GAAe,EAIxD,OAFAD,EAAkBrxG,GAAG,gBAAiBsxG,GACtCt3E,EAAI0E,YAAY,kBAAkBF,SAAS,iCACpCuyE,C,EAGTA,EAAIQ,QAAU,WACZ,OAAIv3E,EAAIyE,SAAS,oBACjBzE,EAAIwE,SAAS,oCACbxE,EAAIj6B,QAAQ,cAAegxG,EAAIxtG,MAC/BwtG,EAAIv5E,KAAK,4BAA6BwC,EAAI,GAAI+2E,EAAIxtG,OAHPwtG,C,EAQ7CA,EAAIS,WAAiD,SAApCx3E,EAAIvzB,KAAK,uBAM1B,MAAMqlC,EAAe,GACrB,IAAIlJ,EACAoJ,EAKAurC,EACAxtE,EACA0nG,EACAC,EACAC,EACAC,EAEAhlG,EACAvB,EACAwmG,EAbAN,GAAU,EACVO,GAAe,EACfC,GAAoB,EACpB/gC,EAAiB,EAOjBghC,GAAY,EAIhB,MAAM/xD,EAAUjmB,EAAI7zB,QAAQ,SAQ5B,IALE85C,EAAQlS,KAAK,WAAWv0C,OAAS,GACjCymD,EAAQ95C,QAAQ,SAAS7L,SAAS,YAAYd,OAAS,KAEvDw4G,GAAY,GACV/xD,EAAQxhB,SAAS,eAAcuzE,GAAY,IAC1CjB,EAAIE,OAAQ,CACf,MAAMgB,EAAen4E,EAAIqc,OAAOC,YAAY6J,EAAQ,IACpD,GAAIgyD,EAAc,CAChB,MAAMC,EAAgB3zG,EAAE0zG,GAClB9uC,EACJ+uC,EAAczzE,SAAS,6BACtByzE,EAAczzE,SAAS,iBAAmByzE,EAAczzE,SAAS,sBAC9D0zE,EACJD,EAAczzE,SAAS,wBAA0ByzE,EAAczzE,SAAS,gBACtE0kC,EACFnpC,EAAIwE,SAAS,qCACJ2zE,GACTn4E,EAAIwE,SAAS,8BAEjB,CACF,CAYA,SAAS4zE,EAAqBrvG,QAAQ,IAARA,MAAW,GACvC,MAAMsvG,EAAQrB,EAAajjE,KAAK,yBAC1BukE,EAAiB,EAAID,EAAM74G,OAEjC64G,EAAM/4G,SAAQ,CAACi5G,EAAOC,KACpB,MAAMC,GAAe1vG,EAAWyvG,EAAWF,GAAkBA,EAC7DC,EAAM/3G,MAAMk1C,QAAkD,IAAxC1sC,KAAK+B,IAAI/B,KAAKgC,IAAIytG,EAAa,GAAI,EAAS,GAEtE,CAEA,SAASC,IACP1B,EAAajjE,KAAK,yBAAyBnmC,IAAI,UAAW,GAC5D,CAEA,SAAS2lC,EAAiBnoC,GACxB,GAAKA,EAAEggC,UAAP,CACA,GAAIyG,EAAW,CACb,GAAkB,YAAd9W,EAAOuB,GAEJ,OADL,GAAI,kBAAmBlxB,GAAKA,EAAEigC,cAAc7rC,OAAS,EAAG,MAE5D,CAEIwgC,EAAIyE,SAAS,mBAIflgC,EAAE6G,EAAEjM,QAAQ+M,QAAQ,gEAAgE1M,SAItF2oC,GAAU,EACVyvE,GAAc,EACd/lE,GAAY,EACZjJ,OAAcp9B,EACdisG,OAAcjsG,EACC,eAAXJ,EAAEsgC,OAAuB0rE,EAAUhsG,EAAEigC,cAAc,GAAGysD,YAC1DhmD,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MAtBtD,CAuBpB,CAEA,SAASmI,EAAgBvoC,GACvB,IAAKymC,IAAczmC,EAAEggC,UAAW,OAChC,IAAIG,EACAC,EACA5R,EACJ,GAAe,cAAXxuB,EAAEsgC,KAAsB,CAC1B,GAAI0rE,GAAWhsG,EAAEkgC,QACf,IAAK,IAAItmC,EAAI,EAAGA,EAAIoG,EAAEkgC,QAAQ9rC,OAAQwF,GAAK,EACrCoG,EAAEkgC,QAAQtmC,GAAG8yF,aAAesf,IAC9Bx9E,EAAQxuB,EAAEkgC,QAAQtmC,IAInB40B,IAAOA,EAAQxuB,EAAEigC,cAAc,IACpCE,EAAQ3R,EAAM2R,MACdC,EAAQ5R,EAAM4R,KAChB,MACED,EAAQngC,EAAEmgC,MACVC,EAAQpgC,EAAEogC,MAEZ,IAAKD,IAAUC,EAAO,OAOtB,QAL2B,IAAhB5C,IACTA,KACEA,GAAe5/B,KAAK+R,IAAIywB,EAAQsG,EAAah7B,GAAK9N,KAAK+R,IAAIwwB,EAAQuG,EAAav3B,MAG/EquB,EAEH,YADAiJ,GAAY,GAMd,GAFA9hC,EAAYiwB,EAAI,GAAGjwB,WAEdo4B,EAAS,CAKZ,IAAIwwE,EAMJ,GAVA34E,EAAI0E,YAAY,qBACZyyE,GACFiB,EAAqB,GAGvBxlG,EAAeotB,EAAI,GAAGptB,aACtBvB,EAAe2uB,EAAI,GAAG3uB,aAClB0lG,EAAIE,SACNY,EAAejlG,EAAevB,GAE5BtB,EAAY6C,EAEd,YADAi/B,GAAY,GAGd,MAAM+mE,EAAsBr0G,EAAE6G,EAAEjM,QAAQ+M,QAAQ,qBAgBhD,GAfI0sG,EAAoBp5G,QACtBo5G,EAAoBvvG,MAAMwvG,IACpBA,IAAoB70G,GAEtB60G,EAAgBjmG,aAAeimG,EAAgBxnG,cACR,SAAvC9M,EAAEs0G,GAAiBjrG,IAAI,eACpBmpG,EAAIE,QAAU4B,EAAgB9oG,UAAY,GAC1CgnG,EAAIE,QACH4B,EAAgB9oG,UACd8oG,EAAgBjmG,aAAeimG,EAAgBxnG,gBAErDsnG,GAAqB,EACvB,IAGAA,EAEF,YADA9mE,GAAY,GAGV8lE,IACFD,EAAkB13E,EAAIvzB,KAAK,qBACvBirG,EAAgB9yG,QAAQ,MAAQ,IAClC8yG,EAAmB9kG,EAAewf,SAASslF,EAAiB,IAAO,MAEvE1gC,EAAiBh3C,EAAIyE,SAAS,kBAAoBizE,EAAkB,EAElEI,IADEllG,IAAiBvB,GAA8B,QAAd0pB,EAAOuB,KAAgB46E,GAK5Da,GAAoB,CACtB,CACA5vE,GAAU,EACV6J,EAAcxG,EAAQsG,EAAah7B,OAGV,IAAhB2gG,IACNV,EAAIE,OAASlnG,IAAc8nG,EAA6B,IAAd9nG,KAE3C0nG,GAAc,GAMhB,GAJmBV,EAAIE,OAClBjlE,EAAc,GAAKjiC,GAAa8nG,GAAiB9nG,EAAY8nG,EAC7D7lE,EAAc,GAAKjiC,GAAa,GAAMA,EAAY,EAEvC,CAyCd,IAAIhH,EAvCc,QAAdgyB,EAAOuB,IAAgBlK,SAAS2I,EAAOwB,UAAU/2B,MAAM,KAAK,GAAI,IAAM,IACnEuxG,EAAIE,QAAwB,IAAdlnG,GAAoB0nG,IAAaK,GAAe,GAC/Df,EAAIE,QAAUlnG,IAAc8nG,IAAiBJ,IAAaK,GAAe,IAG1EA,IAAgBf,EAAIE,QAAWC,IAClCl3E,EAAIpyB,IAAI,6BAA8B,QACtCoyB,EAAIjwB,UAAU8nG,GACdE,GAAoB,GAGlBD,GAAgBC,GACd3sG,EAAEyI,YACJzI,EAAE+/B,iBAEJoyC,GACGw5B,EAAIE,QAAU,EAAIjuG,KAAK+R,IAAIi3B,IAAgB,IAAOA,GAAe,KAClEglC,EACEkgC,EACFF,EACG1jG,UAAW,iBAAgBiqE,UAC3BxpC,KAAK,cACLzgC,UAAW,UAAgBtK,KAAK+R,IAAIi3B,GAAe,GAA/B,IAAqC,YAGxD+kE,EAAIE,QAAUE,EAChBn3E,EAAI1/B,WAAWgT,UAAW,iBAAgBiqE,UAG1Cv9C,EAAI1sB,UAAW,iBAAgBiqE,UAE7B45B,GACFH,EAAa1jG,UAAW,0BAGnB6jG,IAAUJ,EAAIE,QACvBD,EAAa1jG,UAAW,iBAAgBvD,UAItConG,IAAUI,IACZxuG,EACE+uG,GAAgBC,EACZ/uG,KAAK+R,IAAIi3B,IAAgB,IAAO0lE,EAChC1uG,KAAK+R,IAAIi3B,IAAkC,EAAlB0lE,GAC/BU,EAAqBrvG,KAInB+uG,GAAgBC,IAChB/uG,KAAK+R,IAAIi3B,IAAgB,IAAO0lE,IAChCI,GAAgB9uG,KAAK+R,IAAIi3B,IAAkC,EAAlB0lE,GAE3CH,GAAU,EACVv3E,EAAIwE,SAAS,eAAeE,YAAY,iBACxCg0E,MAEAnB,GAAU,EACVv3E,EAAI0E,YAAY,eAAeF,SAAS,kBAErCozE,IACH53E,EAAIj6B,QAAQ,iBACZgxG,EAAIv5E,KAAK,gCAAiCwC,EAAI,IAC9C43E,GAAc,GAEhB53E,EAAIj6B,QAAQ,eAAgB,CAC1BoJ,MAAO/D,EACP2E,YACAwtE,YACAvrC,gBAEF+kE,EAAIv5E,KAAK,8BAA+BwC,EAAI,GAAI,CAC9C7wB,MAAO/D,EACP2E,YACAwtE,YACAvrC,eAEJ,MACE4lE,GAAc,EACd53E,EAAI0E,YAAY,6BAChB6yE,GAAU,CAEd,CACA,SAASzgE,EAAe1rC,GACtB,GAAKA,EAAEggC,UAAP,CAEA,GAAe,aAAXhgC,EAAEsgC,MAAuBtgC,EAAEktF,gBAAkBltF,EAAEktF,eAAe94F,OAAS,GAAK43G,GAC1EhsG,EAAEktF,eAAe,GAAGR,aAAesf,EAKrC,OAJAvlE,GAAY,EACZjJ,GAAc,EACdT,GAAU,OACVivE,EAAU,MAId,IAAKvlE,IAAc1J,EAGjB,OAFA0J,GAAY,OACZ1J,GAAU,GAGRo1C,IACFv9C,EAAIwE,SAAS,qBACb+4C,EAAY,GAEV25B,EACFF,EAAa1jG,UAAU,IAAIygC,KAAK,cAAczgC,UAAU,KAExD0jG,EAAa1jG,UAAU,IACnByjG,EAAIE,QAAUE,EAChBn3E,EAAI1/B,WAAWgT,UAAU,IAEzB0sB,EAAI1sB,UAAU,KAIbwkG,IAAgBf,EAAIE,QAAWC,GAClCl3E,EAAIpyB,IAAI,6BAA8B,IAGpC2pG,GACFv3E,EAAIwE,SAAS,kBACbxE,EAAIj6B,QAAQ,cAAegxG,EAAIxtG,MAC/BwtG,EAAIv5E,KAAK,4BAA6BwC,EAAI,GAAI+2E,EAAIxtG,OAElDy2B,EAAI0E,YAAY,iBAElBmN,GAAY,EACZ1J,GAAU,EACNyvE,IACF53E,EAAIj6B,QAAQ,eACZgxG,EAAIv5E,KAAK,4BAA6BwC,EAAI,IA9C1B,CAgDpB,CAEA,IAAI84E,EACAC,EA3RCf,GAAcjB,EAAIE,QAAQj3E,EAAIwE,SAAS,iBAGxCxE,EAAIvzB,KAAK,qBACXkrG,GAAyB,EAChBT,EACTQ,EAAkB,GACTP,IACTO,EAAkB,IAoRpB,IAAIsB,GAAkB,EAClBC,EAAsB,EAE1B,SAASC,IACPF,GAAkB,EAClBD,GAAkB,EAClBE,EAAsB,EAClB17B,IACFv9C,EAAIwE,SAAS,qBACb+4C,EAAY,GAEV25B,EACFF,EAAa1jG,UAAU,IAAIygC,KAAK,cAAczgC,UAAU,KAExD0jG,EAAa1jG,UAAU,IACnByjG,EAAIE,OACNj3E,EAAI1/B,WAAWgT,UAAU,IAEzB0sB,EAAI1sB,UAAU,KAIdikG,GACFv3E,EAAIwE,SAAS,kBACbxE,EAAIj6B,QAAQ,cAAegxG,EAAIxtG,MAC/BwtG,EAAIv5E,KAAK,4BAA6BwC,EAAI,GAAI+2E,EAAIxtG,OAElDy2B,EAAI0E,YAAY,iBAEdkzE,IACF53E,EAAIj6B,QAAQ,eACZgxG,EAAIv5E,KAAK,4BAA6BwC,EAAI,IAE9C,CACA,SAASm5E,EAAiB/tG,GACxB,IAAK4tG,EAAiB,OACtB,MAAMI,OAAEA,EAAMC,OAAEA,GAAWjuG,EAC3B,GAAIpC,KAAK+R,IAAIq+F,GAAUpwG,KAAK+R,IAAIs+F,GAAS,OACzC,GAAIr5E,EAAIyE,SAAS,kBACf,OAEF,GACElgC,EAAE6G,EAAEjM,QAAQ+M,QAAQ,gEAAgE1M,OAEpF,OAMF,GAJAiD,aAAaq2G,GAEb/oG,EAAYiwB,EAAI,GAAGjwB,WAEdgpG,EAAiB,CAKpB,IAAIJ,EAMJ,GAVA34E,EAAI0E,YAAY,qBACZyyE,GACFiB,EAAqB,GAGvBxlG,EAAeotB,EAAI,GAAGptB,aACtBvB,EAAe2uB,EAAI,GAAG3uB,aAClB0lG,EAAIE,SACNY,EAAejlG,EAAevB,GAE5BtB,EAAY6C,EAEd,YADAomG,GAAkB,GAGpB,MAAMJ,EAAsBr0G,EAAE6G,EAAEjM,QAAQ+M,QAAQ,qBAgBhD,GAfI0sG,EAAoBp5G,QACtBo5G,EAAoBvvG,MAAMwvG,IACpBA,IAAoB70G,GAEtB60G,EAAgBjmG,aAAeimG,EAAgBxnG,cACR,SAAvC9M,EAAEs0G,GAAiBjrG,IAAI,eACpBmpG,EAAIE,QAAU4B,EAAgB9oG,UAAY,GAC1CgnG,EAAIE,QACH4B,EAAgB9oG,UACd8oG,EAAgBjmG,aAAeimG,EAAgBxnG,gBAErDsnG,GAAqB,EACvB,IAGAA,EAEF,YADAK,GAAkB,GAGhBrB,IACFD,EAAkB13E,EAAIvzB,KAAK,qBACvBirG,EAAgB9yG,QAAQ,MAAQ,IAClC8yG,EAAmB9kG,EAAewf,SAASslF,EAAiB,IAAO,KAEzE,CACAvvE,GAAU,EACV8wE,GAAuBI,EACvBrnE,EAAcinE,OAGW,IAAhBxB,IACNV,EAAIE,OAASlnG,IAAc8nG,EAA6B,IAAd9nG,KAE3C0nG,GAAc,GAMhB,GAJmBV,EAAIE,OAClBjlE,EAAc,GAAKjiC,GAAa8nG,GAAiB9nG,EAAY8nG,EAC7D7lE,EAAc,GAAKjiC,GAAa,GAAMA,EAAY,EAEvC,CA4Bd,IAAIhH,EA3BAqC,EAAEyI,YACJzI,EAAE+/B,iBAGJoyC,EAAYvrC,EACRhpC,KAAK+R,IAAIwiE,GAAam6B,IACxBn6B,EAAYm6B,GAAmB1uG,KAAK+R,IAAIwiE,GAAam6B,IAAoB,GACrEX,EAAIE,SAAQ15B,GAAaA,IAG3B25B,EACFF,EACG1jG,UAAW,iBAAgBiqE,UAC3BxpC,KAAK,cACLzgC,UAAW,UAAgBtK,KAAK+R,IAAIi3B,GAAe,GAA/B,IAAqC,WAGxD+kE,EAAIE,OACNj3E,EAAI1/B,WAAWgT,UAAW,iBAAgBiqE,WAE1Cv9C,EAAI1sB,UAAW,iBAAgBiqE,UAC3B45B,GACFH,EAAa1jG,UAAW,kBAAiBiqE,WAM3C45B,IAAUI,IACZxuG,EAAWC,KAAK+R,IAAIwiE,GAAam6B,EACjCU,EAAqBrvG,IAGnBC,KAAK+R,IAAIwiE,GAAam6B,GACxBH,GAAU,EACVv3E,EAAIwE,SAAS,eAAeE,YAAY,iBACxCg0E,MAEAnB,GAAU,EACVv3E,EAAI0E,YAAY,eAAeF,SAAS,kBAErCozE,IACH53E,EAAIj6B,QAAQ,iBACZgxG,EAAIv5E,KAAK,gCAAiCwC,EAAI,IAC9C43E,GAAc,GAEhB53E,EAAIj6B,QAAQ,eAAgB,CAC1BoJ,MAAO/D,EACP2E,YACAwtE,YACAvrC,gBAEF+kE,EAAIv5E,KAAK,8BAA+BwC,EAAI,GAAI,CAC9C7wB,MAAO/D,EACP2E,YACAwtE,YACAvrC,eAEJ,MACE4lE,GAAc,EACd53E,EAAI0E,YAAY,6BAChB6yE,GAAU,EAGZuB,EAAoBt2G,WAAW02G,EAAyB,IAC1D,CAEA,OAAKjzD,EAAQzmD,QAAWwgC,EAAIxgC,QAE5BwgC,EAAI,GAAGs5E,gBAAkBvC,EAGzBA,EAAI/+D,aAAe,WACjB,MAAMtN,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACrD1K,EAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GAChD5K,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,GACvBigE,EAAIS,aAAeT,EAAIE,QACzBj3E,EAAIh6B,GAAG,QAASmzG,E,EAGpBpC,EAAI93C,aAAe,WACjB,MAAMv0B,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACrD1K,EAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GACjD5K,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,GACxBigE,EAAIS,aAAeT,EAAIE,QACzBj3E,EAAI30B,IAAI,QAAS8tG,E,EAKrBpC,EAAI93E,aAGJ83E,EAAIx1E,OAEGw1E,GA9BoCA,CA+B7C,CAEAx1E,OACcr/B,KACR81C,cACN,CAEA/X,UACE,IAAI82E,EAAM70G,KACV60G,EAAIv5E,KAAK,wCAAyCu5E,GAClDA,EAAI/2E,IAAIj6B,QAAQ,4BACTgxG,EAAI/yG,GAAGs1G,gBACdvC,EAAI93C,eACJ/qC,GAAY6iF,GACZA,EAAM,IACR,GCplBF,IAAAwC,GAAe,CACb7zG,KAAM,gBACNs5B,SACE,MAAMc,EAAM59B,KACZ49B,EAAIi3E,IAAM73G,GACRugC,GAAmB,CACjBE,gBAAiB,eACjB3gC,YAAau6G,GACbz5E,MACAD,QAAS,oBAEX,CACEt2B,KAAKvF,GACH,MAAM+yG,EAAMj3E,EAAIi3E,IAAItzG,IAAIO,GACxB,GAAI+yG,EAAK,OAAOA,EAAIxtG,M,EAGtBguG,QAAQvzG,GACN,MAAM+yG,EAAMj3E,EAAIi3E,IAAItzG,IAAIO,GACxB,GAAI+yG,EAAK,OAAOA,EAAIQ,SAEtB,G,EAINh4E,OAAQ,CACNg6E,kBAEFvzG,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACN4hD,EAASv/C,EAAE49C,GACXq3D,EAAU11D,EAAO/P,KAAK,gBACxB+P,EAAO73C,GAAG,iBAAiButG,EAAQrxG,IAAI27C,GAC3C01D,EAAQnwG,MAAMrF,IACZ87B,EAAIi3E,IAAI/3E,OAAOh7B,EAAG,G,EAGtBykF,gBAAgBtmC,GACd,MAAM2B,EAASv/C,EAAE49C,GACXriB,EAAM59B,KACNs3G,EAAU11D,EAAO/P,KAAK,gBACxB+P,EAAO73C,GAAG,iBAAiButG,EAAQrxG,IAAI27C,GAC3C01D,EAAQnwG,MAAMrF,IACZ87B,EAAIi3E,IAAI92E,QAAQj8B,EAAG,G,EAGvBumE,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,gBAAgB1qC,MAAMrF,IAClC87B,EAAIi3E,IAAI/3E,OAAOh7B,EAAG,G,EAGtBomE,iBAAiB/jB,GACf,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,gBAAgB1qC,MAAMrF,IAClC87B,EAAIi3E,IAAI92E,QAAQj8B,EAAG,GAEvB,I,OC3DJ,cAAwB85B,GACtB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAM25E,EAAQv3G,KAERi/B,EAAW,GAGjBs4E,EAAMr7E,iBAAiB+C,GAEvBs4E,EAAMjxG,OAAStJ,GAAOiiC,EAAU34B,GAGhC,MAAMw3B,EAAMz7B,EAAEk1G,EAAMjxG,OAAOxE,IAC3B,GAAmB,IAAfg8B,EAAIxgC,OAAR,CAKA,GAHAi6G,EAAMz5E,IAAMA,EACZy5E,EAAMz1G,GAAKg8B,EAAI,GAEXy5E,EAAMz5E,IAAI,GAAG05E,YAAa,CAC5B,MAAMhhF,EAAW+gF,EAAMz5E,IAAI,GAAG05E,YAE9B,OADAD,EAAMx5E,UACCvH,CACT,CAiFA,OA/EA+gF,EAAMz5E,IAAI,GAAG05E,YAAcD,EAE3Bv6G,GAAOu6G,EAAO,CACZE,YAAa35E,EAAIyE,SAAS,0BAE1Bm1E,UAAW55E,EAAI+T,KAAK,sBACpB8lE,kBAAmB75E,EAAI+T,KAAK,iCA0D9B0lE,EAAMzhE,aAAe,WACnByhE,EAAMz5E,IAAIh6B,GAAG,SAAU,wCAAyC8zG,GAChEL,EAAMz5E,IAAI+T,KAAK,wBAAwB/tC,GAAG,QAAS+zG,E,EAErDN,EAAMx6C,aAAe,WACnBw6C,EAAMz5E,IAAI30B,IAAI,SAAU,wCAAyCyuG,GACjEL,EAAMz5E,IAAI+T,KAAK,wBAAwB1oC,IAAI,QAAS0uG,E,EAItDN,EAAMx6E,aAGNw6E,EAAMl4E,OAECk4E,CA1F+B,CAqBtC,SAASK,EAAa1uG,GACpB,GAAIA,EAAEuI,QAAUvI,EAAEuI,OAAOqmG,kBAEvB,OAEF,MAAMroB,EAAWptF,EAAErC,MACb0vF,EAAUD,EAAS,GAAGC,QACtBqoB,EAActoB,EAASxlF,QAAQ,SAASxC,QAE9C,GAAIgoF,EAASxlF,QAAQ,SAAS3M,OAAS,EACjB,IAAhBy6G,GACFj6E,EAAI+T,KAAK,YAAY69C,EAAU,WAAa,eAAe,2BAE7D5xD,EACG+T,KAAM,yBAAwBkmE,EAAc,YAC5C/vG,KAAK,UAAW0nF,GAChB7rF,QAAQ,SAAU,CAAEi0G,mBAAmB,IAC1CroB,EAASznF,KAAK,iBAAiB,OAC1B,CACe,IAAhB+vG,GACFtoB,EAASxlF,QAAQ,MAAMylF,EAAU,WAAa,eAAe,2BAE/D,MAAMsoB,EAAcl6E,EAAI+T,KACrB,kCAAiCkmE,EAAc,qCAChDz6G,OACI26G,EAAYn6E,EAAI+T,KAAK,YAAYv0C,OACjC46G,EAAkBp6E,EAAI+T,KACzB,kCAAiCkmE,EAAc,6BAE7CroB,EAEMsoB,IAAgBC,GACzBC,EAAgBlwG,KAAK,WAAW,GAAMnE,QAAQ,SAAU,CAAEi0G,mBAAmB,IAF7EI,EAAgBlwG,KAAK,WAAW,GAIlCkwG,EAAgBlwG,KAAK,gBAAiBgwG,EAAc,GAAKA,EAAcC,EACzE,CACAV,EAAMY,qBACR,CACA,SAASN,IACP,MAAMO,EAAU/1G,EAAErC,MACZq4G,EAAWD,EAAQ71E,SAAS,wBAC5B+1E,EAAcF,EAAQ71E,SAAS,iBAAmB,OAAS,MACjE,IAAIg2E,EACAF,GACFE,EAA0B,SAAhBD,EAAyB,MAAQ,OAC3CF,EAAQ51E,YAAY,8BAA8BF,SAAU,YAAWi2E,OAEvEz6E,EAAI+T,KAAK,+BAA+BrP,YAAY,wBACpD41E,EAAQ91E,SAAS,wBACjBi2E,EAAUD,GAEZF,EAAQv0G,QAAQ,iBAAkB00G,GAClChB,EAAMj8E,KAAK,4BAA6Bi8E,EAAOgB,EACjD,CAiBF,CAEAC,uBACE,MAAMjB,EAAQv3G,KACTu3G,EAAME,aACXF,EAAMz5E,IAAI+T,KAAK,gCAAgC1qC,MAAMrF,IACnD,MAAMg8B,EAAMz7B,EAAEP,GACR22G,EAAU36E,EAAIr2B,QACdixG,EAAmB56E,EAAIvzB,KAAK,0BAC7BmuG,GAAyC,KAArBA,GACvB56E,EAAIvzB,KAAK,yBAA0BgtG,EAAMz5E,IAAI+T,KAAK,YAAY3nC,GAAGuuG,GAASznG,OAC5E,GAEJ,CAEAmnG,sBACE,MAAMZ,EAAQv3G,KACd,GAAIu3G,EAAMG,UAAUp6G,OAAS,GAAKi6G,EAAMI,kBAAkBr6G,OAAS,EAAG,CACpE,MAAMq7G,EAAepB,EAAMz5E,IAAI+T,KAAK,sCAAsCv0C,OAC1Ei6G,EAAMz5E,IAAI66E,EAAe,EAAI,WAAa,eAAe,0BACzDpB,EAAMI,kBAAkB9lE,KAAK,8BAA8B7gC,KAAK2nG,EAClE,CACF,CAEAt5E,OACE,MAAMk4E,EAAQv3G,KACdu3G,EAAMzhE,eACNyhE,EAAMiB,uBACNjB,EAAMY,qBACR,CAEAp6E,UACE,IAAIw5E,EAAQv3G,KAEZu3G,EAAMz5E,IAAIj6B,QAAQ,2BAClB0zG,EAAMj8E,KAAK,8CAA+Ci8E,GAE1DA,EAAMx6C,eAEFw6C,EAAMz5E,IAAI,KACZy5E,EAAMz5E,IAAI,GAAG05E,YAAc,YACpBD,EAAMz5E,IAAI,GAAG05E,aAEtBxlF,GAAYulF,GACZA,EAAQ,IACV,GCvJF,IAAAqB,GAAe,CACbp1G,KAAM,YACN65B,OAAQ,CACNu7E,cAEF97E,SACc98B,KACR64G,UAAYt7E,GAAmB,CACjCE,gBAAiB,cACjB3gC,YAAa87G,GACbh7E,IAJU59B,KAKV29B,QAAS,e,EAGb75B,GAAI,CACFyiF,gBAAgBtmC,GACd,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,oBACL1qC,MAAM2xG,IACLl7E,EAAIi7E,UAAU96E,QAAQ+6E,EAAQ,G,EAGpCr/B,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,oBACL1qC,MAAM2xG,IACLl7E,EAAIi7E,UAAU/7E,OAAO,CAAEh7B,GAAIg3G,GAAU,G,EAG3C5wC,iBAAiB/jB,GACf,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,oBAAoB1qC,MAAM2xG,IACtCl7E,EAAIi7E,UAAU96E,QAAQ+6E,EAAQ,G,EAGlCzwC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,oBAAoB1qC,MAAM2xG,IACtCl7E,EAAIi7E,UAAU/7E,OAAO,CAAEh7B,GAAIg3G,GAAU,GAEzC,GAEFp8E,MAAO,CACL,kBAAmB,CACjB+0B,OAAO/0B,GACL,MACMo8E,EAAUp8E,EAAM4zB,IADVtwD,KAER64G,UAAU/7E,OAAO,CAAEh7B,GAAIg3G,G,EAE7B/6E,QAAQrB,GACN,MACMo8E,EAAUp8E,EAAM4zB,IADVtwD,KAER64G,UAAU96E,QAAQ+6E,EACxB,KCxDN,MAAMC,GAAM,CACVC,UAAUC,EAAO/6E,GACf,MAAMN,EAAM59B,KACNk5G,EAAS72G,EAAE42G,GACXx6E,EAAYp8B,EAAE67B,GACpB,GAAyB,IAArBO,EAAUnhC,OAAc,OAE5BmhC,EAAUuS,WAAW,GAAG1O,SAAS,4BACjC,MAAMrlC,EAAS,CACbq7B,MAAOmG,EAAU,GAAGrvB,YACpB4qB,OAAQyE,EAAU,GAAGtvB,aACrBw1B,OAAQlG,EAAUkG,SAClBw0E,aAAc16E,EAAU/yB,IAAI,iBAC5B0tG,OAAQ36E,EAAU/yB,IAAI,YAElB2tG,EAAM,CACV/gF,MAAO4gF,EAAO,GAAG9pG,YACjB4qB,OAAQk/E,EAAO,GAAG/pG,aAClBw1B,OAAQu0E,EAAOv0E,SACfkpD,WAAYh7D,GAAaqmF,EAAO,GAAI,KACpCprB,WAAYj7D,GAAaqmF,EAAO,GAAI,MAGtCA,EAAO,GAAGI,eAAiB,CACzB76E,YACAxhC,SACAo8G,OAGF,MAAME,EACJF,EAAI10E,OAAOz2B,KAAOmrG,EAAI/gF,MAAQ,GAAKr7B,EAAO0nC,OAAOz2B,KAAOjR,EAAOq7B,MAAQ,GAAK+gF,EAAIxrB,WAC5E2rB,EACJH,EAAI10E,OAAO12B,IAAMorG,EAAIr/E,OAAS,GAAK/8B,EAAO0nC,OAAO12B,IAAMhR,EAAO+8B,OAAS,GAAKq/E,EAAIvrB,WAC5EZ,EAASjwF,EAAOq7B,MAAQ+gF,EAAI/gF,MAC5B60D,EAASlwF,EAAO+8B,OAASq/E,EAAIr/E,OAEnC,IAAIm/E,EAAeryG,KAAKsX,KAAK8R,SAASjzB,EAAOk8G,aAAc,IAAMryG,KAAK+B,IAAIqkF,EAAQC,IAC9EgsB,EAAe,IAAGA,GAAgB,GAEtCD,EAAO,GAAGO,wBAA0B,WAClCP,EAAOloE,WAAW,GAAG5/B,UAAU,IAC/BqtB,EAAUuS,WAAW,GACrB/zC,EAAOq7B,MAAQmG,EAAU,GAAGrvB,YAC5BnS,EAAO+8B,OAASyE,EAAU,GAAGtvB,aAC7BlS,EAAO0nC,OAASlG,EAAUkG,SAC1B00E,EAAI10E,OAASu0E,EAAOv0E,SAEpB,MAAM+0E,EACJL,EAAI10E,OAAOz2B,KAAOmrG,EAAI/gF,MAAQ,GAAKr7B,EAAO0nC,OAAOz2B,KAAOjR,EAAOq7B,MAAQ,GAAK+gF,EAAIxrB,WAC5E8rB,EACJN,EAAI10E,OAAO12B,IAAMorG,EAAIr/E,OAAS,GAAK/8B,EAAO0nC,OAAO12B,IAAMhR,EAAO+8B,OAAS,GAAKq/E,EAAIvrB,WAC5E8rB,EAAY38G,EAAOq7B,MAAQ+gF,EAAI/gF,MAC/BuhF,EAAY58G,EAAO+8B,OAASq/E,EAAIr/E,OAEtCk/E,EAAO9nG,UACJ,gBAAesoG,SAAgBC,iBAAwBC,MAAcC,K,EAI1Ep7E,EAAU/yB,IAAI,UAAW,GAAG0F,UAAW,SAAQ,EAAI87E,MAAW,EAAIC,MAClE+rB,EACG52E,SAAS,cACT52B,IAAI,UAAWzO,EAAOm8G,OAAS,GAC/BhoG,UAAW,gBAAemoG,SAAaC,WAC1CN,EAAO3jE,eAAc,KACnB9W,EAAUuS,WAAW,IACrB5e,IAAU,KACRqM,EAAU/yB,IAAI,UAAW,GAAG0F,UAAU,cACtC8nG,EACG9nG,UAAW,gBAAemoG,SAAaC,iBAAqBtsB,MAAWC,MACvEzhF,IAAI,gBAAkB,GAAEytG,OACxBztG,IAAI,aAAc,QAClBA,IAAI,UAAW,IAAI,IAExBkyB,EAAI95B,GAAG,SAAUo1G,EAAO,GAAGO,yBACvBh7E,EAAUx0B,QAAQ,iBAAiB3M,OAAS,GAC9CmhC,EAAUx0B,QAAQ,iBAAiBnG,GAAG,SAAUo1G,EAAO,GAAGO,wBAC5D,G,EAGJK,WAAWb,GACT,MACMC,EAAS72G,EAAE42G,GACXc,EAAYb,EAAO,GAAGI,eAC5B,IAAKS,EAAW,OAChB,MAAMt7E,UAAEA,EAASxhC,OAAEA,EAAMo8G,IAAEA,GAAQU,EACnC,GAAyB,IAArBt7E,EAAUnhC,OAAc,OAE5B,MAAMi8G,EACJF,EAAI10E,OAAOz2B,KAAOmrG,EAAI/gF,MAAQ,GAAKr7B,EAAO0nC,OAAOz2B,KAAOjR,EAAOq7B,MAAQ,GAAK+gF,EAAIxrB,WAC5E2rB,EACJH,EAAI10E,OAAO12B,IAAMorG,EAAIr/E,OAAS,GAAK/8B,EAAO0nC,OAAO12B,IAAMhR,EAAO+8B,OAAS,GAAKq/E,EAAIvrB,WAC5EZ,EAASjwF,EAAOq7B,MAAQ+gF,EAAI/gF,MAC5B60D,EAASlwF,EAAO+8B,OAASq/E,EAAIr/E,OAZvBh6B,KAcRmJ,IAAI,SAAU+vG,EAAO,GAAGO,yBACxBh7E,EAAUx0B,QAAQ,iBAAiB3M,OAAS,GAC9CmhC,EAAUx0B,QAAQ,iBAAiBd,IAAI,SAAU+vG,EAAO,GAAGO,yBAG7Dh7E,EAAU/yB,IAAI,UAAW,GAAG0F,UAAW,SAAQ,EAAI87E,MAAW,EAAIC,MAClE+rB,EACGloE,WAAW,IACXtlC,IAAI,aAAc,IAClBA,IAAI,gBAAiB,IACrBA,IAAI,UAAW,KACf0F,UAAW,gBAAemoG,SAAaC,WAC1CN,EAAO3jE,eAAc,KACnB2jE,EAAOxtG,IAAI,UAAW,IAAI82B,YAAY,cAAcpxB,UAAU,IAC9DghB,IAAU,KACR8mF,EAAO3jE,eAAc,KACnB9W,EACG+D,YAAY,4BACZ92B,IAAI,UAAW,IACf0F,UAAU,IACV4/B,WAAW,GAAG,GACjB,GACF,G,EAGN/S,KAAKg7E,EAAO/6E,GACV,MAAMN,EAAM59B,KACNk5G,EAAS72G,EAAE42G,GAAO/uG,GAAG,GACrB8vG,EAAad,EAAOrnE,KAAK,gBAC/B,GAAKqnE,EAAO57G,SACR47G,EAAO32E,SAAS,gBACfy3E,EAAW18G,QAAW47G,EAAO32E,SAAS,cAA3C,CAEA,GAAI3E,EAAIy7E,IAAI1gC,SAAU,CACpB,GAAI/6C,EAAIy7E,IAAI1gC,WAAaugC,EAAO,GAAI,OACpCt7E,EAAIy7E,IAAI96E,MAAMX,EAAIy7E,IAAI1gC,SACxB,CACA/6C,EAAIy7E,IAAI1gC,SAAWugC,EAAO,GACtBA,EAAO32E,SAAS,aAClB3E,EAAIy7E,IAAIL,UAAUE,EAAQh7E,GAAYg7E,EAAO3uG,KAAK,kBAElD2uG,EAAO52E,SAAS,cAElB42E,EAAOh0B,SAAS,iBAAiB5iD,SAAS,eAC1C42E,EAAOr1G,QAAQ,WAb0C,C,EAe3D06B,MAAM06E,QAAK,IAALA,MAAQ,eACZ,MAAMr7E,EAAM59B,KACNk5G,EAAS72G,EAAE42G,GAAO/uG,GAAG,GACrB8vG,EAAad,EAAOrnE,KAAK,gBAC1BqnE,EAAO57G,QACP47G,EAAO32E,SAAS,gBAChBy3E,EAAW18G,QAAW47G,EAAO32E,SAAS,gBAC3C3E,EAAIy7E,IAAI1gC,SAAW,KACfugC,EAAO32E,SAAS,aAClB3E,EAAIy7E,IAAIS,WAAWZ,GAEnBA,EAAO12E,YAAY,cAErB02E,EAAOh0B,SAAS,iBAAiB1iD,YAAY,eAC7C02E,EAAOr1G,QAAQ,a,EAEjBsN,OAAO8nG,GAEU52G,EAAE42G,GACL12E,SAAS,cAFTviC,KAGHq5G,IAAI96E,MAAM06E,GAHPj5G,KAE4Bq5G,IAAIp7E,KAAKg7E,EAEnD,GAGF,IAAAgB,GAAe,CACbz2G,KAAM,MACNs5B,SAEEvG,GADYv2B,KACK,CACfq5G,IAAK,CACH1gC,SAAU,QACPogC,K,EAITvrD,OAAQ,CACN,WAAY,SAAcE,GACZ1tD,KACRq5G,IAAIloG,OAAOu8C,EAAWzjD,QAAQ,Q,EAEpC,YAAa,SAAcyjD,EAAY97C,QAAI,IAAJA,MAAO,IAChC5R,KACRq5G,IAAIp7E,KAAKrsB,EAAKynG,I,EAEpB,aAAc,SAAe3rD,EAAY97C,QAAI,IAAJA,MAAO,IAClC5R,KACRq5G,IAAI96E,MAAM3sB,EAAKynG,I,EAErB,gBAAiB,WACHr5G,KACRq5G,IAAI96E,OACV,I,OC5LJ,cAAwB27E,GACtBp9G,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAMu8E,EAAKn6G,KAELi/B,EAAW,CACfn9B,QAAIwH,EACJkmF,aAASlmF,EACT8wG,YAAa,8BACbC,eAAe,EACfC,qBAAiBhxG,EACjB4iE,gBAAY5iE,EACZ43F,qBAAiB53F,EACjBixG,WAAY,KACZpZ,cAAU73F,EACVkxG,YAAa,cACbC,iBAAkB,oBAClBC,OAAQ,oBACRC,QAAS,mBACTC,WAAY,uBACZC,eAAgB,4BAChBC,eAAgB,4BAChB1vC,UAAU,EACVowB,kBAAkB,EAClBuf,cAAc,EACdC,iBAAiB,EACjBC,YAAY,EACZC,wBAAwB,EACxBC,YAAY,EACZ/X,QAAQ,GAIV+W,EAAGj+E,iBAAiB+C,GAEpBk7E,EAAG7zG,OAAStJ,GAAOiiC,EAAU34B,GAE7B,MAAMw3B,EAAMz7B,EAAE83G,EAAG7zG,OAAOxE,IACxB,GAAmB,IAAfg8B,EAAIxgC,OAAc,OAAO68G,EAE7B,GAAIr8E,EAAI,GAAGs9E,YAAa,OAAOt9E,EAAI,GAAGs9E,YAItC,IAAIr3D,EAFJjmB,EAAI,GAAGs9E,YAAcjB,EAGrB,MAAMjhE,EAAYpb,EAAI7zB,QAAQ,WAC9B,GAAI6zB,EAAI7zB,QAAQ,SAAS3M,OAAS,EAChCymD,EAAUjmB,EAAI7zB,QAAQ,cACjB,GAAIivC,EAAU57C,OAAS,IAC5BymD,EAAU1hD,EAAEu7B,EAAIqc,OAAOirB,YAAYhsB,EAAU,MACxC6K,EAAQzmD,QAAQ,CACnB,MAAM8yC,EAAiBtS,EAAI7zB,QAAQ,SAAS4nC,KAAK,iBAE/CzB,EAAe,IACfA,EAAe,GAAG+E,QAClB/E,EAAe,GAAG+E,OAAOgF,WAAajB,EAAU,KAEhD6K,EAAU3T,EAEd,CAGF,IAAIirE,EAOAra,EAOAsa,EAOAC,EApBAj1G,EAAOq0G,QACTU,EAAWh5G,EAAEiE,EAAOq0G,SACkB,iBAAtBR,EAAG7zG,OAAOq0G,SAAwB52D,IAClDs3D,EAAWt3D,EAAQlS,KAAKsoE,EAAG7zG,OAAOq0G,UAIhCr0G,EAAOs0G,WACT5Z,EAAc3+F,EAAEiE,EAAOs0G,YACkB,iBAAzBT,EAAG7zG,OAAOs0G,YAA2B72D,IACrDi9C,EAAcj9C,EAAQlS,KAAKsoE,EAAG7zG,OAAOs0G,aAInCt0G,EAAOu0G,eACTS,EAAkBj5G,EAAEiE,EAAOu0G,gBACkB,iBAA7BV,EAAG7zG,OAAOu0G,gBAA+B92D,IACzDu3D,EAAkBv3D,EAAQlS,KAAKsoE,EAAG7zG,OAAOu0G,iBAIvCv0G,EAAOw0G,eACTS,EAAkBl5G,EAAEiE,EAAOw0G,gBACkB,iBAA7BX,EAAG7zG,OAAOw0G,gBAA+B/2D,IACzDw3D,EAAkBx3D,EAAQlS,KAAKsoE,EAAG7zG,OAAOw0G,iBAG3C,MAAMK,EAAahB,EAAG7zG,OAAO60G,YAAcr9E,EAAIyE,SAAS,wBAClD6gE,EAAS+W,EAAG7zG,OAAO88F,QAAUtlE,EAAIyE,SAAS,oBAMhD,IAAIgpC,EAuBAiwC,EAKA/rB,EAOAgsB,EA6CJ,SAASC,EAAcxyG,GACrBA,EAAE+/B,gBACJ,CACA,SAASg8D,EAAa/7F,GACpBixG,EAAG39B,OAAOtzE,GACVixG,EAAGr8E,IAAIwE,SAAS,oBAClB,CACA,SAAS+3D,IACP8f,EAAGr8E,IAAI0E,YAAY,oBACrB,CACA,SAASm5E,IACP,MAAMl6G,EAAQ04G,EAAG1qB,SAASr9E,MAAM3P,QAE7B03G,EAAGqB,kBACFrB,EAAGqB,iBAAiBl+G,OAAS,IAC5B68G,EAAG7zG,OAAO66F,UACTgZ,EAAGyB,eACHzB,EAAG7zG,OAAO66F,WAAagZ,EAAG7zG,OAAOi0G,aACrCJ,EAAG7zG,OAAOy0G,eAEVZ,EAAGh7G,OAAOsC,GAAO,EAErB,CACA,SAASyjG,EAAah8F,EAAG0pF,GACvBunB,EAAGr8E,IAAIj6B,QAAQ,kBAAmB+uF,GAClCunB,EAAG7+E,KAAK,8BAA+B6+E,EAAIvnB,EAC7C,CACA,SAASipB,EAAe3yG,GACtBixG,EAAG19B,QAAQvzE,EACb,CACA,SAAS4yG,KACF3B,GAAOA,IAAOA,EAAGr8E,KAClBq8E,EAAG14C,UACL04C,EAAGr8E,IAAI0E,YAAY,qBACf23E,EAAGgB,YACLhB,EAAGr8E,IACA7zB,QAAQ,WACRu4B,YACC,qFAIV,CACA,SAASu5E,KACF5B,GAAOA,IAAOA,EAAGr8E,KAClBq8E,EAAG14C,UACL04C,EAAGr8E,IAAIwE,SAAS,qBACZ63E,EAAGgB,YACLhB,EAAGr8E,IAAI7zB,QAAQ,WAAWq4B,SAAS,mDAGzC,CA0CA,YAjLkC,IAAvB63E,EAAG7zG,OAAO8kE,WACnB+uC,EAAG7zG,OAAO8kE,UAAYg4B,GAIpB+W,EAAG7zG,OAAO8kE,WAEVG,EADE4uC,EAAG7zG,OAAO4lE,WACE7pE,EAAE83G,EAAG7zG,OAAO4lE,YACjBnoB,GAAWA,EAAQzmD,OAAS,EACvBymD,EAAQlS,KAAK,uBAEb/T,EAAIonD,SAAS,uBAEF,IAAvB3Z,EAAYjuE,SACdiuE,EAAclpE,EAAE,0CACZ0hD,GAAWA,EAAQzmD,OACjBwgC,EAAI7zB,QAAQ85C,GAASzmD,OAAS,GAAK47C,GAA+C,IAAlCpb,EAAI7zB,QAAQivC,GAAW57C,OACzEiuE,EAAYx/D,aAAa+xB,GAEzBytC,EAAYx/D,aAAag4C,EAAQlS,KAAK,iBAAiB3nC,GAAG,IAG5DqhE,EAAYx/D,aAAa+xB,KAM3Bq8E,EAAG7zG,OAAO46F,kBACZsa,EAAmBn5G,EAAE83G,EAAG7zG,OAAO46F,kBAK/BzR,EADE0qB,EAAG7zG,OAAOkpF,QACDntF,EAAE83G,EAAG7zG,OAAOkpF,SAEZ1xD,EAAI+T,KAAK,wBAAwB3nC,GAAG,GAI7CiwG,EAAG7zG,OAAO+zG,gBAEVoB,EADEtB,EAAG7zG,OAAOg0G,gBACOj4G,EAAE83G,EAAG7zG,OAAOg0G,iBAEZx8E,EAAI+T,KAAK,8BAIhC70C,GAAOm9G,EAAI,CACTv8E,MACAqR,KAAMrR,EAAIoR,MAAMztC,IAAIu8B,EAAI7zB,QAAQ,UAChC6zB,MACAh8B,GAAIg8B,EAAI,GACRytC,cACAW,WAAYX,GAAeA,EAAY,GACvCiwC,mBACAta,gBAAiBsa,GAAoBA,EAAiB,GACtD/rB,WACAD,QAASC,EAAS,GAClBgsB,mBACAnB,gBAAiBmB,GAAoBA,EAAiB,GACtDO,wBAAwB,EACxBj4D,UACA1K,OAAQ0K,GAAWA,EAAQ,GAC3B7K,YACAiB,SAAUjB,GAAaA,EAAU,GACjCmiE,WACAV,QAASU,GAAYA,EAAS,GAC9Bra,cACA4Z,WAAY5Z,GAAeA,EAAY,GACvCsa,kBACAT,eAAgBS,GAAmBA,EAAgB,GACnDC,kBACAT,eAAgBS,GAAmBA,EAAgB,GACnDU,cAAe,GACfzpF,MAAO,GACPopF,cAAeJ,GAAoBA,EAAiBj5E,SAAS,gBAC7D65C,iBAAa9yE,EACbm4D,SAAS,EACT05C,aACA/X,WAwDF+W,EAAGrkE,aAAe,WAChBhY,EAAIh6B,GAAG,SAAU43G,GACbvB,EAAG7zG,OAAO+zG,eACZF,EAAGsB,iBAAiB33G,GAAG,QAAS+3G,GAE9B1B,EAAG7zG,OAAO40G,wBAA0Bf,EAAG5uC,aACzC4uC,EAAG5uC,YAAYznE,GAAG,QAAS+3G,GAEzB1B,EAAGgB,YAA4B,QAAdv9E,EAAIxM,OAAmB+oF,EAAGlrE,MAAQiK,EAAU57C,QAAU68G,EAAGp2D,UAC5Eo2D,EAAGp2D,QAAQjgD,GAAG,iBAAkBg4G,GAChC3B,EAAGp2D,QAAQjgD,GAAG,gBAAiBi4G,IAEjC5B,EAAG1qB,SAAS3rF,GAAG,QAASmhG,GACxBkV,EAAG1qB,SAAS3rF,GAAG,OAAQu2F,GACvB8f,EAAG1qB,SAAS3rF,GAAGq2G,EAAG7zG,OAAO8zG,YAAauB,GACtCxB,EAAG1qB,SAAS3rF,GAAG,cAAeohG,E,EAEhCiV,EAAGp9C,aAAe,WAChBj/B,EAAI30B,IAAI,SAAUuyG,GACdvB,EAAG7zG,OAAO+zG,eACZF,EAAGsB,iBAAiBtyG,IAAI,QAAS0yG,GAE/B1B,EAAG7zG,OAAO40G,wBAA0Bf,EAAG5uC,aACzC4uC,EAAG5uC,YAAYpiE,IAAI,QAAS0yG,GAE1B1B,EAAGgB,YAA4B,QAAdv9E,EAAIxM,OAAmB+oF,EAAGlrE,MAAQiK,EAAU57C,QAAU68G,EAAGp2D,UAC5Eo2D,EAAGp2D,QAAQ56C,IAAI,iBAAkB2yG,GACjC3B,EAAGp2D,QAAQ56C,IAAI,gBAAiB4yG,IAElC5B,EAAG1qB,SAAStmF,IAAI,QAAS87F,GACzBkV,EAAG1qB,SAAStmF,IAAI,OAAQkxF,GACxB8f,EAAG1qB,SAAStmF,IAAIgxG,EAAG7zG,OAAO8zG,YAAauB,GACvCxB,EAAG1qB,SAAStmF,IAAI,cAAe+7F,E,EAIjCiV,EAAGp9E,aAGHo9E,EAAG96E,OAEI86E,CACT,CAEA11F,MAAMvb,GACJ,MAAMixG,EAAKn6G,KACX,IAAKm6G,EAAG3nF,OAAStpB,GAAK7G,EAAE6G,EAAEjM,QAAQslC,SAAS,mBAEzC,OADA43E,EAAG19B,UACI09B,EAET,MAAM8B,EAAgB9B,EAAG14G,MAIzB,OAHA04G,EAAG1qB,SAASr9E,IAAI,IAAIvO,QAAQ,UAAUG,QACtCm2G,EAAGr8E,IAAIj6B,QAAQ,kBAAmBo4G,GAClC9B,EAAG7+E,KAAK,8BAA+B6+E,EAAI8B,GACpC9B,CACT,CAEA+B,yBACE,MAAM/B,EAAKn6G,KACX,GAAIm6G,EAAGgB,WAAY,OACnB,MAAMv9E,EAAMu8E,EAAGv8E,IACfu8E,EAAGsB,iBAAiBzqE,WAAW,GAAGoX,OAClC+xD,EAAGsB,iBAAiB/vG,IACjB,WAASkyB,EAAIuD,IAAM,OAAS,UACzBg5E,EAAGG,gBAAgBlrG,YAAtB,MAGH+qG,EAAGjpE,YAAcipE,EAAGsB,iBAAiB,GAAG7tG,WACxCusG,EAAGsB,iBAAiBzqE,WAAW,IAC/BmpE,EAAG6B,wBAAyB,CAC9B,CAEAx/B,OAAO2/B,GACL,MAAMhC,EAAKn6G,KACX,GAAIm6G,EAAG14C,QAAS,OAAO04C,EACvB,MAAMv8E,EAAMu8E,EAAGv8E,IACTt+B,EAAWF,IACXy5B,EAASN,KAGf,SAASikD,IAwBP,GAtBE29B,EAAG5uC,cACD4uC,EAAGqB,kBAAoBrB,EAAGqB,iBAAiBl+G,QAAW68G,EAAG7zG,OAAOy0G,gBACjEZ,EAAGr8E,IAAIyE,SAAS,uBAChB43E,EAAG3nF,OAEJ2nF,EAAGiC,eAELjC,EAAGr8E,IAAIwE,SAAS,uBACX63E,EAAGsB,kBAAqBtB,EAAGsB,kBAAmD,IAA/BtB,EAAGsB,iBAAiBn+G,SACtE68G,EAAGr8E,IAAIwE,SAAS,wCAGf63E,EAAGgB,YACJhB,EAAGsB,kBACHtB,EAAGsB,iBAAiBn+G,OAAS,GACf,OAAdsgC,EAAIxM,QAEC+oF,EAAG6B,wBACN7B,EAAG+B,yBAEL/B,EAAGsB,iBAAiB/vG,IAAK,WAASkyB,EAAIuD,IAAM,OAAS,SAAW,QAE9Dg5E,EAAGgB,WAAY,CACjB,MAAMjiE,EAAYihE,EAAGr8E,IAAI7zB,QAAQ,WACjC,GAAIivC,EAAU3W,SAAS,iBAAmB43E,EAAGp2D,QAAS,CACpD,MAAM4kB,EAAiBwxC,EAAGp2D,QAAQlS,KAAK,iBACjC6zB,EAAgBxsB,EAAUrH,KAAK,gBACrC82B,EAAermC,SAAS,qCAEtB4W,EAAU3W,SAAS,iBACnB2W,EAAU3W,SAAS,2BACnBmjC,EAAcpoE,QACdqrE,EAAerrE,SAEfqrE,EAAe33B,WAAW,GAC1B23B,EAAe,GAAG96D,WAAa63D,EAAc,GAAGv2D,aAChD7O,YAAW,KACTqoE,EAAe33B,WAAW,GAAG,GAC5B,KAEP,CACkB,OAAdpT,EAAIxM,OAAkB8nB,EAAU57C,OAClC47C,EAAU5W,SAAS,sCAEnB4W,EAAU5W,SAAS,qCACf4W,EAAU3W,SAAS,iBACrB2W,EAAU5W,SAAS,0BAGzB,CACI63E,EAAGmB,iBAAiBnB,EAAGmB,gBAAgBh5E,SAAS,uBACpD63E,EAAGr8E,IAAIj6B,QAAQ,oBACfs2G,EAAG7+E,KAAK,gCAAiC6+E,EAC3C,CAxDAA,EAAG14C,SAAU,EAyDb,IAAI46C,GAAa,GACA,IAAbF,GACE78G,EAAS3B,gBAAkBw8G,EAAG3qB,UAChC6sB,GAAa,GAyBjB,OAtBcxjF,EAAOxC,KAAqB,QAAduH,EAAIxM,MAE1B+oF,EAAGgB,YACDkB,GAAYlC,EAAG1qB,SAASzrF,QAC5Bw4E,MAEI6/B,GAAYlC,EAAG1qB,SAASzrF,SACxBm4G,GAA+B,UAAlBA,EAAS3yE,OAAiC,IAAb2yE,EAK5C3/B,IAJAtqD,IAAS,KACPsqD,GAAQ,GACP,OAMH6/B,GAAYlC,EAAG1qB,SAASzrF,QACV,OAAd45B,EAAIxM,OAAkB+oF,EAAGgB,YAC3BhB,EAAGr8E,IAAI7zB,QAAQ,wCAAwC8D,WAAW6vB,EAAIuD,IAAM,IAAM,GAEpFq7C,KAEK29B,CACT,CAEA19B,UACE,MAAM09B,EAAKn6G,KACX,IAAKm6G,EAAG14C,QAAS,OAAO04C,EACxB,MAAMv8E,EAAMu8E,EAAGv8E,IAGf,GAFAu8E,EAAG1qB,SAASr9E,IAAI,IAAIvO,QAAQ,UAC5Bs2G,EAAGr8E,IAAI0E,YAAY,2EACf23E,EAAGgB,WAAY,CACjB,MAAMjiE,EAAYihE,EAAGr8E,IAAI7zB,QAAQ,WAC3B0+D,EAAiBwxC,EAAGp2D,SAAWo2D,EAAGp2D,QAAQlS,KAAK,iBAErD,GAAIqH,EAAU3W,SAAS,iBAAmBomC,EAAerrE,OAAQ,CAC/D,MAAMooE,EAAgBxsB,EAAUrH,KAAK,gBAIrC,GAHAsoE,EAAGr8E,IAAIyX,eAAc,KACnBozB,EAAenmC,YAAY,oCAAoC,IAG/D0W,EAAU3W,SAAS,iBACnB2W,EAAU3W,SAAS,2BACnBmjC,EAAcpoE,OACd,CACA,MAAMuQ,EAAY86D,EAAe,GAAG96D,UAC9ByuG,EAAmB52C,EAAc,GAAGv2D,aACtCtB,EAAYyuG,IACd3zC,EAAe33B,WAAW,GAC1B23B,EAAe,GAAG96D,UAAYA,EAAYyuG,EAC1Ch8G,YAAW,KACTqoE,EAAe33B,WAAW,GAAG,GAC5B,KAEP,CACA23B,EACGnmC,YAAY,qCACZF,SAAS,oCACd,CACkB,OAAd1E,EAAIxM,OAAkB8nB,EAAU57C,QAClC47C,EACG1W,YACC,qFAEDF,SAAS,qCACZ63E,EAAGr8E,IAAIyX,eAAc,KACnB2D,EAAU1W,YAAY,oCAAoC,MAG5D0W,EACG1W,YACC,qFAEDF,SAAS,qCACZ63E,EAAGr8E,IAAIyX,eAAc,KACnB2D,EAAU1W,YAAY,oCAAoC,IAExD23E,EAAGp2D,SACLo2D,EAAGp2D,QAAQlS,KAAK,iBAAiBhuC,QAAQ,UAG/C,CA2BA,OAzBGs2G,EAAGgB,YACJhB,EAAGsB,kBACHtB,EAAGsB,iBAAiBn+G,OAAS,GACf,OAAdsgC,EAAIxM,OAEJ+oF,EAAGsB,iBAAiB/vG,IACjB,WAASkyB,EAAIuD,IAAM,OAAS,UACzBg5E,EAAGG,gBAAgBlrG,YAAtB,MAIH+qG,EAAG5uC,cACD4uC,EAAGqB,kBAAoBrB,EAAGqB,iBAAiBl+G,QAAW68G,EAAG7zG,OAAOy0G,eAElEZ,EAAGoC,eAGLpC,EAAG14C,SAAU,EAEb04C,EAAG1qB,SAAS7xF,OAERu8G,EAAGmB,iBAAiBnB,EAAGmB,gBAAgB94E,YAAY,uBAEvD23E,EAAGr8E,IAAIj6B,QAAQ,qBACfs2G,EAAG7+E,KAAK,kCAAmC6+E,GACpCA,CACT,CAEAhpG,SACE,MAAMgpG,EAAKn6G,KAGX,OAFIm6G,EAAG14C,QAAS04C,EAAG19B,UACd09B,EAAG39B,QAAO,GACR29B,CACT,CAEAiC,eACE,MAAMjC,EAAKn6G,KAIX,OAHIm6G,EAAG5uC,aACL4uC,EAAG5uC,YAAYjpC,SAAS,yBAEnB63E,CACT,CAEAoC,eACE,MAAMpC,EAAKn6G,KAIX,OAHIm6G,EAAG5uC,aACL4uC,EAAG5uC,YAAY/oC,YAAY,yBAEtB23E,CACT,CAEAh7G,OAAOqzB,EAAOgqF,GACZ,MAAMrC,EAAKn6G,KAEX,GADAm6G,EAAG8B,cAAgB9B,EAAG3nF,OAAS,GAC3BA,IAAU2nF,EAAG8B,cAAe,OAAO9B,EAElCqC,IACErC,EAAG14C,SACN04C,EAAG39B,SAEL29B,EAAG1qB,SAASr9E,IAAIogB,GAChB2nF,EAAG1qB,SAAS5rF,QAAQ,UAEtBs2G,EAAG3nF,MAAQA,EACX2nF,EAAG14G,MAAQ+wB,EAEX,MAAMgpF,iBAAEA,EAAgB19E,IAAEA,EAAGu9E,SAAEA,EAAQra,YAAEA,EAAWua,gBAAEA,EAAeK,cAAEA,GAAkBzB,EAoBzF,GAjBI3nF,EAAMl1B,OAAS,GAAKi+G,EACtBA,EAAgBj5E,SAAS,uBAChBi5E,GACTA,EAAgB/4E,YAAY,wBAI3Bg5E,GAAoBA,EAAiBl+G,QAAUwgC,EAAIyE,SAAS,sBAC5D43E,EAAG7zG,OAAOy0G,cAAgBj9E,EAAIyE,SAAS,wBAEnB,IAAjB/P,EAAMl1B,OACR68G,EAAGiC,eAEHjC,EAAGoC,gBAIHpC,EAAG7zG,OAAOy0G,aAGZ,OAFAj9E,EAAIj6B,QAAQ,mBAAoB,CAAE2uB,QAAOypF,cAAe9B,EAAG8B,gBAC3D9B,EAAG7+E,KAAK,gCAAiC6+E,EAAI3nF,EAAO2nF,EAAG8B,eAChD9B,EAGT,IACIsC,EADAC,EAAa,GAEjB,GAAId,EAAe,CAEjB,GADAzB,EAAG/9B,YAAco/B,EAAiB,GAAGn/B,cAChB,KAAjB7pD,EAAM/vB,OAMR,OALA03G,EAAG/9B,YAAY4G,cACXge,GAAaA,EAAYxgC,OACzB66C,GAAUA,EAASjzD,OACvBtqB,EAAIj6B,QAAQ,mBAAoB,CAAE2uB,QAAOypF,cAAe9B,EAAG8B,gBAC3D9B,EAAG7+E,KAAK,gCAAiC6+E,EAAI3nF,EAAO2nF,EAAG8B,eAChD9B,EAGT,GADAsC,EAAUtC,EAAG7zG,OAAOk1F,iBAAmBA,GAAiBhpE,GAASA,EAC7D2nF,EAAG/9B,YAAY91E,OAAOu5E,UACxB68B,EAAavC,EAAG/9B,YAAY91E,OAAOu5E,UAAU48B,EAAStC,EAAG/9B,YAAYl7E,QAAU,QAC1E,GAAIi5G,EAAG/9B,YAAY91E,OAAOs5E,aAC/B,IAAK,IAAI98E,EAAI,EAAGA,EAAIq3G,EAAG/9B,YAAYl7E,MAAM5D,OAAQwF,GAAK,EAChDq3G,EAAG/9B,YAAY91E,OAAOs5E,aAAa68B,EAAStC,EAAG/9B,YAAYl7E,MAAM4B,GAAIA,IACvE45G,EAAW16G,KAAKc,EAIxB,KAAO,CACL,IAAIkP,EAEFA,EADEmoG,EAAG7zG,OAAOk1F,iBACHA,GAAiBhpE,EAAM/vB,OAAOgI,eAAenH,MAAM,KAEnDkvB,EAAM/vB,OAAOgI,cAAcnH,MAAM,KAE5Ck4G,EACG3pE,KAAKsoE,EAAG7zG,OAAOi0G,YACf/3E,YAAY,uBACZr7B,MAAMs7E,IACL,MAAMqwB,EAAUzwG,EAAEogF,GAClB,IAAIk6B,EAAkB,GAClBC,EAAYzC,EAAG7zG,OAAO66F,SAAW2R,EAAQjhE,KAAKsoE,EAAG7zG,OAAO66F,UAAY2R,EACpEqH,EAAG7zG,OAAO66F,WAAagZ,EAAG7zG,OAAOi0G,aACnCqC,EAAY9J,GAEd8J,EAAUz1G,MAAM01G,IACd,IAAIC,EAAWz6G,EAAEw6G,GAAY7rG,OAAOvO,OAAOgI,cACvC0vG,EAAG7zG,OAAOk1F,mBAAkBshB,EAAWthB,GAAiBshB,IAC5DH,EAAgB36G,KAAK86G,EAAS,IAEhCH,EAAkBA,EAAgBltF,KAAK,KACvC,IAAIstF,EAAa,EACjB,IAAK,IAAIj6G,EAAI,EAAGA,EAAIkP,EAAO1U,OAAQwF,GAAK,EAClC65G,EAAgBj6G,QAAQsP,EAAOlP,KAAO,IAAGi6G,GAAc,GAEzDA,IAAe/qG,EAAO1U,QAAY68G,EAAG7zG,OAAOo0G,QAAU5H,EAAQ/oG,GAAGowG,EAAG7zG,OAAOo0G,QAG7EgC,EAAW16G,KAAK8wG,EAAQ,IAFxBA,EAAQxwE,SAAS,sBAGnB,IAGA63E,EAAG7zG,OAAO00G,iBACZQ,EAAiB3pE,KAAKsoE,EAAG7zG,OAAOm0G,kBAAkBtzG,MAAM61G,IACtD,MAAM/uC,EAAW5rE,EAAE26G,GACbC,EAAgBhvC,EAASn9D,QAAQqpG,EAAG7zG,OAAOi0G,YACjD,IAAI/5C,GAAO,EACX,IAAK,IAAI19D,EAAI,EAAGA,EAAIm6G,EAAc3/G,OAAQwF,GAAK,EAAG,CAChD,MAAMo6G,EAAUD,EAAc/yG,GAAGpH,GACjC,GAAIo6G,EAAQnzG,GAAGowG,EAAG7zG,OAAOm0G,kBAAmB,MACvCyC,EAAQ36E,SAAS,yBACpBi+B,GAAO,EAEX,CACA,MAAMk6C,EAASP,EAAG7zG,OAAOo0G,QAAUzsC,EAASlkE,GAAGowG,EAAG7zG,OAAOo0G,QACrDl6C,IAASk6C,EAAQzsC,EAAS3rC,SAAS,uBAClC2rC,EAASzrC,YAAY,sBAAsB,IAGhD23E,EAAG7zG,OAAO20G,YACZO,EAAiB3pE,KAAKsoE,EAAG7zG,OAAOk0G,aAAarzG,MAAMk3F,IACjD,MAAM8e,EAAW96G,EAAEg8F,GACbqc,EAASP,EAAG7zG,OAAOo0G,QAAUyC,EAASpzG,GAAGowG,EAAG7zG,OAAOo0G,QAKhC,IAHPyC,EAAStrE,KAAKsoE,EAAG7zG,OAAOi0G,YAAYp4G,QAAQL,IACpDO,EAAEP,GAAIygC,SAAS,yBAEXjlC,QAAiBo9G,EAG7ByC,EAAS36E,YAAY,uBAFrB26E,EAAS76E,SAAS,sBAGpB,GAGN,CAgBA,OAd0B,IAAtBo6E,EAAWp/G,QACT0jG,GAAaA,EAAY54C,OACzBizD,GAAUA,EAAS76C,SAEnBwgC,GAAaA,EAAYxgC,OACzB66C,GAAUA,EAASjzD,QAErBwzD,GAAiBzB,EAAG/9B,aACtB+9B,EAAG/9B,YAAYyG,YAAY65B,GAG7B5+E,EAAIj6B,QAAQ,mBAAoB,CAAE2uB,QAAOypF,cAAe9B,EAAG8B,cAAeS,eAC1EvC,EAAG7+E,KAAK,gCAAiC6+E,EAAI3nF,EAAO2nF,EAAG8B,cAAeS,GAE/DvC,CACT,CAEA96E,OACE,MAAM86E,EAAKn6G,KACPm6G,EAAGgB,YAAchB,EAAGr8E,KAAKq8E,EAAGr8E,IAAIwE,SAAS,wBACzC63E,EAAG/W,QAAU+W,EAAGr8E,KAAKq8E,EAAGr8E,IAAIwE,SAAS,oBACzC63E,EAAGrkE,cACL,CAEA/X,UACE,MAAMo8E,EAAKn6G,KACXm6G,EAAG7+E,KAAK,8CAA+C6+E,GACvDA,EAAGr8E,IAAIj6B,QAAQ,2BACfs2G,EAAGp9C,eACCo9C,EAAGr8E,IAAI,KACTq8E,EAAGr8E,IAAI,GAAGs9E,YAAc,YACjBjB,EAAGr8E,IAAI,GAAGs9E,aAEnBppF,GAAYmoF,EACd,GCjqBF,IAAAiD,GAAe,CACb55G,KAAM,YACN65B,OAAQ,CACN+/E,cAEFtgF,SACc98B,KACRigG,UAAY1iE,GAAmB,CACjCE,gBAAiB,aACjB3gC,YAAasgH,GACbx/E,IAJU59B,KAKV29B,QAAS,cACTE,WAAY,qCAAqCv6B,MAAM,M,EAG3DQ,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,mBACL1qC,MAAMk2G,IACL,MAAMvc,EAAez+F,EAAEg7G,GACvBz/E,EAAIqiE,UAAUnjE,OAAO9/B,GAAO8jG,EAAaz2F,UAAW,CAAEvI,GAAIu7G,IAAe,G,EAG/E92B,gBAAgBtmC,GACd59C,EAAE49C,GACCpO,KAAK,mBACL1qC,MAAMk2G,IACDA,EAAYjC,aAAeiC,EAAYjC,YAAYr9E,SACrDs/E,EAAYjC,YAAYr9E,SAC1B,G,EAGNsqC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,mBAAmB1qC,MAAMk2G,IACrC,MAAMvc,EAAez+F,EAAEg7G,GACvBz/E,EAAIqiE,UAAUnjE,OAAO9/B,GAAO8jG,EAAaz2F,UAAW,CAAEvI,GAAIu7G,IAAe,IAG3D,QAAdz/E,EAAIxM,OACJ+yB,EAAKlV,MACLkV,EAAKlV,KAAKhN,OAAO+N,eACjBmU,EAAKjL,WACLiL,EAAKjL,UAAU57C,OAAS,GAExB6mD,EAAKjL,UAAUrH,KAAK,mBAAmB1qC,MAAMk2G,IAC3C,MAAMvc,EAAez+F,EAAEg7G,GACvBz/E,EAAIqiE,UAAUnjE,OAAO9/B,GAAO8jG,EAAaz2F,UAAW,CAAEvI,GAAIu7G,IAAe,G,EAI/En1C,iBAAiB/jB,GAEfA,EAAKrmB,IAAI+T,KAAK,mBAAmB1qC,MAAMk2G,IACjCA,EAAYjC,aAAeiC,EAAYjC,YAAYr9E,SACrDs/E,EAAYjC,YAAYr9E,SAC1B,IAGc,QAPJ/9B,KAONoxB,OACJ+yB,EAAKlV,MACLkV,EAAKlV,KAAKhN,OAAO+N,eACjBmU,EAAKjL,WACLiL,EAAKjL,UAAU57C,OAAS,GAExB6mD,EAAKjL,UAAUrH,KAAK,mBAAmB1qC,MAAMk2G,IACvCA,EAAYjC,aAAeiC,EAAYjC,YAAYr9E,SACrDs/E,EAAYjC,YAAYr9E,SAC1B,GAGN,GAEFyvB,OAAQ,CACN,mBAAoB,SAAeE,EAAY97C,QAAI,IAAJA,MAAO,IACpD,MACMuoG,EADMn6G,KACGigG,UAAU1+F,IAAIqQ,EAAKquF,WAC9Bka,GAAIA,EAAG11F,O,EAEb,oBAAqB,SAAgBipC,EAAY97C,QAAI,IAAJA,MAAO,IACtD,MACMuoG,EADMn6G,KACGigG,UAAU1+F,IAAIqQ,EAAKquF,WAC9Bka,GAAIA,EAAG39B,QAAO,E,EAEpB,qBAAsB,SAAiB9uB,EAAY97C,QAAI,IAAJA,MAAO,IACxD,MACMuoG,EADMn6G,KACGigG,UAAU1+F,IAAIqQ,EAAKquF,WAC9Bka,GAAIA,EAAG19B,S,EAEb,oBAAqB,SAAgB/uB,EAAY97C,QAAI,IAAJA,MAAO,IACtD,MACMuoG,EADMn6G,KACGigG,UAAU1+F,IAAIqQ,EAAKquF,WAC9Bka,GAAIA,EAAGhpG,QACb,GAEFurB,MAAO,CACL,iBAAkB,CAChB+0B,OAAO/0B,GACL,MACM2gF,EAAc3gF,EAAM4zB,IACpBwwC,EAAez+F,EAAEg7G,GAFXr9G,KAGRigG,UAAUnjE,OAAO9/B,GAAO8jG,EAAaz2F,UAAW,CAAEvI,GAAIu7G,I,EAE5Dt/E,QAAQrB,GACN,MAAM2gF,EAAc3gF,EAAM4zB,IACtB+sD,EAAYjC,aAAeiC,EAAYjC,YAAYr9E,SACrDs/E,EAAYjC,YAAYr9E,SAE5B,K,gtCC7GN,cAAuBnC,GACrB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAMxmB,EAAIpX,KAEJi/B,EAAW,CACfq+E,YAAY,EACZC,SAAU,GACVC,kBAAkB,EAClBC,gBAAgB,EAChBC,sBAAsB,EACtBC,sBAAkBr0G,EAClBs0G,qBAAiBt0G,EACjBu0G,qBAAiBv0G,EACjBw0G,yBAAqBx0G,EACrBy0G,2BAAuBz0G,EACvB00G,2BAAuB10G,EACvB20G,2BAAuB30G,EACvB40G,4BAAwB50G,EACxB60G,mBAAe70G,GAIjB8N,EAAE8kB,iBAAiB+C,GAEnB7nB,EAAE9Q,OAAStJ,GAAOiiC,EAAU34B,GAE5B,MAAMw3B,EAAMz7B,EAAEiE,EAAOxE,IAAIoI,GAAG,GAC5B,GAAmB,IAAf4zB,EAAIxgC,OAAc,OAAO8Z,EAE7B,GAAI0mB,EAAI,GAAGsgF,WAAY,OAAOtgF,EAAI,GAAGsgF,WAErCtgF,EAAI,GAAGsgF,WAAahnG,EAEpB,MAAMuxD,EAAiB7qC,EAAI9zB,QAAQ,iBAAiBE,GAAG,GAevD,OAbAlN,GAAOoa,EAAG,CACRmmG,SAAUnmG,EAAE9Q,OAAOi3G,SACnBz/E,MACAh8B,GAAIg8B,EAAI,GACR6qC,iBACAhkB,cAAegkB,EAAe,KAGhCvxD,EAAE2lB,aAGF3lB,EAAEioB,OAEKjoB,CACT,CAEAinG,eAAeC,GACb,MAAMC,EAAal8G,EAAEi8G,GACf1sG,EAAO,CACXpO,KAAM+6G,EAAW1sE,KAAK,iBAAiBrvC,OACvC2oG,OAAQoT,EAAW1sE,KAAK,mBAAmBrvC,OAC3Cg8G,WAAYD,EAAW1sE,KAAK,wBAAwBrvC,OACpDi8G,WAAYF,EAAW1sE,KAAK,wBAAwBrvC,OACpDktG,OAAQ6O,EAAW1sE,KAAK,mBAAmBrvC,OAC3C4wC,QAASmrE,EAAWh8E,SAAS,kBAC7BiH,KAAM+0E,EAAWh8E,SAAS,gBAAkB,OAAS,WACrDvxB,KAAMutG,EAAW1sE,KAAK,iBAAiBrvC,OACvC87F,MAAOigB,EAAW1sE,KAAK,kBAAkBrvC,OACzCk8G,SAAUH,EAAW1sE,KAAK,sBAAsBtnC,KAAK,OACrDo0G,OAAQJ,EAAWh8E,SAAS,mBAE1B3wB,EAAKwhC,UACPxhC,EAAKZ,KAAOutG,EAAW/7G,QAErBoP,EAAKZ,MAAQY,EAAK4sG,aACpB5sG,EAAKZ,KAAOY,EAAKZ,KAAK/I,QACnB,oCAAmC2J,EAAK4sG,mBACzC,KAGA5sG,EAAKZ,MAAQY,EAAK6sG,aACpB7sG,EAAKZ,KAAOY,EAAKZ,KAAK/I,QACnB,oCAAmC2J,EAAK6sG,mBACzC,KAGJ,IAAIG,EAASL,EAAW1sE,KAAK,mBAAmBnmC,IAAI,oBASpD,MARe,SAAXkzG,GAAgC,KAAXA,IAAeA,OAASt1G,GAE/Cs1G,EADEA,GAA4B,iBAAXA,EACVA,EAAO32G,QAAQ,OAAQ,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,IAAIA,QAAQ,KAAM,SAE5EqB,EAEXsI,EAAKgtG,OAASA,EAEPhtG,CACT,CAEAitG,kBACE,MAAMznG,EAAIpX,KACJ4R,EAAO,GAIb,OAHAwF,EAAE0mB,IAAI+T,KAAK,6BAA6B1qC,MAAMm3G,IAC5C1sG,EAAK5P,KAAKoV,EAAEinG,eAAeC,GAAW,IAEjC1sG,CACT,CAEAusG,cAAcW,GACZ,MAAM1nG,EAAIpX,KACJ2sD,EAAU3vD,GACd,CACEwsC,KAAM,OACN5/B,MAAO,IAETk1G,GAEF,OAAI1nG,EAAE9Q,OAAO63G,cACJ/mG,EAAE9Q,OAAO63G,cAAc/7G,KAAKgV,EAAGu1C,GAEpCA,EAAQvZ,QACF,+BAA8BuZ,EAAQ37C,aAG9C2tB,GAAA,MAAAogF,GAAA,CACE1sD,MAAQ,mBAAkB1F,EAAQnjB,QAAQmjB,EAAQqyD,SAAW,iBAAmB,MAC9EryD,EAAQkgB,UAAY,MAElBlgB,EAAQ/iD,OAEX+iD,EAAQiyD,QACPjgF,GAAA,OAAK0zB,MAAM,iBAAiB/zD,MAAQ,wBAAuBquD,EAAQiyD,YAErEjgF,GAAA,OAAK0zB,MAAM,mBACR1F,EAAQnpD,MAAQm7B,GAAA,OAAK0zB,MAAM,gBAAgB1F,EAAQnpD,MACnDmpD,EAAQw+C,QAAUxsE,GAAA,OAAK0zB,MAAM,kBAAkB1F,EAAQw+C,QACxDxsE,GAAA,OAAK0zB,MAAM,kBACR1F,EAAQ6xD,YAAc7/E,GAAA,OAAK0zB,MAAM,uBAAuB1F,EAAQ6xD,YAChE7xD,EAAQ2xC,OAAS3/D,GAAA,OAAK0zB,MAAM,iBAAiB1F,EAAQ2xC,OACrD3xC,EAAQ+xD,WAAa/xD,EAAQ2xC,OAC5B3/D,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,OAAKzhC,IAAKyvD,EAAQ+xD,aAGpB/xD,EAAQ37C,MAAQ27C,EAAQqyD,WACxBrgF,GAAA,OAAK0zB,MAAM,gBACR1F,EAAQ37C,MAAQ,GAChB27C,EAAQqyD,UACPrgF,GAAA,OAAK0zB,MAAM,4BACT1zB,GAAU,YACVA,GAAA,YACAA,GAAU,cAKjBguB,EAAQ8xD,YAAc9/E,GAAA,OAAK0zB,MAAM,uBAAuB1F,EAAQ8xD,aAElE9xD,EAAQ+iD,QAAU/wE,GAAA,OAAK0zB,MAAM,kBAAkB1F,EAAQ+iD,SAIhE,CAEAuP,eACEC,EACAhkF,QADgB,IAAhBgkF,MAAmBl/G,KAAKu9G,eAClB,IAANriF,MAASl7B,KAAKsG,OAAOk3G,iBAAmB,UAAY,UAEpD,MAAMpmG,EAAIpX,KACJwC,EAAO08G,EAAiBp5G,KAAK6mD,GAAYv1C,EAAE+mG,cAAcxxD,KAAUl9B,KAAK,IAC9ErY,EAAE0mB,IAAI5C,GAAQ14B,EAChB,CAEA28G,iBAEE,QADUn/G,KACJsG,OAAOq3G,kBADH39G,KAC8BsG,OAAOq3G,oBAAiBj6G,UAElE,CAEA07G,gBAEE,QADUp/G,KACJsG,OAAOs3G,iBADH59G,KAC6BsG,OAAOs3G,mBAAgBl6G,UAEhE,CAEA27G,gBAEE,QADUr/G,KACJsG,OAAOu3G,iBADH79G,KAC6BsG,OAAOu3G,mBAAgBn6G,UAEhE,CAEA47G,oBAEE,QADUt/G,KACJsG,OAAOw3G,qBADH99G,KACiCsG,OAAOw3G,uBAAoBp6G,UAExE,CAEA67G,sBAEE,QADUv/G,KACJsG,OAAOy3G,uBADH/9G,KACmCsG,OAAOy3G,yBAAsBr6G,UAE5E,CAEA87G,sBAEE,QADUx/G,KACJsG,OAAO03G,uBADHh+G,KACmCsG,OAAO03G,yBAAsBt6G,UAE5E,CAEA+7G,sBAEE,QADUz/G,KACJsG,OAAO23G,uBADHj+G,KACmCsG,OAAO23G,yBAAsBv6G,UAE5E,CAEAg8G,uBAEE,GADU1/G,KACJsG,OAAO43G,uBAAwB,OAD3Bl+G,KACoCsG,OAAO43G,0BAAuBx6G,UAE9E,CAEA2yF,SACE,MAAMj/E,EAAIpX,KACVoX,EAAE0mB,IAAI+T,KAAK,6BAA6B1qC,MAAK,CAACm3G,EAAW72G,KACvD,MAAM82G,EAAal8G,EAAEi8G,GAChBlnG,EAAEmmG,WACLnmG,EAAEmmG,SAAWnmG,EAAEynG,mBAEjB,MAAMl5G,EAAU,GACVgnD,EAAUv1C,EAAEmmG,SAAS91G,GACrBk4G,EAAkBvoG,EAAEmmG,SAAS91G,EAAQ,GACrCm4G,EAAcxoG,EAAEmmG,SAAS91G,EAAQ,GACnC2P,EAAE+nG,eAAexyD,EAASgzD,EAAiBC,IAC7Cj6G,EAAQ3D,KAAK,iBAEXoV,EAAEgoG,cAAczyD,EAASgzD,EAAiBC,IAC5Cj6G,EAAQ3D,KAAK,gBAEXoV,EAAEioG,cAAc1yD,EAASgzD,EAAiBC,IAC5Cj6G,EAAQ3D,KAAK,gBAEXoV,EAAEkoG,kBAAkB3yD,EAASgzD,EAAiBC,IAChDj6G,EAAQ3D,KAAK,qBAEXoV,EAAEmoG,oBAAoB5yD,EAASgzD,EAAiBC,IAClDj6G,EAAQ3D,KAAK,uBAEXoV,EAAEooG,oBAAoB7yD,EAASgzD,EAAiBC,IAClDj6G,EAAQ3D,KAAK,uBAEXoV,EAAEqoG,oBAAoB9yD,EAASgzD,EAAiBC,IAClDj6G,EAAQ3D,KAAK,uBAEf,IAAI69G,EAAuBzoG,EAAEsoG,qBAAqB/yD,EAASgzD,EAAiBC,GACxEC,GAAwBA,EAAqBviH,SACX,iBAAzBuiH,IACTA,EAAuBA,EAAqBv8G,MAAM,MAEpDu8G,EAAqBziH,SAAS0iH,IAC5Bn6G,EAAQ3D,KAAK89G,EAAY,KAG7BvB,EAAW/7E,YACT,yHAEF78B,EAAQvI,SAASmO,IACfgzG,EAAWj8E,SAAS/2B,EAAU,GAC9B,GAEN,CAEAkZ,QACYzkB,KACRu9G,SAAW,GADHv9G,KAER89B,IAAIt7B,KAAK,GACb,CAEAu9G,cAAcC,EAAiB3pB,QAAM,IAANA,OAAS,GACtC,MAAMj/E,EAAIpX,KAEV,IAAIyH,EACAq2B,EAWJ,MAV+B,iBAApBkiF,GACTv4G,EAAQu4G,EACRliF,EAAM1mB,EAAE0mB,IAAI+T,KAAK,6BAA6B3nC,GAAGzC,IACxC2P,EAAEmmG,UAAYnmG,EAAEmmG,SAAS76G,QAAQs9G,IAAoB,GAC9Dv4G,EAAQ2P,EAAEmmG,SAAS76G,QAAQs9G,GAC3BliF,EAAM1mB,EAAE0mB,IAAI1/B,WAAW8L,GAAGzC,KAE1Bq2B,EAAMz7B,EAAE29G,GACRv4G,EAAQq2B,EAAIr2B,SAEK,IAAfq2B,EAAIxgC,SAGRwgC,EAAIjzB,SACJuM,EAAEmmG,SAAS/vG,OAAO/F,EAAO,GACrB2P,EAAE9Q,OAAOg3G,YAAcjnB,GAAQj/E,EAAEi/E,UAJ5Bj/E,CAMX,CAEA6oG,eAAeC,EAAkB7pB,QAAM,IAANA,OAAS,GACxC,MAAMj/E,EAAIpX,KACV,GAAIiB,MAAMc,QAAQm+G,GAAmB,CACnC,MAAMC,EAAsB,GAC5BD,EAAiB9iH,SAASgjH,IACxBD,EAAoBn+G,KAAKoV,EAAE0mB,IAAI+T,KAAK,6BAA6B3nC,GAAGk2G,GAAsB,IAE5FD,EAAoB/iH,SAAS4iH,IAC3B5oG,EAAE2oG,cAAcC,GAAiB,EAAM,GAE3C,MACE39G,EAAE69G,GAAkB/4G,MAAM64G,IACxB5oG,EAAE2oG,cAAcC,GAAiB,EAAM,IAI3C,OADI5oG,EAAE9Q,OAAOg3G,YAAcjnB,GAAQj/E,EAAEi/E,SAC9Bj/E,CACT,CAEAipG,aACE,MAAMjpG,EAAIpX,KACV,IAAIsgH,EACA94G,EACA0zB,EAAO,QAAAx1B,EAAAhC,UAAApG,OAJCqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GAiBhB,MAZuB,kBAAZjC,EAAK,IACb28G,EAAc94G,EAAS0zB,GAAUv3B,GAEjC28G,EAAcplF,EAAQ1zB,GAAW7D,OAEb,IAAZ6D,IACTA,GAAU,QAEU,IAAX0zB,IACTA,EAAS9jB,EAAE9Q,OAAOk3G,iBAAmB,UAAY,UAG5CpmG,EAAEmpG,YAAY,CAACD,GAAe94G,EAAS0zB,EAChD,CAEAslF,gBACE,MAAMppG,EAAIpX,KAEJygH,EAAqBrpG,EAAEutC,cAAcj0C,aACrCgwG,EAAetpG,EAAEutC,cAAcx1C,aAC/BwxG,EAAevpG,EAAEutC,cAAc92C,UAMrC,OALAuJ,EAAEwpG,WAAa,CACbH,qBACAC,eACAC,gBAEK,CACLF,qBACAC,eACAC,eAEJ,CAEAJ,cACE,MAAMnpG,EAAIpX,KACV,IAAI6gH,EACAr5G,EACA0zB,EAAO,QAAAvrB,EAAAjM,UAAApG,OAJEqG,EAAI1C,UAAA0O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjM,EAAIiM,GAAAlM,UAAAkM,GAKM,kBAAZjM,EAAK,IACbk9G,EAAer5G,EAAS0zB,GAAUv3B,GAElCk9G,EAAe3lF,EAAQ1zB,GAAW7D,OAEd,IAAZ6D,IACTA,GAAU,QAEU,IAAX0zB,IACTA,EAAS9jB,EAAE9Q,OAAOk3G,iBAAmB,UAAY,UAGnD,MAAMiD,mBAAEA,EAAkBE,aAAEA,GAAiBvpG,EAAEopG,gBAG/C,IAAIM,EAAe,GACnB,MAAMC,EAAgB3pG,EAAEmmG,SAASp7G,QAAQL,GAAOA,EAAGk9G,WAAU,GAC7D6B,EAAczjH,SAASkjH,IACjBS,EACa,WAAX7lF,EACF9jB,EAAEmmG,SAAS/vG,OAAO4J,EAAEmmG,SAAS76G,QAAQq+G,GAAgB,EAAGT,GAExDlpG,EAAEmmG,SAAS/vG,OAAO4J,EAAEmmG,SAAS76G,QAAQq+G,GAAiB,EAAG,EAAGT,GAG9DlpG,EAAEmmG,SAAoB,WAAXriF,EAAsB,OAAS,WAAWolF,GAEvDQ,GAAgB1pG,EAAE+mG,cAAcmC,EAAa,IAE/C,MAAMU,EAAe3+G,EAAEy+G,GAmCvB,OAlCIt5G,IACa,WAAX0zB,GAAwB9jB,EAAE9Q,OAAOk3G,kBACnCwD,EAAa1+E,SAAS,8BAET,YAAXpH,GAAwB9jB,EAAE9Q,OAAOk3G,kBACnCwD,EAAa1+E,SAAS,4BAGtBy+E,EACa,WAAX7lF,EACF8lF,EAAaj1G,aAAaqL,EAAE0mB,IAAI+T,KAAK,oBAErCmvE,EAAalzC,YAAY12D,EAAE0mB,IAAI+T,KAAK,oBAGtCz6B,EAAE0mB,IAAI5C,GAAQ8lF,GAIZ5pG,EAAE9Q,OAAOg3G,YAAYlmG,EAAEi/E,SAEZ,YAAXn7D,GAAyB6lF,IAC3B3pG,EAAEutC,cAAc92C,UACd8yG,GAAgBvpG,EAAEutC,cAAcj0C,aAAe+vG,IAIjDrpG,EAAE9Q,OAAOm3G,iBACI,WAAXviF,IAAwB9jB,EAAE9Q,OAAOk3G,kBACrB,YAAXtiF,GAAwB9jB,EAAE9Q,OAAOk3G,mBAAqBuD,IAEzD3pG,EAAE6pG,oBAAoBz5G,GAGjB4P,CACT,CAEA8pG,WAAWv0D,QAAO,IAAPA,MAAU,IACnB,MAAMv1C,EAAIpX,KACJ+gH,EAAgB3pG,EAAEmmG,SAASp7G,QAAQL,GAAOA,EAAGk9G,WAAU,GAa7D,OAZI+B,GACF3pG,EAAE2oG,cAAc3oG,EAAEmmG,SAAS76G,QAAQq+G,IAErC3pG,EAAEipG,WACArjH,GACE,CACEwsC,KAAM,WACNw1E,UAAU,GAEZryD,IAGGv1C,CACT,CAEA+pG,aACE,MAAM/pG,EAAIpX,KACV,IAAIohH,EACAC,EAUJ,GATAjqG,EAAEmmG,SAASngH,SAAQ,CAACuvD,EAASllD,KACvBklD,EAAQqyD,WAAUoC,EAAqB35G,EAAK,SAEhB,IAAvB25G,GACLhqG,EAAE0mB,IAAI+T,KAAK,YAAY3nC,GAAGk3G,GAAoB7+E,SAAS,oBACzD8+E,GAAc,EACdjqG,EAAE2oG,cAAcqB,KAGfC,EAAa,CAChB,MAAMC,EAAmBlqG,EAAE0mB,IAAI+T,KAAK,mBAChCyvE,EAAiBhkH,QACnB8Z,EAAE2oG,cAAcuB,EAEpB,CACA,OAAOlqG,CACT,CAEA6pG,oBAAoBz5G,GAClB,MAAM4P,EAAIpX,MACJ2gH,aAAEA,EAAYF,mBAAEA,EAAkBC,aAAEA,GAAiBtpG,EAAEwpG,WAC7D,GAAIxpG,EAAE9Q,OAAOo3G,qBAAsB,CACjC,IAAI6D,GAAS,EACTnqG,EAAE9Q,OAAOk3G,kBAAqC,IAAjBmD,IAC/BY,GAAS,IAENnqG,EAAE9Q,OAAOk3G,kBAAoBmD,GAAgBF,EAAqBC,KAAkB,KACvFa,GAAS,GAEPA,GAAQnqG,EAAEjS,OAAOqC,OAAU8B,EAAY,EAC7C,MACE8N,EAAEjS,OAAOqC,OAAU8B,EAAY,EAEnC,CAEAnE,OAAOoB,EAAgBsH,QAAR,IAARtH,MAAW,KAChB,MAAM6Q,EAAIpX,KACJwhH,EAAgBpqG,EAAEutC,cAAc92C,UACtC,IAAI8kG,EACJ,QAAyB,IAAd9kG,EAA2B8kG,EAAe9kG,OAKnD,GAHA8kG,EAAev7F,EAAE9Q,OAAOk3G,iBACpB,EACApmG,EAAEutC,cAAcj0C,aAAe0G,EAAEutC,cAAcx1C,aAC/CwjG,IAAiB6O,EAAe,OAAOpqG,EAG7C,OADAA,EAAEuxD,eAAe96D,UAAU8kG,EAAcpsG,GAClC6Q,CACT,CAEAioB,OACE,MAAMjoB,EAAIpX,KACLoX,EAAEmmG,UAAkC,IAAtBnmG,EAAEmmG,SAASjgH,SAC5B8Z,EAAEmmG,SAAWnmG,EAAEynG,mBAEbznG,EAAE9Q,OAAOi3G,UAAYnmG,EAAE9Q,OAAOi3G,SAASjgH,QACzC8Z,EAAE6nG,iBAEA7nG,EAAE9Q,OAAOg3G,YAAYlmG,EAAEi/E,SACvBj/E,EAAE9Q,OAAOm3G,gBAAgBrmG,EAAEjS,OAAO,EACxC,CAEA44B,UACE,MAAM3mB,EAAIpX,KACVoX,EAAEkkB,KAAK,6CAA8ClkB,GACrDA,EAAE0mB,IAAIj6B,QAAQ,0BACVuT,EAAE0mB,IAAI,KACR1mB,EAAE0mB,IAAI,GAAGsgF,WAAa,YACfhnG,EAAE0mB,IAAI,GAAGsgF,YAElBpsF,GAAY5a,EACd,GCzgBF,IAAAqqG,GAAe,CACbj+G,KAAM,WACN65B,OAAQ,CACNokF,aAEF3kF,SACc98B,KACRu9G,SAAWhgF,GAAmB,CAChCE,gBAAiB,YACjB3gC,YAAa2kH,GACb7jF,IAJU59B,KAKV29B,QAAS,aACTE,WACE,yFAAyFv6B,MACvF,M,EAIRQ,GAAI,CACFyiF,gBAAgBtmC,GACd,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,kBACL1qC,MAAMu6G,IACL9jF,EAAI2/E,SAASx/E,QAAQ2jF,EAAW,G,EAGtCjoC,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,kBACL1qC,MAAMu6G,IACL9jF,EAAI2/E,SAASzgF,OAAO,CAAEh7B,GAAI4/G,GAAa,G,EAG7Cx5C,iBAAiB/jB,GACf,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,kBAAkB1qC,MAAMu6G,IACpC9jF,EAAI2/E,SAASx/E,QAAQ2jF,EAAW,G,EAGpCr5C,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,kBAAkB1qC,MAAMu6G,IACpC9jF,EAAI2/E,SAASzgF,OAAO,CAAEh7B,GAAI4/G,GAAa,GAE3C,GAEFhlF,MAAO,CACL,gBAAiB,CACf+0B,OAAO/0B,GACL,MACMglF,EAAahlF,EAAM4zB,IADbtwD,KAERu9G,SAASzgF,OAAO,CAAEh7B,GAAI4/G,G,EAE5B3jF,QAAQrB,GACN,MACMglF,EAAahlF,EAAM4zB,IADbtwD,KAERu9G,SAASx/E,QAAQ2jF,EACvB,K,OC3DN,cAAyB9lF,GACvB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAM+jF,EAAa3hH,KAEbi/B,EAAW,CACfhxB,KAAK,EACL2zG,UAAW,EACXC,aAAc,EACdC,YAAa,GACbC,uBAAmBz4G,EACnB04G,sBAAkB14G,EAClBwjF,UAAW,KACXm1B,YAAY,GAIdN,EAAWzlF,iBAAiB+C,GAE5B0iF,EAAWr7G,OAAStJ,GAAOiiC,EAAU34B,GAGrC,MAAMw3B,EAAMz7B,EAAEs/G,EAAWr7G,OAAOxE,IAChC,GAAmB,IAAfg8B,EAAIxgC,OAAc,OAAOqkH,EAE7B,GAAI7jF,EAAI,GAAGokF,aAAc,OAAOpkF,EAAI,GAAGokF,aAEvCpkF,EAAI,GAAGokF,aAAeP,EAGtB,MAAM59D,EAAUjmB,EAAI7zB,QAAQ,SAASC,GAAG,GAClCy+D,EAAiB5kB,EAAQlS,KAAK,iBAAiB3nC,GAAG,GAGlDi4G,EAAUrkF,EAAI+T,KAAK,oBAGzB,IAAIm/C,EAEFA,EADE2wB,EAAWr7G,OAAOyqF,WACN1uF,EAAEs/G,EAAWr7G,OAAOyqF,YAEpBjzD,EAAI+T,KAAK,YAIzB,MAAMuwE,EAAiBtkF,EAAI+T,KAAK,2BAC1BwwE,EAAWvkF,EAAI+T,KAAK,qBA4B1B,SAASywE,IACHX,EAAWr7G,OAAO27G,YACpBN,EAAWM,YAEf,CACA,SAASM,EAASr5G,GAChBA,EAAE+/B,gBACJ,CACA,SAASu5E,EAAkBt5G,GACzB,MAAMzB,EAAQpF,EAAErC,MAAMyH,QAClBpF,EAAE6G,EAAEjM,QAAQ+M,QAAQ,iCAAiC1M,QACvD+E,EAAErC,MAAM6D,QAAQ,8BAA+B4D,GAC/Ck6G,EAAWrmF,KACT,qDACAqmF,EACA3hH,KACAyH,KAGFpF,EAAErC,MAAM6D,QAAQ,6BAA8B4D,GAC9Ck6G,EAAWrmF,KACT,mDACAqmF,EACA3hH,KACAyH,GAGN,CACA,SAASg7G,IACPd,EAAW3vB,kBACX2vB,EAAW7jF,IAAIj6B,QAAQ,qBACvB89G,EAAWrmF,KAAK,iCAAkCqmF,EACpD,CACA,SAASe,IACPf,EAAWgB,YACXhB,EAAW7jF,IAAIwE,SAAS,sBACxBq/E,EAAW7jF,IAAIj6B,QAAQ,oBACvB89G,EAAWrmF,KAAK,+BAAgCqmF,EAClD,CACA,SAASiB,IACPjB,EAAW7jF,IAAI0E,YAAY,sBAC3Bm/E,EAAW7jF,IAAIj6B,QAAQ,mBACvB89G,EAAWrmF,KAAK,6BAA8BqmF,EAChD,CA2BA,OAhGIA,EAAWr7G,OAAO2H,KACpB6vB,EAAIwE,SAAS,kBAGftlC,GAAO2kH,EAAY,CACjB7jF,MACAh8B,GAAIg8B,EAAI,GACRqkF,UACAU,OAAQV,EAAQ,GAChBnxB,cACAD,WAAYC,EAAY,GACxBoxB,iBACAU,cAAeV,EAAe,GAC9BW,mBAAoBX,EAAe7/E,SAAS,kCAC5C8/E,WACAW,QAASX,EAAS,GAClBY,aAAcZ,EAAS9/E,SAAS,4BAChCwhB,UACA1K,OAAQ0K,EAAQ,GAChB4kB,iBACAhkB,cAAegkB,EACf16D,IAAK6vB,EAAIyE,SAAS,mBAAqBo/E,EAAWr7G,OAAO2H,IACzD6zG,YAAa,KAiDfH,EAAW7rE,aAAe,WACxBhY,EAAIh6B,GAAG,kBAAmBw+G,GAC1BxkF,EAAIh6B,GAAG,SAAUy+G,GACjBzkF,EAAIh6B,GAAG,QAAS,yBAA0B0+G,GAC1CxxB,EAAYltF,GAAG,eAAgB2+G,GAC/BzxB,EAAYltF,GAAG,QAAS4+G,GACxB1xB,EAAYltF,GAAG,OAAQ8+G,GACvBhlF,EAAI95B,GAAG,SAAUw+G,E,EAEnBX,EAAW5kD,aAAe,WACxBj/B,EAAI30B,IAAI,kBAAmBm5G,GAC3BxkF,EAAI30B,IAAI,SAAUo5G,GAClBzkF,EAAI30B,IAAI,QAAS,yBAA0Bq5G,GAC3CxxB,EAAY7nF,IAAI,eAAgBs5G,GAChCzxB,EAAY7nF,IAAI,QAASu5G,GACzB1xB,EAAY7nF,IAAI,OAAQy5G,GACxBhlF,EAAIz0B,IAAI,SAAUm5G,E,EAIpBX,EAAW5kF,aAGX4kF,EAAWtiF,OAEJsiF,CACT,CAEA39G,QAGE,OAFmBhE,KACRgxF,YAAYhtF,QADJhE,IAGrB,CAEApC,OAGE,OAFmBoC,KACRgxF,YAAYpzF,OADJoC,IAGrB,CAEAykB,QAGE,OAFmBzkB,KACRgxF,YAAY5+E,IAAI,IAAIvO,QAAQ,UADpB7D,IAGrB,CAEAm3F,WAEE,OADmBn3F,KACDgxF,YAAY5+E,MAAM3P,MACtC,CAEAuzF,SAASv0F,GAGP,OAFmBzB,KACRgxF,YAAY5+E,IAAI3Q,GAAOoC,QAAQ,UADvB7D,IAGrB,CAEAkjH,eAAenkB,GAGb,OAFmB/+F,KACRgxF,YAAYzmF,KAAK,cAAew0F,GADxB/+F,IAGrB,CAEAiiH,aACE,MAAMN,EAAa3hH,MACbsG,OACJA,EAAMw3B,IACNA,EAAG7vB,IACHA,EAAG81C,QACHA,EAAO4kB,eACPA,EAAcw5C,QACdA,EAAOnxB,YACPA,EAAWqxB,SACXA,EAAQD,eACRA,GACET,EACEwB,EAAWrlF,EAAI,GAAG3uB,aACxB,IAAI29E,EAAYxmF,EAAOwmF,UACvB,GAAI7+E,OAeG,CACL,MAAMm1G,EAAuBlzF,SAASy4C,EAAej9D,IAAI,kBAAmB,IACtE23G,EAAwBF,EAAW78G,EAAOu7G,aAChD,GAAIwB,IAA0BD,GAAwBz6C,EAAerrE,OAAQ,CAC3E,MAAMgmH,EAAoBpzF,SAASy4C,EAAej9D,IAAI,eAAgB,IAChEisE,EAAmBhP,EAAe,GAAGj4D,aACrC6yG,EAAmB56C,EAAe,GAAGx5D,aAErCq0G,EADgB76C,EAAe,GAAG96D,YACC8pE,EAAmB4rC,EACvDz2B,IACHA,EACE/oC,EAAQ,GAAG50C,aACXm0G,EACAjB,EAAStvC,cACTqvC,EAAervC,cACf7iD,SAASiyF,EAAQz2G,IAAI,cAAe,IACpCwkB,SAASiyF,EAAQz2G,IAAI,iBAAkB,KAE3CslF,EAAYtlF,IAAI,aAAe,GAAEohF,OACjCnkB,EAAej9D,IAAI,iBAAmB,GAAE23G,OACpCG,GACF76C,EAAe96D,UAAU86D,EAAe,GAAGj4D,aAAe6yG,GAE5DzlF,EAAIj6B,QAAQ,yBACZ89G,EAAWrmF,KAAK,yCAA0CqmF,EAC5D,CACF,CACF,CAEA3vB,kBACE,MACMl0D,IAAEA,EAAGkzD,YAAEA,GADMhxF,KAEbyB,EAAQuvF,EAAY5+E,MAAM3P,OAC5BhB,GAASA,EAAMnE,OACjBwgC,EAAIwE,SAAS,yBAEbxE,EAAI0E,YAAY,wBAEpB,CAEAihF,kBAAkB5gH,QAAS,IAATA,MAAY,IAC5B,MAAM8+G,EAAa3hH,KACboiH,EAAiB//G,EAAG,uCAAsCQ,WAMhE,OALAu/G,EAAer2G,aAAa41G,EAAW3wB,aACvCh0F,GAAO2kH,EAAY,CACjBS,iBACAU,cAAeV,EAAe,KAEzBT,CACT,CAEA+B,gBAAgB7gH,QAAS,IAATA,MAAY,IAC1B,MAAM8+G,EAAa3hH,KAUnB,OATA2hH,EAAWS,eAAiBT,EAAW7jF,IAAI+T,KAAK,2BACP,IAArC8vE,EAAWS,eAAe9kH,QAC5BqkH,EAAW8B,kBAAkB5gH,GAE/B8+G,EAAW7jF,IAAIwE,SAAS,kCACxBq/E,EAAWoB,oBAAqB,EAC5BpB,EAAWr7G,OAAO27G,YACpBN,EAAWM,aAENN,CACT,CAEAgC,kBACE,MAAMhC,EAAa3hH,KAMnB,OALA2hH,EAAW7jF,IAAI0E,YAAY,kCAC3Bm/E,EAAWoB,oBAAqB,EAC5BpB,EAAWr7G,OAAO27G,YACpBN,EAAWM,aAENN,CACT,CAEAiC,oBACE,MAAMjC,EAAa3hH,KAMnB,OALI2hH,EAAWoB,mBACbpB,EAAWgC,kBAEXhC,EAAW+B,kBAEN/B,CACT,CAEAK,iBAAiB6B,GACf,MAAMlC,EAAa3hH,KACnB,OAAI2hH,EAAWr7G,OAAO07G,iBACbL,EAAWr7G,OAAO07G,iBAAiB5/G,KAAKu/G,EAAYkC,GAErD,kEAEQA,qFAIlB,CAEA9B,oBACE,MAAMJ,EAAa3hH,KACnB,IAAIwC,EAEFA,EADEm/G,EAAWr7G,OAAOy7G,kBACbJ,EAAWr7G,OAAOy7G,kBAAkB3/G,KAAKu/G,EAAYA,EAAWG,aAE/D,GAAEH,EAAWG,YAClBh8G,KAAK+9G,GAAelC,EAAWK,iBAAiB6B,KAChDp0F,KAAK,MAE+B,IAArCkyF,EAAWS,eAAe9kH,OAC5BqkH,EAAW8B,kBAAkBjhH,GAE7Bm/G,EAAWS,eAAe5/G,KAAKA,EAEnC,CAEAshH,YAAYjhH,QAAS,IAATA,MAAY,IACtB,MAAM8+G,EAAa3hH,KACbqiH,EAAWhgH,EAAG,iCAAgCQ,WAMpD,OALA8+G,EAAW7jF,IAAIn0B,OAAO04G,GACtBrlH,GAAO2kH,EAAY,CACjBU,WACAW,QAASX,EAAS,KAEbV,CACT,CAEAoC,UAAUlhH,QAAS,IAATA,MAAY,IACpB,MAAM8+G,EAAa3hH,KAUnB,OATA2hH,EAAWU,SAAWV,EAAW7jF,IAAI+T,KAAK,qBACP,IAA/B8vE,EAAWU,SAAS/kH,QACtBqkH,EAAWmC,YAAYjhH,GAEzB8+G,EAAW7jF,IAAIwE,SAAS,4BACxBq/E,EAAWsB,cAAe,EACtBtB,EAAWr7G,OAAO27G,YACpBN,EAAWM,aAENN,CACT,CAEAgB,YACE,MAAMhB,EAAa3hH,KAMnB,OALA2hH,EAAW7jF,IAAI0E,YAAY,4BAC3Bm/E,EAAWsB,cAAe,EACtBtB,EAAWr7G,OAAO27G,YACpBN,EAAWM,aAENN,CACT,CAEAqC,cACE,MAAMrC,EAAa3hH,KAMnB,OALI2hH,EAAWsB,aACbtB,EAAWgB,YAEXhB,EAAWoC,YAENpC,CACT,CAEAtiF,OACE,MAAMsiF,EAAa3hH,KAGnB,OAFA2hH,EAAW7rE,eACX6rE,EAAW3vB,kBACJ2vB,CACT,CAEA5jF,UACE,MAAM4jF,EAAa3hH,KACnB2hH,EAAWrmF,KAAK,+CAAgDqmF,GAChEA,EAAW7jF,IAAIj6B,QAAQ,4BACvB89G,EAAW5kD,eACP4kD,EAAW7jF,IAAI,KACjB6jF,EAAW7jF,IAAI,GAAGokF,aAAe,YAC1BP,EAAW7jF,IAAI,GAAGokF,cAE3BlwF,GAAY2vF,EACd,GCrYF,IAAAsC,GAAe,CACbzgH,KAAM,aACN65B,OAAQ,CACN4mF,eAEFnnF,SACc98B,KACR2hH,WAAapkF,GAAmB,CAClCE,gBAAiB,cACjB3gC,YAAamnH,GACbrmF,IAJU59B,KAKV29B,QAAS,eACTE,WACE,iMAAiMv6B,MAC/L,M,EAIRQ,GAAI,CACFyiF,gBAAgBtmC,GACd,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,oBACL1qC,MAAM+8G,IACLtmF,EAAI+jF,WAAW5jF,QAAQmmF,EAAa,G,EAG1CzqC,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,oBACL1qC,MAAM+8G,IACLtmF,EAAI+jF,WAAW7kF,OAAO9/B,GAAO,CAAE8E,GAAIoiH,GAAgB7hH,EAAE6hH,GAAc75G,WAAW,G,EAGpF69D,iBAAiB/jB,GACf,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,oBAAoB1qC,MAAM+8G,IACtCtmF,EAAI+jF,WAAW5jF,QAAQmmF,EAAa,G,EAGxC77C,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,oBAAoB1qC,MAAM+8G,IACtCtmF,EAAI+jF,WAAW7kF,OAAO9/B,GAAO,CAAE8E,GAAIoiH,GAAgB7hH,EAAE6hH,GAAc75G,WAAW,GAElF,GAEFqyB,MAAO,CACL,kBAAmB,CACjB+0B,OAAO/0B,GACL,MACMwnF,EAAexnF,EAAM4zB,IADftwD,KAER2hH,WAAW7kF,OAAO9/B,GAAO,CAAE8E,GAAIoiH,GAAgB7hH,EAAE6hH,GAAc75G,W,EAErE0zB,QAAQrB,GACN,MACMwnF,EAAexnF,EAAM4zB,IADftwD,KAER2hH,WAAW5jF,QAAQmmF,EACzB,KCpDN,SAAStnH,GAASC,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,GAAOC,EAAQC,QACP,IAAXD,IACFA,EAAS,SAEC,IAARC,IACFA,EAAM,IAERH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,GAASM,EAAIG,KAAST,GAASK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACpJN,GAAOC,EAAOI,GAAMH,EAAIG,GAC1B,GAEJ,CACA,MAAME,GAAc,CAClBC,KAAM,GACNC,mBAAmB,EACnBC,sBAAsB,EACtBC,cAAe,CACbC,OAAO,EACPC,SAAU,IAEZC,cAAaA,IACJ,KAETC,iBAAgBA,IACP,GAETC,eAAcA,IACL,KAETC,YAAWA,KACF,CACLC,YAAY,IAGhBC,cAAaA,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,GACPC,eAAe,EACfC,qBAAoBA,IACX,KAIbC,gBAAeA,KACN,IAETC,WAAUA,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,KACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,GAEzD,OADAtC,GAAOqC,EAAK9B,IACL8B,CACT,CACA,MAAME,GAAY,CAChBD,SAAU/B,GACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACPC,eAAe,EACfC,YAAY,EACZC,KAAK,EACLC,OAAO,GAETC,YAAa,WACX,OAAOC,I,EAETvC,mBAAmB,EACnBC,sBAAsB,EACtBuC,iBAAgBA,KACP,CACLC,iBAAgBA,IACP,KAIbC,QAAQ,EACRC,OAAO,EACPC,OAAQ,GACRC,aAAa,EACbC,eAAe,EACfC,WAAUA,KACD,IAETC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9BC,qBAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,KACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,GAErD,OADA/D,GAAO8D,EAAKvB,IACLuB,CACT,CC7HA,SAASoxB,GAASxxB,EAAUyxB,GAI1B,YAHc,IAAVA,IACFA,EAAQ,GAEH7xB,WAAWI,EAAUyxB,EAC9B,CACA,SAASE,KACP,OAAOjyB,KAAKiyB,KACd,CAeA,SAASQ,GAAa/wB,EAAI+a,QACX,IAATA,IACFA,EAAO,KAET,MAAM9b,EAASF,KACf,IAAIsS,EACA2f,EACAC,EACJ,MAAMC,EAtBR,SAA0BlxB,GACxB,MAAMf,EAASF,KACf,IAAIvC,EAUJ,OATIyC,EAAOd,mBACT3B,EAAQyC,EAAOd,iBAAiB6B,EAAI,QAEjCxD,GAASwD,EAAGqiH,eACf7lH,EAAQwD,EAAGqiH,cAER7lH,IACHA,EAAQwD,EAAGxD,OAENA,CACT,CASmB2B,CAAiB6B,GA6BlC,OA5BIf,EAAOkyB,iBACTH,EAAeE,EAAS5hB,WAAa4hB,EAASE,gBAC1CJ,EAAaxvB,MAAM,KAAKhG,OAAS,IACnCw1B,EAAeA,EAAaxvB,MAAM,MAAMwC,KAAI/C,GAAKA,EAAEkF,QAAQ,IAAK,OAAMwnB,KAAK,OAI7EsD,EAAkB,IAAIhyB,EAAOkyB,gBAAiC,SAAjBH,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASG,cAAgBH,EAASI,YAAcJ,EAASK,aAAeL,EAASM,aAAeN,EAAS5hB,WAAa4hB,EAAS9yB,iBAAiB,aAAa+H,QAAQ,aAAc,sBACrMkL,EAAS4f,EAAgBzD,WAAWhsB,MAAM,MAE/B,MAATuZ,IAE0BiW,EAAxB/xB,EAAOkyB,gBAAgCF,EAAgBQ,IAEhC,KAAlBpgB,EAAO7V,OAA8B4K,WAAWiL,EAAO,KAE5CjL,WAAWiL,EAAO,KAE3B,MAAT0J,IAE0BiW,EAAxB/xB,EAAOkyB,gBAAgCF,EAAgBS,IAEhC,KAAlBrgB,EAAO7V,OAA8B4K,WAAWiL,EAAO,KAE5CjL,WAAWiL,EAAO,KAEjC2f,GAAgB,CACzB,CACA,SAASl2B,GAASq3B,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEn3B,aAAkE,WAAnDC,OAAOmF,UAAUotB,SAASltB,KAAK6xB,GAAGjE,MAAM,GAAI,EAC7G,CAQA,SAAShzB,KACP,MAAMokB,EAAKrkB,OAAO2G,UAAUpG,QAAU,OAAIgM,EAAY5F,UAAU,IAC1D0gH,EAAW,CAAC,YAAa,cAAe,aAC9C,IAAK,IAAIthH,EAAI,EAAGA,EAAIY,UAAUpG,OAAQwF,GAAK,EAAG,CAC5C,MAAMqxB,EAAarxB,EAAI,GAAKY,UAAUpG,QAAUwF,OAAIwG,EAAY5F,UAAUZ,GAC1E,GAAIqxB,UAZQigC,EAYmDjgC,IAV3C,oBAAXpzB,aAAwD,IAAvBA,OAAOsjH,YAC1CjwD,aAAgBiwD,YAElBjwD,IAA2B,IAAlBA,EAAKnxD,UAAoC,KAAlBmxD,EAAKnxD,YAOkC,CAC1E,MAAMmxB,EAAYr3B,OAAOI,KAAKJ,OAAOo3B,IAAahyB,QAAO9E,GAAO+mH,EAAS1hH,QAAQrF,GAAO,IACxF,IAAK,IAAIg3B,EAAY,EAAGC,EAAMF,EAAU92B,OAAQ+2B,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOz3B,OAAO03B,yBAAyBN,EAAYI,QAC5CjrB,IAATkrB,GAAsBA,EAAKE,aACzB93B,GAASwkB,EAAGmT,KAAa33B,GAASu3B,EAAWI,IAC3CJ,EAAWI,GAAS+vF,WACtBljG,EAAGmT,GAAWJ,EAAWI,GAEzBv3B,GAAOokB,EAAGmT,GAAUJ,EAAWI,KAEvB33B,GAASwkB,EAAGmT,KAAa33B,GAASu3B,EAAWI,KACvDnT,EAAGmT,GAAW,GACVJ,EAAWI,GAAS+vF,WACtBljG,EAAGmT,GAAWJ,EAAWI,GAEzBv3B,GAAOokB,EAAGmT,GAAUJ,EAAWI,KAGjCnT,EAAGmT,GAAWJ,EAAWI,GAG/B,CACF,CACF,CArCF,IAAgB6/B,EAsCd,OAAOhzC,CACT,CACA,SAASmjG,GAAeziH,EAAI8xB,EAASG,GACnCjyB,EAAGxD,MAAMuhD,YAAYjsB,EAASG,EAChC,CACA,SAASywF,GAAqBhjF,GAC5B,IAAIylD,OACFA,EAAMw9B,eACNA,EAAct1D,KACdA,GACE3tB,EACJ,MAAMzgC,EAASF,KACT6jH,GAAiBz9B,EAAO5L,UAC9B,IACIjzE,EADAC,EAAY,KAEhB,MAAM9B,EAAW0gF,EAAO3gF,OAAOq+G,MAC/B19B,EAAO29B,UAAUtmH,MAAMumH,eAAiB,OACxC9jH,EAAOJ,qBAAqBsmF,EAAO69B,gBACnC,MAAMzZ,EAAMoZ,EAAiBC,EAAgB,OAAS,OAChDK,EAAeA,CAACz2D,EAASrxD,IACd,SAARouG,GAAkB/8C,GAAWrxD,GAAkB,SAARouG,GAAkB/8C,GAAWrxD,EAEvEuK,EAAUA,KACdY,GAAO,IAAIhI,MAAOuI,UACA,OAAdN,IACFA,EAAYD,GAEd,MAAMvB,EAAWC,KAAK+B,IAAI/B,KAAKgC,KAAKV,EAAOC,GAAa9B,EAAU,GAAI,GAChEmC,EAAe,GAAM5B,KAAKC,IAAIF,EAAWC,KAAKE,IAAM,EAC1D,IAAIg+G,EAAkBN,EAAgBh8G,GAAgB+7G,EAAiBC,GAOvE,GANIK,EAAaC,EAAiBP,KAChCO,EAAkBP,GAEpBx9B,EAAO29B,UAAU70G,SAAS,CACxBo/C,CAACA,GAAO61D,IAEND,EAAaC,EAAiBP,GAUhC,OATAx9B,EAAO29B,UAAUtmH,MAAMg1C,SAAW,SAClC2zC,EAAO29B,UAAUtmH,MAAMumH,eAAiB,GACxCvkH,YAAW,KACT2mF,EAAO29B,UAAUtmH,MAAMg1C,SAAW,GAClC2zC,EAAO29B,UAAU70G,SAAS,CACxBo/C,CAACA,GAAO61D,GACR,SAEJjkH,EAAOJ,qBAAqBsmF,EAAO69B,gBAGrC79B,EAAO69B,eAAiB/jH,EAAON,sBAAsB+G,EAAQ,EAE/DA,GACF,CACA,SAASy9G,GAAoBC,GAC3B,OAAOA,EAAQpnH,cAAc,4BAA8BonH,EAAQC,YAAcD,EAAQC,WAAWrnH,cAAc,4BAA8BonH,CAClJ,CACA,SAASE,GAAgBr8G,EAASzG,GAIhC,YAHiB,IAAbA,IACFA,EAAW,IAEN,IAAIyG,EAAQ3K,UAAU+D,QAAOL,GAAMA,EAAGsK,QAAQ9J,IACvD,CACA,SAASnE,GAAcygC,EAAKj5B,QACV,IAAZA,IACFA,EAAU,IAEZ,MAAM7D,EAAKxC,SAASnB,cAAcygC,GAElC,OADA98B,EAAGkE,UAAUC,OAAQhF,MAAMc,QAAQ4D,GAAWA,EAAU,CAACA,IAClD7D,CACT,CACA,SAASujH,GAAcvjH,GACrB,MAAMf,EAASF,KACTvB,EAAWF,KACXqO,EAAM3L,EAAG4L,wBACTlQ,EAAO8B,EAAS9B,KAChBmQ,EAAY7L,EAAG6L,WAAanQ,EAAKmQ,WAAa,EAC9CC,EAAa9L,EAAG8L,YAAcpQ,EAAKoQ,YAAc,EACjDC,EAAY/L,IAAOf,EAASA,EAAO+M,QAAUhM,EAAG+L,UAChDE,EAAajM,IAAOf,EAASA,EAAOiN,QAAUlM,EAAGiM,WACvD,MAAO,CACLE,IAAKR,EAAIQ,IAAMJ,EAAYF,EAC3BO,KAAMT,EAAIS,KAAOH,EAAaH,EAElC,CAuBA,SAAS03G,GAAaxjH,EAAIkG,GAExB,OADenH,KACDZ,iBAAiB6B,EAAI,MAAM5B,iBAAiB8H,EAC5D,CACA,SAASu9G,GAAazjH,GACpB,IACIgB,EADA8I,EAAQ9J,EAEZ,GAAI8J,EAAO,CAGT,IAFA9I,EAAI,EAEuC,QAAnC8I,EAAQA,EAAMC,kBACG,IAAnBD,EAAM3I,WAAgBH,GAAK,GAEjC,OAAOA,CACT,CAEF,CACA,SAAS0iH,GAAe1jH,EAAIQ,GAC1B,MAAM2H,EAAU,GAChB,IAAIP,EAAS5H,EAAG2jH,cAChB,KAAO/7G,GACDpH,EACEoH,EAAO0C,QAAQ9J,IAAW2H,EAAQjI,KAAK0H,GAE3CO,EAAQjI,KAAK0H,GAEfA,EAASA,EAAO+7G,cAElB,OAAOx7G,CACT,CACA,SAASy7G,GAAqB5jH,EAAIpB,GAM5BA,GACFoB,EAAGrE,iBAAiB,iBANtB,SAASwL,EAAaC,GAChBA,EAAEjM,SAAW6E,IACjBpB,EAAS0B,KAAKN,EAAIoH,GAClBpH,EAAGpE,oBAAoB,gBAAiBuL,GAC1C,GAIF,CACA,SAAS08G,GAAiB7jH,EAAI0iB,EAAMvV,GAClC,MAAMlO,EAASF,KACf,OAAIoO,EACKnN,EAAY,UAAT0iB,EAAmB,cAAgB,gBAAkBtc,WAAWnH,EAAOd,iBAAiB6B,EAAI,MAAM5B,iBAA0B,UAATskB,EAAmB,eAAiB,eAAiBtc,WAAWnH,EAAOd,iBAAiB6B,EAAI,MAAM5B,iBAA0B,UAATskB,EAAmB,cAAgB,kBAE9Q1iB,EAAGsN,WACZ,CC5QA,IAAImoB,GAgBAquF,GAqDAC,GA5DJ,SAASpuF,KAIP,OAHKF,KACHA,GAVJ,WACE,MAAMx2B,EAASF,KACTvB,EAAWF,KACjB,MAAO,CACL0mH,aAAcxmH,EAASymH,iBAAmBzmH,EAASymH,gBAAgBznH,OAAS,mBAAoBgB,EAASymH,gBAAgBznH,MACzHo5B,SAAU,iBAAkB32B,GAAUA,EAAO42B,eAAiBr4B,aAAoByB,EAAO42B,eAE7F,CAGcQ,IAELZ,EACT,CA6CA,SAASgB,GAAUC,GAOjB,YANkB,IAAdA,IACFA,EAAY,IAETotF,KACHA,GA/CJ,SAAoBltF,GAClB,IAAIj5B,UACFA,QACY,IAAVi5B,EAAmB,GAAKA,EAC5B,MAAMnB,EAAUE,KACV12B,EAASF,KACT83B,EAAW53B,EAAOvB,UAAUm5B,SAC5BC,EAAKn5B,GAAasB,EAAOvB,UAAUC,UACnCo5B,EAAS,CACbxC,KAAK,EACLyC,SAAS,GAELgB,EAAc/4B,EAAOV,OAAOi4B,MAC5ByB,EAAeh5B,EAAOV,OAAO25B,OAC7BlB,EAAUF,EAAGluB,MAAM,+BACzB,IAAIyuB,EAAOP,EAAGluB,MAAM,wBACpB,MAAMwuB,EAAON,EAAGluB,MAAM,2BAChBuuB,GAAUE,GAAQP,EAAGluB,MAAM,8BAC3B8uB,EAAuB,UAAbb,EAChB,IAAIY,EAAqB,aAAbZ,EAqBZ,OAjBKQ,GAAQI,GAAShC,EAAQG,OADV,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YACxGh1B,QAAS,GAAEo3B,KAAeC,MAAmB,IAC9FZ,EAAOP,EAAGluB,MAAM,uBACXyuB,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINT,IAAYU,IACdX,EAAOuB,GAAK,UACZvB,EAAOC,SAAU,IAEfK,GAAQF,GAAUC,KACpBL,EAAOuB,GAAK,MACZvB,EAAOxC,KAAM,GAIRwC,CACT,CAMmB+B,CAAWpC,IAErBotF,EACT,CAuBA,SAASI,KAIP,OAHKH,KACHA,GAtBJ,WACE,MAAM9kH,EAASF,KACf,IAAIolH,GAAqB,EACzB,SAASC,IACP,MAAMttF,EAAK73B,EAAOvB,UAAUC,UAAUgL,cACtC,OAAOmuB,EAAGl2B,QAAQ,WAAa,GAAKk2B,EAAGl2B,QAAQ,UAAY,GAAKk2B,EAAGl2B,QAAQ,WAAa,CAC1F,CACA,GAAIwjH,IAAY,CACd,MAAMttF,EAAK3H,OAAOlwB,EAAOvB,UAAUC,WACnC,GAAIm5B,EAAGpH,SAAS,YAAa,CAC3B,MAAO20F,EAAOC,GAASxtF,EAAGt1B,MAAM,YAAY,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAKwC,KAAI2M,GAAO2iB,OAAO3iB,KAC1FwzG,EAAqBE,EAAQ,IAAgB,KAAVA,GAAgBC,EAAQ,CAC7D,CACF,CACA,MAAO,CACLF,SAAUD,GAAsBC,IAChCD,qBACAI,UAAW,+CAA+Cj6E,KAAKrrC,EAAOvB,UAAUC,WAEpF,CAGc6mH,IAELT,EACT,CAiJA,IAAIU,GAAgB,CAClBziH,GAAGkJ,EAAQK,EAAS2tB,GAClB,MAAMC,EAAOj7B,KACb,IAAKi7B,EAAKF,iBAAmBE,EAAKmxC,UAAW,OAAOnxC,EACpD,GAAuB,mBAAZ5tB,EAAwB,OAAO4tB,EAC1C,MAAMC,EAASF,EAAW,UAAY,OAKtC,OAJAhuB,EAAO1J,MAAM,KAAKlG,SAAQ6P,IACnBguB,EAAKF,gBAAgB9tB,KAAQguB,EAAKF,gBAAgB9tB,GAAS,IAChEguB,EAAKF,gBAAgB9tB,GAAOiuB,GAAQ7tB,EAAQ,IAEvC4tB,C,EAETE,KAAKnuB,EAAQK,EAAS2tB,GACpB,MAAMC,EAAOj7B,KACb,IAAKi7B,EAAKF,iBAAmBE,EAAKmxC,UAAW,OAAOnxC,EACpD,GAAuB,mBAAZ5tB,EAAwB,OAAO4tB,EAC1C,SAASpsB,IACPosB,EAAK9xB,IAAI6D,EAAQ6B,GACbA,EAAY23G,uBACP33G,EAAY23G,eAErB,IAAK,IAAI9gH,EAAOhC,UAAUpG,OAAQqG,EAAO,IAAI1C,MAAMyE,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EjC,EAAKiC,GAAQlC,UAAUkC,GAEzByH,EAAQvC,MAAMmwB,EAAMt3B,EACtB,CAEA,OADAkL,EAAY23G,eAAiBn5G,EACtB4tB,EAAKn3B,GAAGkJ,EAAQ6B,EAAamsB,E,EAEtCyrF,MAAMp5G,EAAS2tB,GACb,MAAMC,EAAOj7B,KACb,IAAKi7B,EAAKF,iBAAmBE,EAAKmxC,UAAW,OAAOnxC,EACpD,GAAuB,mBAAZ5tB,EAAwB,OAAO4tB,EAC1C,MAAMC,EAASF,EAAW,UAAY,OAItC,OAHIC,EAAKyrF,mBAAmBhkH,QAAQ2K,GAAW,GAC7C4tB,EAAKyrF,mBAAmBxrF,GAAQ7tB,GAE3B4tB,C,EAET0rF,OAAOt5G,GACL,MAAM4tB,EAAOj7B,KACb,IAAKi7B,EAAKF,iBAAmBE,EAAKmxC,UAAW,OAAOnxC,EACpD,IAAKA,EAAKyrF,mBAAoB,OAAOzrF,EACrC,MAAMxzB,EAAQwzB,EAAKyrF,mBAAmBhkH,QAAQ2K,GAI9C,OAHI5F,GAAS,GACXwzB,EAAKyrF,mBAAmBl5G,OAAO/F,EAAO,GAEjCwzB,C,EAET9xB,IAAI6D,EAAQK,GACV,MAAM4tB,EAAOj7B,KACb,OAAKi7B,EAAKF,iBAAmBE,EAAKmxC,UAAkBnxC,EAC/CA,EAAKF,iBACV/tB,EAAO1J,MAAM,KAAKlG,SAAQ6P,SACD,IAAZI,EACT4tB,EAAKF,gBAAgB9tB,GAAS,GACrBguB,EAAKF,gBAAgB9tB,IAC9BguB,EAAKF,gBAAgB9tB,GAAO7P,SAAQ,CAACi+B,EAAc5zB,MAC7C4zB,IAAiBhuB,GAAWguB,EAAamrF,gBAAkBnrF,EAAamrF,iBAAmBn5G,IAC7F4tB,EAAKF,gBAAgB9tB,GAAOO,OAAO/F,EAAO,EAC5C,GAEJ,IAEKwzB,GAZ2BA,C,EAcpCK,OACE,MAAML,EAAOj7B,KACb,IAAKi7B,EAAKF,iBAAmBE,EAAKmxC,UAAW,OAAOnxC,EACpD,IAAKA,EAAKF,gBAAiB,OAAOE,EAClC,IAAIjuB,EACA4E,EACArP,EACJ,IAAK,IAAIoN,EAAQjM,UAAUpG,OAAQqG,EAAO,IAAI1C,MAAM0O,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFjM,EAAKiM,GAASlM,UAAUkM,GAEH,iBAAZjM,EAAK,IAAmB1C,MAAMc,QAAQ4B,EAAK,KACpDqJ,EAASrJ,EAAK,GACdiO,EAAOjO,EAAKqsB,MAAM,EAAGrsB,EAAKrG,QAC1BiF,EAAU04B,IAEVjuB,EAASrJ,EAAK,GAAGqJ,OACjB4E,EAAOjO,EAAK,GAAGiO,KACfrP,EAAUoB,EAAK,GAAGpB,SAAW04B,GAE/BrpB,EAAKpD,QAAQjM,GAcb,OAboBtB,MAAMc,QAAQiL,GAAUA,EAASA,EAAO1J,MAAM,MACtDlG,SAAQ6P,IACdguB,EAAKyrF,oBAAsBzrF,EAAKyrF,mBAAmBppH,QACrD29B,EAAKyrF,mBAAmBtpH,SAAQi+B,IAC9BA,EAAavwB,MAAMvI,EAAS,CAAC0K,KAAU2E,GAAM,IAG7CqpB,EAAKF,iBAAmBE,EAAKF,gBAAgB9tB,IAC/CguB,EAAKF,gBAAgB9tB,GAAO7P,SAAQi+B,IAClCA,EAAavwB,MAAMvI,EAASqP,EAAK,GAErC,IAEKqpB,CACT,GA6hBF,MAAM2rF,GAAuBA,CAAC3/B,EAAQ4/B,KACpC,IAAK5/B,GAAUA,EAAO7a,YAAc6a,EAAO3gF,OAAQ,OACnD,MACM4+G,EAAU2B,EAAQ78G,QADIi9E,EAAO1yB,UAAa,eAAiB,IAAG0yB,EAAO3gF,OAAOwgH,cAElF,GAAI5B,EAAS,CACX,IAAI6B,EAAS7B,EAAQpnH,cAAe,IAAGmpF,EAAO3gF,OAAO0gH,uBAChDD,GAAU9/B,EAAO1yB,YACpBwyD,EAAS7B,EAAQC,WAAWrnH,cAAe,IAAGmpF,EAAO3gF,OAAO0gH,uBAE1DD,GAAQA,EAAOl8G,QACrB,GAEIo8G,GAASA,CAAChgC,EAAQx/E,KACtB,IAAKw/E,EAAOG,OAAO3/E,GAAQ,OAC3B,MAAMo/G,EAAU5/B,EAAOG,OAAO3/E,GAAO3J,cAAc,oBAC/C+oH,GAASA,EAAQn3G,gBAAgB,UAAU,EAE3CmmC,GAAUoxC,IACd,IAAKA,GAAUA,EAAO7a,YAAc6a,EAAO3gF,OAAQ,OACnD,IAAIsM,EAASq0E,EAAO3gF,OAAO4gH,oBAC3B,MAAM5yF,EAAM2yD,EAAOG,OAAO9pF,OAC1B,IAAKg3B,IAAQ1hB,GAAUA,EAAS,EAAG,OACnCA,EAAS9L,KAAKgC,IAAI8J,EAAQ0hB,GAC1B,MAAM6yF,EAAgD,SAAhClgC,EAAO3gF,OAAO6gH,cAA2BlgC,EAAOmgC,uBAAyBtgH,KAAKsX,KAAK6oE,EAAO3gF,OAAO6gH,eACjH99C,EAAc4d,EAAO5d,YAC3B,GAAI4d,EAAO3gF,OAAO4tE,MAAQ+S,EAAO3gF,OAAO4tE,KAAKmzC,KAAO,EAAG,CACrD,MAAMC,EAAej+C,EACfk+C,EAAiB,CAACD,EAAe10G,GASvC,OARA20G,EAAevlH,QAAQf,MAAM2e,KAAK,CAChCtiB,OAAQsV,IACP9M,KAAI,CAAC0zD,EAAG12D,IACFwkH,EAAeH,EAAgBrkH,UAExCmkF,EAAOG,OAAOhqF,SAAQ,CAAC8nH,EAASpiH,KAC1BykH,EAAe/1F,SAAS0zF,EAAQxR,SAASuT,GAAOhgC,EAAQnkF,EAAE,GAGlE,CACA,MAAM0kH,EAAuBn+C,EAAc89C,EAAgB,EAC3D,GAAIlgC,EAAO3gF,OAAOmhH,QAAUxgC,EAAO3gF,OAAOohH,KACxC,IAAK,IAAI5kH,EAAIumE,EAAcz2D,EAAQ9P,GAAK0kH,EAAuB50G,EAAQ9P,GAAK,EAAG,CAC7E,MAAM6kH,GAAa7kH,EAAIwxB,EAAMA,GAAOA,GAChCqzF,EAAYt+C,GAAes+C,EAAYH,IAAsBP,GAAOhgC,EAAQ0gC,EAClF,MAEA,IAAK,IAAI7kH,EAAIgE,KAAK+B,IAAIwgE,EAAcz2D,EAAQ,GAAI9P,GAAKgE,KAAKgC,IAAI0+G,EAAuB50G,EAAQ0hB,EAAM,GAAIxxB,GAAK,EACtGA,IAAMumE,IAAgBvmE,EAAI0kH,GAAwB1kH,EAAIumE,IACxD49C,GAAOhgC,EAAQnkF,EAGrB,EAmIF,IAAI4uD,GAAS,CACXk2D,WAhtBF,WACE,MAAM3gC,EAASjnF,KACf,IAAIs4B,EACA0B,EACJ,MAAMl4B,EAAKmlF,EAAOnlF,GAEhBw2B,OADiC,IAAxB2uD,EAAO3gF,OAAOgyB,OAAiD,OAAxB2uD,EAAO3gF,OAAOgyB,MACtD2uD,EAAO3gF,OAAOgyB,MAEdx2B,EAAG+lH,YAGX7tF,OADkC,IAAzBitD,EAAO3gF,OAAO0zB,QAAmD,OAAzBitD,EAAO3gF,OAAO0zB,OACtDitD,EAAO3gF,OAAO0zB,OAEdl4B,EAAGqvF,aAEA,IAAV74D,GAAe2uD,EAAOkc,gBAA6B,IAAXnpE,GAAgBitD,EAAO6gC,eAKnExvF,EAAQA,EAAQpI,SAASo1F,GAAaxjH,EAAI,iBAAmB,EAAG,IAAMouB,SAASo1F,GAAaxjH,EAAI,kBAAoB,EAAG,IACvHk4B,EAASA,EAAS9J,SAASo1F,GAAaxjH,EAAI,gBAAkB,EAAG,IAAMouB,SAASo1F,GAAaxjH,EAAI,mBAAqB,EAAG,IACrHszB,OAAOC,MAAMiD,KAAQA,EAAQ,GAC7BlD,OAAOC,MAAM2E,KAASA,EAAS,GACnCj9B,OAAOsJ,OAAO4gF,EAAQ,CACpB3uD,QACA0B,SACAxV,KAAMyiE,EAAOkc,eAAiB7qE,EAAQ0B,IAE1C,EAorBE+tF,aAlrBF,WACE,MAAM9gC,EAASjnF,KACf,SAASgoH,EAAkBC,GACzB,OAAIhhC,EAAOkc,eACF8kB,EAGF,CACL3vF,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB4vF,YAAe,gBACfD,EACJ,CACA,SAASE,EAA0B/zD,EAAMggB,GACvC,OAAOlsE,WAAWksD,EAAKl0D,iBAAiB8nH,EAAkB5zC,KAAW,EACvE,CACA,MAAM9tE,EAAS2gF,EAAO3gF,QAChBs+G,UACJA,EAASwD,SACTA,EACA5jG,KAAM6jG,EACNC,aAAcnnF,EAAGonF,SACjBA,GACEthC,EACEuhC,EAAYvhC,EAAOwhC,SAAWniH,EAAOmiH,QAAQhnD,QAC7CinD,EAAuBF,EAAYvhC,EAAOwhC,QAAQrhC,OAAO9pF,OAAS2pF,EAAOG,OAAO9pF,OAChF8pF,EAASg+B,GAAgBgD,EAAW,IAAGnhC,EAAO3gF,OAAOwgH,4BACrD6B,EAAeH,EAAYvhC,EAAOwhC,QAAQrhC,OAAO9pF,OAAS8pF,EAAO9pF,OACvE,IAAIsrH,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAeziH,EAAO0iH,mBACE,mBAAjBD,IACTA,EAAeziH,EAAO0iH,mBAAmB5mH,KAAK6kF,IAEhD,IAAIgiC,EAAc3iH,EAAO4iH,kBACE,mBAAhBD,IACTA,EAAc3iH,EAAO4iH,kBAAkB9mH,KAAK6kF,IAE9C,MAAMkiC,EAAyBliC,EAAO2hC,SAAStrH,OACzC8rH,EAA2BniC,EAAO4hC,WAAWvrH,OACnD,IAAI+rH,EAAe/iH,EAAO+iH,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChB9hH,EAAQ,EACZ,QAA0B,IAAf4gH,EACT,OAE0B,iBAAjBgB,GAA6BA,EAAa3mH,QAAQ,MAAQ,EACnE2mH,EAAenhH,WAAWmhH,EAAaphH,QAAQ,IAAK,KAAO,IAAMogH,EAChC,iBAAjBgB,IAChBA,EAAenhH,WAAWmhH,IAE5BpiC,EAAOuiC,aAAeH,EAGtBjiC,EAAOhqF,SAAQ8nH,IACT/jF,EACF+jF,EAAQ5mH,MAAMmrH,WAAa,GAE3BvE,EAAQ5mH,MAAM4pH,YAAc,GAE9BhD,EAAQ5mH,MAAMorH,aAAe,GAC7BxE,EAAQ5mH,MAAMqrH,UAAY,EAAE,IAI1BrjH,EAAOsjH,gBAAkBtjH,EAAOujH,UAClCtF,GAAeK,EAAW,kCAAmC,IAC7DL,GAAeK,EAAW,iCAAkC,KAE9D,MAAMkF,EAAcxjH,EAAO4tE,MAAQ5tE,EAAO4tE,KAAKmzC,KAAO,GAAKpgC,EAAO/S,KAMlE,IAAI61C,EALAD,GACF7iC,EAAO/S,KAAK81C,WAAWrB,GAKzB,MAAMsB,EAAgD,SAAzB3jH,EAAO6gH,eAA4B7gH,EAAOquE,aAAe53E,OAAOI,KAAKmJ,EAAOquE,aAAaxyE,QAAO9E,QACnE,IAA1CiJ,EAAOquE,YAAYt3E,GAAK8pH,gBACrC7pH,OAAS,EACZ,IAAK,IAAIwF,EAAI,EAAGA,EAAI6lH,EAAc7lH,GAAK,EAAG,CAExC,IAAIonH,EAKJ,GANAH,EAAY,EAER3iC,EAAOtkF,KAAIonH,EAAQ9iC,EAAOtkF,IAC1BgnH,GACF7iC,EAAO/S,KAAKi2C,YAAYrnH,EAAGonH,EAAOvB,EAAcX,IAE9C5gC,EAAOtkF,IAAyC,SAAnCwiH,GAAa4E,EAAO,WAArC,CAEA,GAA6B,SAAzB5jH,EAAO6gH,cAA0B,CAC/B8C,IACF7iC,EAAOtkF,GAAGxE,MAAM0pH,EAAkB,UAAa,IAEjD,MAAMoC,EAAcnqH,iBAAiBiqH,GAC/BG,EAAmBH,EAAM5rH,MAAM8S,UAC/Bk5G,EAAyBJ,EAAM5rH,MAAM40B,gBAO3C,GANIm3F,IACFH,EAAM5rH,MAAM8S,UAAY,QAEtBk5G,IACFJ,EAAM5rH,MAAM40B,gBAAkB,QAE5B5sB,EAAOikH,aACTR,EAAY9iC,EAAOkc,eAAiBwiB,GAAiBuE,EAAO,SAAS,GAAQvE,GAAiBuE,EAAO,UAAU,OAC1G,CAEL,MAAM5xF,EAAQ6vF,EAA0BiC,EAAa,SAC/ClmD,EAAcikD,EAA0BiC,EAAa,gBACrDjmD,EAAegkD,EAA0BiC,EAAa,iBACtDX,EAAatB,EAA0BiC,EAAa,eACpDlC,EAAcC,EAA0BiC,EAAa,gBACrDI,EAAYJ,EAAYlqH,iBAAiB,cAC/C,GAAIsqH,GAA2B,eAAdA,EACfT,EAAYzxF,EAAQmxF,EAAavB,MAC5B,CACL,MAAML,YACJA,EAAWz4G,YACXA,GACE86G,EACJH,EAAYzxF,EAAQ4rC,EAAcC,EAAeslD,EAAavB,GAAe94G,EAAcy4G,EAC7F,CACF,CACIwC,IACFH,EAAM5rH,MAAM8S,UAAYi5G,GAEtBC,IACFJ,EAAM5rH,MAAM40B,gBAAkBo3F,GAE5BhkH,EAAOikH,eAAcR,EAAYjjH,KAAKoX,MAAM6rG,GAClD,MACEA,GAAa1B,GAAc/hH,EAAO6gH,cAAgB,GAAKkC,GAAgB/iH,EAAO6gH,cAC1E7gH,EAAOikH,eAAcR,EAAYjjH,KAAKoX,MAAM6rG,IAC5C3iC,EAAOtkF,KACTskF,EAAOtkF,GAAGxE,MAAM0pH,EAAkB,UAAa,GAAE+B,OAGjD3iC,EAAOtkF,KACTskF,EAAOtkF,GAAG2nH,gBAAkBV,GAE9BjB,EAAgB9mH,KAAK+nH,GACjBzjH,EAAOsjH,gBACTN,EAAgBA,EAAgBS,EAAY,EAAIR,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAANzmH,IAASwmH,EAAgBA,EAAgBjB,EAAa,EAAIgB,GAC3E,IAANvmH,IAASwmH,EAAgBA,EAAgBjB,EAAa,EAAIgB,GAC1DviH,KAAK+R,IAAIywG,GAAiB,OAAUA,EAAgB,GACpDhjH,EAAOikH,eAAcjB,EAAgBxiH,KAAKoX,MAAMorG,IAChD7hH,EAAQnB,EAAOokH,gBAAmB,GAAG9B,EAAS5mH,KAAKsnH,GACvDT,EAAW7mH,KAAKsnH,KAEZhjH,EAAOikH,eAAcjB,EAAgBxiH,KAAKoX,MAAMorG,KAC/C7hH,EAAQX,KAAKgC,IAAIm+E,EAAO3gF,OAAOqkH,mBAAoBljH,IAAUw/E,EAAO3gF,OAAOokH,gBAAmB,GAAG9B,EAAS5mH,KAAKsnH,GACpHT,EAAW7mH,KAAKsnH,GAChBA,EAAgBA,EAAgBS,EAAYV,GAE9CpiC,EAAOuiC,aAAeO,EAAYV,EAClCE,EAAgBQ,EAChBtiH,GAAS,CArEmD,CAsE9D,CAaA,GAZAw/E,EAAOuiC,YAAc1iH,KAAK+B,IAAIo+E,EAAOuiC,YAAanB,GAAcY,EAC5D9nF,GAAOonF,IAA+B,UAAlBjiH,EAAO8oD,QAAwC,cAAlB9oD,EAAO8oD,UAC1Dw1D,EAAUtmH,MAAMg6B,MAAS,GAAE2uD,EAAOuiC,YAAcH,OAE9C/iH,EAAOskH,iBACThG,EAAUtmH,MAAM0pH,EAAkB,UAAa,GAAE/gC,EAAOuiC,YAAcH,OAEpES,GACF7iC,EAAO/S,KAAK22C,kBAAkBd,EAAWnB,EAAUZ,IAIhD1hH,EAAOsjH,eAAgB,CAC1B,MAAMkB,EAAgB,GACtB,IAAK,IAAIhoH,EAAI,EAAGA,EAAI8lH,EAAStrH,OAAQwF,GAAK,EAAG,CAC3C,IAAIioH,EAAiBnC,EAAS9lH,GAC1BwD,EAAOikH,eAAcQ,EAAiBjkH,KAAKoX,MAAM6sG,IACjDnC,EAAS9lH,IAAMmkF,EAAOuiC,YAAcnB,GACtCyC,EAAc9oH,KAAK+oH,EAEvB,CACAnC,EAAWkC,EACPhkH,KAAKoX,MAAM+oE,EAAOuiC,YAAcnB,GAAcvhH,KAAKoX,MAAM0qG,EAASA,EAAStrH,OAAS,IAAM,GAC5FsrH,EAAS5mH,KAAKilF,EAAOuiC,YAAcnB,EAEvC,CACA,GAAIG,GAAaliH,EAAOohH,KAAM,CAC5B,MAAMljG,EAAOskG,EAAgB,GAAKO,EAClC,GAAI/iH,EAAOokH,eAAiB,EAAG,CAC7B,MAAMn3C,EAASzsE,KAAKsX,MAAM6oE,EAAOwhC,QAAQuC,aAAe/jC,EAAOwhC,QAAQwC,aAAe3kH,EAAOokH,gBACvFQ,EAAY1mG,EAAOle,EAAOokH,eAChC,IAAK,IAAI5nH,EAAI,EAAGA,EAAIywE,EAAQzwE,GAAK,EAC/B8lH,EAAS5mH,KAAK4mH,EAASA,EAAStrH,OAAS,GAAK4tH,EAElD,CACA,IAAK,IAAIpoH,EAAI,EAAGA,EAAImkF,EAAOwhC,QAAQuC,aAAe/jC,EAAOwhC,QAAQwC,YAAanoH,GAAK,EACnD,IAA1BwD,EAAOokH,gBACT9B,EAAS5mH,KAAK4mH,EAASA,EAAStrH,OAAS,GAAKknB,GAEhDqkG,EAAW7mH,KAAK6mH,EAAWA,EAAWvrH,OAAS,GAAKknB,GACpDyiE,EAAOuiC,aAAehlG,CAE1B,CAEA,GADwB,IAApBokG,EAAStrH,SAAcsrH,EAAW,CAAC,IAClB,IAAjBS,EAAoB,CACtB,MAAMhsH,EAAM4pF,EAAOkc,gBAAkBhiE,EAAM,aAAe6mF,EAAkB,eAC5E5gC,EAAOjlF,QAAO,CAACq3D,EAAG2xD,MACX7kH,EAAOujH,UAAWvjH,EAAOohH,OAC1ByD,IAAe/jC,EAAO9pF,OAAS,IAIlCF,SAAQ8nH,IACTA,EAAQ5mH,MAAMjB,GAAQ,GAAEgsH,KAAgB,GAE5C,CACA,GAAI/iH,EAAOsjH,gBAAkBtjH,EAAO8kH,qBAAsB,CACxD,IAAIC,EAAgB,EACpBvC,EAAgB1rH,SAAQkuH,IACtBD,GAAiBC,GAAkBjC,GAAgB,EAAE,IAEvDgC,GAAiBhC,EACjB,MAAMkC,EAAUF,EAAgBhD,EAChCO,EAAWA,EAAS9iH,KAAI0lH,GAClBA,GAAQ,GAAWzC,EACnByC,EAAOD,EAAgBA,EAAUtC,EAC9BuC,GAEX,CACA,GAAIllH,EAAOmlH,yBAA0B,CACnC,IAAIJ,EAAgB,EAKpB,GAJAvC,EAAgB1rH,SAAQkuH,IACtBD,GAAiBC,GAAkBjC,GAAgB,EAAE,IAEvDgC,GAAiBhC,EACbgC,EAAgBhD,EAAY,CAC9B,MAAMqD,GAAmBrD,EAAagD,GAAiB,EACvDzC,EAASxrH,SAAQ,CAACouH,EAAMG,KACtB/C,EAAS+C,GAAaH,EAAOE,CAAe,IAE9C7C,EAAWzrH,SAAQ,CAACouH,EAAMG,KACxB9C,EAAW8C,GAAaH,EAAOE,CAAe,GAElD,CACF,CAOA,GANA3uH,OAAOsJ,OAAO4gF,EAAQ,CACpBG,SACAwhC,WACAC,aACAC,oBAEExiH,EAAOsjH,gBAAkBtjH,EAAOujH,UAAYvjH,EAAO8kH,qBAAsB,CAC3E7G,GAAeK,EAAW,mCAAuCgE,EAAS,GAAZ,MAC9DrE,GAAeK,EAAW,iCAAqC39B,EAAOziE,KAAO,EAAIskG,EAAgBA,EAAgBxrH,OAAS,GAAK,EAAlE,MAC7D,MAAMsuH,GAAiB3kC,EAAO2hC,SAAS,GACjCiD,GAAmB5kC,EAAO4hC,WAAW,GAC3C5hC,EAAO2hC,SAAW3hC,EAAO2hC,SAAS9iH,KAAIyrB,GAAKA,EAAIq6F,IAC/C3kC,EAAO4hC,WAAa5hC,EAAO4hC,WAAW/iH,KAAIyrB,GAAKA,EAAIs6F,GACrD,CAcA,GAbIlD,IAAiBD,GACnBzhC,EAAO3rD,KAAK,sBAEVstF,EAAStrH,SAAW6rH,IAClBliC,EAAO3gF,OAAOwlH,eAAe7kC,EAAO8kC,gBACxC9kC,EAAO3rD,KAAK,yBAEVutF,EAAWvrH,SAAW8rH,GACxBniC,EAAO3rD,KAAK,0BAEVh1B,EAAO0lH,qBACT/kC,EAAOglC,uBAEJzD,GAAcliH,EAAOujH,SAA8B,UAAlBvjH,EAAO8oD,QAAwC,SAAlB9oD,EAAO8oD,QAAoB,CAC5F,MAAM88D,EAAuB,GAAE5lH,EAAO6lH,wCAChCC,EAA6BnlC,EAAOnlF,GAAGkE,UAAUwF,SAAS0gH,GAC5DvD,GAAgBriH,EAAO+lH,wBACpBD,GAA4BnlC,EAAOnlF,GAAGkE,UAAUC,IAAIimH,GAChDE,GACTnlC,EAAOnlF,GAAGkE,UAAU6E,OAAOqhH,EAE/B,CACF,EAsZEI,iBApZF,SAA0B3H,GACxB,MAAM19B,EAASjnF,KACTusH,EAAe,GACf/D,EAAYvhC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAC1D,IACI3+D,EADA0pH,EAAY,EAEK,iBAAV7H,EACT19B,EAAOwlC,cAAc9H,IACF,IAAVA,GACT19B,EAAOwlC,cAAcxlC,EAAO3gF,OAAOq+G,OAErC,MAAM+H,EAAkBjlH,GAClB+gH,EACKvhC,EAAOG,OAAOH,EAAO0lC,oBAAoBllH,IAE3Cw/E,EAAOG,OAAO3/E,GAGvB,GAAoC,SAAhCw/E,EAAO3gF,OAAO6gH,eAA4BlgC,EAAO3gF,OAAO6gH,cAAgB,EAC1E,GAAIlgC,EAAO3gF,OAAOsjH,gBACf3iC,EAAO2lC,eAAiB,IAAIxvH,SAAQ8sH,IACnCqC,EAAavqH,KAAKkoH,EAAM,SAG1B,IAAKpnH,EAAI,EAAGA,EAAIgE,KAAKsX,KAAK6oE,EAAO3gF,OAAO6gH,eAAgBrkH,GAAK,EAAG,CAC9D,MAAM2E,EAAQw/E,EAAO5d,YAAcvmE,EACnC,GAAI2E,EAAQw/E,EAAOG,OAAO9pF,SAAWkrH,EAAW,MAChD+D,EAAavqH,KAAK0qH,EAAgBjlH,GACpC,MAGF8kH,EAAavqH,KAAK0qH,EAAgBzlC,EAAO5d,cAI3C,IAAKvmE,EAAI,EAAGA,EAAIypH,EAAajvH,OAAQwF,GAAK,EACxC,QAA+B,IAApBypH,EAAazpH,GAAoB,CAC1C,MAAMk3B,EAASuyF,EAAazpH,GAAGqM,aAC/Bq9G,EAAYxyF,EAASwyF,EAAYxyF,EAASwyF,CAC5C,EAIEA,GAA2B,IAAdA,KAAiBvlC,EAAO29B,UAAUtmH,MAAM07B,OAAU,GAAEwyF,MACvE,EAyWEP,mBAvWF,WACE,MAAMhlC,EAASjnF,KACTonF,EAASH,EAAOG,OAEhBylC,EAAc5lC,EAAO1yB,UAAY0yB,EAAOkc,eAAiBlc,EAAO29B,UAAU1lE,WAAa+nC,EAAO29B,UAAUzpC,UAAY,EAC1H,IAAK,IAAIr4E,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EACtCskF,EAAOtkF,GAAGgqH,mBAAqB7lC,EAAOkc,eAAiB/b,EAAOtkF,GAAGo8C,WAAakoC,EAAOtkF,GAAGq4E,WAAa0xC,EAAc5lC,EAAO8lC,uBAE9H,EAgWEC,qBA9VF,SAA8B3xC,QACV,IAAdA,IACFA,EAAYr7E,MAAQA,KAAKq7E,WAAa,GAExC,MAAM4L,EAASjnF,KACTsG,EAAS2gF,EAAO3gF,QAChB8gF,OACJA,EACAkhC,aAAcnnF,EAAGynF,SACjBA,GACE3hC,EACJ,GAAsB,IAAlBG,EAAO9pF,OAAc,YACkB,IAAhC8pF,EAAO,GAAG0lC,mBAAmC7lC,EAAOglC,qBAC/D,IAAIgB,GAAgB5xC,EAChBl6C,IAAK8rF,EAAe5xC,GAGxB+L,EAAOhqF,SAAQ8nH,IACbA,EAAQl/G,UAAU6E,OAAOvE,EAAO4mH,kBAAkB,IAEpDjmC,EAAOkmC,qBAAuB,GAC9BlmC,EAAO2lC,cAAgB,GACvB,IAAIvD,EAAe/iH,EAAO+iH,aACE,iBAAjBA,GAA6BA,EAAa3mH,QAAQ,MAAQ,EACnE2mH,EAAenhH,WAAWmhH,EAAaphH,QAAQ,IAAK,KAAO,IAAMg/E,EAAOziE,KACvC,iBAAjB6kG,IAChBA,EAAenhH,WAAWmhH,IAE5B,IAAK,IAAIvmH,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAAG,CACzC,MAAMonH,EAAQ9iC,EAAOtkF,GACrB,IAAIsqH,EAAclD,EAAM4C,kBACpBxmH,EAAOujH,SAAWvjH,EAAOsjH,iBAC3BwD,GAAehmC,EAAO,GAAG0lC,mBAE3B,MAAMO,GAAiBJ,GAAgB3mH,EAAOsjH,eAAiB3iC,EAAOhS,eAAiB,GAAKm4C,IAAgBlD,EAAMO,gBAAkBpB,GAC9HiE,GAAyBL,EAAerE,EAAS,IAAMtiH,EAAOsjH,eAAiB3iC,EAAOhS,eAAiB,GAAKm4C,IAAgBlD,EAAMO,gBAAkBpB,GACpJkE,IAAgBN,EAAeG,GAC/BI,EAAaD,EAActmC,EAAO6hC,gBAAgBhmH,IACtCyqH,GAAe,GAAKA,EAActmC,EAAOziE,KAAO,GAAKgpG,EAAa,GAAKA,GAAcvmC,EAAOziE,MAAQ+oG,GAAe,GAAKC,GAAcvmC,EAAOziE,QAE7JyiE,EAAO2lC,cAAc5qH,KAAKkoH,GAC1BjjC,EAAOkmC,qBAAqBnrH,KAAKc,GACjCskF,EAAOtkF,GAAGkD,UAAUC,IAAIK,EAAO4mH,oBAEjChD,EAAMrjH,SAAWs6B,GAAOksF,EAAgBA,EACxCnD,EAAMuD,iBAAmBtsF,GAAOmsF,EAAwBA,CAC1D,CACF,EAgTEI,eA9SF,SAAwBryC,GACtB,MAAM4L,EAASjnF,KACf,QAAyB,IAAdq7E,EAA2B,CACpC,MAAMsyC,EAAa1mC,EAAOqhC,cAAgB,EAAI,EAE9CjtC,EAAY4L,GAAUA,EAAO5L,WAAa4L,EAAO5L,UAAYsyC,GAAc,CAC7E,CACA,MAAMrnH,EAAS2gF,EAAO3gF,OAChBsnH,EAAiB3mC,EAAO/R,eAAiB+R,EAAOhS,eACtD,IAAIpuE,SACFA,EAAQgnH,YACRA,EAAWC,MACXA,EAAKC,aACLA,GACE9mC,EACJ,MAAM+mC,EAAeH,EACfI,EAASH,EACf,GAAuB,IAAnBF,EACF/mH,EAAW,EACXgnH,GAAc,EACdC,GAAQ,MACH,CACLjnH,GAAYw0E,EAAY4L,EAAOhS,gBAAkB24C,EACjD,MAAMM,EAAqBpnH,KAAK+R,IAAIwiE,EAAY4L,EAAOhS,gBAAkB,EACnEk5C,EAAernH,KAAK+R,IAAIwiE,EAAY4L,EAAO/R,gBAAkB,EACnE24C,EAAcK,GAAsBrnH,GAAY,EAChDinH,EAAQK,GAAgBtnH,GAAY,EAChCqnH,IAAoBrnH,EAAW,GAC/BsnH,IAActnH,EAAW,EAC/B,CACA,GAAIP,EAAOohH,KAAM,CACf,MAAM0G,EAAkBnnC,EAAO0lC,oBAAoB,GAC7C0B,EAAiBpnC,EAAO0lC,oBAAoB1lC,EAAOG,OAAO9pF,OAAS,GACnEgxH,EAAsBrnC,EAAO4hC,WAAWuF,GACxCG,EAAqBtnC,EAAO4hC,WAAWwF,GACvCG,EAAevnC,EAAO4hC,WAAW5hC,EAAO4hC,WAAWvrH,OAAS,GAC5DmxH,EAAe3nH,KAAK+R,IAAIwiE,GAE5B0yC,EADEU,GAAgBH,GACFG,EAAeH,GAAuBE,GAEtCC,EAAeD,EAAeD,GAAsBC,EAElET,EAAe,IAAGA,GAAgB,EACxC,CACAhxH,OAAOsJ,OAAO4gF,EAAQ,CACpBpgF,WACAknH,eACAF,cACAC,WAEExnH,EAAO0lH,qBAAuB1lH,EAAOsjH,gBAAkBtjH,EAAO86E,aAAY6F,EAAO+lC,qBAAqB3xC,GACtGwyC,IAAgBG,GAClB/mC,EAAO3rD,KAAK,yBAEVwyF,IAAUG,GACZhnC,EAAO3rD,KAAK,oBAEV0yF,IAAiBH,GAAeI,IAAWH,IAC7C7mC,EAAO3rD,KAAK,YAEd2rD,EAAO3rD,KAAK,WAAYz0B,EAC1B,EAkPE6nH,oBAhPF,WACE,MAAMznC,EAASjnF,MACTonF,OACJA,EAAM9gF,OACNA,EAAM8hH,SACNA,EAAQ/+C,YACRA,GACE4d,EACEuhC,EAAYvhC,EAAOwhC,SAAWniH,EAAOmiH,QAAQhnD,QAC7CktD,EAAmBrsH,GAChB8iH,GAAgBgD,EAAW,IAAG9hH,EAAOwgH,aAAaxkH,kBAAyBA,KAAY,GAKhG,IAAIssH,EACJ,GAJAxnC,EAAOhqF,SAAQ8nH,IACbA,EAAQl/G,UAAU6E,OAAOvE,EAAOuoH,iBAAkBvoH,EAAOwoH,eAAgBxoH,EAAOyoH,eAAe,IAG7FvG,EACF,GAAIliH,EAAOohH,KAAM,CACf,IAAIyD,EAAa9hD,EAAc4d,EAAOwhC,QAAQuC,aAC1CG,EAAa,IAAGA,EAAalkC,EAAOwhC,QAAQrhC,OAAO9pF,OAAS6tH,GAC5DA,GAAclkC,EAAOwhC,QAAQrhC,OAAO9pF,SAAQ6tH,GAAclkC,EAAOwhC,QAAQrhC,OAAO9pF,QACpFsxH,EAAcD,EAAkB,6BAA4BxD,MAC9D,MACEyD,EAAcD,EAAkB,6BAA4BtlD,YAG9DulD,EAAcxnC,EAAO/d,GAEvB,GAAIulD,EAAa,CAEfA,EAAY5oH,UAAUC,IAAIK,EAAOuoH,kBAGjC,IAAIG,ED3oBR,SAAwBltH,EAAIQ,GAC1B,MAAMkK,EAAU,GAChB,KAAO1K,EAAGyK,oBAAoB,CAC5B,MAAME,EAAO3K,EAAGyK,mBACZjK,EACEmK,EAAKL,QAAQ9J,IAAWkK,EAAQxK,KAAKyK,GACpCD,EAAQxK,KAAKyK,GACpB3K,EAAK2K,CACP,CACA,OAAOD,CACT,CCioBoByiH,CAAeL,EAAc,IAAGtoH,EAAOwgH,4BAA4B,GAC/ExgH,EAAOohH,OAASsH,IAClBA,EAAY5nC,EAAO,IAEjB4nC,GACFA,EAAUhpH,UAAUC,IAAIK,EAAOwoH,gBAGjC,IAAII,ED9pBR,SAAwBptH,EAAIQ,GAC1B,MAAMiN,EAAU,GAChB,KAAOzN,EAAGwN,wBAAwB,CAChC,MAAME,EAAO1N,EAAGwN,uBACZhN,EACEkN,EAAKpD,QAAQ9J,IAAWiN,EAAQvN,KAAKwN,GACpCD,EAAQvN,KAAKwN,GACpB1N,EAAK0N,CACP,CACA,OAAOD,CACT,CCopBoB4/G,CAAeP,EAAc,IAAGtoH,EAAOwgH,4BAA4B,GAC/ExgH,EAAOohH,MAAuB,KAAdwH,IAClBA,EAAY9nC,EAAOA,EAAO9pF,OAAS,IAEjC4xH,GACFA,EAAUlpH,UAAUC,IAAIK,EAAOyoH,eAEnC,CACA9nC,EAAOmoC,mBACT,EA+LEC,kBAhHF,SAA2B3c,GACzB,MAAMzrB,EAASjnF,KACTq7E,EAAY4L,EAAOqhC,aAAerhC,EAAO5L,WAAa4L,EAAO5L,WAC7DutC,SACJA,EAAQtiH,OACRA,EACA+iE,YAAakc,EACboiC,UAAW2H,EACX3D,UAAW4D,GACTtoC,EACJ,IACI0kC,EADAtiD,EAAcqpC,EAElB,MAAM8c,EAAsBC,IAC1B,IAAI9H,EAAY8H,EAASxoC,EAAOwhC,QAAQuC,aAOxC,OANIrD,EAAY,IACdA,EAAY1gC,EAAOwhC,QAAQrhC,OAAO9pF,OAASqqH,GAEzCA,GAAa1gC,EAAOwhC,QAAQrhC,OAAO9pF,SACrCqqH,GAAa1gC,EAAOwhC,QAAQrhC,OAAO9pF,QAE9BqqH,CAAS,EAKlB,QAH2B,IAAhBt+C,IACTA,EA/CJ,SAAmC4d,GACjC,MAAM4hC,WACJA,EAAUviH,OACVA,GACE2gF,EACE5L,EAAY4L,EAAOqhC,aAAerhC,EAAO5L,WAAa4L,EAAO5L,UACnE,IAAIhS,EACJ,IAAK,IAAIvmE,EAAI,EAAGA,EAAI+lH,EAAWvrH,OAAQwF,GAAK,OACT,IAAtB+lH,EAAW/lH,EAAI,GACpBu4E,GAAawtC,EAAW/lH,IAAMu4E,EAAYwtC,EAAW/lH,EAAI,IAAM+lH,EAAW/lH,EAAI,GAAK+lH,EAAW/lH,IAAM,EACtGumE,EAAcvmE,EACLu4E,GAAawtC,EAAW/lH,IAAMu4E,EAAYwtC,EAAW/lH,EAAI,KAClEumE,EAAcvmE,EAAI,GAEXu4E,GAAawtC,EAAW/lH,KACjCumE,EAAcvmE,GAOlB,OAHIwD,EAAOopH,sBACLrmD,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAEpEA,CACT,CAwBkBsmD,CAA0B1oC,IAEtC2hC,EAASlmH,QAAQ24E,IAAc,EACjCswC,EAAY/C,EAASlmH,QAAQ24E,OACxB,CACL,MAAMu0C,EAAO9oH,KAAKgC,IAAIxC,EAAOqkH,mBAAoBthD,GACjDsiD,EAAYiE,EAAO9oH,KAAKoX,OAAOmrD,EAAcumD,GAAQtpH,EAAOokH,eAC9D,CAEA,GADIiB,GAAa/C,EAAStrH,SAAQquH,EAAY/C,EAAStrH,OAAS,GAC5D+rE,IAAgBkc,EAQlB,OAPIomC,IAAc4D,IAChBtoC,EAAO0kC,UAAYA,EACnB1kC,EAAO3rD,KAAK,yBAEV2rD,EAAO3gF,OAAOohH,MAAQzgC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,UAChEwlB,EAAO0gC,UAAY6H,EAAoBnmD,KAK3C,IAAIs+C,EAEFA,EADE1gC,EAAOwhC,SAAWniH,EAAOmiH,QAAQhnD,SAAWn7D,EAAOohH,KACzC8H,EAAoBnmD,GACvB4d,EAAOG,OAAO/d,GACXn5C,SAAS+2D,EAAOG,OAAO/d,GAAax/D,aAAa,4BAA8Bw/D,EAAa,IAE5FA,EAEdtsE,OAAOsJ,OAAO4gF,EAAQ,CACpBsoC,oBACA5D,YACA2D,oBACA3H,YACApiC,gBACAlc,gBAEE4d,EAAOppE,aACTg4B,GAAQoxC,GAEVA,EAAO3rD,KAAK,qBACZ2rD,EAAO3rD,KAAK,mBACRg0F,IAAsB3H,GACxB1gC,EAAO3rD,KAAK,oBAEV2rD,EAAOppE,aAAeopE,EAAO3gF,OAAOupH,qBACtC5oC,EAAO3rD,KAAK,cAEhB,EA2CEw0F,mBAzCF,SAA4B5mH,GAC1B,MAAM+9E,EAASjnF,KACTsG,EAAS2gF,EAAO3gF,OAChB4jH,EAAQhhH,EAAEc,QAAS,IAAG1D,EAAOwgH,4BACnC,IACIqE,EADA4E,GAAa,EAEjB,GAAI7F,EACF,IAAK,IAAIpnH,EAAI,EAAGA,EAAImkF,EAAOG,OAAO9pF,OAAQwF,GAAK,EAC7C,GAAImkF,EAAOG,OAAOtkF,KAAOonH,EAAO,CAC9B6F,GAAa,EACb5E,EAAaroH,EACb,KACF,CAGJ,IAAIonH,IAAS6F,EAUX,OAFA9oC,EAAO+oC,kBAAe1mH,OACtB29E,EAAOgpC,kBAAe3mH,GARtB29E,EAAO+oC,aAAe9F,EAClBjjC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAC1CwlB,EAAOgpC,aAAe//F,SAASg6F,EAAMrgH,aAAa,2BAA4B,IAE9Eo9E,EAAOgpC,aAAe9E,EAOtB7kH,EAAO4pH,0BAA+C5mH,IAAxB29E,EAAOgpC,cAA8BhpC,EAAOgpC,eAAiBhpC,EAAO5d,aACpG4d,EAAOipC,qBAEX,GA8KA,IAAI70C,GAAY,CACdxoD,aAjKF,SAA4BhW,QACb,IAATA,IACFA,EAAO7c,KAAKmjG,eAAiB,IAAM,KAErC,MACM78F,OACJA,EACAgiH,aAAcnnF,EAAGk6C,UACjBA,EAASupC,UACTA,GALa5kH,KAOf,GAAIsG,EAAO6pH,iBACT,OAAOhvF,GAAOk6C,EAAYA,EAE5B,GAAI/0E,EAAOujH,QACT,OAAOxuC,EAET,IAAItG,EAAmBliD,GAAa+xF,EAAW/nG,GAG/C,OAFAk4D,GAde/0E,KAcY+sH,wBACvB5rF,IAAK4zC,GAAoBA,GACtBA,GAAoB,CAC7B,EA6IEq7C,aA3IF,SAAsB/0C,EAAWg1C,GAC/B,MAAMppC,EAASjnF,MAEbsoH,aAAcnnF,EAAG76B,OACjBA,EAAMs+G,UACNA,EAAS/9G,SACTA,GACEogF,EACJ,IA0BIqpC,EA1BAj4G,EAAI,EACJzD,EAAI,EAEJqyE,EAAOkc,eACT9qF,EAAI8oB,GAAOk6C,EAAYA,EAEvBzmE,EAAIymE,EAEF/0E,EAAOikH,eACTlyG,EAAIvR,KAAKoX,MAAM7F,GACfzD,EAAI9N,KAAKoX,MAAMtJ,IAEjBqyE,EAAOspC,kBAAoBtpC,EAAO5L,UAClC4L,EAAO5L,UAAY4L,EAAOkc,eAAiB9qF,EAAIzD,EAC3CtO,EAAOujH,QACTjF,EAAU39B,EAAOkc,eAAiB,aAAe,aAAelc,EAAOkc,gBAAkB9qF,GAAKzD,EACpFtO,EAAO6pH,mBACblpC,EAAOkc,eACT9qF,GAAK4uE,EAAO8lC,wBAEZn4G,GAAKqyE,EAAO8lC,wBAEdnI,EAAUtmH,MAAM8S,UAAa,eAAciH,QAAQzD,aAKrD,MAAMg5G,EAAiB3mC,EAAO/R,eAAiB+R,EAAOhS,eAEpDq7C,EADqB,IAAnB1C,EACY,GAECvyC,EAAY4L,EAAOhS,gBAAkB24C,EAElD0C,IAAgBzpH,GAClBogF,EAAOymC,eAAeryC,GAExB4L,EAAO3rD,KAAK,eAAgB2rD,EAAO5L,UAAWg1C,EAChD,EA+FEp7C,aA7FF,WACE,OAAQj1E,KAAK4oH,SAAS,EACxB,EA4FE1zC,aA1FF,WACE,OAAQl1E,KAAK4oH,SAAS5oH,KAAK4oH,SAAStrH,OAAS,EAC/C,EAyFEkzH,YAvFF,SAAqBn1C,EAAWspC,EAAO8L,EAAcC,EAAiBlU,QAClD,IAAdnhC,IACFA,EAAY,QAEA,IAAVspC,IACFA,EAAQ3kH,KAAKsG,OAAOq+G,YAED,IAAjB8L,IACFA,GAAe,QAEO,IAApBC,IACFA,GAAkB,GAEpB,MAAMzpC,EAASjnF,MACTsG,OACJA,EAAMs+G,UACNA,GACE39B,EACJ,GAAIA,EAAOvgF,WAAaJ,EAAOqqH,+BAC7B,OAAO,EAET,MAAM17C,EAAegS,EAAOhS,eACtBC,EAAe+R,EAAO/R,eAC5B,IAAI+I,EAKJ,GAJiDA,EAA7CyyC,GAAmBr1C,EAAYpG,EAA6BA,EAAsBy7C,GAAmBr1C,EAAYnG,EAA6BA,EAAiCmG,EAGnL4L,EAAOymC,eAAezvC,GAClB33E,EAAOujH,QAAS,CAClB,MAAMn8B,EAAMzG,EAAOkc,eACnB,GAAc,IAAVwhB,EACFC,EAAUl3B,EAAM,aAAe,cAAgBzP,MAC1C,CACL,IAAKgJ,EAAO1vD,QAAQuuF,aAMlB,OALAtB,GAAqB,CACnBv9B,SACAw9B,gBAAiBxmC,EACjB9uB,KAAMu+B,EAAM,OAAS,SAEhB,EAETk3B,EAAU70G,SAAS,CACjB,CAAC29E,EAAM,OAAS,QAASzP,EACzB2yC,SAAU,UAEd,CACA,OAAO,CACT,CAgCA,OA/Bc,IAAVjM,GACF19B,EAAOwlC,cAAc,GACrBxlC,EAAOmpC,aAAanyC,GAChBwyC,IACFxpC,EAAO3rD,KAAK,wBAAyBqpF,EAAOnI,GAC5Cv1B,EAAO3rD,KAAK,oBAGd2rD,EAAOwlC,cAAc9H,GACrB19B,EAAOmpC,aAAanyC,GAChBwyC,IACFxpC,EAAO3rD,KAAK,wBAAyBqpF,EAAOnI,GAC5Cv1B,EAAO3rD,KAAK,oBAET2rD,EAAOvgF,YACVugF,EAAOvgF,WAAY,EACdugF,EAAO4pC,oCACV5pC,EAAO4pC,kCAAoC,SAAuB3nH,GAC3D+9E,IAAUA,EAAO7a,WAClBljE,EAAEjM,SAAW+C,OACjBinF,EAAO29B,UAAUlnH,oBAAoB,gBAAiBupF,EAAO4pC,mCAC7D5pC,EAAO4pC,kCAAoC,YACpC5pC,EAAO4pC,kCACVJ,GACFxpC,EAAO3rD,KAAK,iB,GAIlB2rD,EAAO29B,UAAUnnH,iBAAiB,gBAAiBwpF,EAAO4pC,sCAGvD,CACT,GAmBA,SAASC,GAAetvF,GACtB,IAAIylD,OACFA,EAAMwpC,aACNA,EAAYz6E,UACZA,EAAS69C,KACTA,GACEryD,EACJ,MAAM6nC,YACJA,EAAWkc,cACXA,GACE0B,EACJ,IAAIokB,EAAMr1D,EAKV,GAJKq1D,IAC8BA,EAA7BhiC,EAAckc,EAAqB,OAAgBlc,EAAckc,EAAqB,OAAkB,SAE9G0B,EAAO3rD,KAAM,aAAYu4D,KACrB48B,GAAgBpnD,IAAgBkc,EAAe,CACjD,GAAY,UAAR8lB,EAEF,YADApkB,EAAO3rD,KAAM,uBAAsBu4D,KAGrC5M,EAAO3rD,KAAM,wBAAuBu4D,KACxB,SAARwX,EACFpkB,EAAO3rD,KAAM,sBAAqBu4D,KAElC5M,EAAO3rD,KAAM,sBAAqBu4D,IAEtC,CACF,CA0ZA,IAAIq2B,GAAQ,CACV7iC,QA5WF,SAAiB5/E,EAAOk9G,EAAO8L,EAAcjU,EAAUvmE,QACvC,IAAVxuC,IACFA,EAAQ,QAEI,IAAVk9G,IACFA,EAAQ3kH,KAAKsG,OAAOq+G,YAED,IAAjB8L,IACFA,GAAe,GAEI,iBAAVhpH,IACTA,EAAQyoB,SAASzoB,EAAO,KAE1B,MAAMw/E,EAASjnF,KACf,IAAImrH,EAAa1jH,EACb0jH,EAAa,IAAGA,EAAa,GACjC,MAAM7kH,OACJA,EAAMsiH,SACNA,EAAQC,WACRA,EAAUtjC,cACVA,EAAalc,YACbA,EACAi/C,aAAcnnF,EAAGyjF,UACjBA,EAASnjD,QACTA,GACEwlB,EACJ,GAAIA,EAAOvgF,WAAaJ,EAAOqqH,iCAAmClvD,IAAY+6C,IAAavmE,EACzF,OAAO,EAET,MAAM25E,EAAO9oH,KAAKgC,IAAIm+E,EAAO3gF,OAAOqkH,mBAAoBQ,GACxD,IAAIQ,EAAYiE,EAAO9oH,KAAKoX,OAAOitG,EAAayE,GAAQ3oC,EAAO3gF,OAAOokH,gBAClEiB,GAAa/C,EAAStrH,SAAQquH,EAAY/C,EAAStrH,OAAS,GAChE,MAAM+9E,GAAautC,EAAS+C,GAE5B,GAAIrlH,EAAOopH,oBACT,IAAK,IAAI5sH,EAAI,EAAGA,EAAI+lH,EAAWvrH,OAAQwF,GAAK,EAAG,CAC7C,MAAMiuH,GAAuBjqH,KAAKoX,MAAkB,IAAZm9D,GAClC21C,EAAiBlqH,KAAKoX,MAAsB,IAAhB2qG,EAAW/lH,IACvCmuH,EAAqBnqH,KAAKoX,MAA0B,IAApB2qG,EAAW/lH,EAAI,SACpB,IAAtB+lH,EAAW/lH,EAAI,GACpBiuH,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9H7F,EAAaroH,EACJiuH,GAAuBC,GAAkBD,EAAsBE,IACxE9F,EAAaroH,EAAI,GAEViuH,GAAuBC,IAChC7F,EAAaroH,EAEjB,CAGF,GAAImkF,EAAOppE,aAAestG,IAAe9hD,EAAa,CACpD,IAAK4d,EAAOiqC,iBAAmB/vF,EAAMk6C,EAAY4L,EAAO5L,WAAaA,EAAY4L,EAAOhS,eAAiBoG,EAAY4L,EAAO5L,WAAaA,EAAY4L,EAAOhS,gBAC1J,OAAO,EAET,IAAKgS,EAAOkqC,gBAAkB91C,EAAY4L,EAAO5L,WAAaA,EAAY4L,EAAO/R,iBAC1E7L,GAAe,KAAO8hD,EACzB,OAAO,CAGb,CAOA,IAAIn1E,EAIJ,GAVIm1E,KAAgB5lC,GAAiB,IAAMkrC,GACzCxpC,EAAO3rD,KAAK,0BAId2rD,EAAOymC,eAAeryC,GAEQrlC,EAA1Bm1E,EAAa9hD,EAAyB,OAAgB8hD,EAAa9hD,EAAyB,OAAwB,QAGpHloC,IAAQk6C,IAAc4L,EAAO5L,YAAcl6C,GAAOk6C,IAAc4L,EAAO5L,UAczE,OAbA4L,EAAOooC,kBAAkBlE,GAErB7kH,EAAO86E,YACT6F,EAAOqlC,mBAETrlC,EAAOynC,sBACe,UAAlBpoH,EAAO8oD,QACT63B,EAAOmpC,aAAa/0C,GAEJ,UAAdrlC,IACFixC,EAAO0E,gBAAgB8kC,EAAcz6E,GACrCixC,EAAO1xC,cAAck7E,EAAcz6E,KAE9B,EAET,GAAI1vC,EAAOujH,QAAS,CAClB,MAAMn8B,EAAMzG,EAAOkc,eACbluF,EAAIksB,EAAMk6C,GAAaA,EAC7B,GAAc,IAAVspC,EAAa,CACf,MAAM6D,EAAYvhC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QACtD+mD,IACFvhC,EAAO29B,UAAUtmH,MAAMumH,eAAiB,OACxC59B,EAAOmqC,mBAAoB,GAEzB5I,IAAcvhC,EAAOoqC,2BAA6BpqC,EAAO3gF,OAAOgrH,aAAe,GACjFrqC,EAAOoqC,2BAA4B,EACnC5wH,uBAAsB,KACpBmkH,EAAUl3B,EAAM,aAAe,aAAez4E,CAAC,KAGjD2vG,EAAUl3B,EAAM,aAAe,aAAez4E,EAE5CuzG,GACF/nH,uBAAsB,KACpBwmF,EAAO29B,UAAUtmH,MAAMumH,eAAiB,GACxC59B,EAAOmqC,mBAAoB,CAAK,GAGtC,KAAO,CACL,IAAKnqC,EAAO1vD,QAAQuuF,aAMlB,OALAtB,GAAqB,CACnBv9B,SACAw9B,eAAgBxvG,EAChBk6C,KAAMu+B,EAAM,OAAS,SAEhB,EAETk3B,EAAU70G,SAAS,CACjB,CAAC29E,EAAM,OAAS,OAAQz4E,EACxB27G,SAAU,UAEd,CACA,OAAO,CACT,CAuBA,OAtBA3pC,EAAOwlC,cAAc9H,GACrB19B,EAAOmpC,aAAa/0C,GACpB4L,EAAOooC,kBAAkBlE,GACzBlkC,EAAOynC,sBACPznC,EAAO3rD,KAAK,wBAAyBqpF,EAAOnI,GAC5Cv1B,EAAO0E,gBAAgB8kC,EAAcz6E,GACvB,IAAV2uE,EACF19B,EAAO1xC,cAAck7E,EAAcz6E,GACzBixC,EAAOvgF,YACjBugF,EAAOvgF,WAAY,EACdugF,EAAOsqC,gCACVtqC,EAAOsqC,8BAAgC,SAAuBroH,GACvD+9E,IAAUA,EAAO7a,WAClBljE,EAAEjM,SAAW+C,OACjBinF,EAAO29B,UAAUlnH,oBAAoB,gBAAiBupF,EAAOsqC,+BAC7DtqC,EAAOsqC,8BAAgC,YAChCtqC,EAAOsqC,8BACdtqC,EAAO1xC,cAAck7E,EAAcz6E,G,GAGvCixC,EAAO29B,UAAUnnH,iBAAiB,gBAAiBwpF,EAAOsqC,iCAErD,CACT,EAwNEC,YAtNF,SAAqB/pH,EAAOk9G,EAAO8L,EAAcjU,GAU/C,QATc,IAAV/0G,IACFA,EAAQ,QAEI,IAAVk9G,IACFA,EAAQ3kH,KAAKsG,OAAOq+G,YAED,IAAjB8L,IACFA,GAAe,GAEI,iBAAVhpH,EAAoB,CAE7BA,EADsByoB,SAASzoB,EAAO,GAExC,CACA,MAAMw/E,EAASjnF,KACf,IAAIyxH,EAAWhqH,EASf,OARIw/E,EAAO3gF,OAAOohH,OACZzgC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAE1CgwD,GAAsBxqC,EAAOwhC,QAAQuC,aAErCyG,EAAWxqC,EAAO0lC,oBAAoB8E,IAGnCxqC,EAAOI,QAAQoqC,EAAU9M,EAAO8L,EAAcjU,EACvD,EA8LEkV,UA3LF,SAAmB/M,EAAO8L,EAAcjU,QACxB,IAAVmI,IACFA,EAAQ3kH,KAAKsG,OAAOq+G,YAED,IAAjB8L,IACFA,GAAe,GAEjB,MAAMxpC,EAASjnF,MACTyhE,QACJA,EAAOn7D,OACPA,EAAMI,UACNA,GACEugF,EACJ,IAAKxlB,EAAS,OAAOwlB,EACrB,IAAI0qC,EAAWrrH,EAAOokH,eACO,SAAzBpkH,EAAO6gH,eAAsD,IAA1B7gH,EAAOokH,gBAAwBpkH,EAAOsrH,qBAC3ED,EAAW7qH,KAAK+B,IAAIo+E,EAAOmgC,qBAAqB,WAAW,GAAO,IAEpE,MAAMptB,EAAY/S,EAAO5d,YAAc/iE,EAAOqkH,mBAAqB,EAAIgH,EACjEnJ,EAAYvhC,EAAOwhC,SAAWniH,EAAOmiH,QAAQhnD,QACnD,GAAIn7D,EAAOohH,KAAM,CACf,GAAIhhH,IAAc8hH,GAAaliH,EAAOurH,oBAAqB,OAAO,EAClE5qC,EAAO6qC,QAAQ,CACb97E,UAAW,SAGbixC,EAAO/1C,YAAc+1C,EAAO29B,UAAUh3G,UACxC,CACA,OAAItH,EAAOmhH,QAAUxgC,EAAO6mC,MACnB7mC,EAAOI,QAAQ,EAAGs9B,EAAO8L,EAAcjU,GAEzCv1B,EAAOI,QAAQJ,EAAO5d,YAAc2wB,EAAW2qB,EAAO8L,EAAcjU,EAC7E,EA4JEuV,UAzJF,SAAmBpN,EAAO8L,EAAcjU,QACxB,IAAVmI,IACFA,EAAQ3kH,KAAKsG,OAAOq+G,YAED,IAAjB8L,IACFA,GAAe,GAEjB,MAAMxpC,EAASjnF,MACTsG,OACJA,EAAMsiH,SACNA,EAAQC,WACRA,EAAUP,aACVA,EAAY7mD,QACZA,EAAO/6D,UACPA,GACEugF,EACJ,IAAKxlB,EAAS,OAAOwlB,EACrB,MAAMuhC,EAAYvhC,EAAOwhC,SAAWniH,EAAOmiH,QAAQhnD,QACnD,GAAIn7D,EAAOohH,KAAM,CACf,GAAIhhH,IAAc8hH,GAAaliH,EAAOurH,oBAAqB,OAAO,EAClE5qC,EAAO6qC,QAAQ,CACb97E,UAAW,SAGbixC,EAAO/1C,YAAc+1C,EAAO29B,UAAUh3G,UACxC,CAEA,SAASokH,EAAU5/G,GACjB,OAAIA,EAAM,GAAWtL,KAAKoX,MAAMpX,KAAK+R,IAAIzG,IAClCtL,KAAKoX,MAAM9L,EACpB,CACA,MAAM2+G,EAAsBiB,EALV1J,EAAerhC,EAAO5L,WAAa4L,EAAO5L,WAMtD42C,EAAqBrJ,EAAS9iH,KAAIsM,GAAO4/G,EAAU5/G,KACzD,IAAI8/G,EAAWtJ,EAASqJ,EAAmBvvH,QAAQquH,GAAuB,GAC1E,QAAwB,IAAbmB,GAA4B5rH,EAAOujH,QAAS,CACrD,IAAIsI,EACJvJ,EAASxrH,SAAQ,CAACouH,EAAMG,KAClBoF,GAAuBvF,IAEzB2G,EAAgBxG,EAClB,SAE2B,IAAlBwG,IACTD,EAAWtJ,EAASuJ,EAAgB,EAAIA,EAAgB,EAAIA,GAEhE,CACA,IAAIluC,EAAY,EAShB,QARwB,IAAbiuC,IACTjuC,EAAY4kC,EAAWnmH,QAAQwvH,GAC3BjuC,EAAY,IAAGA,EAAYgD,EAAO5d,YAAc,GACvB,SAAzB/iE,EAAO6gH,eAAsD,IAA1B7gH,EAAOokH,gBAAwBpkH,EAAOsrH,qBAC3E3tC,EAAYA,EAAYgD,EAAOmgC,qBAAqB,YAAY,GAAQ,EACxEnjC,EAAYn9E,KAAK+B,IAAIo7E,EAAW,KAGhC39E,EAAOmhH,QAAUxgC,EAAO4mC,YAAa,CACvC,MAAMuE,EAAYnrC,EAAO3gF,OAAOmiH,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,SAAWwlB,EAAOwhC,QAAUxhC,EAAOwhC,QAAQrhC,OAAO9pF,OAAS,EAAI2pF,EAAOG,OAAO9pF,OAAS,EACvJ,OAAO2pF,EAAOI,QAAQ+qC,EAAWzN,EAAO8L,EAAcjU,EACxD,CACA,OAAOv1B,EAAOI,QAAQpD,EAAW0gC,EAAO8L,EAAcjU,EACxD,EA8FE6V,WA3FF,SAAoB1N,EAAO8L,EAAcjU,GAQvC,YAPc,IAAVmI,IACFA,EAAQ3kH,KAAKsG,OAAOq+G,YAED,IAAjB8L,IACFA,GAAe,GAEFzwH,KACDqnF,QADCrnF,KACcqpE,YAAas7C,EAAO8L,EAAcjU,EACjE,EAmFE8V,eAhFF,SAAwB3N,EAAO8L,EAAcjU,EAAU/xB,QACvC,IAAVk6B,IACFA,EAAQ3kH,KAAKsG,OAAOq+G,YAED,IAAjB8L,IACFA,GAAe,QAEC,IAAdhmC,IACFA,EAAY,IAEd,MAAMxD,EAASjnF,KACf,IAAIyH,EAAQw/E,EAAO5d,YACnB,MAAMumD,EAAO9oH,KAAKgC,IAAIm+E,EAAO3gF,OAAOqkH,mBAAoBljH,GAClDkkH,EAAYiE,EAAO9oH,KAAKoX,OAAOzW,EAAQmoH,GAAQ3oC,EAAO3gF,OAAOokH,gBAC7DrvC,EAAY4L,EAAOqhC,aAAerhC,EAAO5L,WAAa4L,EAAO5L,UACnE,GAAIA,GAAa4L,EAAO2hC,SAAS+C,GAAY,CAG3C,MAAM4G,EAActrC,EAAO2hC,SAAS+C,GAEhCtwC,EAAYk3C,GADCtrC,EAAO2hC,SAAS+C,EAAY,GACH4G,GAAe9nC,IACvDhjF,GAASw/E,EAAO3gF,OAAOokH,eAE3B,KAAO,CAGL,MAAMwH,EAAWjrC,EAAO2hC,SAAS+C,EAAY,GAEzCtwC,EAAY62C,IADIjrC,EAAO2hC,SAAS+C,GACOuG,GAAYznC,IACrDhjF,GAASw/E,EAAO3gF,OAAOokH,eAE3B,CAGA,OAFAjjH,EAAQX,KAAK+B,IAAIpB,EAAO,GACxBA,EAAQX,KAAKgC,IAAIrB,EAAOw/E,EAAO4hC,WAAWvrH,OAAS,GAC5C2pF,EAAOI,QAAQ5/E,EAAOk9G,EAAO8L,EAAcjU,EACpD,EA8CE0T,oBA5CF,WACE,MAAMjpC,EAASjnF,MACTsG,OACJA,EAAM8hH,SACNA,GACEnhC,EACEkgC,EAAyC,SAAzB7gH,EAAO6gH,cAA2BlgC,EAAOmgC,uBAAyB9gH,EAAO6gH,cAC/F,IACIQ,EADA6K,EAAevrC,EAAOgpC,aAE1B,MAAMwC,EAAgBxrC,EAAO1yB,UAAa,eAAiB,IAAGjuD,EAAOwgH,aACrE,GAAIxgH,EAAOohH,KAAM,CACf,GAAIzgC,EAAOvgF,UAAW,OACtBihH,EAAYz3F,SAAS+2D,EAAO+oC,aAAanmH,aAAa,2BAA4B,IAC9EvD,EAAOsjH,eACL4I,EAAevrC,EAAOyrC,aAAevL,EAAgB,GAAKqL,EAAevrC,EAAOG,OAAO9pF,OAAS2pF,EAAOyrC,aAAevL,EAAgB,GACxIlgC,EAAO6qC,UACPU,EAAevrC,EAAO0rC,cAAcvN,GAAgBgD,EAAW,GAAEqK,8BAA0C9K,OAAe,IAC1Hz1F,IAAS,KACP+0D,EAAOI,QAAQmrC,EAAa,KAG9BvrC,EAAOI,QAAQmrC,GAERA,EAAevrC,EAAOG,OAAO9pF,OAAS6pH,GAC/ClgC,EAAO6qC,UACPU,EAAevrC,EAAO0rC,cAAcvN,GAAgBgD,EAAW,GAAEqK,8BAA0C9K,OAAe,IAC1Hz1F,IAAS,KACP+0D,EAAOI,QAAQmrC,EAAa,KAG9BvrC,EAAOI,QAAQmrC,EAEnB,MACEvrC,EAAOI,QAAQmrC,EAEnB,GAiNA,IAAI9K,GAAO,CACTkL,WAtMF,SAAoBC,GAClB,MAAM5rC,EAASjnF,MACTsG,OACJA,EAAM8hH,SACNA,GACEnhC,EACJ,IAAK3gF,EAAOohH,MAAQzgC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAAS,OACtD2jD,GAAgBgD,EAAW,IAAG9hH,EAAOwgH,4BAC7C1pH,SAAQ,CAAC0E,EAAI2F,KAClB3F,EAAGvD,aAAa,0BAA2BkJ,EAAM,IAEnDw/E,EAAO6qC,QAAQ,CACbe,iBACA78E,UAAW1vC,EAAOsjH,oBAAiBtgH,EAAY,QAEnD,EAwLEwoH,QAtLF,SAAiBp5F,GACf,IAAIm6F,eACFA,EAAcxrC,QACdA,GAAU,EAAIrxC,UACdA,EAASo6E,aACTA,EAAY0C,iBACZA,EAAgBzC,aAChBA,EAAY0C,aACZA,QACY,IAAVr6F,EAAmB,GAAKA,EAC5B,MAAMuuD,EAASjnF,KACf,IAAKinF,EAAO3gF,OAAOohH,KAAM,OACzBzgC,EAAO3rD,KAAK,iBACZ,MAAM8rD,OACJA,EAAM+pC,eACNA,EAAcD,eACdA,EAAc9I,SACdA,EAAQ9hH,OACRA,GACE2gF,EAGJ,GAFAA,EAAOkqC,gBAAiB,EACxBlqC,EAAOiqC,gBAAiB,EACpBjqC,EAAOwhC,SAAWniH,EAAOmiH,QAAQhnD,QAanC,OAZI4lB,IACG/gF,EAAOsjH,gBAAuC,IAArB3iC,EAAO0kC,UAE1BrlH,EAAOsjH,gBAAkB3iC,EAAO0kC,UAAYrlH,EAAO6gH,cAC5DlgC,EAAOI,QAAQJ,EAAOwhC,QAAQrhC,OAAO9pF,OAAS2pF,EAAO0kC,UAAW,GAAG,GAAO,GACjE1kC,EAAO0kC,YAAc1kC,EAAO2hC,SAAStrH,OAAS,GACvD2pF,EAAOI,QAAQJ,EAAOwhC,QAAQuC,aAAc,GAAG,GAAO,GAJtD/jC,EAAOI,QAAQJ,EAAOwhC,QAAQrhC,OAAO9pF,OAAQ,GAAG,GAAO,IAO3D2pF,EAAOkqC,eAAiBA,EACxBlqC,EAAOiqC,eAAiBA,OACxBjqC,EAAO3rD,KAAK,WAGd,MAAM6rF,EAAyC,SAAzB7gH,EAAO6gH,cAA2BlgC,EAAOmgC,uBAAyBtgH,KAAKsX,KAAKlW,WAAW5B,EAAO6gH,cAAe,KACnI,IAAIuL,EAAepsH,EAAOosH,cAAgBvL,EACtCuL,EAAepsH,EAAOokH,gBAAmB,IAC3CgI,GAAgBpsH,EAAOokH,eAAiBgI,EAAepsH,EAAOokH,gBAEhEzjC,EAAOyrC,aAAeA,EACtB,MAAMM,EAAuB,GACvBC,EAAsB,GAC5B,IAAI5pD,EAAc4d,EAAO5d,iBACO,IAArBypD,EACTA,EAAmB7rC,EAAO0rC,cAAc1rC,EAAOG,OAAOjlF,QAAOL,GAAMA,EAAGkE,UAAUwF,SAASlF,EAAOuoH,oBAAmB,IAEnHxlD,EAAcypD,EAEhB,MAAMI,EAAuB,SAAdl9E,IAAyBA,EAClCm9E,EAAuB,SAAdn9E,IAAyBA,EACxC,IAAIo9E,EAAkB,EAClBC,EAAiB,EAErB,GAAIP,EAAmBJ,EAAc,CACnCU,EAAkBtsH,KAAK+B,IAAI6pH,EAAeI,EAAkBxsH,EAAOokH,gBACnE,IAAK,IAAI5nH,EAAI,EAAGA,EAAI4vH,EAAeI,EAAkBhwH,GAAK,EAAG,CAC3D,MAAM2E,EAAQ3E,EAAIgE,KAAKoX,MAAMpb,EAAIskF,EAAO9pF,QAAU8pF,EAAO9pF,OACzD01H,EAAqBhxH,KAAKolF,EAAO9pF,OAASmK,EAAQ,EACpD,CACF,MAAO,GAAIqrH,EAAyC7rC,EAAOG,OAAO9pF,OAAwB,EAAfo1H,EAAkB,CAC3FW,EAAiBvsH,KAAK+B,IAAIiqH,GAAoB7rC,EAAOG,OAAO9pF,OAAwB,EAAfo1H,GAAmBpsH,EAAOokH,gBAC/F,IAAK,IAAI5nH,EAAI,EAAGA,EAAIuwH,EAAgBvwH,GAAK,EAAG,CAC1C,MAAM2E,EAAQ3E,EAAIgE,KAAKoX,MAAMpb,EAAIskF,EAAO9pF,QAAU8pF,EAAO9pF,OACzD21H,EAAoBjxH,KAAKyF,EAC3B,CACF,CAsBA,GArBI0rH,GACFH,EAAqB51H,SAAQqK,IAC3Bw/E,EAAOG,OAAO3/E,GAAO6rH,mBAAoB,EACzClL,EAAS/4G,QAAQ43E,EAAOG,OAAO3/E,IAC/Bw/E,EAAOG,OAAO3/E,GAAO6rH,mBAAoB,CAAK,IAG9CJ,GACFD,EAAoB71H,SAAQqK,IAC1Bw/E,EAAOG,OAAO3/E,GAAO6rH,mBAAoB,EACzClL,EAASz+G,OAAOs9E,EAAOG,OAAO3/E,IAC9Bw/E,EAAOG,OAAO3/E,GAAO6rH,mBAAoB,CAAK,IAGlDrsC,EAAOssC,eACsB,SAAzBjtH,EAAO6gH,eACTlgC,EAAO8gC,eAELzhH,EAAO0lH,qBACT/kC,EAAOglC,qBAEL5kC,EACF,GAAI2rC,EAAqB11H,OAAS,GAAK61H,EACrC,QAA8B,IAAnBN,EAAgC,CACzC,MAAMW,EAAwBvsC,EAAO4hC,WAAWx/C,GAE1C9E,EADoB0iB,EAAO4hC,WAAWx/C,EAAc+pD,GACzBI,EAC7BT,EACF9rC,EAAOmpC,aAAanpC,EAAO5L,UAAY9W,IAEvC0iB,EAAOI,QAAQhe,EAAc+pD,EAAiB,GAAG,GAAO,GACpDhD,IACFnpC,EAAO79C,QAAQ69C,EAAOkc,eAAiB,SAAW,WAAa5+B,EAC/D0iB,EAAOwsC,gBAAgB1+C,iBAAmBkS,EAAO5L,WAGvD,MACM+0C,IACFnpC,EAAOuqC,YAAYqB,EAAgB,GAAG,GAAO,GAC7C5rC,EAAOwsC,gBAAgB1+C,iBAAmBkS,EAAO5L,gBAGhD,GAAI43C,EAAoB31H,OAAS,GAAK41H,EAC3C,QAA8B,IAAnBL,EAAgC,CACzC,MAAMW,EAAwBvsC,EAAO4hC,WAAWx/C,GAE1C9E,EADoB0iB,EAAO4hC,WAAWx/C,EAAcgqD,GACzBG,EAC7BT,EACF9rC,EAAOmpC,aAAanpC,EAAO5L,UAAY9W,IAEvC0iB,EAAOI,QAAQhe,EAAcgqD,EAAgB,GAAG,GAAO,GACnDjD,IACFnpC,EAAO79C,QAAQ69C,EAAOkc,eAAiB,SAAW,WAAa5+B,EAC/D0iB,EAAOwsC,gBAAgB1+C,iBAAmBkS,EAAO5L,WAGvD,MACE4L,EAAOuqC,YAAYqB,EAAgB,GAAG,GAAO,GAMnD,GAFA5rC,EAAOkqC,eAAiBA,EACxBlqC,EAAOiqC,eAAiBA,EACpBjqC,EAAOysC,YAAczsC,EAAOysC,WAAWC,UAAYtD,EAAc,CACnE,MAAMuD,EAAa,CACjBf,iBACA78E,YACAo6E,eACA0C,mBACAzC,cAAc,GAEZpvH,MAAMc,QAAQklF,EAAOysC,WAAWC,SAClC1sC,EAAOysC,WAAWC,QAAQv2H,SAAQ2I,KAC3BA,EAAEqmE,WAAarmE,EAAEO,OAAOohH,MAAM3hH,EAAE+rH,QAAQ,IACxC8B,EACHvsC,QAASthF,EAAEO,OAAO6gH,gBAAkB7gH,EAAO6gH,eAAgB9/B,GAC3D,IAEKJ,EAAOysC,WAAWC,mBAAmB1sC,EAAOnqF,aAAemqF,EAAOysC,WAAWC,QAAQrtH,OAAOohH,MACrGzgC,EAAOysC,WAAWC,QAAQ7B,QAAQ,IAC7B8B,EACHvsC,QAASJ,EAAOysC,WAAWC,QAAQrtH,OAAO6gH,gBAAkB7gH,EAAO6gH,eAAgB9/B,GAGzF,CACAJ,EAAO3rD,KAAK,UACd,EA4BEu4F,YA1BF,WACE,MAAM5sC,EAASjnF,MACTsG,OACJA,EAAM8hH,SACNA,GACEnhC,EACJ,IAAK3gF,EAAOohH,MAAQzgC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAAS,OACrEwlB,EAAOssC,eACP,MAAMO,EAAiB,GACvB7sC,EAAOG,OAAOhqF,SAAQ8nH,IACpB,MAAMz9G,OAA4C,IAA7By9G,EAAQ6O,iBAAqF,EAAlD7O,EAAQr7G,aAAa,2BAAiCq7G,EAAQ6O,iBAC9HD,EAAersH,GAASy9G,CAAO,IAEjCj+B,EAAOG,OAAOhqF,SAAQ8nH,IACpBA,EAAQx1G,gBAAgB,0BAA0B,IAEpDokH,EAAe12H,SAAQ8nH,IACrBkD,EAASz+G,OAAOu7G,EAAQ,IAE1Bj+B,EAAOssC,eACPtsC,EAAOI,QAAQJ,EAAO0gC,UAAW,EACnC,GA6DA,SAAS55B,GAAa9gF,GACpB,MAAMg6E,EAASjnF,KACTV,EAAWF,KACX2B,EAASF,KACT+Q,EAAOq1E,EAAOwsC,gBACpB7hH,EAAKoiH,QAAQhyH,KAAKiL,GAClB,MAAM3G,OACJA,EAAM8iC,QACNA,EAAOq4B,QACPA,GACEwlB,EACJ,IAAKxlB,EAAS,OACd,IAAKn7D,EAAO2tH,eAAuC,UAAtBhnH,EAAMinH,YAAyB,OAC5D,GAAIjtC,EAAOvgF,WAAaJ,EAAOqqH,+BAC7B,QAEG1pC,EAAOvgF,WAAaJ,EAAOujH,SAAWvjH,EAAOohH,MAChDzgC,EAAO6qC,UAET,IAAI5oH,EAAI+D,EACJ/D,EAAEirH,gBAAejrH,EAAIA,EAAEirH,eAC3B,IAAIj2F,EAAWh1B,EAAEjM,OACjB,GAAiC,YAA7BqJ,EAAO8tH,oBACJntC,EAAO29B,UAAUp5G,SAAS0yB,GAAW,OAE5C,GAAI,UAAWh1B,GAAiB,IAAZA,EAAE8gC,MAAa,OACnC,GAAI,WAAY9gC,GAAKA,EAAEgkE,OAAS,EAAG,OACnC,GAAIt7D,EAAK+9B,WAAa/9B,EAAKq0B,QAAS,OAGpC,MAAMouF,IAAyB/tH,EAAOguH,gBAA4C,KAA1BhuH,EAAOguH,eAEzDC,EAAYtnH,EAAMunH,aAAevnH,EAAMunH,eAAiBvnH,EAAMg+B,KAChEopF,GAAwBnrH,EAAEjM,QAAUiM,EAAEjM,OAAOkoH,YAAcoP,IAC7Dr2F,EAAWq2F,EAAU,IAEvB,MAAME,EAAoBnuH,EAAOmuH,kBAAoBnuH,EAAOmuH,kBAAqB,IAAGnuH,EAAOguH,iBACrFI,KAAoBxrH,EAAEjM,SAAUiM,EAAEjM,OAAOkoH,YAG/C,GAAI7+G,EAAOquH,YAAcD,EAvD3B,SAAwBpyH,EAAUyc,GAahC,YAZa,IAATA,IACFA,EAAO/e,MAET,SAAS40H,EAAc9yH,GACrB,IAAKA,GAAMA,IAAO1C,MAAiB0C,IAAOjB,KAAa,OAAO,KAC1DiB,EAAG+yH,eAAc/yH,EAAKA,EAAG+yH,cAC7B,MAAMzpH,EAAQtJ,EAAGkI,QAAQ1H,GACzB,OAAK8I,GAAUtJ,EAAGgzH,YAGX1pH,GAASwpH,EAAc9yH,EAAGgzH,cAAcj2H,MAFtC,IAGX,CACO+1H,CAAc71G,EACvB,CAyC4Cg2G,CAAeN,EAAmBv2F,GAAYA,EAASl0B,QAAQyqH,IAEvG,YADAxtC,EAAO+tC,YAAa,GAGtB,GAAI1uH,EAAOuqE,eACJ3yC,EAASl0B,QAAQ1D,EAAOuqE,cAAe,OAE9CznC,EAAQ6rF,SAAW/rH,EAAEmgC,MACrBD,EAAQ8rF,SAAWhsH,EAAEogC,MACrB,MAAM6rF,EAAS/rF,EAAQ6rF,SACjBG,EAAShsF,EAAQ8rF,SAIjBG,EAAqB/uH,EAAO+uH,oBAAsB/uH,EAAOgvH,sBACzDC,EAAqBjvH,EAAOivH,oBAAsBjvH,EAAOkvH,sBAC/D,GAAIH,IAAuBF,GAAUI,GAAsBJ,GAAUp0H,EAAOsR,WAAakjH,GAAqB,CAC5G,GAA2B,YAAvBF,EAGF,OAFApoH,EAAMg8B,gBAIV,CACAlsC,OAAOsJ,OAAOuL,EAAM,CAClB+9B,WAAW,EACX1J,SAAS,EACTwvF,qBAAqB,EACrB/uF,iBAAap9B,EACbosH,iBAAapsH,IAEf8/B,EAAQ+rF,OAASA,EACjB/rF,EAAQgsF,OAASA,EACjBxjH,EAAKm+B,eAAiB1d,KACtB40D,EAAO+tC,YAAa,EACpB/tC,EAAO2gC,aACP3gC,EAAO0uC,oBAAiBrsH,EACpBhD,EAAOmkF,UAAY,IAAG74E,EAAKgkH,oBAAqB,GACpD,IAAI3sF,GAAiB,EACjB/K,EAAS9xB,QAAQwF,EAAKikH,qBACxB5sF,GAAiB,EACS,WAAtB/K,EAASrgC,WACX+T,EAAK+9B,WAAY,IAGjBrwC,EAAS3B,eAAiB2B,EAAS3B,cAAcyO,QAAQwF,EAAKikH,oBAAsBv2H,EAAS3B,gBAAkBugC,GACjH5+B,EAAS3B,cAAcC,OAEzB,MAAMk4H,EAAuB7sF,GAAkBg+C,EAAOoc,gBAAkB/8F,EAAOyvH,0BAC1EzvH,EAAO0vH,gCAAiCF,GAA0B53F,EAAS20D,mBAC9E3pF,EAAE+/B,iBAEA3iC,EAAO2sG,UAAY3sG,EAAO2sG,SAASxxC,SAAWwlB,EAAOgsB,UAAYhsB,EAAOvgF,YAAcJ,EAAOujH,SAC/F5iC,EAAOgsB,SAASllB,eAElB9G,EAAO3rD,KAAK,aAAcpyB,EAC5B,CAEA,SAAS+kF,GAAYhhF,GACnB,MAAM3N,EAAWF,KACX6nF,EAASjnF,KACT4R,EAAOq1E,EAAOwsC,iBACdntH,OACJA,EAAM8iC,QACNA,EACAk/E,aAAcnnF,EAAGsgC,QACjBA,GACEwlB,EACJ,IAAKxlB,EAAS,OACd,IAAKn7D,EAAO2tH,eAAuC,UAAtBhnH,EAAMinH,YAAyB,OAC5D,IAAIhrH,EAAI+D,EAER,GADI/D,EAAEirH,gBAAejrH,EAAIA,EAAEirH,gBACtBviH,EAAK+9B,UAIR,YAHI/9B,EAAK8jH,aAAe9jH,EAAK80B,aAC3BugD,EAAO3rD,KAAK,oBAAqBpyB,IAIrC,MAAM+sH,EAAerkH,EAAKoiH,QAAQkC,WAAUC,GAAYA,EAASC,YAAcltH,EAAEktH,YAC7EH,GAAgB,IAAGrkH,EAAKoiH,QAAQiC,GAAgB/sH,GACpD,MAAMmtH,EAAczkH,EAAKoiH,QAAQ12H,OAAS,EAAIsU,EAAKoiH,QAAQ,GAAK9qH,EAC1DmgC,EAAQgtF,EAAYhtF,MACpBC,EAAQ+sF,EAAY/sF,MAC1B,GAAIpgC,EAAEotH,wBAGJ,OAFAltF,EAAQ+rF,OAAS9rF,OACjBD,EAAQgsF,OAAS9rF,GAGnB,IAAK29C,EAAOoc,eAeV,OAdKn6F,EAAEjM,OAAOmP,QAAQwF,EAAKikH,qBACzB5uC,EAAO+tC,YAAa,QAElBpjH,EAAK+9B,YACP5yC,OAAOsJ,OAAO+iC,EAAS,CACrB+rF,OAAQ9rF,EACR+rF,OAAQ9rF,EACRitF,MAAOtvC,EAAO79C,QAAQ6rF,SACtBuB,MAAOvvC,EAAO79C,QAAQ8rF,SACtBD,SAAU5rF,EACV6rF,SAAU5rF,IAEZ13B,EAAKm+B,eAAiB1d,OAI1B,GAAI/rB,EAAOmwH,sBAAwBnwH,EAAOohH,KACxC,GAAIzgC,EAAO6gC,cAET,GAAIx+E,EAAQF,EAAQgsF,QAAUnuC,EAAO5L,WAAa4L,EAAO/R,gBAAkB5rC,EAAQF,EAAQgsF,QAAUnuC,EAAO5L,WAAa4L,EAAOhS,eAG9H,OAFArjE,EAAK+9B,WAAY,OACjB/9B,EAAKq0B,SAAU,QAGZ,GAAIoD,EAAQD,EAAQ+rF,QAAUluC,EAAO5L,WAAa4L,EAAO/R,gBAAkB7rC,EAAQD,EAAQ+rF,QAAUluC,EAAO5L,WAAa4L,EAAOhS,eACrI,OAGJ,GAAI31E,EAAS3B,eACPuL,EAAEjM,SAAWqC,EAAS3B,eAAiBuL,EAAEjM,OAAOmP,QAAQwF,EAAKikH,mBAG/D,OAFAjkH,EAAKq0B,SAAU,OACfghD,EAAO+tC,YAAa,GAOxB,GAHIpjH,EAAK6jH,qBACPxuC,EAAO3rD,KAAK,YAAapyB,GAEvBA,EAAEigC,eAAiBjgC,EAAEigC,cAAc7rC,OAAS,EAAG,OACnD8rC,EAAQ6rF,SAAW5rF,EACnBD,EAAQ8rF,SAAW5rF,EACnB,MAAMiwE,EAAQnwE,EAAQ6rF,SAAW7rF,EAAQ+rF,OACnC3b,EAAQpwE,EAAQ8rF,SAAW9rF,EAAQgsF,OACzC,GAAInuC,EAAO3gF,OAAOmkF,WAAa3jF,KAAK0P,KAAK+iG,GAAS,EAAIC,GAAS,GAAKvyB,EAAO3gF,OAAOmkF,UAAW,OAC7F,QAAgC,IAArB74E,EAAK80B,YAA6B,CAC3C,IAAIgwF,EACAzvC,EAAOkc,gBAAkB/5D,EAAQ8rF,WAAa9rF,EAAQgsF,QAAUnuC,EAAO6gC,cAAgB1+E,EAAQ6rF,WAAa7rF,EAAQ+rF,OACtHvjH,EAAK80B,aAAc,EAGf6yE,EAAQA,EAAQC,EAAQA,GAAS,KACnCkd,EAA4D,IAA/C5vH,KAAKyS,MAAMzS,KAAK+R,IAAI2gG,GAAQ1yG,KAAK+R,IAAI0gG,IAAgBzyG,KAAKE,GACvE4K,EAAK80B,YAAcugD,EAAOkc,eAAiBuzB,EAAapwH,EAAOowH,WAAa,GAAKA,EAAapwH,EAAOowH,WAG3G,CASA,GARI9kH,EAAK80B,aACPugD,EAAO3rD,KAAK,oBAAqBpyB,QAEH,IAArB0I,EAAK8jH,cACVtsF,EAAQ6rF,WAAa7rF,EAAQ+rF,QAAU/rF,EAAQ8rF,WAAa9rF,EAAQgsF,SACtExjH,EAAK8jH,aAAc,IAGnB9jH,EAAK80B,aAAeugD,EAAO0vC,MAAQ1vC,EAAO3gF,OAAOqwH,MAAQ1vC,EAAO3gF,OAAOqwH,KAAKl1D,SAAW7vD,EAAKoiH,QAAQ12H,OAAS,EAE/G,YADAsU,EAAK+9B,WAAY,GAGnB,IAAK/9B,EAAK8jH,YACR,OAEFzuC,EAAO+tC,YAAa,GACf1uH,EAAOujH,SAAW3gH,EAAEyI,YACvBzI,EAAE+/B,iBAEA3iC,EAAOswH,2BAA6BtwH,EAAOuwH,QAC7C3tH,EAAE8/B,kBAEJ,IAAIu7B,EAAO0iB,EAAOkc,eAAiBoW,EAAQC,EACvC1pE,EAAcm3C,EAAOkc,eAAiB/5D,EAAQ6rF,SAAW7rF,EAAQ0tF,UAAY1tF,EAAQ8rF,SAAW9rF,EAAQ2tF,UACxGzwH,EAAO0wH,iBACTzyD,EAAOz9D,KAAK+R,IAAI0rD,IAASpjC,EAAM,GAAK,GACpC2O,EAAchpC,KAAK+R,IAAIi3B,IAAgB3O,EAAM,GAAK,IAEpDiI,EAAQm7B,KAAOA,EACfA,GAAQj+D,EAAO2wH,WACX91F,IACFojC,GAAQA,EACRz0B,GAAeA,GAEjB,MAAMonF,EAAuBjwC,EAAOkwC,iBACpClwC,EAAO0uC,eAAiBpxD,EAAO,EAAI,OAAS,OAC5C0iB,EAAOkwC,iBAAmBrnF,EAAc,EAAI,OAAS,OACrD,MAAMsnF,EAASnwC,EAAO3gF,OAAOohH,OAASphH,EAAOujH,QAC7C,IAAKj4G,EAAKq0B,QAAS,CAQjB,GAPImxF,GACFnwC,EAAO6qC,QAAQ,CACb97E,UAAWixC,EAAO0uC,iBAGtB/jH,EAAKkjE,eAAiBmS,EAAOp0D,eAC7Bo0D,EAAOwlC,cAAc,GACjBxlC,EAAOvgF,UAAW,CACpB,MAAM8K,EAAM,IAAIzQ,OAAOhB,YAAY,gBAAiB,CAClD2R,SAAS,EACTC,YAAY,IAEds1E,EAAO29B,UAAU9yG,cAAcN,EACjC,CACAI,EAAKylH,qBAAsB,GAEvB/wH,EAAOgxH,aAAyC,IAA1BrwC,EAAOiqC,iBAAqD,IAA1BjqC,EAAOkqC,gBACjElqC,EAAOswC,eAAc,GAEvBtwC,EAAO3rD,KAAK,kBAAmBpyB,EACjC,CACA,IAAIsuH,EACA5lH,EAAKq0B,SAAWixF,IAAyBjwC,EAAOkwC,kBAAoBC,GAAUtwH,KAAK+R,IAAI0rD,IAAS,IAElG0iB,EAAO6qC,QAAQ,CACb97E,UAAWixC,EAAO0uC,eAClBvF,cAAc,IAEhBoH,GAAY,GAEdvwC,EAAO3rD,KAAK,aAAcpyB,GAC1B0I,EAAKq0B,SAAU,EACfr0B,EAAKmjE,iBAAmBxQ,EAAO3yD,EAAKkjE,eACpC,IAAI2iD,GAAsB,EACtBC,EAAkBpxH,EAAOoxH,gBAiD7B,GAhDIpxH,EAAOmwH,sBACTiB,EAAkB,GAEhBnzD,EAAO,GACL6yD,IAAWI,GAAa5lH,EAAKmjE,kBAAoBzuE,EAAOsjH,eAAiB3iC,EAAOhS,eAAiBgS,EAAOziE,KAAO,EAAIyiE,EAAOhS,iBAC5HgS,EAAO6qC,QAAQ,CACb97E,UAAW,OACXo6E,cAAc,EACd0C,iBAAkB,IAGlBlhH,EAAKmjE,iBAAmBkS,EAAOhS,iBACjCwiD,GAAsB,EAClBnxH,EAAOqxH,aACT/lH,EAAKmjE,iBAAmBkS,EAAOhS,eAAiB,IAAMgS,EAAOhS,eAAiBrjE,EAAKkjE,eAAiBvQ,IAASmzD,KAGxGnzD,EAAO,IACZ6yD,IAAWI,GAAa5lH,EAAKmjE,kBAAoBzuE,EAAOsjH,eAAiB3iC,EAAO/R,eAAiB+R,EAAOziE,KAAO,EAAIyiE,EAAO/R,iBAC5H+R,EAAO6qC,QAAQ,CACb97E,UAAW,OACXo6E,cAAc,EACd0C,iBAAkB7rC,EAAOG,OAAO9pF,QAAmC,SAAzBgJ,EAAO6gH,cAA2BlgC,EAAOmgC,uBAAyBtgH,KAAKsX,KAAKlW,WAAW5B,EAAO6gH,cAAe,QAGvJv1G,EAAKmjE,iBAAmBkS,EAAO/R,iBACjCuiD,GAAsB,EAClBnxH,EAAOqxH,aACT/lH,EAAKmjE,iBAAmBkS,EAAO/R,eAAiB,GAAK+R,EAAO/R,eAAiBtjE,EAAKkjE,eAAiBvQ,IAASmzD,KAI9GD,IACFvuH,EAAEotH,yBAA0B,IAIzBrvC,EAAOiqC,gBAA4C,SAA1BjqC,EAAO0uC,gBAA6B/jH,EAAKmjE,iBAAmBnjE,EAAKkjE,iBAC7FljE,EAAKmjE,iBAAmBnjE,EAAKkjE,iBAE1BmS,EAAOkqC,gBAA4C,SAA1BlqC,EAAO0uC,gBAA6B/jH,EAAKmjE,iBAAmBnjE,EAAKkjE,iBAC7FljE,EAAKmjE,iBAAmBnjE,EAAKkjE,gBAE1BmS,EAAOkqC,gBAAmBlqC,EAAOiqC,iBACpCt/G,EAAKmjE,iBAAmBnjE,EAAKkjE,gBAI3BxuE,EAAOmkF,UAAY,EAAG,CACxB,KAAI3jF,KAAK+R,IAAI0rD,GAAQj+D,EAAOmkF,WAAa74E,EAAKgkH,oBAW5C,YADAhkH,EAAKmjE,iBAAmBnjE,EAAKkjE,gBAT7B,IAAKljE,EAAKgkH,mBAMR,OALAhkH,EAAKgkH,oBAAqB,EAC1BxsF,EAAQ+rF,OAAS/rF,EAAQ6rF,SACzB7rF,EAAQgsF,OAAShsF,EAAQ8rF,SACzBtjH,EAAKmjE,iBAAmBnjE,EAAKkjE,oBAC7B1rC,EAAQm7B,KAAO0iB,EAAOkc,eAAiB/5D,EAAQ6rF,SAAW7rF,EAAQ+rF,OAAS/rF,EAAQ8rF,SAAW9rF,EAAQgsF,OAO5G,CACK9uH,EAAOsxH,eAAgBtxH,EAAOujH,WAG/BvjH,EAAO2sG,UAAY3sG,EAAO2sG,SAASxxC,SAAWwlB,EAAOgsB,UAAY3sG,EAAO0lH,uBAC1E/kC,EAAOooC,oBACPpoC,EAAOynC,uBAELpoH,EAAO2sG,UAAY3sG,EAAO2sG,SAASxxC,SAAWwlB,EAAOgsB,UACvDhsB,EAAOgsB,SAAShlB,cAGlBhH,EAAOymC,eAAe97G,EAAKmjE,kBAE3BkS,EAAOmpC,aAAax+G,EAAKmjE,kBAC3B,CAEA,SAASmZ,GAAWjhF,GAClB,MAAMg6E,EAASjnF,KACT4R,EAAOq1E,EAAOwsC,gBACdwC,EAAerkH,EAAKoiH,QAAQkC,WAAUC,GAAYA,EAASC,YAAcnpH,EAAMmpH,YAIrF,GAHIH,GAAgB,GAClBrkH,EAAKoiH,QAAQxmH,OAAOyoH,EAAc,GAEhC,CAAC,gBAAiB,aAAc,eAAgB,eAAezkG,SAASvkB,EAAMu8B,MAAO,CAEvF,KADgB,CAAC,gBAAiB,eAAehY,SAASvkB,EAAMu8B,QAAUy9C,EAAO4+B,QAAQK,UAAYj/B,EAAO4+B,QAAQQ,YAElH,MAEJ,CACA,MAAM//G,OACJA,EAAM8iC,QACNA,EACAk/E,aAAcnnF,EAAG0nF,WACjBA,EAAUpnD,QACVA,GACEwlB,EACJ,IAAKxlB,EAAS,OACd,IAAKn7D,EAAO2tH,eAAuC,UAAtBhnH,EAAMinH,YAAyB,OAC5D,IAAIhrH,EAAI+D,EAMR,GALI/D,EAAEirH,gBAAejrH,EAAIA,EAAEirH,eACvBviH,EAAK6jH,qBACPxuC,EAAO3rD,KAAK,WAAYpyB,GAE1B0I,EAAK6jH,qBAAsB,GACtB7jH,EAAK+9B,UAMR,OALI/9B,EAAKq0B,SAAW3/B,EAAOgxH,YACzBrwC,EAAOswC,eAAc,GAEvB3lH,EAAKq0B,SAAU,OACfr0B,EAAK8jH,aAAc,GAIjBpvH,EAAOgxH,YAAc1lH,EAAKq0B,SAAWr0B,EAAK+9B,aAAwC,IAA1Bs3C,EAAOiqC,iBAAqD,IAA1BjqC,EAAOkqC,iBACnGlqC,EAAOswC,eAAc,GAIvB,MAAMxxB,EAAe1zE,KACfyiB,EAAWixD,EAAen0F,EAAKm+B,eAGrC,GAAIk3C,EAAO+tC,WAAY,CACrB,MAAM6C,EAAW3uH,EAAE+hC,MAAQ/hC,EAAEsrH,cAAgBtrH,EAAEsrH,eAC/CvtC,EAAO6oC,mBAAmB+H,GAAYA,EAAS,IAAM3uH,EAAEjM,QACvDgqF,EAAO3rD,KAAK,YAAapyB,GACrB4rC,EAAW,KAAOixD,EAAen0F,EAAKkmH,cAAgB,KACxD7wC,EAAO3rD,KAAK,wBAAyBpyB,EAEzC,CAKA,GAJA0I,EAAKkmH,cAAgBzlG,KACrBH,IAAS,KACF+0D,EAAO7a,YAAW6a,EAAO+tC,YAAa,EAAI,KAE5CpjH,EAAK+9B,YAAc/9B,EAAKq0B,UAAYghD,EAAO0uC,gBAAmC,IAAjBvsF,EAAQm7B,MAAc3yD,EAAKmjE,mBAAqBnjE,EAAKkjE,eAIrH,OAHAljE,EAAK+9B,WAAY,EACjB/9B,EAAKq0B,SAAU,OACfr0B,EAAK8jH,aAAc,GAMrB,IAAIqC,EAMJ,GATAnmH,EAAK+9B,WAAY,EACjB/9B,EAAKq0B,SAAU,EACfr0B,EAAK8jH,aAAc,EAGjBqC,EADEzxH,EAAOsxH,aACIz2F,EAAM8lD,EAAO5L,WAAa4L,EAAO5L,WAEhCzpE,EAAKmjE,iBAEjBzuE,EAAOujH,QACT,OAEF,GAAIvjH,EAAO2sG,UAAY3sG,EAAO2sG,SAASxxC,QAIrC,YAHAwlB,EAAOgsB,SAAS/kB,WAAW,CACzB6pC,eAMJ,IAAIC,EAAY,EACZ9M,EAAYjkC,EAAO6hC,gBAAgB,GACvC,IAAK,IAAIhmH,EAAI,EAAGA,EAAI+lH,EAAWvrH,OAAQwF,GAAKA,EAAIwD,EAAOqkH,mBAAqB,EAAIrkH,EAAOokH,eAAgB,CACrG,MAAM1wB,EAAYl3F,EAAIwD,EAAOqkH,mBAAqB,EAAI,EAAIrkH,EAAOokH,oBACxB,IAA9B7B,EAAW/lH,EAAIk3F,GACpB+9B,GAAclP,EAAW/lH,IAAMi1H,EAAalP,EAAW/lH,EAAIk3F,KAC7Dg+B,EAAYl1H,EACZooH,EAAYrC,EAAW/lH,EAAIk3F,GAAa6uB,EAAW/lH,IAE5Ci1H,GAAclP,EAAW/lH,KAClCk1H,EAAYl1H,EACZooH,EAAYrC,EAAWA,EAAWvrH,OAAS,GAAKurH,EAAWA,EAAWvrH,OAAS,GAEnF,CACA,IAAI26H,EAAmB,KACnBC,EAAkB,KAClB5xH,EAAOmhH,SACLxgC,EAAO4mC,YACTqK,EAAkB5xH,EAAOmiH,SAAWniH,EAAOmiH,QAAQhnD,SAAWwlB,EAAOwhC,QAAUxhC,EAAOwhC,QAAQrhC,OAAO9pF,OAAS,EAAI2pF,EAAOG,OAAO9pF,OAAS,EAChI2pF,EAAO6mC,QAChBmK,EAAmB,IAIvB,MAAM51G,GAAS01G,EAAalP,EAAWmP,IAAc9M,EAC/ClxB,EAAYg+B,EAAY1xH,EAAOqkH,mBAAqB,EAAI,EAAIrkH,EAAOokH,eACzE,GAAI51E,EAAWxuC,EAAO6xH,aAAc,CAElC,IAAK7xH,EAAO8xH,WAEV,YADAnxC,EAAOI,QAAQJ,EAAO5d,aAGM,SAA1B4d,EAAO0uC,iBACLtzG,GAAS/b,EAAO+xH,gBAAiBpxC,EAAOI,QAAQ/gF,EAAOmhH,QAAUxgC,EAAO6mC,MAAQmK,EAAmBD,EAAYh+B,GAAgB/S,EAAOI,QAAQ2wC,IAEtH,SAA1B/wC,EAAO0uC,iBACLtzG,EAAQ,EAAI/b,EAAO+xH,gBACrBpxC,EAAOI,QAAQ2wC,EAAYh+B,GACE,OAApBk+B,GAA4B71G,EAAQ,GAAKvb,KAAK+R,IAAIwJ,GAAS/b,EAAO+xH,gBAC3EpxC,EAAOI,QAAQ6wC,GAEfjxC,EAAOI,QAAQ2wC,GAGrB,KAAO,CAEL,IAAK1xH,EAAOgyH,YAEV,YADArxC,EAAOI,QAAQJ,EAAO5d,aAGE4d,EAAOsxC,aAAervH,EAAEjM,SAAWgqF,EAAOsxC,WAAWC,QAAUtvH,EAAEjM,SAAWgqF,EAAOsxC,WAAWE,QAQ7GvvH,EAAEjM,SAAWgqF,EAAOsxC,WAAWC,OACxCvxC,EAAOI,QAAQ2wC,EAAYh+B,GAE3B/S,EAAOI,QAAQ2wC,IATe,SAA1B/wC,EAAO0uC,gBACT1uC,EAAOI,QAA6B,OAArB4wC,EAA4BA,EAAmBD,EAAYh+B,GAE9C,SAA1B/S,EAAO0uC,gBACT1uC,EAAOI,QAA4B,OAApB6wC,EAA2BA,EAAkBF,GAOlE,CACF,CAEA,SAAS9gD,KACP,MAAM+P,EAASjnF,MACTsG,OACJA,EAAMxE,GACNA,GACEmlF,EACJ,GAAInlF,GAAyB,IAAnBA,EAAGsN,YAAmB,OAG5B9I,EAAOquE,aACTsS,EAAO9Q,gBAIT,MAAM+6C,eACJA,EAAcC,eACdA,EAAcvI,SACdA,GACE3hC,EACEuhC,EAAYvhC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAG1DwlB,EAAOiqC,gBAAiB,EACxBjqC,EAAOkqC,gBAAiB,EACxBlqC,EAAO2gC,aACP3gC,EAAO8gC,eACP9gC,EAAOynC,sBACP,MAAMgK,EAAgBlQ,GAAaliH,EAAOohH,OACZ,SAAzBphH,EAAO6gH,eAA4B7gH,EAAO6gH,cAAgB,KAAMlgC,EAAO6mC,OAAU7mC,EAAO4mC,aAAgB5mC,EAAO3gF,OAAOsjH,gBAAmB8O,EAGxIzxC,EAAO3gF,OAAOohH,OAASc,EACzBvhC,EAAOuqC,YAAYvqC,EAAO0gC,UAAW,GAAG,GAAO,GAE/C1gC,EAAOI,QAAQJ,EAAO5d,YAAa,GAAG,GAAO,GAL/C4d,EAAOI,QAAQJ,EAAOG,OAAO9pF,OAAS,EAAG,GAAG,GAAO,GAQjD2pF,EAAO0xC,UAAY1xC,EAAO0xC,SAASC,SAAW3xC,EAAO0xC,SAASE,SAChEt4H,aAAa0mF,EAAO0xC,SAASG,eAC7B7xC,EAAO0xC,SAASG,cAAgBx4H,YAAW,KACrC2mF,EAAO0xC,UAAY1xC,EAAO0xC,SAASC,SAAW3xC,EAAO0xC,SAASE,QAChE5xC,EAAO0xC,SAASI,QAClB,GACC,MAGL9xC,EAAOkqC,eAAiBA,EACxBlqC,EAAOiqC,eAAiBA,EACpBjqC,EAAO3gF,OAAOwlH,eAAiBlD,IAAa3hC,EAAO2hC,UACrD3hC,EAAO8kC,eAEX,CAEA,SAAStrD,GAAQv3D,GACf,MAAM+9E,EAASjnF,KACVinF,EAAOxlB,UACPwlB,EAAO+tC,aACN/tC,EAAO3gF,OAAO0yH,eAAe9vH,EAAE+/B,iBAC/Bg+C,EAAO3gF,OAAO2yH,0BAA4BhyC,EAAOvgF,YACnDwC,EAAE8/B,kBACF9/B,EAAE6/B,6BAGR,CAEA,SAASmwF,KACP,MAAMjyC,EAASjnF,MACT4kH,UACJA,EAAS0D,aACTA,EAAY7mD,QACZA,GACEwlB,EACJ,IAAKxlB,EAAS,OAWd,IAAI6uD,EAVJrpC,EAAOspC,kBAAoBtpC,EAAO5L,UAC9B4L,EAAOkc,eACTlc,EAAO5L,WAAaupC,EAAU72G,WAE9Bk5E,EAAO5L,WAAaupC,EAAU/2G,UAGP,IAArBo5E,EAAO5L,YAAiB4L,EAAO5L,UAAY,GAC/C4L,EAAOooC,oBACPpoC,EAAOynC,sBAEP,MAAMd,EAAiB3mC,EAAO/R,eAAiB+R,EAAOhS,eAEpDq7C,EADqB,IAAnB1C,EACY,GAEC3mC,EAAO5L,UAAY4L,EAAOhS,gBAAkB24C,EAEzD0C,IAAgBrpC,EAAOpgF,UACzBogF,EAAOymC,eAAepF,GAAgBrhC,EAAO5L,UAAY4L,EAAO5L,WAElE4L,EAAO3rD,KAAK,eAAgB2rD,EAAO5L,WAAW,EAChD,CAEA,SAAS89C,GAAOjwH,GACd,MAAM+9E,EAASjnF,KACf4mH,GAAqB3/B,EAAQ/9E,EAAEjM,QAC3BgqF,EAAO3gF,OAAOujH,SAA2C,SAAhC5iC,EAAO3gF,OAAO6gH,gBAA6BlgC,EAAO3gF,OAAO86E,YAGtF6F,EAAOv1B,QACT,CAEA,IAAI0nE,IAAqB,EACzB,SAASC,KAAqB,CAC9B,MAAMrsH,GAASA,CAACi6E,EAAQ/rD,KACtB,MAAM57B,EAAWF,MACXkH,OACJA,EAAMxE,GACNA,EAAE8iH,UACFA,EAAS/rF,OACTA,GACEouD,EACEl6E,IAAYzG,EAAOuwH,OACnByC,EAAuB,OAAXp+F,EAAkB,mBAAqB,sBACnDq+F,EAAer+F,EAGrBp5B,EAAGw3H,GAAW,cAAeryC,EAAO8G,aAAc,CAChDvlD,SAAS,IAEXlpC,EAASg6H,GAAW,cAAeryC,EAAOgH,YAAa,CACrDzlD,SAAS,EACTz7B,YAEFzN,EAASg6H,GAAW,YAAaryC,EAAOiH,WAAY,CAClD1lD,SAAS,IAEXlpC,EAASg6H,GAAW,gBAAiBryC,EAAOiH,WAAY,CACtD1lD,SAAS,IAEXlpC,EAASg6H,GAAW,aAAcryC,EAAOiH,WAAY,CACnD1lD,SAAS,IAEXlpC,EAASg6H,GAAW,eAAgBryC,EAAOiH,WAAY,CACrD1lD,SAAS,IAEXlpC,EAASg6H,GAAW,cAAeryC,EAAOiH,WAAY,CACpD1lD,SAAS,KAIPliC,EAAO0yH,eAAiB1yH,EAAO2yH,2BACjCn3H,EAAGw3H,GAAW,QAASryC,EAAOxmB,SAAS,GAErCn6D,EAAOujH,SACTjF,EAAU0U,GAAW,SAAUryC,EAAOiyC,UAIpC5yH,EAAOkzH,qBACTvyC,EAAOsyC,GAAc1gG,EAAOxC,KAAOwC,EAAOC,QAAU,0CAA4C,wBAAyBo+C,IAAU,GAEnI+P,EAAOsyC,GAAc,iBAAkBriD,IAAU,GAInDp1E,EAAGw3H,GAAW,OAAQryC,EAAOkyC,OAAQ,CACnCpsH,SAAS,GACT,EA+BJ,MAAM0sH,GAAgBA,CAACxyC,EAAQ3gF,IACtB2gF,EAAO/S,MAAQ5tE,EAAO4tE,MAAQ5tE,EAAO4tE,KAAKmzC,KAAO,EA8G1D,IAAI1yC,GAAc,CAChBwB,cA7GF,WACE,MAAM8Q,EAASjnF,MACT2nH,UACJA,EAAS9pG,YACTA,EAAWvX,OACXA,EAAMxE,GACNA,GACEmlF,EACEtS,EAAcruE,EAAOquE,YAC3B,IAAKA,GAAeA,GAAmD,IAApC53E,OAAOI,KAAKw3E,GAAar3E,OAAc,OAG1E,MAAMm5E,EAAawQ,EAAOyyC,cAAc/kD,EAAasS,EAAO3gF,OAAOqzH,gBAAiB1yC,EAAOnlF,IAC3F,IAAK20E,GAAcwQ,EAAO2yC,oBAAsBnjD,EAAY,OAC5D,MACMojD,GADuBpjD,KAAc9B,EAAcA,EAAY8B,QAAcntE,IAClC29E,EAAOjrD,eAClD89F,EAAcL,GAAcxyC,EAAQ3gF,GACpCyzH,EAAaN,GAAcxyC,EAAQ4yC,GACnCG,EAAa1zH,EAAOm7D,QACtBq4D,IAAgBC,GAClBj4H,EAAGkE,UAAU6E,OAAQ,GAAEvE,EAAO6lH,6BAA+B,GAAE7lH,EAAO6lH,qCACtEllC,EAAOgzC,yBACGH,GAAeC,IACzBj4H,EAAGkE,UAAUC,IAAK,GAAEK,EAAO6lH,+BACvB0N,EAAiB3lD,KAAKgmD,MAAuC,WAA/BL,EAAiB3lD,KAAKgmD,OAAsBL,EAAiB3lD,KAAKgmD,MAA6B,WAArB5zH,EAAO4tE,KAAKgmD,OACtHp4H,EAAGkE,UAAUC,IAAK,GAAEK,EAAO6lH,qCAE7BllC,EAAOgzC,wBAIT,CAAC,aAAc,aAAc,aAAa78H,SAAQ4K,IAChD,QAAsC,IAA3B6xH,EAAiB7xH,GAAuB,OACnD,MAAMmyH,EAAmB7zH,EAAO0B,IAAS1B,EAAO0B,GAAMy5D,QAChD24D,EAAkBP,EAAiB7xH,IAAS6xH,EAAiB7xH,GAAMy5D,QACrE04D,IAAqBC,GACvBnzC,EAAOj/E,GAAMy0E,WAEV09C,GAAoBC,GACvBnzC,EAAOj/E,GAAMw0E,QACf,IAEF,MAAM69C,EAAmBR,EAAiB7jF,WAAa6jF,EAAiB7jF,YAAc1vC,EAAO0vC,UACvFskF,EAAch0H,EAAOohH,OAASmS,EAAiB1S,gBAAkB7gH,EAAO6gH,eAAiBkT,GAC3FA,GAAoBx8G,GACtBopE,EAAOszC,kBAETv9H,GAAOiqF,EAAO3gF,OAAQuzH,GACtB,MAAMW,EAAYvzC,EAAO3gF,OAAOm7D,QAChC1kE,OAAOsJ,OAAO4gF,EAAQ,CACpBoc,eAAgBpc,EAAO3gF,OAAO+8F,eAC9B6tB,eAAgBjqC,EAAO3gF,OAAO4qH,eAC9BC,eAAgBlqC,EAAO3gF,OAAO6qH,iBAE5B6I,IAAeQ,EACjBvzC,EAAOxK,WACGu9C,GAAcQ,GACxBvzC,EAAOzK,SAETyK,EAAO2yC,kBAAoBnjD,EAC3BwQ,EAAO3rD,KAAK,oBAAqBu+F,GAC7BS,GAAez8G,IACjBopE,EAAO4sC,cACP5sC,EAAO2rC,WAAWjL,GAClB1gC,EAAO8gC,gBAET9gC,EAAO3rD,KAAK,aAAcu+F,EAC5B,EA2CEH,cAzCF,SAAuB/kD,EAAa51D,EAAMgsD,GAIxC,QAHa,IAAThsD,IACFA,EAAO,WAEJ41D,GAAwB,cAAT51D,IAAyBgsD,EAAa,OAC1D,IAAI0L,GAAa,EACjB,MAAM11E,EAASF,KACTqwF,EAAyB,WAATnyE,EAAoBhe,EAAO0K,YAAcs/D,EAAYomB,aACrEspC,EAAS19H,OAAOI,KAAKw3E,GAAa7uE,KAAI40H,IAC1C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMh4H,QAAQ,KAAY,CACzD,MAAMi4H,EAAWzyH,WAAWwyH,EAAMnrF,OAAO,IAEzC,MAAO,CACL9tC,MAFYyvF,EAAgBypC,EAG5BD,QAEJ,CACA,MAAO,CACLj5H,MAAOi5H,EACPA,QACD,IAEHD,EAAOhhE,MAAK,CAAC12D,EAAGoW,IAAM+W,SAASntB,EAAEtB,MAAO,IAAMyuB,SAAS/W,EAAE1X,MAAO,MAChE,IAAK,IAAIqB,EAAI,EAAGA,EAAI23H,EAAOn9H,OAAQwF,GAAK,EAAG,CACzC,MAAM43H,MACJA,EAAKj5H,MACLA,GACEg5H,EAAO33H,GACE,WAATic,EACEhe,EAAOP,WAAY,eAAciB,QAAY2K,UAC/CqqE,EAAaikD,GAENj5H,GAASspE,EAAY88C,cAC9BpxC,EAAaikD,EAEjB,CACA,OAAOjkD,GAAc,KACvB,GAsGA,IAIIx3C,GAAW,CACbI,MAAM,EACN2W,UAAW,aACXghF,gBAAgB,EAChB5C,kBAAmB,UACnB9C,aAAc,EACd3M,MAAO,IACPkF,SAAS,EACT2P,sBAAsB,EACtBoB,gBAAgB,EAChB/D,QAAQ,EACRgE,gBAAgB,EAChBp5D,SAAS,EACTo0D,kBAAmB,wDAEnBv9F,MAAO,KACP0B,OAAQ,KAER22F,gCAAgC,EAEhClxH,UAAW,KACX8yB,IAAK,KAEL8iG,oBAAoB,EACpBE,mBAAoB,GAEpBn0C,YAAY,EAEZwpC,gBAAgB,EAEhBuF,kBAAkB,EAElB/gE,OAAQ,QAIRulB,iBAAarrE,EACbqwH,gBAAiB,SAEjBtQ,aAAc,EACdlC,cAAe,EACfuD,eAAgB,EAChBC,mBAAoB,EACpBiH,oBAAoB,EACpBhI,gBAAgB,EAChBwB,sBAAsB,EACtBpC,mBAAoB,EAEpBE,kBAAmB,EAEnBwG,qBAAqB,EACrBjE,0BAA0B,EAE1BK,eAAe,EAEfvB,cAAc,EAEd0M,WAAY,EACZP,WAAY,GACZzC,eAAe,EACfqE,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdP,cAAc,EACdv0B,gBAAgB,EAChB5Y,UAAW,EACXmsC,0BAA0B,EAC1Bb,0BAA0B,EAC1BC,+BAA+B,EAC/BS,qBAAqB,EAErBqE,mBAAmB,EAEnBnD,YAAY,EACZD,gBAAiB,IAEjB1L,qBAAqB,EAErBsL,YAAY,EAEZ0B,eAAe,EACfC,0BAA0B,EAC1B/I,qBAAqB,EAErBxI,MAAM,EACNgL,aAAc,KACdb,qBAAqB,EAErBpK,QAAQ,EAER0J,gBAAgB,EAChBD,gBAAgB,EAChBrgD,aAAc,KAEd8jD,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnBsG,kBAAkB,EAClB1O,wBAAyB,GAEzBF,uBAAwB,UAExBrF,WAAY,eACZ+H,iBAAkB,sBAClB3B,kBAAmB,uBACnB4B,eAAgB,oBAChBC,eAAgB,oBAChBiM,aAAc,iBACdhU,mBAAoB,wBACpBE,oBAAqB,EAErB2I,oBAAoB,EAEpBoL,cAAc,GAGhB,SAASC,GAAmB50H,EAAQ60H,GAClC,OAAO,SAAsBt+H,QACf,IAARA,IACFA,EAAM,IAER,MAAMu+H,EAAkBr+H,OAAOI,KAAKN,GAAK,GACnCy/B,EAAez/B,EAAIu+H,GACG,iBAAjB9+F,GAA8C,OAAjBA,GAIpC,CAAC,aAAc,aAAc,aAAa55B,QAAQ04H,IAAoB,IAAiC,IAA5B90H,EAAO80H,KACpF90H,EAAO80H,GAAmB,CACxBC,MAAM,IAGJD,KAAmB90H,GAAU,YAAag2B,IAIhB,IAA5Bh2B,EAAO80H,KACT90H,EAAO80H,GAAmB,CACxB35D,SAAS,IAG0B,iBAA5Bn7D,EAAO80H,IAAmC,YAAa90H,EAAO80H,KACvE90H,EAAO80H,GAAiB35D,SAAU,GAE/Bn7D,EAAO80H,KAAkB90H,EAAO80H,GAAmB,CACtD35D,SAAS,IAEXzkE,GAAOm+H,EAAkBt+H,IAdvBG,GAAOm+H,EAAkBt+H,IATzBG,GAAOm+H,EAAkBt+H,E,CAyB/B,CAGA,MAAMy+H,GAAa,CACjB/U,iBACA70D,UACA2pB,aACArqC,WAvpDe,CACfy7E,cA/EF,SAAuBlmH,EAAU8pH,GAC/B,MAAMppC,EAASjnF,KACVinF,EAAO3gF,OAAOujH,UACjB5iC,EAAO29B,UAAUtmH,MAAM+S,mBAAsB,GAAE9K,MAC/C0gF,EAAO29B,UAAUtmH,MAAMi9H,gBAA+B,IAAbh1H,EAAkB,MAAO,IAEpE0gF,EAAO3rD,KAAK,gBAAiB/0B,EAAU8pH,EACzC,EAyEE1kC,gBAzCF,SAAyB8kC,EAAcz6E,QAChB,IAAjBy6E,IACFA,GAAe,GAEjB,MAAMxpC,EAASjnF,MACTsG,OACJA,GACE2gF,EACA3gF,EAAOujH,UACPvjH,EAAO86E,YACT6F,EAAOqlC,mBAETwE,GAAe,CACb7pC,SACAwpC,eACAz6E,YACA69C,KAAM,UAEV,EAwBEt+C,cAtBF,SAAuBk7E,EAAcz6E,QACd,IAAjBy6E,IACFA,GAAe,GAEjB,MAAMxpC,EAASjnF,MACTsG,OACJA,GACE2gF,EACJA,EAAOvgF,WAAY,EACfJ,EAAOujH,UACX5iC,EAAOwlC,cAAc,GACrBqE,GAAe,CACb7pC,SACAwpC,eACAz6E,YACA69C,KAAM,QAEV,GA0pDEq2B,SACAxC,QACA4P,WApjCe,CACfC,cAjCF,SAAuBiE,GACrB,MAAMv0C,EAASjnF,KACf,IAAKinF,EAAO3gF,OAAO2tH,eAAiBhtC,EAAO3gF,OAAOwlH,eAAiB7kC,EAAOw0C,UAAYx0C,EAAO3gF,OAAOujH,QAAS,OAC7G,MAAM/nH,EAAyC,cAApCmlF,EAAO3gF,OAAO8tH,kBAAoCntC,EAAOnlF,GAAKmlF,EAAO29B,UAC5E39B,EAAO1yB,YACT0yB,EAAOy0C,qBAAsB,GAE/B55H,EAAGxD,MAAMq9H,OAAS,OAClB75H,EAAGxD,MAAMq9H,OAASH,EAAS,WAAa,OACpCv0C,EAAO1yB,WACT9zD,uBAAsB,KACpBwmF,EAAOy0C,qBAAsB,CAAK,GAGxC,EAoBEE,gBAlBF,WACE,MAAM30C,EAASjnF,KACXinF,EAAO3gF,OAAOwlH,eAAiB7kC,EAAOw0C,UAAYx0C,EAAO3gF,OAAOujH,UAGhE5iC,EAAO1yB,YACT0yB,EAAOy0C,qBAAsB,GAE/Bz0C,EAA2C,cAApCA,EAAO3gF,OAAO8tH,kBAAoC,KAAO,aAAa91H,MAAMq9H,OAAS,GACxF10C,EAAO1yB,WACT9zD,uBAAsB,KACpBwmF,EAAOy0C,qBAAsB,CAAK,IAGxC,GAujCE1uH,OA9Xa,CACb8oC,aAzBF,WACE,MAAMmxC,EAASjnF,KACTV,EAAWF,MACXkH,OACJA,GACE2gF,EACJA,EAAO8G,aAAeA,GAAar3D,KAAKuwD,GACxCA,EAAOgH,YAAcA,GAAYv3D,KAAKuwD,GACtCA,EAAOiH,WAAaA,GAAWx3D,KAAKuwD,GAChC3gF,EAAOujH,UACT5iC,EAAOiyC,SAAWA,GAASxiG,KAAKuwD,IAElCA,EAAOxmB,QAAUA,GAAQ/pC,KAAKuwD,GAC9BA,EAAOkyC,OAASA,GAAOziG,KAAKuwD,GACvBmyC,KACH95H,EAAS7B,iBAAiB,aAAc47H,IACxCD,IAAqB,GAEvBpsH,GAAOi6E,EAAQ,KACjB,EAOElqB,aANF,WAEE/vD,GADehN,KACA,MACjB,GAgYE20E,eACAo3C,cAxKoB,CACpBA,cA9BF,WACE,MAAM9kC,EAASjnF,MAEby7H,SAAUI,EAASv1H,OACnBA,GACE2gF,GACE+hC,mBACJA,GACE1iH,EACJ,GAAI0iH,EAAoB,CACtB,MAAMqF,EAAiBpnC,EAAOG,OAAO9pF,OAAS,EACxCw+H,EAAqB70C,EAAO4hC,WAAWwF,GAAkBpnC,EAAO6hC,gBAAgBuF,GAAuC,EAArBrF,EACxG/hC,EAAOw0C,SAAWx0C,EAAOziE,KAAOs3G,CAClC,MACE70C,EAAOw0C,SAAsC,IAA3Bx0C,EAAO2hC,SAAStrH,QAEN,IAA1BgJ,EAAO4qH,iBACTjqC,EAAOiqC,gBAAkBjqC,EAAOw0C,WAEJ,IAA1Bn1H,EAAO6qH,iBACTlqC,EAAOkqC,gBAAkBlqC,EAAOw0C,UAE9BI,GAAaA,IAAc50C,EAAOw0C,WACpCx0C,EAAO6mC,OAAQ,GAEb+N,IAAc50C,EAAOw0C,UACvBx0C,EAAO3rD,KAAK2rD,EAAOw0C,SAAW,OAAS,SAE3C,GA0KE91H,QA3MY,CACZo2H,WA/CF,WACE,MAAM90C,EAASjnF,MACT6F,WACJA,EAAUS,OACVA,EAAM66B,IACNA,EAAGr/B,GACHA,EAAE+2B,OACFA,GACEouD,EAEE+0C,EAzBR,SAAwBxsG,EAAS8b,GAC/B,MAAM2wF,EAAgB,GAYtB,OAXAzsG,EAAQpyB,SAAQ4gE,IACM,iBAATA,EACTjhE,OAAOI,KAAK6gE,GAAM5gE,SAAQyI,IACpBm4D,EAAKn4D,IACPo2H,EAAcj6H,KAAKspC,EAASzlC,EAC9B,IAEuB,iBAATm4D,GAChBi+D,EAAcj6H,KAAKspC,EAAS0yB,EAC9B,IAEKi+D,CACT,CAWmBC,CAAe,CAAC,cAAe51H,EAAO0vC,UAAW,CAChE,YAAaixC,EAAO3gF,OAAO2sG,UAAY3sG,EAAO2sG,SAASxxC,SACtD,CACD06D,WAAc71H,EAAO86E,YACpB,CACDjgD,IAAOA,GACN,CACD+yC,KAAQ5tE,EAAO4tE,MAAQ5tE,EAAO4tE,KAAKmzC,KAAO,GACzC,CACD,cAAe/gH,EAAO4tE,MAAQ5tE,EAAO4tE,KAAKmzC,KAAO,GAA0B,WAArB/gH,EAAO4tE,KAAKgmD,MACjE,CACDphG,QAAWD,EAAOC,SACjB,CACDzC,IAAOwC,EAAOxC,KACb,CACD,WAAY/vB,EAAOujH,SAClB,CACD13B,SAAY7rF,EAAOujH,SAAWvjH,EAAOsjH,gBACpC,CACD,iBAAkBtjH,EAAO0lH,sBACvB1lH,EAAO6lH,wBACXtmH,EAAW7D,QAAQg6H,GACnBl6H,EAAGkE,UAAUC,OAAOJ,GACpBohF,EAAOgzC,sBACT,EAcEmC,cAZF,WACE,MACMt6H,GACJA,EAAE+D,WACFA,GAHa7F,KAKf8B,EAAGkE,UAAU6E,UAAUhF,GALR7F,KAMRi6H,sBACT,IA+MMoC,GAAmB,G,OACzB,MAAMC,EACJx/H,cACE,IAAIgF,EACAwE,EACJ,IAAK,IAAIZ,EAAOhC,UAAUpG,OAAQqG,EAAO,IAAI1C,MAAMyE,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EjC,EAAKiC,GAAQlC,UAAUkC,GAEL,IAAhBjC,EAAKrG,QAAgBqG,EAAK,GAAG7G,aAAwE,WAAzDC,OAAOmF,UAAUotB,SAASltB,KAAKuB,EAAK,IAAIqsB,MAAM,GAAI,GAChG1pB,EAAS3C,EAAK,IAEb7B,EAAIwE,GAAU3C,EAEZ2C,IAAQA,EAAS,IACtBA,EAAStJ,GAAO,GAAIsJ,GAChBxE,IAAOwE,EAAOxE,KAAIwE,EAAOxE,GAAKA,GAClC,MAAMxC,EAAWF,KACjB,GAAIkH,EAAOxE,IAA2B,iBAAdwE,EAAOxE,IAAmBxC,EAASvB,iBAAiBuI,EAAOxE,IAAIxE,OAAS,EAAG,CACjG,MAAMi/H,EAAU,GAQhB,OAPAj9H,EAASvB,iBAAiBuI,EAAOxE,IAAI1E,SAAQ2tE,IAC3C,MAAMyxD,EAAYx/H,GAAO,GAAIsJ,EAAQ,CACnCxE,GAAIipE,IAENwxD,EAAQv6H,KAAK,IAAIs6H,EAAOE,GAAW,IAG9BD,CACT,CAGA,MAAMt1C,EAASjnF,KACfinF,EAAOq9B,YAAa,EACpBr9B,EAAO1vD,QAAUE,KACjBwvD,EAAOpuD,OAASN,GAAU,CACxB94B,UAAW6G,EAAO7G,YAEpBwnF,EAAO4+B,QAAUG,KACjB/+B,EAAOlsD,gBAAkB,GACzBksD,EAAOy/B,mBAAqB,GAC5Bz/B,EAAO9qD,QAAU,IAAI8qD,EAAOw1C,aACxBn2H,EAAO61B,SAAWl7B,MAAMc,QAAQuE,EAAO61B,UACzC8qD,EAAO9qD,QAAQn6B,QAAQsE,EAAO61B,SAEhC,MAAMg/F,EAAmB,GACzBl0C,EAAO9qD,QAAQ/+B,SAAQgwC,IACrBA,EAAI,CACF9mC,SACA2gF,SACAy1C,aAAcxB,GAAmB50H,EAAQ60H,GACzCr3H,GAAImjF,EAAOnjF,GAAG4yB,KAAKuwD,GACnB9rD,KAAM8rD,EAAO9rD,KAAKzE,KAAKuwD,GACvB99E,IAAK89E,EAAO99E,IAAIutB,KAAKuwD,GACrB3rD,KAAM2rD,EAAO3rD,KAAK5E,KAAKuwD,IACvB,IAIJ,MAAM01C,EAAe3/H,GAAO,GAAIiiC,GAAUk8F,GAoG1C,OAjGAl0C,EAAO3gF,OAAStJ,GAAO,GAAI2/H,EAAcN,GAAkB/1H,GAC3D2gF,EAAOjrD,eAAiBh/B,GAAO,GAAIiqF,EAAO3gF,QAC1C2gF,EAAOloD,aAAe/hC,GAAO,GAAIsJ,GAG7B2gF,EAAO3gF,QAAU2gF,EAAO3gF,OAAOxC,IACjC/G,OAAOI,KAAK8pF,EAAO3gF,OAAOxC,IAAI1G,SAAQwR,IACpCq4E,EAAOnjF,GAAG8K,EAAWq4E,EAAO3gF,OAAOxC,GAAG8K,GAAW,IAGjDq4E,EAAO3gF,QAAU2gF,EAAO3gF,OAAOmgH,OACjCx/B,EAAOw/B,MAAMx/B,EAAO3gF,OAAOmgH,OAI7B1pH,OAAOsJ,OAAO4gF,EAAQ,CACpBxlB,QAASwlB,EAAO3gF,OAAOm7D,QACvB3/D,KAEA+D,WAAY,GAEZuhF,OAAQ,GACRyhC,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAEjB3lB,aAAYA,IACyB,eAA5Blc,EAAO3gF,OAAO0vC,UAEvB8xE,WAAUA,IAC2B,aAA5B7gC,EAAO3gF,OAAO0vC,UAGvBqzB,YAAa,EACbs+C,UAAW,EAEXkG,aAAa,EACbC,OAAO,EAEPzyC,UAAW,EACXk1C,kBAAmB,EACnB1pH,SAAU,EACV+1H,SAAU,EACVl2H,WAAW,EACXqmH,wBAGE,OAAOjmH,KAAK+1H,MAAM78H,KAAKq7E,UAAY,GAAK,IAAM,GAAK,E,EAGrD61C,eAAgBjqC,EAAO3gF,OAAO4qH,eAC9BC,eAAgBlqC,EAAO3gF,OAAO6qH,eAE9BsC,gBAAiB,CACf9jF,eAAWrmC,EACX28B,aAAS38B,EACTmsH,yBAAqBnsH,EACrBymC,oBAAgBzmC,EAChBo9B,iBAAap9B,EACbyrE,sBAAkBzrE,EAClBwrE,oBAAgBxrE,EAChBssH,wBAAoBtsH,EAEpBusH,kBAAmB5uC,EAAO3gF,OAAOuvH,kBAEjCiC,cAAe,EACfgF,kBAAcxzH,EAEdyzH,WAAY,GACZ1F,yBAAqB/tH,EACrBosH,iBAAapsH,EACb0qH,QAAS,IAGXgB,YAAY,EAEZ3xB,eAAgBpc,EAAO3gF,OAAO+8F,eAC9Bj6D,QAAS,CACP+rF,OAAQ,EACRC,OAAQ,EACRH,SAAU,EACVC,SAAU,EACV3wD,KAAM,GAGRy4D,aAAc,GACdC,aAAc,IAEhBh2C,EAAO3rD,KAAK,WAGR2rD,EAAO3gF,OAAO+4B,MAChB4nD,EAAO5nD,OAKF4nD,CACT,CACA0rC,cAAczN,GACZ,MAAMkD,SACJA,EAAQ9hH,OACRA,GACEtG,KAEEouH,EAAkB7I,GADTH,GAAgBgD,EAAW,IAAG9hH,EAAOwgH,4BACR,IAC5C,OAAOvB,GAAaL,GAAWkJ,CACjC,CACAzB,oBAAoBllH,GAClB,OAAOzH,KAAK2yH,cAAc3yH,KAAKonF,OAAOjlF,QAAO+iH,GAA6D,EAAlDA,EAAQr7G,aAAa,6BAAmCpC,IAAO,GACzH,CACA8rH,eACE,MACMnL,SACJA,EAAQ9hH,OACRA,GAHatG,UAKRonF,OAASg+B,GAAgBgD,EAAW,IAAG9hH,EAAOwgH,2BACvD,CACAtqC,SACE,MAAMyK,EAASjnF,KACXinF,EAAOxlB,UACXwlB,EAAOxlB,SAAU,EACbwlB,EAAO3gF,OAAOgxH,YAChBrwC,EAAOswC,gBAETtwC,EAAO3rD,KAAK,UACd,CACAmhD,UACE,MAAMwK,EAASjnF,KACVinF,EAAOxlB,UACZwlB,EAAOxlB,SAAU,EACbwlB,EAAO3gF,OAAOgxH,YAChBrwC,EAAO20C,kBAET30C,EAAO3rD,KAAK,WACd,CACAmyC,YAAY5mE,EAAU89G,GACpB,MAAM19B,EAASjnF,KACf6G,EAAWC,KAAKgC,IAAIhC,KAAK+B,IAAIhC,EAAU,GAAI,GAC3C,MAAMiC,EAAMm+E,EAAOhS,eAEb3mB,GADM24B,EAAO/R,eACIpsE,GAAOjC,EAAWiC,EACzCm+E,EAAOupC,YAAYliE,OAA0B,IAAVq2D,EAAwB,EAAIA,GAC/D19B,EAAOooC,oBACPpoC,EAAOynC,qBACT,CACAuL,uBACE,MAAMhzC,EAASjnF,KACf,IAAKinF,EAAO3gF,OAAO20H,eAAiBh0C,EAAOnlF,GAAI,OAC/C,MAAMo7H,EAAMj2C,EAAOnlF,GAAGyJ,UAAUjI,MAAM,KAAKnB,QAAOoJ,GACT,IAAhCA,EAAU7I,QAAQ,WAA+E,IAA5D6I,EAAU7I,QAAQukF,EAAO3gF,OAAO6lH,0BAE9EllC,EAAO3rD,KAAK,oBAAqB4hG,EAAIztG,KAAK,KAC5C,CACA0tG,gBAAgBjY,GACd,MAAMj+B,EAASjnF,KACf,OAAIinF,EAAO7a,UAAkB,GACtB84C,EAAQ35G,UAAUjI,MAAM,KAAKnB,QAAOoJ,GACI,IAAtCA,EAAU7I,QAAQ,iBAAyE,IAAhD6I,EAAU7I,QAAQukF,EAAO3gF,OAAOwgH,cACjFr3F,KAAK,IACV,CACA2/F,oBACE,MAAMnoC,EAASjnF,KACf,IAAKinF,EAAO3gF,OAAO20H,eAAiBh0C,EAAOnlF,GAAI,OAC/C,MAAMs7H,EAAU,GAChBn2C,EAAOG,OAAOhqF,SAAQ8nH,IACpB,MAAMr/G,EAAaohF,EAAOk2C,gBAAgBjY,GAC1CkY,EAAQp7H,KAAK,CACXkjH,UACAr/G,eAEFohF,EAAO3rD,KAAK,cAAe4pF,EAASr/G,EAAW,IAEjDohF,EAAO3rD,KAAK,gBAAiB8hG,EAC/B,CACAhW,qBAAqBn4E,EAAMouF,QACZ,IAATpuF,IACFA,EAAO,gBAEK,IAAVouF,IACFA,GAAQ,GAEV,MACM/2H,OACJA,EAAM8gF,OACNA,EAAMyhC,WACNA,EAAUC,gBACVA,EACAtkG,KAAM6jG,EAAUh/C,YAChBA,GAParpE,KASf,IAAIs9H,EAAM,EACV,GAAIh3H,EAAOsjH,eAAgB,CACzB,IACI2T,EADAxT,EAAY3iC,EAAO/d,GAAe+d,EAAO/d,GAAaohD,gBAAkB,EAE5E,IAAK,IAAI3nH,EAAIumE,EAAc,EAAGvmE,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAChDskF,EAAOtkF,KAAOy6H,IAChBxT,GAAa3iC,EAAOtkF,GAAG2nH,gBACvB6S,GAAO,EACHvT,EAAY1B,IAAYkV,GAAY,IAG5C,IAAK,IAAIz6H,EAAIumE,EAAc,EAAGvmE,GAAK,EAAGA,GAAK,EACrCskF,EAAOtkF,KAAOy6H,IAChBxT,GAAa3iC,EAAOtkF,GAAG2nH,gBACvB6S,GAAO,EACHvT,EAAY1B,IAAYkV,GAAY,GAG9C,MAEE,GAAa,YAATtuF,EACF,IAAK,IAAInsC,EAAIumE,EAAc,EAAGvmE,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAAG,EACnCu6H,EAAQxU,EAAW/lH,GAAKgmH,EAAgBhmH,GAAK+lH,EAAWx/C,GAAeg/C,EAAaQ,EAAW/lH,GAAK+lH,EAAWx/C,GAAeg/C,KAEhJiV,GAAO,EAEX,MAGA,IAAK,IAAIx6H,EAAIumE,EAAc,EAAGvmE,GAAK,EAAGA,GAAK,EAAG,CACxB+lH,EAAWx/C,GAAew/C,EAAW/lH,GAAKulH,IAE5DiV,GAAO,EAEX,CAGJ,OAAOA,CACT,CACA5rE,SACE,MAAMu1B,EAASjnF,KACf,IAAKinF,GAAUA,EAAO7a,UAAW,OACjC,MAAMw8C,SACJA,EAAQtiH,OACRA,GACE2gF,EAcJ,SAASmpC,IACP,MAAMoN,EAAiBv2C,EAAOqhC,cAAmC,EAApBrhC,EAAO5L,UAAiB4L,EAAO5L,UACtE4C,EAAen3E,KAAKgC,IAAIhC,KAAK+B,IAAI20H,EAAgBv2C,EAAO/R,gBAAiB+R,EAAOhS,gBACtFgS,EAAOmpC,aAAanyC,GACpBgJ,EAAOooC,oBACPpoC,EAAOynC,qBACT,CACA,IAAI+O,EACJ,GApBIn3H,EAAOquE,aACTsS,EAAO9Q,gBAET,IAAI8Q,EAAOnlF,GAAG/D,iBAAiB,qBAAqBX,SAAQypH,IACtDA,EAAQv/G,UACVs/G,GAAqB3/B,EAAQ4/B,EAC/B,IAEF5/B,EAAO2gC,aACP3gC,EAAO8gC,eACP9gC,EAAOymC,iBACPzmC,EAAOynC,sBASHpoH,EAAO2sG,UAAY3sG,EAAO2sG,SAASxxC,UAAYn7D,EAAOujH,QACxDuG,IACI9pH,EAAO86E,YACT6F,EAAOqlC,uBAEJ,CACL,IAA8B,SAAzBhmH,EAAO6gH,eAA4B7gH,EAAO6gH,cAAgB,IAAMlgC,EAAO6mC,QAAUxnH,EAAOsjH,eAAgB,CAC3G,MAAMxiC,EAASH,EAAOwhC,SAAWniH,EAAOmiH,QAAQhnD,QAAUwlB,EAAOwhC,QAAQrhC,OAASH,EAAOG,OACzFq2C,EAAax2C,EAAOI,QAAQD,EAAO9pF,OAAS,EAAG,GAAG,GAAO,EAC3D,MACEmgI,EAAax2C,EAAOI,QAAQJ,EAAO5d,YAAa,GAAG,GAAO,GAEvDo0D,GACHrN,GAEJ,CACI9pH,EAAOwlH,eAAiBlD,IAAa3hC,EAAO2hC,UAC9C3hC,EAAO8kC,gBAET9kC,EAAO3rD,KAAK,SACd,CACAi/F,gBAAgBmD,EAAcC,QACT,IAAfA,IACFA,GAAa,GAEf,MAAM12C,EAASjnF,KACT49H,EAAmB32C,EAAO3gF,OAAO0vC,UAKvC,OAJK0nF,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAG1Ez2C,EAAOnlF,GAAGkE,UAAU6E,OAAQ,GAAEo8E,EAAO3gF,OAAO6lH,yBAAyByR,KACrE32C,EAAOnlF,GAAGkE,UAAUC,IAAK,GAAEghF,EAAO3gF,OAAO6lH,yBAAyBuR,KAClEz2C,EAAOgzC,uBACPhzC,EAAO3gF,OAAO0vC,UAAY0nF,EAC1Bz2C,EAAOG,OAAOhqF,SAAQ8nH,IACC,aAAjBwY,EACFxY,EAAQ5mH,MAAMg6B,MAAQ,GAEtB4sF,EAAQ5mH,MAAM07B,OAAS,EACzB,IAEFitD,EAAO3rD,KAAK,mBACRqiG,GAAY12C,EAAOv1B,UAddu1B,CAgBX,CACA42C,wBAAwB7nF,GACtB,MAAMixC,EAASjnF,KACXinF,EAAO9lD,KAAqB,QAAd6U,IAAwBixC,EAAO9lD,KAAqB,QAAd6U,IACxDixC,EAAO9lD,IAAoB,QAAd6U,EACbixC,EAAOqhC,aAA2C,eAA5BrhC,EAAO3gF,OAAO0vC,WAA8BixC,EAAO9lD,IACrE8lD,EAAO9lD,KACT8lD,EAAOnlF,GAAGkE,UAAUC,IAAK,GAAEghF,EAAO3gF,OAAO6lH,6BACzCllC,EAAOnlF,GAAGupG,IAAM,QAEhBpkB,EAAOnlF,GAAGkE,UAAU6E,OAAQ,GAAEo8E,EAAO3gF,OAAO6lH,6BAC5CllC,EAAOnlF,GAAGupG,IAAM,OAElBpkB,EAAOv1B,SACT,CACA1wB,MAAMj4B,GACJ,MAAMk+E,EAASjnF,KACf,GAAIinF,EAAO62C,QAAS,OAAO,EAG3B,IAAIh8H,EAAKiH,GAAWk+E,EAAO3gF,OAAOxE,GAIlC,GAHkB,iBAAPA,IACTA,EAAKxC,SAASxB,cAAcgE,KAEzBA,EACH,OAAO,EAETA,EAAGmlF,OAASA,EACRnlF,EAAGiJ,YAAcjJ,EAAGiJ,WAAWlM,MAAwC,qBAAhCiD,EAAGiJ,WAAWlM,KAAKhB,WAC5DopF,EAAO1yB,WAAY,GAErB,MAAMwpE,EAAqBA,IACjB,KAAI92C,EAAO3gF,OAAO00H,cAAgB,IAAIv4H,OAAOa,MAAM,KAAKmsB,KAAK,OAWvE,IAAIm1F,EATeoZ,MACjB,GAAIl8H,GAAMA,EAAGqjH,YAAcrjH,EAAGqjH,WAAWrnH,cAAe,CAGtD,OAFYgE,EAAGqjH,WAAWrnH,cAAcigI,IAG1C,CACA,OAAO3Y,GAAgBtjH,EAAIi8H,KAAsB,EAAE,EAGrCC,GAmBhB,OAlBKpZ,GAAa39B,EAAO3gF,OAAOu0H,iBAC9BjW,EAAYzmH,GAAc,MAAO8oF,EAAO3gF,OAAO00H,cAC/Cl5H,EAAG6H,OAAOi7G,GACVQ,GAAgBtjH,EAAK,IAAGmlF,EAAO3gF,OAAOwgH,cAAc1pH,SAAQ8nH,IAC1DN,EAAUj7G,OAAOu7G,EAAQ,KAG7BnoH,OAAOsJ,OAAO4gF,EAAQ,CACpBnlF,KACA8iH,YACAwD,SAAUnhC,EAAO1yB,YAAczyD,EAAGiJ,WAAWlM,KAAKo/H,WAAan8H,EAAGiJ,WAAWlM,KAAO+lH,EACpFsZ,OAAQj3C,EAAO1yB,UAAYzyD,EAAGiJ,WAAWlM,KAAOiD,EAChDg8H,SAAS,EAET38F,IAA8B,QAAzBr/B,EAAGupG,IAAI5gG,eAA6D,QAAlC66G,GAAaxjH,EAAI,aACxDwmH,aAA0C,eAA5BrhC,EAAO3gF,OAAO0vC,YAAwD,QAAzBl0C,EAAGupG,IAAI5gG,eAA6D,QAAlC66G,GAAaxjH,EAAI,cAC9GymH,SAAiD,gBAAvCjD,GAAaV,EAAW,cAE7B,CACT,CACAvlF,KAAKv9B,GACH,MAAMmlF,EAASjnF,KACf,GAAIinF,EAAOppE,YAAa,OAAOopE,EAE/B,IAAgB,IADAA,EAAOjmD,MAAMl/B,GACN,OAAOmlF,EAC9BA,EAAO3rD,KAAK,cAGR2rD,EAAO3gF,OAAOquE,aAChBsS,EAAO9Q,gBAIT8Q,EAAO80C,aAGP90C,EAAO2gC,aAGP3gC,EAAO8gC,eACH9gC,EAAO3gF,OAAOwlH,eAChB7kC,EAAO8kC,gBAIL9kC,EAAO3gF,OAAOgxH,YAAcrwC,EAAOxlB,SACrCwlB,EAAOswC,gBAILtwC,EAAO3gF,OAAOohH,MAAQzgC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAChEwlB,EAAOI,QAAQJ,EAAO3gF,OAAOgrH,aAAerqC,EAAOwhC,QAAQuC,aAAc,EAAG/jC,EAAO3gF,OAAOupH,oBAAoB,GAAO,GAErH5oC,EAAOI,QAAQJ,EAAO3gF,OAAOgrH,aAAc,EAAGrqC,EAAO3gF,OAAOupH,oBAAoB,GAAO,GAIrF5oC,EAAO3gF,OAAOohH,MAChBzgC,EAAO2rC,aAIT3rC,EAAOnxC,eACP,MAAMqoF,EAAe,IAAIl3C,EAAOnlF,GAAG/D,iBAAiB,qBAsBpD,OArBIkpF,EAAO1yB,WACT4pE,EAAan8H,QAAQilF,EAAOi3C,OAAOngI,iBAAiB,qBAEtDogI,EAAa/gI,SAAQypH,IACfA,EAAQv/G,SACVs/G,GAAqB3/B,EAAQ4/B,GAE7BA,EAAQppH,iBAAiB,QAAQyL,IAC/B09G,GAAqB3/B,EAAQ/9E,EAAEjM,OAAO,GAE1C,IAEF44C,GAAQoxC,GAGRA,EAAOppE,aAAc,EACrBg4B,GAAQoxC,GAGRA,EAAO3rD,KAAK,QACZ2rD,EAAO3rD,KAAK,aACL2rD,CACT,CACAlpD,QAAQqgG,EAAgBC,QACC,IAAnBD,IACFA,GAAiB,QAEC,IAAhBC,IACFA,GAAc,GAEhB,MAAMp3C,EAASjnF,MACTsG,OACJA,EAAMxE,GACNA,EAAE8iH,UACFA,EAASx9B,OACTA,GACEH,EACJ,YAA6B,IAAlBA,EAAO3gF,QAA0B2gF,EAAO7a,YAGnD6a,EAAO3rD,KAAK,iBAGZ2rD,EAAOppE,aAAc,EAGrBopE,EAAOlqB,eAGHz2D,EAAOohH,MACTzgC,EAAO4sC,cAILwK,IACFp3C,EAAOm1C,gBACPt6H,EAAG4N,gBAAgB,SACnBk1G,EAAUl1G,gBAAgB,SACtB03E,GAAUA,EAAO9pF,QACnB8pF,EAAOhqF,SAAQ8nH,IACbA,EAAQl/G,UAAU6E,OAAOvE,EAAO4mH,kBAAmB5mH,EAAOuoH,iBAAkBvoH,EAAOwoH,eAAgBxoH,EAAOyoH,gBAC1G7J,EAAQx1G,gBAAgB,SACxBw1G,EAAQx1G,gBAAgB,0BAA0B,KAIxDu3E,EAAO3rD,KAAK,WAGZv+B,OAAOI,KAAK8pF,EAAOlsD,iBAAiB39B,SAAQwR,IAC1Cq4E,EAAO99E,IAAIyF,EAAU,KAEA,IAAnBwvH,IACFn3C,EAAOnlF,GAAGmlF,OAAS,KD7+GzB,SAAqBpqF,GACnB,MAAMo1B,EAASp1B,EACfE,OAAOI,KAAK80B,GAAQ70B,SAAQC,IAC1B,IACE40B,EAAO50B,GAAO,I,CACd,MAAO6L,GACP,CAEF,WACS+oB,EAAO50B,E,CACd,MAAO6L,GACP,IAGN,CCg+GM8oB,CAAYi1D,IAEdA,EAAO7a,WAAY,GAtCV,IAwCX,CACA,qBAAOkyD,CAAeC,GACpBvhI,GAAOq/H,GAAkBkC,EAC3B,CACA,2BAAWlC,GACT,OAAOA,EACT,CACA,mBAAWp9F,GACT,OAAOA,EACT,CACA,oBAAO9B,CAAciQ,GACdkvF,EAAOp6H,UAAUu6H,cAAaH,EAAOp6H,UAAUu6H,YAAc,IAClE,MAAMtgG,EAAUmgG,EAAOp6H,UAAUu6H,YACd,mBAARrvF,GAAsBjR,EAAQz5B,QAAQ0qC,GAAO,GACtDjR,EAAQn6B,KAAKorC,EAEjB,CACA,UAAOlQ,CAAIpB,GACT,OAAI76B,MAAMc,QAAQ+5B,IAChBA,EAAO1+B,SAAQga,GAAKklH,EAAOn/F,cAAc/lB,KAClCklH,IAETA,EAAOn/F,cAAcrB,GACdwgG,EACT,GC1gHF,SAASkC,GAA0Bv3C,EAAQjrD,EAAgB11B,EAAQm4H,GAejE,OAdIx3C,EAAO3gF,OAAOu0H,gBAChB99H,OAAOI,KAAKshI,GAAYrhI,SAAQC,IAC9B,IAAKiJ,EAAOjJ,KAAwB,IAAhBiJ,EAAO+0H,KAAe,CACxC,IAAItyH,EAAUq8G,GAAgBn+B,EAAOnlF,GAAK,IAAG28H,EAAWphI,MAAQ,GAC3D0L,IACHA,EAAU5K,GAAc,MAAOsgI,EAAWphI,IAC1C0L,EAAQwC,UAAYkzH,EAAWphI,GAC/B4pF,EAAOnlF,GAAG6H,OAAOZ,IAEnBzC,EAAOjJ,GAAO0L,EACdizB,EAAe3+B,GAAO0L,CACxB,KAGGzC,CACT,CClBA,SAASo4H,GAAkB/4H,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEJ,IAAGA,EAAQlD,OAAOwF,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,CCNA,SAAS02H,GAAYv3C,GACnB,MAAMH,EAASjnF,MACTsG,OACJA,EAAM8hH,SACNA,GACEnhC,EACA3gF,EAAOohH,MACTzgC,EAAO4sC,cAET,MAAM+K,EAAgB1Z,IACpB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAM2Z,EAAUv/H,SAASnB,cAAc,OACvC0gI,EAAQh8H,UAAYqiH,EACpBkD,EAASz+G,OAAOk1H,EAAQzgI,SAAS,IACjCygI,EAAQh8H,UAAY,EACtB,MACEulH,EAASz+G,OAAOu7G,EAClB,EAEF,GAAsB,iBAAX99B,GAAuB,WAAYA,EAC5C,IAAK,IAAItkF,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAClCskF,EAAOtkF,IAAI87H,EAAcx3C,EAAOtkF,SAGtC87H,EAAcx3C,GAEhBH,EAAOssC,eACHjtH,EAAOohH,MACTzgC,EAAO2rC,aAEJtsH,EAAOw4H,WAAY73C,EAAO1yB,WAC7B0yB,EAAOv1B,QAEX,CAEA,SAASqtE,GAAa33C,GACpB,MAAMH,EAASjnF,MACTsG,OACJA,EAAM+iE,YACNA,EAAW++C,SACXA,GACEnhC,EACA3gF,EAAOohH,MACTzgC,EAAO4sC,cAET,IAAInhB,EAAiBrpC,EAAc,EACnC,MAAM21D,EAAiB9Z,IACrB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAM2Z,EAAUv/H,SAASnB,cAAc,OACvC0gI,EAAQh8H,UAAYqiH,EACpBkD,EAAS/4G,QAAQwvH,EAAQzgI,SAAS,IAClCygI,EAAQh8H,UAAY,EACtB,MACEulH,EAAS/4G,QAAQ61G,EACnB,EAEF,GAAsB,iBAAX99B,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAItkF,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAClCskF,EAAOtkF,IAAIk8H,EAAe53C,EAAOtkF,IAEvC4vG,EAAiBrpC,EAAc+d,EAAO9pF,MACxC,MACE0hI,EAAe53C,GAEjBH,EAAOssC,eACHjtH,EAAOohH,MACTzgC,EAAO2rC,aAEJtsH,EAAOw4H,WAAY73C,EAAO1yB,WAC7B0yB,EAAOv1B,SAETu1B,EAAOI,QAAQqrB,EAAgB,GAAG,EACpC,CAEA,SAASusB,GAASx3H,EAAO2/E,GACvB,MAAMH,EAASjnF,MACTsG,OACJA,EAAM+iE,YACNA,EAAW++C,SACXA,GACEnhC,EACJ,IAAIi4C,EAAoB71D,EACpB/iE,EAAOohH,OACTwX,GAAqBj4C,EAAOyrC,aAC5BzrC,EAAO4sC,cACP5sC,EAAOssC,gBAET,MAAM4L,EAAal4C,EAAOG,OAAO9pF,OACjC,GAAImK,GAAS,EAEX,YADAw/E,EAAO83C,aAAa33C,GAGtB,GAAI3/E,GAAS03H,EAEX,YADAl4C,EAAO03C,YAAYv3C,GAGrB,IAAIsrB,EAAiBwsB,EAAoBz3H,EAAQy3H,EAAoB,EAAIA,EACzE,MAAME,EAAe,GACrB,IAAK,IAAIt8H,EAAIq8H,EAAa,EAAGr8H,GAAK2E,EAAO3E,GAAK,EAAG,CAC/C,MAAMu8H,EAAep4C,EAAOG,OAAOtkF,GACnCu8H,EAAax0H,SACbu0H,EAAa5wH,QAAQ6wH,EACvB,CACA,GAAsB,iBAAXj4C,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAItkF,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAClCskF,EAAOtkF,IAAIslH,EAASz+G,OAAOy9E,EAAOtkF,IAExC4vG,EAAiBwsB,EAAoBz3H,EAAQy3H,EAAoB93C,EAAO9pF,OAAS4hI,CACnF,MACE9W,EAASz+G,OAAOy9E,GAElB,IAAK,IAAItkF,EAAI,EAAGA,EAAIs8H,EAAa9hI,OAAQwF,GAAK,EAC5CslH,EAASz+G,OAAOy1H,EAAat8H,IAE/BmkF,EAAOssC,eACHjtH,EAAOohH,MACTzgC,EAAO2rC,aAEJtsH,EAAOw4H,WAAY73C,EAAO1yB,WAC7B0yB,EAAOv1B,SAELprD,EAAOohH,KACTzgC,EAAOI,QAAQqrB,EAAiBzrB,EAAOyrC,aAAc,GAAG,GAExDzrC,EAAOI,QAAQqrB,EAAgB,GAAG,EAEtC,CAEA,SAAS4sB,GAAYC,GACnB,MAAMt4C,EAASjnF,MACTsG,OACJA,EAAM+iE,YACNA,GACE4d,EACJ,IAAIi4C,EAAoB71D,EACpB/iE,EAAOohH,OACTwX,GAAqBj4C,EAAOyrC,aAC5BzrC,EAAO4sC,eAET,IACI2L,EADA9sB,EAAiBwsB,EAErB,GAA6B,iBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAIz8H,EAAI,EAAGA,EAAIy8H,EAAcjiI,OAAQwF,GAAK,EAC7C08H,EAAgBD,EAAcz8H,GAC1BmkF,EAAOG,OAAOo4C,IAAgBv4C,EAAOG,OAAOo4C,GAAe30H,SAC3D20H,EAAgB9sB,IAAgBA,GAAkB,GAExDA,EAAiB5rG,KAAK+B,IAAI6pG,EAAgB,EAC5C,MACE8sB,EAAgBD,EACZt4C,EAAOG,OAAOo4C,IAAgBv4C,EAAOG,OAAOo4C,GAAe30H,SAC3D20H,EAAgB9sB,IAAgBA,GAAkB,GACtDA,EAAiB5rG,KAAK+B,IAAI6pG,EAAgB,GAE5CzrB,EAAOssC,eACHjtH,EAAOohH,MACTzgC,EAAO2rC,aAEJtsH,EAAOw4H,WAAY73C,EAAO1yB,WAC7B0yB,EAAOv1B,SAELprD,EAAOohH,KACTzgC,EAAOI,QAAQqrB,EAAiBzrB,EAAOyrC,aAAc,GAAG,GAExDzrC,EAAOI,QAAQqrB,EAAgB,GAAG,EAEtC,CAEA,SAAS+sB,KACP,MAAMx4C,EAASjnF,KACTu/H,EAAgB,GACtB,IAAK,IAAIz8H,EAAI,EAAGA,EAAImkF,EAAOG,OAAO9pF,OAAQwF,GAAK,EAC7Cy8H,EAAcv9H,KAAKc,GAErBmkF,EAAOq4C,YAAYC,EACrB,CC/KA,SAASG,GAAWp5H,GAClB,MAAM8oD,OACJA,EAAM63B,OACNA,EAAMnjF,GACNA,EAAEssH,aACFA,EAAY3D,cACZA,EAAakT,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACEx5H,EA+BJ,IAAIy5H,EA9BJj8H,EAAG,cAAc,KACf,GAAImjF,EAAO3gF,OAAO8oD,SAAWA,EAAQ,OACrC63B,EAAOphF,WAAW7D,KAAM,GAAEilF,EAAO3gF,OAAO6lH,yBAAyB/8D,KAC7DwwE,GAAeA,KACjB34C,EAAOphF,WAAW7D,KAAM,GAAEilF,EAAO3gF,OAAO6lH,4BAE1C,MAAM6T,EAAwBL,EAAkBA,IAAoB,GACpE5iI,OAAOsJ,OAAO4gF,EAAO3gF,OAAQ05H,GAC7BjjI,OAAOsJ,OAAO4gF,EAAOjrD,eAAgBgkG,EAAsB,IAE7Dl8H,EAAG,gBAAgB,KACbmjF,EAAO3gF,OAAO8oD,SAAWA,GAC7BghE,GAAc,IAEhBtsH,EAAG,iBAAiB,CAACm8H,EAAI15H,KACnB0gF,EAAO3gF,OAAO8oD,SAAWA,GAC7Bq9D,EAAclmH,EAAS,IAEzBzC,EAAG,iBAAiB,KAClB,GAAImjF,EAAO3gF,OAAO8oD,SAAWA,GACzBywE,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBI,aAAc,OAEzDj5C,EAAOG,OAAOhqF,SAAQ8nH,IACpBA,EAAQnnH,iBAAiB,gHAAgHX,SAAQ+iI,GAAYA,EAASt1H,UAAS,IAGjLg1H,GACF,KAGF/7H,EAAG,iBAAiB,KACdmjF,EAAO3gF,OAAO8oD,SAAWA,IACxB63B,EAAOG,OAAO9pF,SACjByiI,GAAyB,GAE3Bt/H,uBAAsB,KAChBs/H,GAA0B94C,EAAOG,QAAUH,EAAOG,OAAO9pF,SAC3D8yH,IACA2P,GAAyB,EAC3B,IACA,GAEN,CCrDA,SAASK,GAAaC,EAAcnb,GAClC,MAAMob,EAAcrb,GAAoBC,GAKxC,OAJIob,IAAgBpb,IAClBob,EAAYhiI,MAAMiiI,mBAAqB,SACvCD,EAAYhiI,MAAM,+BAAiC,UAE9CgiI,CACT,CCPA,SAASE,GAA2Bh/F,GAClC,IAAIylD,OACFA,EAAM1gF,SACNA,EAAQk6H,kBACRA,EAAiBC,UACjBA,GACEl/F,EACJ,MAAM6nC,YACJA,GACE4d,EASJ,GAAIA,EAAO3gF,OAAO6pH,kBAAiC,IAAb5pH,EAAgB,CACpD,IACImlF,EADAi1C,GAAiB,EAGnBj1C,EADEg1C,EACoBD,EAEAA,EAAkBt+H,QAAOm+H,IAC7C,MAAMx+H,EAAKw+H,EAAYt6H,UAAUwF,SAAS,0BAf/B1J,KACf,IAAKA,EAAG2jH,cAGN,OADcx+B,EAAOG,OAAOjlF,QAAO+iH,GAAWA,EAAQC,YAAcD,EAAQC,aAAerjH,EAAGiJ,aAAY,GAG5G,OAAOjJ,EAAG2jH,aAAa,EASmDmb,CAASN,GAAeA,EAC9F,OAAOr5C,EAAO0rC,cAAc7wH,KAAQunE,CAAW,IAGnDqiB,EAAoBtuF,SAAQ0E,IAC1B4jH,GAAqB5jH,GAAI,KACvB,GAAI6+H,EAAgB,OACpB,IAAK15C,GAAUA,EAAO7a,UAAW,OACjCu0D,GAAiB,EACjB15C,EAAOvgF,WAAY,EACnB,MAAM8K,EAAM,IAAIzQ,OAAOhB,YAAY,gBAAiB,CAClD2R,SAAS,EACTC,YAAY,IAEds1E,EAAO29B,UAAU9yG,cAAcN,EAAI,GACnC,GAEN,CACF,CC3CA,SAASqvH,GAAat1F,EAAQ25E,EAAS/1D,GACrC,MAAM2xE,EAAe,sBAAqB3xE,EAAQ,IAAGA,IAAS,KAAK5jB,EAAU,wBAAuBA,IAAW,KACzGw1F,EAAkB9b,GAAoBC,GAC5C,IAAIib,EAAWY,EAAgBjjI,cAAe,IAAGgjI,EAAYx9H,MAAM,KAAKmsB,KAAK,QAK7E,OAJK0wG,IACHA,EAAWhiI,GAAc,MAAO2iI,EAAYx9H,MAAM,MAClDy9H,EAAgBp3H,OAAOw2H,IAElBA,CACT,CPmgHApjI,OAAOI,KAAKm+H,IAAYl+H,SAAQ4jI,IAC9BjkI,OAAOI,KAAKm+H,GAAW0F,IAAiB5jI,SAAQ6jI,IAC9C3E,GAAOp6H,UAAU++H,GAAe3F,GAAW0F,GAAgBC,EAAY,GACvE,IAEJ3E,GAAOp/F,IAAI,CA/6GX,SAAgBsE,GACd,IAAIylD,OACFA,EAAMnjF,GACNA,EAAEw3B,KACFA,GACEkG,EACJ,MAAMzgC,EAASF,KACf,IAAIi+H,EAAW,KACXoC,EAAiB,KACrB,MAAMC,EAAgBA,KACfl6C,IAAUA,EAAO7a,WAAc6a,EAAOppE,cAC3Cyd,EAAK,gBACLA,EAAK,UAAS,EAsCV8lG,EAA2BA,KAC1Bn6C,IAAUA,EAAO7a,WAAc6a,EAAOppE,aAC3Cyd,EAAK,oBAAoB,EAE3Bx3B,EAAG,QAAQ,KACLmjF,EAAO3gF,OAAOs0H,qBAAmD,IAA1B75H,EAAOsgI,eAxC7Cp6C,IAAUA,EAAO7a,WAAc6a,EAAOppE,cAC3CihH,EAAW,IAAIuC,gBAAe7xG,IAC5B0xG,EAAiBngI,EAAON,uBAAsB,KAC5C,MAAM63B,MACJA,EAAK0B,OACLA,GACEitD,EACJ,IAAIz6B,EAAWl0B,EACXk0F,EAAYxyF,EAChBxK,EAAQpyB,SAAQ0/D,IACd,IAAIwkE,eACFA,EAAcC,YACdA,EAAWtkI,OACXA,GACE6/D,EACA7/D,GAAUA,IAAWgqF,EAAOnlF,KAChC0qD,EAAW+0E,EAAcA,EAAYjpG,OAASgpG,EAAe,IAAMA,GAAgBE,WACnFhV,EAAY+U,EAAcA,EAAYvnG,QAAUsnG,EAAe,IAAMA,GAAgBG,UAAS,IAE5Fj1E,IAAal0B,GAASk0F,IAAcxyF,GACtCmnG,GACF,GACA,IAEJrC,EAAS4C,QAAQz6C,EAAOnlF,MAoBxBf,EAAOtD,iBAAiB,SAAU0jI,GAClCpgI,EAAOtD,iBAAiB,oBAAqB2jI,GAAyB,IAExEt9H,EAAG,WAAW,KApBRo9H,GACFngI,EAAOJ,qBAAqBugI,GAE1BpC,GAAYA,EAAS6C,WAAa16C,EAAOnlF,KAC3Cg9H,EAAS6C,UAAU16C,EAAOnlF,IAC1Bg9H,EAAW,MAiBb/9H,EAAOrD,oBAAoB,SAAUyjI,GACrCpgI,EAAOrD,oBAAoB,oBAAqB0jI,EAAyB,GAE7E,EAEA,SAAkB5/F,GAChB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,GACEkG,EACJ,MAAMogG,EAAY,GACZ7gI,EAASF,KACTghI,EAAS,SAAU5kI,EAAQiV,QACf,IAAZA,IACFA,EAAU,IAEZ,MACM4sH,EAAW,IADI/9H,EAAO+gI,kBAAoB/gI,EAAOghI,yBACrBC,IAIhC,GAAI/6C,EAAOy0C,oBAAqB,OAChC,GAAyB,IAArBsG,EAAU1kI,OAEZ,YADAg+B,EAAK,iBAAkB0mG,EAAU,IAGnC,MAAMC,EAAiB,WACrB3mG,EAAK,iBAAkB0mG,EAAU,G,EAE/BjhI,EAAON,sBACTM,EAAON,sBAAsBwhI,GAE7BlhI,EAAOT,WAAW2hI,EAAgB,EACpC,IAEFnD,EAAS4C,QAAQzkI,EAAQ,CACvBqN,gBAA0C,IAAvB4H,EAAQ5H,YAAoC4H,EAAQ5H,WACvE43H,eAAwC,IAAtBhwH,EAAQgwH,WAAmChwH,EAAQgwH,UACrEC,mBAAgD,IAA1BjwH,EAAQiwH,eAAuCjwH,EAAQiwH,gBAE/EP,EAAU5/H,KAAK88H,E,EA0BjBpC,EAAa,CACXoC,UAAU,EACVsD,gBAAgB,EAChBC,sBAAsB,IAExBv+H,EAAG,QA7BUu7B,KACX,GAAK4nD,EAAO3gF,OAAOw4H,SAAnB,CACA,GAAI73C,EAAO3gF,OAAO87H,eAAgB,CAChC,MAAME,EAAmB9c,GAAev+B,EAAOi3C,QAC/C,IAAK,IAAIp7H,EAAI,EAAGA,EAAIw/H,EAAiBhlI,OAAQwF,GAAK,EAChD++H,EAAOS,EAAiBx/H,GAE5B,CAEA++H,EAAO56C,EAAOi3C,OAAQ,CACpBgE,UAAWj7C,EAAO3gF,OAAO+7H,uBAI3BR,EAAO56C,EAAO29B,UAAW,CACvBt6G,YAAY,GAde,CAe3B,IAcJxG,EAAG,WAZai6B,KACd6jG,EAAUxkI,SAAQ0hI,IAChBA,EAASyD,YAAY,IAEvBX,EAAUp0H,OAAO,EAAGo0H,EAAUtkI,OAAO,GASzC,IQzMA,MAAM6+B,GAAU,CCnChB,SAAiBqF,GACf,IAkBIghG,GAlBAv7C,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,GACEkG,EACJk7F,EAAa,CACXjU,QAAS,CACPhnD,SAAS,EACT2lB,OAAQ,GACRj6D,OAAO,EACPs1G,YAAa,KACb/iD,eAAgB,KAChBgjD,sBAAsB,EACtBC,gBAAiB,EACjBC,eAAgB,KAIpB,MAAMtjI,EAAWF,KACjB6nF,EAAOwhC,QAAU,CACft7F,MAAO,GACPvN,UAAMtW,EACN8X,QAAI9X,EACJ89E,OAAQ,GACRziD,OAAQ,EACRkkF,WAAY,IAEd,MAAMgW,EAAUv/H,EAASnB,cAAc,OACvC,SAASskI,EAAYvY,EAAOziH,GAC1B,MAAMnB,EAAS2gF,EAAO3gF,OAAOmiH,QAC7B,GAAIniH,EAAO6mB,OAAS85D,EAAOwhC,QAAQt7F,MAAM1lB,GACvC,OAAOw/E,EAAOwhC,QAAQt7F,MAAM1lB,GAG9B,IAAIy9G,EAiBJ,OAhBI5+G,EAAOm8H,aACTvd,EAAU5+G,EAAOm8H,YAAYrgI,KAAK6kF,EAAQijC,EAAOziH,GAC1B,iBAAZy9G,IACT2Z,EAAQh8H,UAAYqiH,EACpBA,EAAU2Z,EAAQzgI,SAAS,KAG7B8mH,EADSj+B,EAAO1yB,UACNp2D,GAAc,gBAEdA,GAAc,MAAO8oF,EAAO3gF,OAAOwgH,YAE/C5B,EAAQ3mH,aAAa,0BAA2BkJ,GAC3CnB,EAAOm8H,cACVvd,EAAQriH,UAAYqnH,GAElB5jH,EAAO6mB,QAAO85D,EAAOwhC,QAAQt7F,MAAM1lB,GAASy9G,GACzCA,CACT,CACA,SAASxzD,EAAO1U,GACd,MAAMmqE,cACJA,EAAauD,eACbA,EAAcd,eACdA,EACAlC,KAAM0P,GACJnwC,EAAO3gF,QACLq8H,gBACJA,EAAeC,eACfA,GACE37C,EAAO3gF,OAAOmiH,SAEhB7oG,KAAMijH,EACNzhH,GAAI0hH,EAAU17C,OACdA,EACAyhC,WAAYka,EACZp+F,OAAQq+F,GACN/7C,EAAOwhC,QACNxhC,EAAO3gF,OAAOujH,SACjB5iC,EAAOooC,oBAET,MAAMhmD,EAAc4d,EAAO5d,aAAe,EAC1C,IAAI45D,EAEAhY,EACAD,EAFqBiY,EAArBh8C,EAAOqhC,aAA2B,QAA0BrhC,EAAOkc,eAAiB,OAAS,MAG7FymB,GACFqB,EAAcnkH,KAAKoX,MAAMipG,EAAgB,GAAKuD,EAAiBkY,EAC/D5X,EAAelkH,KAAKoX,MAAMipG,EAAgB,GAAKuD,EAAiBiY,IAEhE1X,EAAc9D,GAAiBuD,EAAiB,GAAKkY,EACrD5X,GAAgBoM,EAASjQ,EAAgBuD,GAAkBiY,GAE7D,IAAI/iH,EAAOypD,EAAc2hD,EACrB5pG,EAAKioD,EAAc4hD,EAClBmM,IACHx3G,EAAO9Y,KAAK+B,IAAI+W,EAAM,GACtBwB,EAAKta,KAAKgC,IAAIsY,EAAIgmE,EAAO9pF,OAAS,IAEpC,IAAIqnC,GAAUsiD,EAAO4hC,WAAWjpG,IAAS,IAAMqnE,EAAO4hC,WAAW,IAAM,GAgBvE,SAASqa,IACPj8C,EAAO8gC,eACP9gC,EAAOymC,iBACPzmC,EAAOynC,sBACPpzF,EAAK,gBACP,CACA,GArBI87F,GAAU/tD,GAAe2hD,GAC3BprG,GAAQorG,EACHpB,IAAgBjlF,GAAUsiD,EAAO4hC,WAAW,KACxCuO,GAAU/tD,EAAc2hD,IACjCprG,GAAQorG,EACJpB,IAAgBjlF,GAAUsiD,EAAO4hC,WAAW,KAElD9rH,OAAOsJ,OAAO4gF,EAAOwhC,QAAS,CAC5B7oG,OACAwB,KACAujB,SACAkkF,WAAY5hC,EAAO4hC,WACnBmC,eACAC,gBAQE4X,IAAiBjjH,GAAQkjH,IAAe1hH,IAAO47B,EAQjD,OAPIiqC,EAAO4hC,aAAeka,GAAsBp+F,IAAWq+F,GACzD/7C,EAAOG,OAAOhqF,SAAQ8nH,IACpBA,EAAQ5mH,MAAM2kI,GAAiBt+F,EAAS79B,KAAK+R,IAAIouE,EAAO8lC,yBAA3B,IAAuD,IAGxF9lC,EAAOymC,sBACPpyF,EAAK,iBAGP,GAAI2rD,EAAO3gF,OAAOmiH,QAAQ/oC,eAkBxB,OAjBAuH,EAAO3gF,OAAOmiH,QAAQ/oC,eAAet9E,KAAK6kF,EAAQ,CAChDtiD,SACA/kB,OACAwB,KACAgmE,OAAQ,WACN,MAAM+7C,EAAiB,GACvB,IAAK,IAAIrgI,EAAI8c,EAAM9c,GAAKse,EAAIte,GAAK,EAC/BqgI,EAAenhI,KAAKolF,EAAOtkF,IAE7B,OAAOqgI,CACT,CANQ,UAQNl8C,EAAO3gF,OAAOmiH,QAAQia,qBACxBQ,IAEA5nG,EAAK,kBAIT,MAAM8nG,EAAiB,GACjBC,EAAgB,GAChB1Q,EAAgBlrH,IACpB,IAAI0jH,EAAa1jH,EAOjB,OANIA,EAAQ,EACV0jH,EAAa/jC,EAAO9pF,OAASmK,EACpB0jH,GAAc/jC,EAAO9pF,SAE9B6tH,GAA0B/jC,EAAO9pF,QAE5B6tH,CAAU,EAEnB,GAAInuE,EACFiqC,EAAOmhC,SAASrqH,iBAAkB,IAAGkpF,EAAO3gF,OAAOwgH,4BAA4B1pH,SAAQ8nH,IACrFA,EAAQr6G,QAAQ,SAGlB,IAAK,IAAI/H,EAAI+/H,EAAc//H,GAAKggI,EAAYhgI,GAAK,EAC/C,GAAIA,EAAI8c,GAAQ9c,EAAIse,EAAI,CACtB,MAAM+pG,EAAawH,EAAc7vH,GACjCmkF,EAAOmhC,SAASrqH,iBAAkB,IAAGkpF,EAAO3gF,OAAOwgH,uCAAuCqE,8CAAuDA,OAAgB/tH,SAAQ8nH,IACvKA,EAAQr6G,QAAQ,GAEpB,CAGJ,MAAMy4H,EAAWlM,GAAUhwC,EAAO9pF,OAAS,EACrCimI,EAASnM,EAAyB,EAAhBhwC,EAAO9pF,OAAa8pF,EAAO9pF,OACnD,IAAK,IAAIwF,EAAIwgI,EAAUxgI,EAAIygI,EAAQzgI,GAAK,EACtC,GAAIA,GAAK8c,GAAQ9c,GAAKse,EAAI,CACxB,MAAM+pG,EAAawH,EAAc7vH,QACP,IAAfggI,GAA8B9lF,EACvCqmF,EAAcrhI,KAAKmpH,IAEfroH,EAAIggI,GAAYO,EAAcrhI,KAAKmpH,GACnCroH,EAAI+/H,GAAcO,EAAephI,KAAKmpH,GAE9C,CAKF,GAHAkY,EAAcjmI,SAAQqK,IACpBw/E,EAAOmhC,SAASz+G,OAAO84H,EAAYr7C,EAAO3/E,GAAQA,GAAO,IAEvD2vH,EACF,IAAK,IAAIt0H,EAAIsgI,EAAe9lI,OAAS,EAAGwF,GAAK,EAAGA,GAAK,EAAG,CACtD,MAAM2E,EAAQ27H,EAAetgI,GAC7BmkF,EAAOmhC,SAAS/4G,QAAQozH,EAAYr7C,EAAO3/E,GAAQA,GACrD,MAEA27H,EAAe3pE,MAAK,CAAC12D,EAAGoW,IAAMA,EAAIpW,IAClCqgI,EAAehmI,SAAQqK,IACrBw/E,EAAOmhC,SAAS/4G,QAAQozH,EAAYr7C,EAAO3/E,GAAQA,GAAO,IAG9D29G,GAAgBn+B,EAAOmhC,SAAU,+BAA+BhrH,SAAQ8nH,IACtEA,EAAQ5mH,MAAM2kI,GAAiBt+F,EAAS79B,KAAK+R,IAAIouE,EAAO8lC,yBAA3B,IAAuD,IAEtFmW,GACF,CAuEAp/H,EAAG,cAAc,KACf,IAAKmjF,EAAO3gF,OAAOmiH,QAAQhnD,QAAS,OACpC,IAAI+hE,EACJ,QAAkD,IAAvCv8C,EAAOloD,aAAa0pF,QAAQrhC,OAAwB,CAC7D,MAAMA,EAAS,IAAIH,EAAOmhC,SAAShqH,UAAU+D,QAAOL,GAAMA,EAAGsK,QAAS,IAAG66E,EAAO3gF,OAAOwgH,8BACnF1/B,GAAUA,EAAO9pF,SACnB2pF,EAAOwhC,QAAQrhC,OAAS,IAAIA,GAC5Bo8C,GAAoB,EACpBp8C,EAAOhqF,SAAQ,CAAC8nH,EAASiG,KACvBjG,EAAQ3mH,aAAa,0BAA2B4sH,GAChDlkC,EAAOwhC,QAAQt7F,MAAMg+F,GAAcjG,EACnCA,EAAQr6G,QAAQ,IAGtB,CACK24H,IACHv8C,EAAOwhC,QAAQrhC,OAASH,EAAO3gF,OAAOmiH,QAAQrhC,QAEhDH,EAAOphF,WAAW7D,KAAM,GAAEilF,EAAO3gF,OAAO6lH,iCACxCllC,EAAO3gF,OAAO0lH,qBAAsB,EACpC/kC,EAAOjrD,eAAegwF,qBAAsB,EACvC/kC,EAAO3gF,OAAOgrH,cACjB5/D,GACF,IAEF5tD,EAAG,gBAAgB,KACZmjF,EAAO3gF,OAAOmiH,QAAQhnD,UACvBwlB,EAAO3gF,OAAOujH,UAAY5iC,EAAOmqC,mBACnC7wH,aAAaiiI,GACbA,EAAiBliI,YAAW,KAC1BoxD,GAAQ,GACP,MAEHA,IACF,IAEF5tD,EAAG,sBAAsB,KAClBmjF,EAAO3gF,OAAOmiH,QAAQhnD,SACvBwlB,EAAO3gF,OAAOujH,SAChBtF,GAAet9B,EAAO29B,UAAW,wBAA0B,GAAE39B,EAAOuiC,gBACtE,IAEFzsH,OAAOsJ,OAAO4gF,EAAOwhC,QAAS,CAC5BkW,YAjHF,SAAqBv3C,GACnB,GAAsB,iBAAXA,GAAuB,WAAYA,EAC5C,IAAK,IAAItkF,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAClCskF,EAAOtkF,IAAImkF,EAAOwhC,QAAQrhC,OAAOplF,KAAKolF,EAAOtkF,SAGnDmkF,EAAOwhC,QAAQrhC,OAAOplF,KAAKolF,GAE7B11B,GAAO,EACT,EAyGEqtE,aAxGF,SAAsB33C,GACpB,MAAM/d,EAAc4d,EAAO5d,YAC3B,IAAIqpC,EAAiBrpC,EAAc,EAC/Bo6D,EAAoB,EACxB,GAAIxiI,MAAMc,QAAQqlF,GAAS,CACzB,IAAK,IAAItkF,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAClCskF,EAAOtkF,IAAImkF,EAAOwhC,QAAQrhC,OAAO54E,QAAQ44E,EAAOtkF,IAEtD4vG,EAAiBrpC,EAAc+d,EAAO9pF,OACtCmmI,EAAoBr8C,EAAO9pF,MAC7B,MACE2pF,EAAOwhC,QAAQrhC,OAAO54E,QAAQ44E,GAEhC,GAAIH,EAAO3gF,OAAOmiH,QAAQt7F,MAAO,CAC/B,MAAMA,EAAQ85D,EAAOwhC,QAAQt7F,MACvBs2D,EAAW,GACjB1mF,OAAOI,KAAKgwB,GAAO/vB,SAAQumF,IACzB,MAAM+/C,EAAWv2G,EAAMw2D,GACjBggD,EAAgBD,EAAS75H,aAAa,2BACxC85H,GACFD,EAASnlI,aAAa,0BAA2B2xB,SAASyzG,EAAe,IAAMF,GAEjFhgD,EAASvzD,SAASyzD,EAAa,IAAM8/C,GAAqBC,CAAQ,IAEpEz8C,EAAOwhC,QAAQt7F,MAAQs2D,CACzB,CACA/xB,GAAO,GACPu1B,EAAOI,QAAQqrB,EAAgB,EACjC,EA6EE4sB,YA5EF,SAAqBC,GACnB,GAAI,MAAOA,EAAyD,OACpE,IAAIl2D,EAAc4d,EAAO5d,YACzB,GAAIpoE,MAAMc,QAAQw9H,GAChB,IAAK,IAAIz8H,EAAIy8H,EAAcjiI,OAAS,EAAGwF,GAAK,EAAGA,GAAK,EAClDmkF,EAAOwhC,QAAQrhC,OAAO55E,OAAO+xH,EAAcz8H,GAAI,GAC3CmkF,EAAO3gF,OAAOmiH,QAAQt7F,cACjB85D,EAAOwhC,QAAQt7F,MAAMoyG,EAAcz8H,IAExCy8H,EAAcz8H,GAAKumE,IAAaA,GAAe,GACnDA,EAAcviE,KAAK+B,IAAIwgE,EAAa,QAGtC4d,EAAOwhC,QAAQrhC,OAAO55E,OAAO+xH,EAAe,GACxCt4C,EAAO3gF,OAAOmiH,QAAQt7F,cACjB85D,EAAOwhC,QAAQt7F,MAAMoyG,GAE1BA,EAAgBl2D,IAAaA,GAAe,GAChDA,EAAcviE,KAAK+B,IAAIwgE,EAAa,GAEtC3X,GAAO,GACPu1B,EAAOI,QAAQhe,EAAa,EAC9B,EAuDEo2D,gBAtDF,WACEx4C,EAAOwhC,QAAQrhC,OAAS,GACpBH,EAAO3gF,OAAOmiH,QAAQt7F,QACxB85D,EAAOwhC,QAAQt7F,MAAQ,IAEzBukC,GAAO,GACPu1B,EAAOI,QAAQ,EAAG,EACpB,EAgDE31B,UAEJ,EClUA,SAAkBlwB,GAChB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,GACEkG,EACJ,MAAMliC,EAAWF,KACX2B,EAASF,KAWf,SAAS8tC,EAAO1hC,GACd,IAAKg6E,EAAOxlB,QAAS,OACrB,MACE6mD,aAAcnnF,GACZ8lD,EACJ,IAAI/9E,EAAI+D,EACJ/D,EAAEirH,gBAAejrH,EAAIA,EAAEirH,eAC3B,MAAMyP,EAAK16H,EAAEqkE,SAAWrkE,EAAE26H,SACpBC,EAAa78C,EAAO3gF,OAAOy9H,SAASD,WACpCE,EAAWF,GAAqB,KAAPF,EACzBK,EAAaH,GAAqB,KAAPF,EAC3BM,EAAqB,KAAPN,EACdO,EAAsB,KAAPP,EACfQ,EAAmB,KAAPR,EACZS,EAAqB,KAAPT,EAEpB,IAAK38C,EAAOiqC,iBAAmBjqC,EAAOkc,gBAAkBghC,GAAgBl9C,EAAO6gC,cAAgBuc,GAAeJ,GAC5G,OAAO,EAET,IAAKh9C,EAAOkqC,iBAAmBlqC,EAAOkc,gBAAkB+gC,GAAej9C,EAAO6gC,cAAgBsc,GAAaJ,GACzG,OAAO,EAET,KAAI96H,EAAEo7H,UAAYp7H,EAAEq7H,QAAUr7H,EAAEs7H,SAAWt7H,EAAEu7H,SAGzCnlI,EAAS3B,eAAiB2B,EAAS3B,cAAcE,WAA+D,UAAlDyB,EAAS3B,cAAcE,SAAS4M,eAA+E,aAAlDnL,EAAS3B,cAAcE,SAAS4M,gBAA/J,CAGA,GAAIw8E,EAAO3gF,OAAOy9H,SAASW,iBAAmBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIM,GAAS,EAEb,GAAInf,GAAev+B,EAAOnlF,GAAK,IAAGmlF,EAAO3gF,OAAOwgH,4BAA4BxpH,OAAS,GAAgF,IAA3EkoH,GAAev+B,EAAOnlF,GAAK,IAAGmlF,EAAO3gF,OAAOuoH,oBAAoBvxH,OACxJ,OAEF,MAAMwE,EAAKmlF,EAAOnlF,GACZ8iI,EAAc9iI,EAAG+lH,YACjBgd,EAAe/iI,EAAGqvF,aAClB2zC,EAAc/jI,EAAOsR,WACrB0yH,EAAehkI,EAAO0K,YACtBu5H,EAAe3f,GAAcvjH,GAC/Bq/B,IAAK6jG,EAAa92H,MAAQpM,EAAGiM,YACjC,MAAMk3H,EAAc,CAAC,CAACD,EAAa92H,KAAM82H,EAAa/2H,KAAM,CAAC+2H,EAAa92H,KAAO02H,EAAaI,EAAa/2H,KAAM,CAAC+2H,EAAa92H,KAAM82H,EAAa/2H,IAAM42H,GAAe,CAACG,EAAa92H,KAAO02H,EAAaI,EAAa/2H,IAAM42H,IAC5N,IAAK,IAAI/hI,EAAI,EAAGA,EAAImiI,EAAY3nI,OAAQwF,GAAK,EAAG,CAC9C,MAAM43H,EAAQuK,EAAYniI,GAC1B,GAAI43H,EAAM,IAAM,GAAKA,EAAM,IAAMoK,GAAepK,EAAM,IAAM,GAAKA,EAAM,IAAMqK,EAAc,CACzF,GAAiB,IAAbrK,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtCiK,GAAS,CACX,CACF,CACA,IAAKA,EAAQ,MACf,CACI19C,EAAOkc,iBACL6gC,GAAYC,GAAcC,GAAeC,KACvCj7H,EAAE+/B,eAAgB//B,EAAE+/B,iBAAsB//B,EAAEwZ,aAAc,KAE3DuhH,GAAcE,KAAkBhjG,IAAQ6iG,GAAYE,IAAgB/iG,IAAK8lD,EAAOyqC,cAChFsS,GAAYE,KAAiB/iG,IAAQ8iG,GAAcE,IAAiBhjG,IAAK8lD,EAAO8qC,eAEjFiS,GAAYC,GAAcG,GAAaC,KACrCn7H,EAAE+/B,eAAgB//B,EAAE+/B,iBAAsB//B,EAAEwZ,aAAc,IAE5DuhH,GAAcI,IAAap9C,EAAOyqC,aAClCsS,GAAYI,IAAWn9C,EAAO8qC,aAEpCz2F,EAAK,WAAYsoG,EArCjB,CAuCF,CACA,SAASpnD,IACHyK,EAAO88C,SAAStiE,UACpBniE,EAAS7B,iBAAiB,UAAWkxC,GACrCs4C,EAAO88C,SAAStiE,SAAU,EAC5B,CACA,SAASgb,IACFwK,EAAO88C,SAAStiE,UACrBniE,EAAS5B,oBAAoB,UAAWixC,GACxCs4C,EAAO88C,SAAStiE,SAAU,EAC5B,CAtFAwlB,EAAO88C,SAAW,CAChBtiE,SAAS,GAEXi7D,EAAa,CACXqH,SAAU,CACRtiE,SAAS,EACTijE,gBAAgB,EAChBZ,YAAY,KAgFhBhgI,EAAG,QAAQ,KACLmjF,EAAO3gF,OAAOy9H,SAAStiE,SACzB+a,GACF,IAEF14E,EAAG,WAAW,KACRmjF,EAAO88C,SAAStiE,SAClBgb,GACF,IAEF1/E,OAAOsJ,OAAO4gF,EAAO88C,SAAU,CAC7BvnD,SACAC,WAEJ,EC9GA,SAAoBj7C,GAClB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,GACEkG,EACJ,MAAMzgC,EAASF,KAiBf,IAAIqkI,EAhBJxI,EAAa,CACXpnB,WAAY,CACV7zC,SAAS,EACT0jE,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,YAAa,EACbC,aAAc,YACdC,eAAgB,KAChBC,cAAe,KACfC,kBAAmB,0BAGvBz+C,EAAOquB,WAAa,CAClB7zC,SAAS,GAGX,IACIkkE,EADAC,EAAiBvzG,KAErB,MAAMwzG,EAAoB,GAqE1B,SAASC,IACF7+C,EAAOxlB,UACZwlB,EAAO8+C,cAAe,EACxB,CACA,SAASC,IACF/+C,EAAOxlB,UACZwlB,EAAO8+C,cAAe,EACxB,CACA,SAASE,EAAcC,GACrB,QAAIj/C,EAAO3gF,OAAOgvG,WAAWkwB,gBAAkBU,EAASzjH,MAAQwkE,EAAO3gF,OAAOgvG,WAAWkwB,oBAIrFv+C,EAAO3gF,OAAOgvG,WAAWmwB,eAAiBpzG,KAAQuzG,EAAiB3+C,EAAO3gF,OAAOgvG,WAAWmwB,iBAQ5FS,EAASzjH,OAAS,GAAK4P,KAAQuzG,EAAiB,KAgBhDM,EAASlwF,UAAY,EACjBixC,EAAO6mC,QAAS7mC,EAAO3gF,OAAOohH,MAAUzgC,EAAOvgF,YACnDugF,EAAOyqC,YACPp2F,EAAK,SAAU4qG,EAASC,MAEfl/C,EAAO4mC,cAAe5mC,EAAO3gF,OAAOohH,MAAUzgC,EAAOvgF,YAChEugF,EAAO8qC,YACPz2F,EAAK,SAAU4qG,EAASC,MAG1BP,GAAiB,IAAI7kI,EAAOX,MAAOuI,WAE5B,IACT,CAcA,SAASgmC,EAAO1hC,GACd,IAAI/D,EAAI+D,EACJwqH,GAAsB,EAC1B,IAAKxwC,EAAOxlB,QAAS,OAGrB,GAAIx0D,EAAMhQ,OAAO+M,QAAS,IAAGi9E,EAAO3gF,OAAOgvG,WAAWowB,qBAAsB,OAC5E,MAAMp/H,EAAS2gF,EAAO3gF,OAAOgvG,WACzBruB,EAAO3gF,OAAOujH,SAChB3gH,EAAE+/B,iBAEJ,IAAI/K,EAAW+oD,EAAOnlF,GACwB,cAA1CmlF,EAAO3gF,OAAOgvG,WAAWiwB,eAC3BrnG,EAAW5+B,SAASxB,cAAcmpF,EAAO3gF,OAAOgvG,WAAWiwB,eAE7D,MAAMa,EAAyBloG,GAAYA,EAAS1yB,SAAStC,EAAEjM,QAC/D,IAAKgqF,EAAO8+C,eAAiBK,IAA2B9/H,EAAO6+H,eAAgB,OAAO,EAClFj8H,EAAEirH,gBAAejrH,EAAIA,EAAEirH,eAC3B,IAAI1xG,EAAQ,EACZ,MAAM4jH,EAAYp/C,EAAOqhC,cAAgB,EAAI,EACvC12G,EAxJR,SAAmB1I,GAKjB,IAAIo9H,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAqDT,MAlDI,WAAYv9H,IACdq9H,EAAKr9H,EAAEuI,QAEL,eAAgBvI,IAClBq9H,GAAMr9H,EAAEw9H,WAAa,KAEnB,gBAAiBx9H,IACnBq9H,GAAMr9H,EAAEy9H,YAAc,KAEpB,gBAAiBz9H,IACnBo9H,GAAMp9H,EAAE09H,YAAc,KAIpB,SAAU19H,GAAKA,EAAE2T,OAAS3T,EAAE29H,kBAC9BP,EAAKC,EACLA,EAAK,GAEPC,EA3BmB,GA2BdF,EACLG,EA5BmB,GA4BdF,EACD,WAAYr9H,IACdu9H,EAAKv9H,EAAEiuG,QAEL,WAAYjuG,IACds9H,EAAKt9H,EAAEguG,QAELhuG,EAAEo7H,WAAakC,IAEjBA,EAAKC,EACLA,EAAK,IAEFD,GAAMC,IAAOv9H,EAAE49H,YACE,IAAhB59H,EAAE49H,WAEJN,GA1CgB,GA2ChBC,GA3CgB,KA8ChBD,GA7CgB,IA8ChBC,GA9CgB,MAmDhBD,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEd,CACLM,MAAOT,EACPU,MAAOT,EACPU,OAAQT,EACRU,OAAQT,EAEZ,CAqFezU,CAAU9oH,GACvB,GAAI5C,EAAO++H,YACT,GAAIp+C,EAAOkc,eAAgB,CACzB,KAAIr8F,KAAK+R,IAAIjH,EAAKq1H,QAAUngI,KAAK+R,IAAIjH,EAAKs1H,SAA+C,OAAO,EAA7CzkH,GAAS7Q,EAAKq1H,OAASZ,CAC5E,KAAO,MAAIv/H,KAAK+R,IAAIjH,EAAKs1H,QAAUpgI,KAAK+R,IAAIjH,EAAKq1H,SAAmC,OAAO,EAAjCxkH,GAAS7Q,EAAKs1H,MAAuB,MAE/FzkH,EAAQ3b,KAAK+R,IAAIjH,EAAKq1H,QAAUngI,KAAK+R,IAAIjH,EAAKs1H,SAAWt1H,EAAKq1H,OAASZ,GAAaz0H,EAAKs1H,OAE3F,GAAc,IAAVzkH,EAAa,OAAO,EACpBnc,EAAO8+H,SAAQ3iH,GAASA,GAG5B,IAAI0kH,EAAYlgD,EAAOp0D,eAAiBpQ,EAAQnc,EAAOg/H,YAavD,GAZI6B,GAAalgD,EAAOhS,iBAAgBkyD,EAAYlgD,EAAOhS,gBACvDkyD,GAAalgD,EAAO/R,iBAAgBiyD,EAAYlgD,EAAO/R,gBAS3DuiD,IAAsBxwC,EAAO3gF,OAAOohH,QAAgByf,IAAclgD,EAAOhS,gBAAkBkyD,IAAclgD,EAAO/R,gBAC5GuiD,GAAuBxwC,EAAO3gF,OAAOuwH,QAAQ3tH,EAAE8/B,kBAC9Ci+C,EAAO3gF,OAAO2sG,UAAahsB,EAAO3gF,OAAO2sG,SAASxxC,QAoChD,CAOL,MAAMykE,EAAW,CACf99H,KAAMiqB,KACN5P,MAAO3b,KAAK+R,IAAI4J,GAChBuzB,UAAWlvC,KAAKsgI,KAAK3kH,IAEjB4kH,EAAoB1B,GAAuBO,EAAS99H,KAAOu9H,EAAoBv9H,KAAO,KAAO89H,EAASzjH,OAASkjH,EAAoBljH,OAASyjH,EAASlwF,YAAc2vF,EAAoB3vF,UAC7L,IAAKqxF,EAAmB,CACtB1B,OAAsBr8H,EACtB,IAAIuwC,EAAWotC,EAAOp0D,eAAiBpQ,EAAQnc,EAAOg/H,YACtD,MAAMtX,EAAe/mC,EAAO4mC,YACtBI,EAAShnC,EAAO6mC,MAiBtB,GAhBIj0E,GAAYotC,EAAOhS,iBAAgBp7B,EAAWotC,EAAOhS,gBACrDp7B,GAAYotC,EAAO/R,iBAAgBr7B,EAAWotC,EAAO/R,gBACzD+R,EAAOwlC,cAAc,GACrBxlC,EAAOmpC,aAAav2E,GACpBotC,EAAOymC,iBACPzmC,EAAOooC,oBACPpoC,EAAOynC,wBACFV,GAAgB/mC,EAAO4mC,cAAgBI,GAAUhnC,EAAO6mC,QAC3D7mC,EAAOynC,sBAELznC,EAAO3gF,OAAOohH,MAChBzgC,EAAO6qC,QAAQ,CACb97E,UAAWkwF,EAASlwF,UAAY,EAAI,OAAS,OAC7C+8E,cAAc,IAGd9rC,EAAO3gF,OAAO2sG,SAASq0B,OAAQ,CAYjC/mI,aAAa2kI,GACbA,OAAU57H,EACNu8H,EAAkBvoI,QAAU,IAC9BuoI,EAAkBt+H,QAGpB,MAAMggI,EAAY1B,EAAkBvoI,OAASuoI,EAAkBA,EAAkBvoI,OAAS,QAAKgM,EACzFk+H,EAAa3B,EAAkB,GAErC,GADAA,EAAkB7jI,KAAKkkI,GACnBqB,IAAcrB,EAASzjH,MAAQ8kH,EAAU9kH,OAASyjH,EAASlwF,YAAcuxF,EAAUvxF,WAErF6vF,EAAkBr4H,OAAO,QACpB,GAAIq4H,EAAkBvoI,QAAU,IAAM4oI,EAAS99H,KAAOo/H,EAAWp/H,KAAO,KAAOo/H,EAAW/kH,MAAQyjH,EAASzjH,OAAS,GAAKyjH,EAASzjH,OAAS,EAAG,CAOnJ,MAAMglH,EAAkBhlH,EAAQ,EAAI,GAAM,GAC1CkjH,EAAsBO,EACtBL,EAAkBr4H,OAAO,GACzB03H,EAAUhzG,IAAS,KACjB+0D,EAAOqrC,eAAerrC,EAAO3gF,OAAOq+G,OAAO,OAAMr7G,EAAWm+H,EAAgB,GAC3E,EACL,CAEKvC,IAIHA,EAAUhzG,IAAS,KAEjByzG,EAAsBO,EACtBL,EAAkBr4H,OAAO,GACzBy5E,EAAOqrC,eAAerrC,EAAO3gF,OAAOq+G,OAAO,OAAMr7G,EAHzB,GAGoD,GAC3E,KAEP,CAQA,GALK+9H,GAAmB/rG,EAAK,SAAUpyB,GAGnC+9E,EAAO3gF,OAAOqyH,UAAY1xC,EAAO3gF,OAAOohI,8BAA8BzgD,EAAO0xC,SAAS1xH,OAEtFX,EAAO6+H,iBAAmBtrF,IAAaotC,EAAOhS,gBAAkBp7B,IAAaotC,EAAO/R,gBACtF,OAAO,CAEX,CACF,KApIgE,CAE9D,MAAMgxD,EAAW,CACf99H,KAAMiqB,KACN5P,MAAO3b,KAAK+R,IAAI4J,GAChBuzB,UAAWlvC,KAAKsgI,KAAK3kH,GACrB0jH,IAAKl5H,GAIH44H,EAAkBvoI,QAAU,GAC9BuoI,EAAkBt+H,QAGpB,MAAMggI,EAAY1B,EAAkBvoI,OAASuoI,EAAkBA,EAAkBvoI,OAAS,QAAKgM,EAmB/F,GAlBAu8H,EAAkB7jI,KAAKkkI,GAQnBqB,GACErB,EAASlwF,YAAcuxF,EAAUvxF,WAAakwF,EAASzjH,MAAQ8kH,EAAU9kH,OAASyjH,EAAS99H,KAAOm/H,EAAUn/H,KAAO,MACrH69H,EAAcC,GAGhBD,EAAcC,GAtFpB,SAAuBA,GACrB,MAAM5/H,EAAS2gF,EAAO3gF,OAAOgvG,WAC7B,GAAI4wB,EAASlwF,UAAY,GACvB,GAAIixC,EAAO6mC,QAAU7mC,EAAO3gF,OAAOohH,MAAQphH,EAAO6+H,eAEhD,OAAO,OAEJ,GAAIl+C,EAAO4mC,cAAgB5mC,EAAO3gF,OAAOohH,MAAQphH,EAAO6+H,eAE7D,OAAO,EAET,OAAO,CACT,CA+EQwC,CAAczB,GAChB,OAAO,CAEX,CAkGA,OADIh9H,EAAE+/B,eAAgB//B,EAAE+/B,iBAAsB//B,EAAEwZ,aAAc,GACvD,CACT,CACA,SAAS1V,EAAOkuB,GACd,IAAIgD,EAAW+oD,EAAOnlF,GACwB,cAA1CmlF,EAAO3gF,OAAOgvG,WAAWiwB,eAC3BrnG,EAAW5+B,SAASxB,cAAcmpF,EAAO3gF,OAAOgvG,WAAWiwB,eAE7DrnG,EAAShD,GAAQ,aAAc4qG,GAC/B5nG,EAAShD,GAAQ,aAAc8qG,GAC/B9nG,EAAShD,GAAQ,QAASyT,EAC5B,CACA,SAAS6tC,IACP,OAAIyK,EAAO3gF,OAAOujH,SAChB5iC,EAAO29B,UAAUlnH,oBAAoB,QAASixC,IACvC,IAELs4C,EAAOquB,WAAW7zC,UACtBz0D,EAAO,oBACPi6E,EAAOquB,WAAW7zC,SAAU,GACrB,EACT,CACA,SAASgb,IACP,OAAIwK,EAAO3gF,OAAOujH,SAChB5iC,EAAO29B,UAAUnnH,iBAAiBwP,MAAO0hC,IAClC,KAEJs4C,EAAOquB,WAAW7zC,UACvBz0D,EAAO,uBACPi6E,EAAOquB,WAAW7zC,SAAU,GACrB,EACT,CACA39D,EAAG,QAAQ,MACJmjF,EAAO3gF,OAAOgvG,WAAW7zC,SAAWwlB,EAAO3gF,OAAOujH,SACrDptC,IAEEwK,EAAO3gF,OAAOgvG,WAAW7zC,SAAS+a,GAAQ,IAEhD14E,EAAG,WAAW,KACRmjF,EAAO3gF,OAAOujH,SAChBrtC,IAEEyK,EAAOquB,WAAW7zC,SAASgb,GAAS,IAE1C1/E,OAAOsJ,OAAO4gF,EAAOquB,WAAY,CAC/B94B,SACAC,WAEJ,ECpYA,SAAoBj7C,GAClB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,GACEkG,EACJk7F,EAAa,CACXnE,WAAY,CACVC,OAAQ,KACRC,OAAQ,KACRmP,aAAa,EACbC,cAAe,yBACfC,YAAa,uBACbC,UAAW,qBACXC,wBAAyB,gCAG7B/gD,EAAOsxC,WAAa,CAClBC,OAAQ,KACRC,OAAQ,MAEV,MAAMwP,EAAoBnmI,IAAOb,MAAMc,QAAQD,GAAMA,EAAK,CAACA,IAAKK,QAAO+G,KAAOA,IAC9E,SAASg/H,EAAMpmI,GACb,IAAID,EACJ,OAAIC,GAAoB,iBAAPA,GAAmBmlF,EAAO1yB,YACzC1yD,EAAMolF,EAAOnlF,GAAGhE,cAAcgE,GAC1BD,GAAYA,GAEdC,IACgB,iBAAPA,IAAiBD,EAAM,IAAIvC,SAASvB,iBAAiB+D,KAC5DmlF,EAAO3gF,OAAOw0H,mBAAmC,iBAAPh5H,GAAmBD,EAAIvE,OAAS,GAA+C,IAA1C2pF,EAAOnlF,GAAG/D,iBAAiB+D,GAAIxE,SAChHuE,EAAMolF,EAAOnlF,GAAGhE,cAAcgE,KAG9BA,IAAOD,EAAYC,EAEhBD,EACT,CACA,SAAS6xF,EAAS5xF,EAAIwyE,GACpB,MAAMhuE,EAAS2gF,EAAO3gF,OAAOiyH,YAC7Bz2H,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACLA,IACFA,EAAMh/D,UAAUsuE,EAAW,MAAQ,aAAahuE,EAAOuhI,cAAcvkI,MAAM,MACrD,WAAlB0hE,EAAMnT,UAAsBmT,EAAMsP,SAAWA,GAC7C2S,EAAO3gF,OAAOwlH,eAAiB7kC,EAAOxlB,SACxCuD,EAAMh/D,UAAUihF,EAAOw0C,SAAW,MAAQ,UAAUn1H,EAAOyhI,WAE/D,GAEJ,CACA,SAASr2E,IAEP,MAAM8mE,OACJA,EAAMC,OACNA,GACExxC,EAAOsxC,WACX,GAAItxC,EAAO3gF,OAAOohH,KAGhB,OAFAh0B,EAAS+kC,GAAQ,QACjB/kC,EAAS8kC,GAAQ,GAGnB9kC,EAAS+kC,EAAQxxC,EAAO4mC,cAAgB5mC,EAAO3gF,OAAOmhH,QACtD/zB,EAAS8kC,EAAQvxC,EAAO6mC,QAAU7mC,EAAO3gF,OAAOmhH,OAClD,CACA,SAAS0gB,EAAYj/H,GACnBA,EAAE+/B,mBACEg+C,EAAO4mC,aAAgB5mC,EAAO3gF,OAAOohH,MAASzgC,EAAO3gF,OAAOmhH,UAChExgC,EAAO8qC,YACPz2F,EAAK,kBACP,CACA,SAAS8sG,EAAYl/H,GACnBA,EAAE+/B,mBACEg+C,EAAO6mC,OAAU7mC,EAAO3gF,OAAOohH,MAASzgC,EAAO3gF,OAAOmhH,UAC1DxgC,EAAOyqC,YACPp2F,EAAK,kBACP,CACA,SAAS+D,IACP,MAAM/4B,EAAS2gF,EAAO3gF,OAAOiyH,WAK7B,GAJAtxC,EAAO3gF,OAAOiyH,WAAaiG,GAA0Bv3C,EAAQA,EAAOjrD,eAAeu8F,WAAYtxC,EAAO3gF,OAAOiyH,WAAY,CACvHC,OAAQ,qBACRC,OAAQ,wBAEJnyH,EAAOkyH,SAAUlyH,EAAOmyH,OAAS,OACvC,IAAID,EAAS0P,EAAM5hI,EAAOkyH,QACtBC,EAASyP,EAAM5hI,EAAOmyH,QAC1B17H,OAAOsJ,OAAO4gF,EAAOsxC,WAAY,CAC/BC,SACAC,WAEFD,EAASyP,EAAkBzP,GAC3BC,EAASwP,EAAkBxP,GAC3B,MAAM4P,EAAaA,CAACvmI,EAAIupG,KAClBvpG,GACFA,EAAGrE,iBAAiB,QAAiB,SAAR4tG,EAAiB+8B,EAAcD,IAEzDlhD,EAAOxlB,SAAW3/D,GACrBA,EAAGkE,UAAUC,OAAOK,EAAOyhI,UAAUzkI,MAAM,KAC7C,EAEFk1H,EAAOp7H,SAAQ0E,GAAMumI,EAAWvmI,EAAI,UACpC22H,EAAOr7H,SAAQ0E,GAAMumI,EAAWvmI,EAAI,SACtC,CACA,SAASi8B,IACP,IAAIy6F,OACFA,EAAMC,OACNA,GACExxC,EAAOsxC,WACXC,EAASyP,EAAkBzP,GAC3BC,EAASwP,EAAkBxP,GAC3B,MAAM6P,EAAgBA,CAACxmI,EAAIupG,KACzBvpG,EAAGpE,oBAAoB,QAAiB,SAAR2tG,EAAiB+8B,EAAcD,GAC/DrmI,EAAGkE,UAAU6E,UAAUo8E,EAAO3gF,OAAOiyH,WAAWsP,cAAcvkI,MAAM,KAAK,EAE3Ek1H,EAAOp7H,SAAQ0E,GAAMwmI,EAAcxmI,EAAI,UACvC22H,EAAOr7H,SAAQ0E,GAAMwmI,EAAcxmI,EAAI,SACzC,CACAgC,EAAG,QAAQ,MACgC,IAArCmjF,EAAO3gF,OAAOiyH,WAAW92D,QAE3Bgb,KAEAp9C,IACAqyB,IACF,IAEF5tD,EAAG,+BAA+B,KAChC4tD,GAAQ,IAEV5tD,EAAG,WAAW,KACZi6B,GAAS,IAEXj6B,EAAG,kBAAkB,KACnB,IAAI00H,OACFA,EAAMC,OACNA,GACExxC,EAAOsxC,WACXC,EAASyP,EAAkBzP,GAC3BC,EAASwP,EAAkBxP,GAC3B,IAAID,KAAWC,GAAQt2H,QAAOL,KAAQA,IAAI1E,SAAQ0E,GAAMA,EAAGkE,UAAUihF,EAAOxlB,QAAU,SAAW,OAAOwlB,EAAO3gF,OAAOiyH,WAAWwP,YAAW,IAE9IjkI,EAAG,SAAS,CAACm8H,EAAI/2H,KACf,IAAIsvH,OACFA,EAAMC,OACNA,GACExxC,EAAOsxC,WACXC,EAASyP,EAAkBzP,GAC3BC,EAASwP,EAAkBxP,GAC3B,MAAMv6F,EAAWh1B,EAAEjM,OACnB,GAAIgqF,EAAO3gF,OAAOiyH,WAAWqP,cAAgBnP,EAAOjnG,SAAS0M,KAAcs6F,EAAOhnG,SAAS0M,GAAW,CACpG,GAAI+oD,EAAOshD,YAActhD,EAAO3gF,OAAOiiI,YAActhD,EAAO3gF,OAAOiiI,WAAWC,YAAcvhD,EAAOshD,WAAWzmI,KAAOo8B,GAAY+oD,EAAOshD,WAAWzmI,GAAG0J,SAAS0yB,IAAY,OAC3K,IAAIopC,EACAkxD,EAAOl7H,OACTgqE,EAAWkxD,EAAO,GAAGxyH,UAAUwF,SAASy7E,EAAO3gF,OAAOiyH,WAAWuP,aACxDrP,EAAOn7H,SAChBgqE,EAAWmxD,EAAO,GAAGzyH,UAAUwF,SAASy7E,EAAO3gF,OAAOiyH,WAAWuP,cAGjExsG,GADe,IAAbgsC,EACG,iBAEA,kBAEP,IAAIkxD,KAAWC,GAAQt2H,QAAOL,KAAQA,IAAI1E,SAAQ0E,GAAMA,EAAGkE,UAAUmL,OAAO81E,EAAO3gF,OAAOiyH,WAAWuP,cACvG,KAEF,MAKMrrD,EAAUA,KACdwK,EAAOnlF,GAAGkE,UAAUC,OAAOghF,EAAO3gF,OAAOiyH,WAAWyP,wBAAwB1kI,MAAM,MAClFy6B,GAAS,EAEXhhC,OAAOsJ,OAAO4gF,EAAOsxC,WAAY,CAC/B/7C,OAVaA,KACbyK,EAAOnlF,GAAGkE,UAAU6E,UAAUo8E,EAAO3gF,OAAOiyH,WAAWyP,wBAAwB1kI,MAAM,MACrF+7B,IACAqyB,GAAQ,EAQR+qB,UACA/qB,SACAryB,OACAtB,WAEJ,ECpLA,SAAoByD,GAClB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,GACEkG,EACJ,MAAMinG,EAAM,oBAqCZ,IAAIC,EApCJhM,EAAa,CACX6L,WAAY,CACVzmI,GAAI,KACJ6mI,cAAe,OACfH,WAAW,EACXZ,aAAa,EACbgB,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrBx/F,KAAM,UAENy/F,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuB5/B,GAAUA,EACjC6/B,oBAAqB7/B,GAAUA,EAC/B8/B,YAAc,GAAEZ,WAChBa,kBAAoB,GAAEb,kBACtBc,cAAgB,GAAEd,KAClBe,aAAe,GAAEf,YACjBgB,WAAa,GAAEhB,UACfX,YAAc,GAAEW,WAChBiB,qBAAuB,GAAEjB,qBACzBkB,yBAA2B,GAAElB,yBAC7BmB,eAAiB,GAAEnB,cACnBV,UAAY,GAAEU,SACdoB,gBAAkB,GAAEpB,eACpBqB,cAAgB,GAAErB,aAClBsB,wBAA0B,GAAEtB,gBAGhCxhD,EAAOshD,WAAa,CAClBzmI,GAAI,KACJkoI,QAAS,IAGX,IAAIC,EAAqB,EACzB,MAAMhC,EAAoBnmI,IAAOb,MAAMc,QAAQD,GAAMA,EAAK,CAACA,IAAKK,QAAO+G,KAAOA,IAC9E,SAASghI,IACP,OAAQjjD,EAAO3gF,OAAOiiI,WAAWzmI,KAAOmlF,EAAOshD,WAAWzmI,IAAMb,MAAMc,QAAQklF,EAAOshD,WAAWzmI,KAAuC,IAAhCmlF,EAAOshD,WAAWzmI,GAAGxE,MAC9H,CACA,SAAS6sI,EAAeC,EAAUvwF,GAChC,MAAMyvF,kBACJA,GACEriD,EAAO3gF,OAAOiiI,WACb6B,IACLA,EAAWA,GAAyB,SAAbvwF,EAAsB,WAAa,QAArC,qBAEnBuwF,EAASpkI,UAAUC,IAAK,GAAEqjI,KAAqBzvF,MAC/CuwF,EAAWA,GAAyB,SAAbvwF,EAAsB,WAAa,QAArC,oBAEnBuwF,EAASpkI,UAAUC,IAAK,GAAEqjI,KAAqBzvF,KAAYA,KAGjE,CACA,SAASwwF,EAAcnhI,GACrB,MAAMkhI,EAAWlhI,EAAEjM,OAAO+M,QAAQ00H,GAAkBz3C,EAAO3gF,OAAOiiI,WAAWc,cAC7E,IAAKe,EACH,OAEFlhI,EAAE+/B,iBACF,MAAMxhC,EAAQ89G,GAAa6kB,GAAYnjD,EAAO3gF,OAAOokH,eACrD,GAAIzjC,EAAO3gF,OAAOohH,KAAM,CACtB,GAAIzgC,EAAO0gC,YAAclgH,EAAO,OAChC,MAAMkgH,EAAY1gC,EAAO0gC,UACnB2iB,EAAgBrjD,EAAO0lC,oBAAoBllH,GAC3C8iI,EAAoBtjD,EAAO0lC,oBAAoB1lC,EAAO0gC,WAC5D,GAAI2iB,EAAgBrjD,EAAOG,OAAO9pF,OAAS2pF,EAAOyrC,aAAc,CAC9D,MAAM8X,EAAqBvjD,EAAO5d,YAClC4d,EAAO6qC,QAAQ,CACb97E,UAAWs0F,EAAgBC,EAAoB,OAAS,OACxDzX,iBAAkBwX,EAClBjjD,SAAS,IAGPmjD,IADkBvjD,EAAO5d,aAE3B4d,EAAOuqC,YAAY7J,EAAW,GAAG,GAAO,EAE5C,CACA1gC,EAAOuqC,YAAY/pH,EACrB,MACEw/E,EAAOI,QAAQ5/E,EAEnB,CACA,SAASiqD,IAEP,MAAMvwB,EAAM8lD,EAAO9lD,IACb76B,EAAS2gF,EAAO3gF,OAAOiiI,WAC7B,GAAI2B,IAAwB,OAC5B,IAGI57E,EACAi3B,EAJAzjF,EAAKmlF,EAAOshD,WAAWzmI,GAC3BA,EAAKmmI,EAAkBnmI,GAIvB,MAAM6mH,EAAe1hC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAAUwlB,EAAOwhC,QAAQrhC,OAAO9pF,OAAS2pF,EAAOG,OAAO9pF,OAC9GmtI,EAAQxjD,EAAO3gF,OAAOohH,KAAO5gH,KAAKsX,KAAKuqG,EAAe1hC,EAAO3gF,OAAOokH,gBAAkBzjC,EAAO2hC,SAAStrH,OAY5G,GAXI2pF,EAAO3gF,OAAOohH,MAChBniC,EAAgB0B,EAAOqoC,mBAAqB,EAC5ChhE,EAAU24B,EAAO3gF,OAAOokH,eAAiB,EAAI5jH,KAAKoX,MAAM+oE,EAAO0gC,UAAY1gC,EAAO3gF,OAAOokH,gBAAkBzjC,EAAO0gC,gBAC7E,IAArB1gC,EAAO0kC,WACvBr9D,EAAU24B,EAAO0kC,UACjBpmC,EAAgB0B,EAAOsoC,oBAEvBhqC,EAAgB0B,EAAO1B,eAAiB,EACxCj3B,EAAU24B,EAAO5d,aAAe,GAGd,YAAhB/iE,EAAOkjC,MAAsBy9C,EAAOshD,WAAWyB,SAAW/iD,EAAOshD,WAAWyB,QAAQ1sI,OAAS,EAAG,CAClG,MAAM0sI,EAAU/iD,EAAOshD,WAAWyB,QAClC,IAAIU,EACAtY,EACAuY,EAsBJ,GArBIrkI,EAAO2iI,iBACTP,EAAa/iB,GAAiBqkB,EAAQ,GAAI/iD,EAAOkc,eAAiB,QAAU,UAAU,GACtFrhG,EAAG1E,SAAQ4nE,IACTA,EAAM1mE,MAAM2oF,EAAOkc,eAAiB,QAAU,UAAeulC,GAAcpiI,EAAO4iI,mBAAqB,GAA5C,IAAkD,IAE3G5iI,EAAO4iI,mBAAqB,QAAuB5/H,IAAlBi8E,IACnC0kD,GAAsB37E,GAAWi3B,GAAiB,GAC9C0kD,EAAqB3jI,EAAO4iI,mBAAqB,EACnDe,EAAqB3jI,EAAO4iI,mBAAqB,EACxCe,EAAqB,IAC9BA,EAAqB,IAGzBS,EAAa5jI,KAAK+B,IAAIylD,EAAU27E,EAAoB,GACpD7X,EAAYsY,GAAc5jI,KAAKgC,IAAIkhI,EAAQ1sI,OAAQgJ,EAAO4iI,oBAAsB,GAChFyB,GAAYvY,EAAYsY,GAAc,GAExCV,EAAQ5sI,SAAQgtI,IACd,MAAMQ,EAAkB,IAAI,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAAS9kI,KAAIylC,GAAW,GAAEjlC,EAAOgjI,oBAAoB/9F,OAAWzlC,KAAIuR,GAAkB,iBAANA,GAAkBA,EAAEma,SAAS,KAAOna,EAAE/T,MAAM,KAAO+T,IAAGgiD,OACrN+wE,EAASpkI,UAAU6E,UAAU+/H,EAAgB,IAE3C9oI,EAAGxE,OAAS,EACd0sI,EAAQ5sI,SAAQytI,IACd,MAAMC,EAAcvlB,GAAaslB,GAC7BC,IAAgBx8E,EAClBu8E,EAAO7kI,UAAUC,OAAOK,EAAOgjI,kBAAkBhmI,MAAM,MAC9C2jF,EAAO1yB,WAChBs2E,EAAOtsI,aAAa,OAAQ,UAE1B+H,EAAO2iI,iBACL6B,GAAeJ,GAAcI,GAAe1Y,GAC9CyY,EAAO7kI,UAAUC,OAAQ,GAAEK,EAAOgjI,yBAAyBhmI,MAAM,MAE/DwnI,IAAgBJ,GAClBP,EAAeU,EAAQ,QAErBC,IAAgB1Y,GAClB+X,EAAeU,EAAQ,QAE3B,QAEG,CACL,MAAMA,EAASb,EAAQ17E,GASvB,GARIu8E,GACFA,EAAO7kI,UAAUC,OAAOK,EAAOgjI,kBAAkBhmI,MAAM,MAErD2jF,EAAO1yB,WACTy1E,EAAQ5sI,SAAQ,CAACgtI,EAAUU,KACzBV,EAAS7rI,aAAa,OAAQusI,IAAgBx8E,EAAU,gBAAkB,SAAS,IAGnFhoD,EAAO2iI,eAAgB,CACzB,MAAM8B,EAAuBf,EAAQU,GAC/BM,EAAsBhB,EAAQ5X,GACpC,IAAK,IAAItvH,EAAI4nI,EAAY5nI,GAAKsvH,EAAWtvH,GAAK,EACxCknI,EAAQlnI,IACVknI,EAAQlnI,GAAGkD,UAAUC,OAAQ,GAAEK,EAAOgjI,yBAAyBhmI,MAAM,MAGzE6mI,EAAeY,EAAsB,QACrCZ,EAAea,EAAqB,OACtC,CACF,CACA,GAAI1kI,EAAO2iI,eAAgB,CACzB,MAAMgC,EAAuBnkI,KAAKgC,IAAIkhI,EAAQ1sI,OAAQgJ,EAAO4iI,mBAAqB,GAC5EgC,GAAiBxC,EAAauC,EAAuBvC,GAAc,EAAIiC,EAAWjC,EAClFzF,EAAa9hG,EAAM,QAAU,OACnC6oG,EAAQ5sI,SAAQytI,IACdA,EAAOvsI,MAAM2oF,EAAOkc,eAAiB8/B,EAAa,OAAU,GAAEiI,KAAiB,GAEnF,CACF,CACAppI,EAAG1E,SAAQ,CAAC4nE,EAAOmmE,KASjB,GARoB,aAAhB7kI,EAAOkjC,OACTw7B,EAAMjnE,iBAAiB2gI,GAAkBp4H,EAAOkjI,eAAepsI,SAAQguI,IACrEA,EAAWngI,YAAc3E,EAAO6iI,sBAAsB76E,EAAU,EAAE,IAEpE0W,EAAMjnE,iBAAiB2gI,GAAkBp4H,EAAOmjI,aAAarsI,SAAQiuI,IACnEA,EAAQpgI,YAAc3E,EAAO8iI,oBAAoBqB,EAAM,KAGvC,gBAAhBnkI,EAAOkjC,KAAwB,CACjC,IAAI8hG,EAEFA,EADEhlI,EAAO0iI,oBACc/hD,EAAOkc,eAAiB,WAAa,aAErClc,EAAOkc,eAAiB,aAAe,WAEhE,MAAM94B,GAAS/b,EAAU,GAAKm8E,EAC9B,IAAIv9C,EAAS,EACTC,EAAS,EACgB,eAAzBm+C,EACFp+C,EAAS7iB,EAET8iB,EAAS9iB,EAEXrF,EAAMjnE,iBAAiB2gI,GAAkBp4H,EAAOojI,uBAAuBtsI,SAAQmuI,IAC7EA,EAAWjtI,MAAM8S,UAAa,6BAA4B87E,aAAkBC,KAC5Eo+C,EAAWjtI,MAAM+S,mBAAsB,GAAE41E,EAAO3gF,OAAOq+G,SAAS,GAEpE,CACoB,WAAhBr+G,EAAOkjC,MAAqBljC,EAAOyiI,cACrC/jE,EAAMniE,UAAYyD,EAAOyiI,aAAa9hD,EAAQ34B,EAAU,EAAGm8E,GACxC,IAAfU,GAAkB7vG,EAAK,mBAAoB0pC,KAE5B,IAAfmmE,GAAkB7vG,EAAK,mBAAoB0pC,GAC/C1pC,EAAK,mBAAoB0pC,IAEvBiiB,EAAO3gF,OAAOwlH,eAAiB7kC,EAAOxlB,SACxCuD,EAAMh/D,UAAUihF,EAAOw0C,SAAW,MAAQ,UAAUn1H,EAAOyhI,UAC7D,GAEJ,CACA,SAASt/H,IAEP,MAAMnC,EAAS2gF,EAAO3gF,OAAOiiI,WAC7B,GAAI2B,IAAwB,OAC5B,MAAMvhB,EAAe1hC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAAUwlB,EAAOwhC,QAAQrhC,OAAO9pF,OAAS2pF,EAAOG,OAAO9pF,OACpH,IAAIwE,EAAKmlF,EAAOshD,WAAWzmI,GAC3BA,EAAKmmI,EAAkBnmI,GACvB,IAAI0pI,EAAiB,GACrB,GAAoB,YAAhBllI,EAAOkjC,KAAoB,CAC7B,IAAIiiG,EAAkBxkD,EAAO3gF,OAAOohH,KAAO5gH,KAAKsX,KAAKuqG,EAAe1hC,EAAO3gF,OAAOokH,gBAAkBzjC,EAAO2hC,SAAStrH,OAChH2pF,EAAO3gF,OAAO2sG,UAAYhsB,EAAO3gF,OAAO2sG,SAASxxC,SAAWgqE,EAAkB9iB,IAChF8iB,EAAkB9iB,GAEpB,IAAK,IAAI7lH,EAAI,EAAGA,EAAI2oI,EAAiB3oI,GAAK,EACpCwD,EAAOsiI,aACT4C,GAAkBllI,EAAOsiI,aAAaxmI,KAAK6kF,EAAQnkF,EAAGwD,EAAO+iI,aAG7DmC,GAAmB,IAAGllI,EAAOqiI,iBAAiB1hD,EAAO1yB,UAAY,gBAAkB,aAAajuD,EAAO+iI,kBAAkB/iI,EAAOqiI,gBAGtI,CACoB,aAAhBriI,EAAOkjC,OAEPgiG,EADEllI,EAAOwiI,eACQxiI,EAAOwiI,eAAe1mI,KAAK6kF,EAAQ3gF,EAAOkjI,aAAcljI,EAAOmjI,YAE9D,gBAAenjI,EAAOkjI,wCAAkDljI,EAAOmjI,uBAGjF,gBAAhBnjI,EAAOkjC,OAEPgiG,EADEllI,EAAOuiI,kBACQviI,EAAOuiI,kBAAkBzmI,KAAK6kF,EAAQ3gF,EAAOojI,sBAE5C,gBAAepjI,EAAOojI,iCAG5CziD,EAAOshD,WAAWyB,QAAU,GAC5BloI,EAAG1E,SAAQ4nE,IACW,WAAhB1+D,EAAOkjC,OACTw7B,EAAMniE,UAAY2oI,GAAkB,IAElB,YAAhBllI,EAAOkjC,MACTy9C,EAAOshD,WAAWyB,QAAQhoI,QAAQgjE,EAAMjnE,iBAAiB2gI,GAAkBp4H,EAAO+iI,cACpF,IAEkB,WAAhB/iI,EAAOkjC,MACTlO,EAAK,mBAAoBx5B,EAAG,GAEhC,CACA,SAASu9B,IACP4nD,EAAO3gF,OAAOiiI,WAAa/J,GAA0Bv3C,EAAQA,EAAOjrD,eAAeusG,WAAYthD,EAAO3gF,OAAOiiI,WAAY,CACvHzmI,GAAI,sBAEN,MAAMwE,EAAS2gF,EAAO3gF,OAAOiiI,WAC7B,IAAKjiI,EAAOxE,GAAI,OAChB,IAAIA,EACqB,iBAAdwE,EAAOxE,IAAmBmlF,EAAO1yB,YAC1CzyD,EAAKmlF,EAAOnlF,GAAGhE,cAAcwI,EAAOxE,KAEjCA,GAA2B,iBAAdwE,EAAOxE,KACvBA,EAAK,IAAIxC,SAASvB,iBAAiBuI,EAAOxE,MAEvCA,IACHA,EAAKwE,EAAOxE,IAETA,GAAoB,IAAdA,EAAGxE,SACV2pF,EAAO3gF,OAAOw0H,mBAA0C,iBAAdx0H,EAAOxE,IAAmBb,MAAMc,QAAQD,IAAOA,EAAGxE,OAAS,IACvGwE,EAAK,IAAImlF,EAAOnlF,GAAG/D,iBAAiBuI,EAAOxE,KAEvCA,EAAGxE,OAAS,IACdwE,EAAKA,EAAGK,QAAO6iE,GACTwgD,GAAexgD,EAAO,WAAW,KAAOiiB,EAAOnlF,KAElD,KAGHb,MAAMc,QAAQD,IAAqB,IAAdA,EAAGxE,SAAcwE,EAAKA,EAAG,IAClD/E,OAAOsJ,OAAO4gF,EAAOshD,WAAY,CAC/BzmI,OAEFA,EAAKmmI,EAAkBnmI,GACvBA,EAAG1E,SAAQ4nE,IACW,YAAhB1+D,EAAOkjC,MAAsBljC,EAAOkiI,WACtCxjE,EAAMh/D,UAAUC,QAAQK,EAAOsjI,gBAAkB,IAAItmI,MAAM,MAE7D0hE,EAAMh/D,UAAUC,IAAIK,EAAOijI,cAAgBjjI,EAAOkjC,MAClDw7B,EAAMh/D,UAAUC,IAAIghF,EAAOkc,eAAiB78F,EAAOujI,gBAAkBvjI,EAAOwjI,eACxD,YAAhBxjI,EAAOkjC,MAAsBljC,EAAO2iI,iBACtCjkE,EAAMh/D,UAAUC,IAAK,GAAEK,EAAOijI,gBAAgBjjI,EAAOkjC,gBACrDygG,EAAqB,EACjB3jI,EAAO4iI,mBAAqB,IAC9B5iI,EAAO4iI,mBAAqB,IAGZ,gBAAhB5iI,EAAOkjC,MAA0BljC,EAAO0iI,qBAC1ChkE,EAAMh/D,UAAUC,IAAIK,EAAOqjI,0BAEzBrjI,EAAOkiI,WACTxjE,EAAMvnE,iBAAiB,QAAS4sI,GAE7BpjD,EAAOxlB,SACVuD,EAAMh/D,UAAUC,IAAIK,EAAOyhI,UAC7B,IAEJ,CACA,SAAShqG,IACP,MAAMz3B,EAAS2gF,EAAO3gF,OAAOiiI,WAC7B,GAAI2B,IAAwB,OAC5B,IAAIpoI,EAAKmlF,EAAOshD,WAAWzmI,GACvBA,IACFA,EAAKmmI,EAAkBnmI,GACvBA,EAAG1E,SAAQ4nE,IACTA,EAAMh/D,UAAU6E,OAAOvE,EAAOwhI,aAC9B9iE,EAAMh/D,UAAU6E,OAAOvE,EAAOijI,cAAgBjjI,EAAOkjC,MACrDw7B,EAAMh/D,UAAU6E,OAAOo8E,EAAOkc,eAAiB78F,EAAOujI,gBAAkBvjI,EAAOwjI,eAC3ExjI,EAAOkiI,YACTxjE,EAAMh/D,UAAU6E,WAAWvE,EAAOsjI,gBAAkB,IAAItmI,MAAM,MAC9D0hE,EAAMtnE,oBAAoB,QAAS2sI,GACrC,KAGApjD,EAAOshD,WAAWyB,SAAS/iD,EAAOshD,WAAWyB,QAAQ5sI,SAAQ4nE,GAASA,EAAMh/D,UAAU6E,UAAUvE,EAAOgjI,kBAAkBhmI,MAAM,OACrI,CACAQ,EAAG,mBAAmB,KACpB,IAAKmjF,EAAOshD,aAAethD,EAAOshD,WAAWzmI,GAAI,OACjD,MAAMwE,EAAS2gF,EAAO3gF,OAAOiiI,WAC7B,IAAIzmI,GACFA,GACEmlF,EAAOshD,WACXzmI,EAAKmmI,EAAkBnmI,GACvBA,EAAG1E,SAAQ4nE,IACTA,EAAMh/D,UAAU6E,OAAOvE,EAAOujI,gBAAiBvjI,EAAOwjI,eACtD9kE,EAAMh/D,UAAUC,IAAIghF,EAAOkc,eAAiB78F,EAAOujI,gBAAkBvjI,EAAOwjI,cAAc,GAC1F,IAEJhmI,EAAG,QAAQ,MACgC,IAArCmjF,EAAO3gF,OAAOiiI,WAAW9mE,QAE3Bgb,KAEAp9C,IACA52B,IACAipD,IACF,IAEF5tD,EAAG,qBAAqB,UACU,IAArBmjF,EAAO0kC,WAChBj6D,GACF,IAEF5tD,EAAG,mBAAmB,KACpB4tD,GAAQ,IAEV5tD,EAAG,wBAAwB,KACzB2E,IACAipD,GAAQ,IAEV5tD,EAAG,WAAW,KACZi6B,GAAS,IAEXj6B,EAAG,kBAAkB,KACnB,IAAIhC,GACFA,GACEmlF,EAAOshD,WACPzmI,IACFA,EAAKmmI,EAAkBnmI,GACvBA,EAAG1E,SAAQ4nE,GAASA,EAAMh/D,UAAUihF,EAAOxlB,QAAU,SAAW,OAAOwlB,EAAO3gF,OAAOiiI,WAAWR,aAClG,IAEFjkI,EAAG,eAAe,KAChB4tD,GAAQ,IAEV5tD,EAAG,SAAS,CAACm8H,EAAI/2H,KACf,MAAMg1B,EAAWh1B,EAAEjM,OACb6E,EAAKmmI,EAAkBhhD,EAAOshD,WAAWzmI,IAC/C,GAAImlF,EAAO3gF,OAAOiiI,WAAWzmI,IAAMmlF,EAAO3gF,OAAOiiI,WAAWX,aAAe9lI,GAAMA,EAAGxE,OAAS,IAAM4gC,EAASl4B,UAAUwF,SAASy7E,EAAO3gF,OAAOiiI,WAAWc,aAAc,CACpK,GAAIpiD,EAAOsxC,aAAetxC,EAAOsxC,WAAWC,QAAUt6F,IAAa+oD,EAAOsxC,WAAWC,QAAUvxC,EAAOsxC,WAAWE,QAAUv6F,IAAa+oD,EAAOsxC,WAAWE,QAAS,OACnK,MAAMnxD,EAAWxlE,EAAG,GAAGkE,UAAUwF,SAASy7E,EAAO3gF,OAAOiiI,WAAWT,aAEjExsG,GADe,IAAbgsC,EACG,iBAEA,kBAEPxlE,EAAG1E,SAAQ4nE,GAASA,EAAMh/D,UAAUmL,OAAO81E,EAAO3gF,OAAOiiI,WAAWT,cACtE,KAEF,MAaMrrD,EAAUA,KACdwK,EAAOnlF,GAAGkE,UAAUC,IAAIghF,EAAO3gF,OAAOiiI,WAAWwB,yBACjD,IAAIjoI,GACFA,GACEmlF,EAAOshD,WACPzmI,IACFA,EAAKmmI,EAAkBnmI,GACvBA,EAAG1E,SAAQ4nE,GAASA,EAAMh/D,UAAUC,IAAIghF,EAAO3gF,OAAOiiI,WAAWwB,4BAEnEhsG,GAAS,EAEXhhC,OAAOsJ,OAAO4gF,EAAOshD,WAAY,CAC/B/rD,OAzBaA,KACbyK,EAAOnlF,GAAGkE,UAAU6E,OAAOo8E,EAAO3gF,OAAOiiI,WAAWwB,yBACpD,IAAIjoI,GACFA,GACEmlF,EAAOshD,WACPzmI,IACFA,EAAKmmI,EAAkBnmI,GACvBA,EAAG1E,SAAQ4nE,GAASA,EAAMh/D,UAAU6E,OAAOo8E,EAAO3gF,OAAOiiI,WAAWwB,4BAEtE1qG,IACA52B,IACAipD,GAAQ,EAeR+qB,UACAh0E,SACAipD,SACAryB,OACAtB,WAEJ,ECpcA,SAAmByD,GACjB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,GACEkG,EACJ,MAAMliC,EAAWF,KACjB,IAGIssI,EACAC,EACAC,EACAv6B,EANA1hE,GAAY,EACZu1F,EAAU,KACV2G,EAAc,KAuBlB,SAASzb,IACP,IAAKnpC,EAAO3gF,OAAOwlI,UAAUhqI,KAAOmlF,EAAO6kD,UAAUhqI,GAAI,OACzD,MAAMgqI,UACJA,EACAxjB,aAAcnnF,GACZ8lD,GACE8kD,OACJA,EAAMjqI,GACNA,GACEgqI,EACExlI,EAAS2gF,EAAO3gF,OAAOwlI,UACvBjlI,EAAWogF,EAAO3gF,OAAOohH,KAAOzgC,EAAO8mC,aAAe9mC,EAAOpgF,SACnE,IAAImlI,EAAUL,EACVM,GAAUL,EAAYD,GAAY9kI,EAClCs6B,GACF8qG,GAAUA,EACNA,EAAS,GACXD,EAAUL,EAAWM,EACrBA,EAAS,IACCA,EAASN,EAAWC,IAC9BI,EAAUJ,EAAYK,IAEfA,EAAS,GAClBD,EAAUL,EAAWM,EACrBA,EAAS,GACAA,EAASN,EAAWC,IAC7BI,EAAUJ,EAAYK,GAEpBhlD,EAAOkc,gBACT4oC,EAAOztI,MAAM8S,UAAa,eAAc66H,aACxCF,EAAOztI,MAAMg6B,MAAS,GAAE0zG,QAExBD,EAAOztI,MAAM8S,UAAa,oBAAmB66H,UAC7CF,EAAOztI,MAAM07B,OAAU,GAAEgyG,OAEvB1lI,EAAOk6D,OACTjgE,aAAa2kI,GACbpjI,EAAGxD,MAAMk1C,QAAU,EACnB0xF,EAAU5kI,YAAW,KACnBwB,EAAGxD,MAAMk1C,QAAU,EACnB1xC,EAAGxD,MAAM+S,mBAAqB,OAAO,GACpC,KAEP,CAKA,SAASu2G,IACP,IAAK3gC,EAAO3gF,OAAOwlI,UAAUhqI,KAAOmlF,EAAO6kD,UAAUhqI,GAAI,OACzD,MAAMgqI,UACJA,GACE7kD,GACE8kD,OACJA,EAAMjqI,GACNA,GACEgqI,EACJC,EAAOztI,MAAMg6B,MAAQ,GACrByzG,EAAOztI,MAAM07B,OAAS,GACtB4xG,EAAY3kD,EAAOkc,eAAiBrhG,EAAGsN,YAActN,EAAGqN,aACxDkiG,EAAUpqB,EAAOziE,MAAQyiE,EAAOuiC,YAAcviC,EAAO3gF,OAAO0iH,oBAAsB/hC,EAAO3gF,OAAOsjH,eAAiB3iC,EAAO2hC,SAAS,GAAK,IAEpI+iB,EADuC,SAArC1kD,EAAO3gF,OAAOwlI,UAAUH,SACfC,EAAYv6B,EAEZnhF,SAAS+2D,EAAO3gF,OAAOwlI,UAAUH,SAAU,IAEpD1kD,EAAOkc,eACT4oC,EAAOztI,MAAMg6B,MAAS,GAAEqzG,MAExBI,EAAOztI,MAAM07B,OAAU,GAAE2xG,MAGzB7pI,EAAGxD,MAAMqN,QADP0lG,GAAW,EACM,OAEA,GAEjBpqB,EAAO3gF,OAAOwlI,UAAUtrE,OAC1B1+D,EAAGxD,MAAMk1C,QAAU,GAEjByzC,EAAO3gF,OAAOwlH,eAAiB7kC,EAAOxlB,SACxCqqE,EAAUhqI,GAAGkE,UAAUihF,EAAOw0C,SAAW,MAAQ,UAAUx0C,EAAO3gF,OAAOwlI,UAAU/D,UAEvF,CACA,SAASmE,EAAmBhjI,GAC1B,OAAO+9E,EAAOkc,eAAiBj6F,EAAE2gC,QAAU3gC,EAAE4gC,OAC/C,CACA,SAASqiG,EAAgBjjI,GACvB,MAAM4iI,UACJA,EACAxjB,aAAcnnF,GACZ8lD,GACEnlF,GACJA,GACEgqI,EACJ,IAAIM,EACJA,GAAiBF,EAAmBhjI,GAAKm8G,GAAcvjH,GAAImlF,EAAOkc,eAAiB,OAAS,QAA2B,OAAjBuoC,EAAwBA,EAAeC,EAAW,KAAOC,EAAYD,GAC3KS,EAAgBtlI,KAAK+B,IAAI/B,KAAKgC,IAAIsjI,EAAe,GAAI,GACjDjrG,IACFirG,EAAgB,EAAIA,GAEtB,MAAMvyF,EAAWotC,EAAOhS,gBAAkBgS,EAAO/R,eAAiB+R,EAAOhS,gBAAkBm3D,EAC3FnlD,EAAOymC,eAAe7zE,GACtBotC,EAAOmpC,aAAav2E,GACpBotC,EAAOooC,oBACPpoC,EAAOynC,qBACT,CACA,SAAS2d,EAAYnjI,GACnB,MAAM5C,EAAS2gF,EAAO3gF,OAAOwlI,WACvBA,UACJA,EAASlnB,UACTA,GACE39B,GACEnlF,GACJA,EAAEiqI,OACFA,GACED,EACJn8F,GAAY,EACZ+7F,EAAexiI,EAAEjM,SAAW8uI,EAASG,EAAmBhjI,GAAKA,EAAEjM,OAAOyQ,wBAAwBu5E,EAAOkc,eAAiB,OAAS,OAAS,KACxIj6F,EAAE+/B,iBACF//B,EAAE8/B,kBACF47E,EAAUtmH,MAAM+S,mBAAqB,QACrC06H,EAAOztI,MAAM+S,mBAAqB,QAClC86H,EAAgBjjI,GAChB3I,aAAasrI,GACb/pI,EAAGxD,MAAM+S,mBAAqB,MAC1B/K,EAAOk6D,OACT1+D,EAAGxD,MAAMk1C,QAAU,GAEjByzC,EAAO3gF,OAAOujH,UAChB5iC,EAAO29B,UAAUtmH,MAAM,oBAAsB,QAE/Cg9B,EAAK,qBAAsBpyB,EAC7B,CACA,SAASojI,EAAWpjI,GAClB,MAAM4iI,UACJA,EAASlnB,UACTA,GACE39B,GACEnlF,GACJA,EAAEiqI,OACFA,GACED,EACCn8F,IACDzmC,EAAE+/B,eAAgB//B,EAAE+/B,iBAAsB//B,EAAEwZ,aAAc,EAC9DypH,EAAgBjjI,GAChB07G,EAAUtmH,MAAM+S,mBAAqB,MACrCvP,EAAGxD,MAAM+S,mBAAqB,MAC9B06H,EAAOztI,MAAM+S,mBAAqB,MAClCiqB,EAAK,oBAAqBpyB,GAC5B,CACA,SAASqjI,EAAUrjI,GACjB,MAAM5C,EAAS2gF,EAAO3gF,OAAOwlI,WACvBA,UACJA,EAASlnB,UACTA,GACE39B,GACEnlF,GACJA,GACEgqI,EACCn8F,IACLA,GAAY,EACRs3C,EAAO3gF,OAAOujH,UAChB5iC,EAAO29B,UAAUtmH,MAAM,oBAAsB,GAC7CsmH,EAAUtmH,MAAM+S,mBAAqB,IAEnC/K,EAAOk6D,OACTjgE,aAAasrI,GACbA,EAAc35G,IAAS,KACrBpwB,EAAGxD,MAAMk1C,QAAU,EACnB1xC,EAAGxD,MAAM+S,mBAAqB,OAAO,GACpC,MAELiqB,EAAK,mBAAoBpyB,GACrB5C,EAAOkmI,eACTvlD,EAAOqrC,iBAEX,CACA,SAAStlH,EAAOkuB,GACd,MAAM4wG,UACJA,EAASxlI,OACTA,GACE2gF,EACEnlF,EAAKgqI,EAAUhqI,GACrB,IAAKA,EAAI,OACT,MAAM7E,EAAS6E,EACT4mC,IAAiBpiC,EAAOy0H,kBAAmB,CAC/CvyF,SAAS,EACTz7B,SAAS,GAELgrB,IAAkBzxB,EAAOy0H,kBAAmB,CAChDvyF,SAAS,EACTz7B,SAAS,GAEX,IAAK9P,EAAQ,OACb,MAAMwvI,EAAyB,OAAXvxG,EAAkB,mBAAqB,sBAC3Dj+B,EAAOwvI,GAAa,cAAeJ,EAAa3jG,GAChDppC,EAASmtI,GAAa,cAAeH,EAAY5jG,GACjDppC,EAASmtI,GAAa,YAAaF,EAAWx0G,EAChD,CASA,SAASsH,IACP,MAAMysG,UACJA,EACAhqI,GAAI4qI,GACFzlD,EACJA,EAAO3gF,OAAOwlI,UAAYtN,GAA0Bv3C,EAAQA,EAAOjrD,eAAe8vG,UAAW7kD,EAAO3gF,OAAOwlI,UAAW,CACpHhqI,GAAI,qBAEN,MAAMwE,EAAS2gF,EAAO3gF,OAAOwlI,UAC7B,IAAKxlI,EAAOxE,GAAI,OAChB,IAAIA,EAcAiqI,EAbqB,iBAAdzlI,EAAOxE,IAAmBmlF,EAAO1yB,YAC1CzyD,EAAKmlF,EAAOnlF,GAAGhE,cAAcwI,EAAOxE,KAEjCA,GAA2B,iBAAdwE,EAAOxE,GAEbA,IACVA,EAAKwE,EAAOxE,IAFZA,EAAKxC,EAASvB,iBAAiBuI,EAAOxE,IAIpCmlF,EAAO3gF,OAAOw0H,mBAA0C,iBAAdx0H,EAAOxE,IAAmBA,EAAGxE,OAAS,GAAqD,IAAhDovI,EAAS3uI,iBAAiBuI,EAAOxE,IAAIxE,SAC5HwE,EAAK4qI,EAAS5uI,cAAcwI,EAAOxE,KAEjCA,EAAGxE,OAAS,IAAGwE,EAAKA,EAAG,IAC3BA,EAAGkE,UAAUC,IAAIghF,EAAOkc,eAAiB78F,EAAOujI,gBAAkBvjI,EAAOwjI,eAErEhoI,IACFiqI,EAASjqI,EAAGhE,cAAe,IAAGmpF,EAAO3gF,OAAOwlI,UAAUa,aACjDZ,IACHA,EAAS5tI,GAAc,MAAO8oF,EAAO3gF,OAAOwlI,UAAUa,WACtD7qI,EAAG6H,OAAOoiI,KAGdhvI,OAAOsJ,OAAOylI,EAAW,CACvBhqI,KACAiqI,WAEEzlI,EAAOsmI,WA3CN3lD,EAAO3gF,OAAOwlI,UAAUhqI,IAAOmlF,EAAO6kD,UAAUhqI,IACrDkL,EAAO,MA6CHlL,GACFA,EAAGkE,UAAUihF,EAAOxlB,QAAU,SAAW,OAAOwlB,EAAO3gF,OAAOwlI,UAAU/D,UAE5E,CACA,SAAShqG,IACP,MAAMz3B,EAAS2gF,EAAO3gF,OAAOwlI,UACvBhqI,EAAKmlF,EAAO6kD,UAAUhqI,GACxBA,GACFA,EAAGkE,UAAU6E,OAAOo8E,EAAOkc,eAAiB78F,EAAOujI,gBAAkBvjI,EAAOwjI,eAlDzE7iD,EAAO3gF,OAAOwlI,UAAUhqI,IAAOmlF,EAAO6kD,UAAUhqI,IACrDkL,EAAO,MAoDT,CAnRA0vH,EAAa,CACXoP,UAAW,CACThqI,GAAI,KACJ6pI,SAAU,OACVnrE,MAAM,EACNosE,WAAW,EACXJ,eAAe,EACfzE,UAAW,wBACX4E,UAAW,wBACXE,uBAAwB,4BACxBhD,gBAAkB,8BAClBC,cAAgB,+BAGpB7iD,EAAO6kD,UAAY,CACjBhqI,GAAI,KACJiqI,OAAQ,MAoQVjoI,EAAG,QAAQ,MAC+B,IAApCmjF,EAAO3gF,OAAOwlI,UAAUrqE,QAE1Bgb,KAEAp9C,IACAuoF,IACAwI,IACF,IAEFtsH,EAAG,4CAA4C,KAC7C8jH,GAAY,IAEd9jH,EAAG,gBAAgB,KACjBssH,GAAc,IAEhBtsH,EAAG,iBAAiB,CAACm8H,EAAI15H,MAtOzB,SAAuBA,GAChB0gF,EAAO3gF,OAAOwlI,UAAUhqI,IAAOmlF,EAAO6kD,UAAUhqI,KACrDmlF,EAAO6kD,UAAUC,OAAOztI,MAAM+S,mBAAsB,GAAE9K,MACxD,CAoOEkmH,CAAclmH,EAAS,IAEzBzC,EAAG,kBAAkB,KACnB,MAAMhC,GACJA,GACEmlF,EAAO6kD,UACPhqI,GACFA,EAAGkE,UAAUihF,EAAOxlB,QAAU,SAAW,OAAOwlB,EAAO3gF,OAAOwlI,UAAU/D,UAC1E,IAEFjkI,EAAG,WAAW,KACZi6B,GAAS,IAEX,MASM0+C,EAAUA,KACdwK,EAAOnlF,GAAGkE,UAAUC,IAAIghF,EAAO3gF,OAAOwlI,UAAUe,wBAC5C5lD,EAAO6kD,UAAUhqI,IACnBmlF,EAAO6kD,UAAUhqI,GAAGkE,UAAUC,IAAIghF,EAAO3gF,OAAOwlI,UAAUe,wBAE5D9uG,GAAS,EAEXhhC,OAAOsJ,OAAO4gF,EAAO6kD,UAAW,CAC9BtvD,OAjBaA,KACbyK,EAAOnlF,GAAGkE,UAAU6E,OAAOo8E,EAAO3gF,OAAOwlI,UAAUe,wBAC/C5lD,EAAO6kD,UAAUhqI,IACnBmlF,EAAO6kD,UAAUhqI,GAAGkE,UAAU6E,OAAOo8E,EAAO3gF,OAAOwlI,UAAUe,wBAE/DxtG,IACAuoF,IACAwI,GAAc,EAWd3zC,UACAmrC,aACAwI,eACA/wF,OACAtB,WAEJ,EC3VA,SAAkByD,GAChB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACXoQ,SAAU,CACRrrE,SAAS,KAGb,MAAMsrE,EAAmB,2IACnBC,EAAeA,CAAClrI,EAAI+E,KACxB,MAAMs6B,IACJA,GACE8lD,EACEo/C,EAAYllG,GAAO,EAAI,EACvBjT,EAAIpsB,EAAG+H,aAAa,yBAA2B,IACrD,IAAIwO,EAAIvW,EAAG+H,aAAa,0BACpB+K,EAAI9S,EAAG+H,aAAa,0BACxB,MAAMwgE,EAAQvoE,EAAG+H,aAAa,8BACxB2pC,EAAU1xC,EAAG+H,aAAa,gCAC1BojI,EAASnrI,EAAG+H,aAAa,+BAqB/B,GApBIwO,GAAKzD,GACPyD,EAAIA,GAAK,IACTzD,EAAIA,GAAK,KACAqyE,EAAOkc,gBAChB9qF,EAAI6V,EACJtZ,EAAI,MAEJA,EAAIsZ,EACJ7V,EAAI,KAGJA,EADEA,EAAE3V,QAAQ,MAAQ,EACbwtB,SAAS7X,EAAG,IAAMxR,EAAWw/H,EAA/B,IAEEhuH,EAAIxR,EAAWw/H,EAAjB,KAGLzxH,EADEA,EAAElS,QAAQ,MAAQ,EACbwtB,SAAStb,EAAG,IAAM/N,EAApB,IAEE+N,EAAI/N,EAAN,KAEH,MAAO2sC,EAA6C,CACtD,MAAM05F,EAAiB15F,GAAWA,EAAU,IAAM,EAAI1sC,KAAK+R,IAAIhS,IAC/D/E,EAAGxD,MAAMk1C,QAAU05F,CACrB,CACA,IAAI97H,EAAa,eAAciH,MAAMzD,UACrC,GAAI,MAAOy1D,EAAyC,CAElDj5D,GAAc,UADOi5D,GAASA,EAAQ,IAAM,EAAIvjE,KAAK+R,IAAIhS,MAE3D,CACA,GAAIomI,SAAiBA,EAA2C,CAE9D77H,GAAc,WADQ67H,EAASpmI,GAAY,OAE7C,CACA/E,EAAGxD,MAAM8S,UAAYA,CAAS,EAE1Bg/G,EAAeA,KACnB,MAAMtuH,GACJA,EAAEslF,OACFA,EAAMvgF,SACNA,EAAQ+hH,SACRA,EAAQr0D,UACRA,GACE0yB,EACExgF,EAAW2+G,GAAgBtjH,EAAIirI,GACjC9lD,EAAO1yB,WACT9tD,EAASzE,QAAQojH,GAAgBn+B,EAAOi3C,OAAQ6O,IAElDtmI,EAASrJ,SAAQ4nE,IACfgoE,EAAahoE,EAAOn+D,EAAS,IAE/BugF,EAAOhqF,SAAQ,CAAC8nH,EAASiG,KACvB,IAAIkC,EAAgBnI,EAAQr+G,SACxBogF,EAAO3gF,OAAOokH,eAAiB,GAAqC,SAAhCzjC,EAAO3gF,OAAO6gH,gBACpDkG,GAAiBvmH,KAAKsX,KAAK+sG,EAAa,GAAKtkH,GAAY+hH,EAAStrH,OAAS,IAE7E+vH,EAAgBvmH,KAAKgC,IAAIhC,KAAK+B,IAAIwkH,GAAgB,GAAI,GACtDnI,EAAQnnH,iBAAkB,GAAEgvI,oCAAmD3vI,SAAQ4nE,IACrFgoE,EAAahoE,EAAOqoD,EAAc,GAClC,GACF,EAoBJvpH,EAAG,cAAc,KACVmjF,EAAO3gF,OAAOwmI,SAASrrE,UAC5BwlB,EAAO3gF,OAAO0lH,qBAAsB,EACpC/kC,EAAOjrD,eAAegwF,qBAAsB,EAAI,IAElDloH,EAAG,QAAQ,KACJmjF,EAAO3gF,OAAOwmI,SAASrrE,SAC5B2uD,GAAc,IAEhBtsH,EAAG,gBAAgB,KACZmjF,EAAO3gF,OAAOwmI,SAASrrE,SAC5B2uD,GAAc,IAEhBtsH,EAAG,iBAAiB,CAACqpI,EAAS5mI,KACvB0gF,EAAO3gF,OAAOwmI,SAASrrE,SAhCR,SAAUl7D,QACb,IAAbA,IACFA,EAAW0gF,EAAO3gF,OAAOq+G,OAE3B,MAAM7iH,GACJA,EAAEo8H,OACFA,GACEj3C,EACExgF,EAAW,IAAI3E,EAAG/D,iBAAiBgvI,IACrC9lD,EAAO1yB,WACT9tD,EAASzE,QAAQk8H,EAAOngI,iBAAiBgvI,IAE3CtmI,EAASrJ,SAAQgwI,IACf,IAAIC,EAAmBn9G,SAASk9G,EAAWvjI,aAAa,iCAAkC,KAAOtD,EAChF,IAAbA,IAAgB8mI,EAAmB,GACvCD,EAAW9uI,MAAM+S,mBAAsB,GAAEg8H,KAAoB,G,CAkB/D5gB,CAAclmH,EAAS,GAE3B,ECtHA,SAAci7B,GACZ,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,GACEkG,EACJ,MAAMzgC,EAASF,KACf67H,EAAa,CACX/F,KAAM,CACJl1D,SAAS,EACT6rE,SAAU,EACV3S,SAAU,EACVxpH,QAAQ,EACRo8H,eAAgB,wBAChBC,iBAAkB,yBAGtBvmD,EAAO0vC,KAAO,CACZl1D,SAAS,GAEX,IAEIgsE,EACAC,EAHAC,EAAe,EACfC,GAAY,EAGhB,MAAM5Z,EAAU,GACV6Z,EAAU,CACdC,QAAS,EACTC,QAAS,EACT7oB,aAAS57G,EACT0kI,gBAAY1kI,EACZ2kI,iBAAa3kI,EACbu9G,aAASv9G,EACT4kI,iBAAa5kI,EACbgkI,SAAU,GAENhvC,EAAQ,CACZ3uD,eAAWrmC,EACX28B,aAAS38B,EACT2rH,cAAU3rH,EACV4rH,cAAU5rH,EACV6kI,UAAM7kI,EACN8kI,UAAM9kI,EACN+kI,UAAM/kI,EACNglI,UAAMhlI,EACNgvB,WAAOhvB,EACP0wB,YAAQ1wB,EACR6rH,YAAQ7rH,EACR8rH,YAAQ9rH,EACRsmC,aAAc,GACd2+F,eAAgB,IAEZ3R,EAAW,CACfvkH,OAAG/O,EACHsL,OAAGtL,EACHklI,mBAAellI,EACfmlI,mBAAenlI,EACfolI,cAAUplI,GAEZ,IAAI+gE,EAAQ,EAcZ,SAASskE,IACP,GAAI3a,EAAQ12H,OAAS,EAAG,OAAO,EAC/B,MAAMsxI,EAAK5a,EAAQ,GAAG3qF,MAChBnnB,EAAK8xG,EAAQ,GAAG1qF,MAChBulG,EAAK7a,EAAQ,GAAG3qF,MAChBlnB,EAAK6xG,EAAQ,GAAG1qF,MAEtB,OADiBxiC,KAAK0P,MAAMq4H,EAAKD,IAAO,GAAKzsH,EAAKD,IAAO,EAE3D,CAYA,SAAS4sH,EAAiB5lI,GACxB,MAAMupH,EAHCxrC,EAAO1yB,UAAa,eAAiB,IAAG0yB,EAAO3gF,OAAOwgH,aAI7D,QAAI59G,EAAEjM,OAAOmP,QAAQqmH,IACjBxrC,EAAOG,OAAOjlF,QAAO+iH,GAAWA,EAAQ15G,SAAStC,EAAEjM,UAASK,OAAS,CAE3E,CASA,SAASyxI,EAAe7lI,GAItB,GAHsB,UAAlBA,EAAEgrH,aACJF,EAAQxmH,OAAO,EAAGwmH,EAAQ12H,SAEvBwxI,EAAiB5lI,GAAI,OAC1B,MAAM5C,EAAS2gF,EAAO3gF,OAAOqwH,KAI7B,GAHA8W,GAAqB,EACrBC,GAAmB,EACnB1Z,EAAQhyH,KAAKkH,KACT8qH,EAAQ12H,OAAS,GAArB,CAKA,GAFAmwI,GAAqB,EACrBI,EAAQmB,WAAaL,KAChBd,EAAQ3oB,QAAS,CACpB2oB,EAAQ3oB,QAAUh8G,EAAEjM,OAAO+M,QAAS,IAAGi9E,EAAO3gF,OAAOwgH,4BAChD+mB,EAAQ3oB,UAAS2oB,EAAQ3oB,QAAUj+B,EAAOG,OAAOH,EAAO5d,cAC7D,IAAIw9C,EAAUgnB,EAAQ3oB,QAAQpnH,cAAe,IAAGwI,EAAOinI,kBAUvD,GATI1mB,IACFA,EAAUA,EAAQ9oH,iBAAiB,kDAAkD,IAEvF8vI,EAAQhnB,QAAUA,EAEhBgnB,EAAQK,YADNrnB,EACoBrB,GAAeqoB,EAAQhnB,QAAU,IAAGvgH,EAAOinI,kBAAkB,QAE7DjkI,GAEnBukI,EAAQK,YAEX,YADAL,EAAQhnB,aAAUv9G,GAGpBukI,EAAQP,SAAWO,EAAQK,YAAYrkI,aAAa,qBAAuBvD,EAAOgnI,QACpF,CACA,GAAIO,EAAQhnB,QAAS,CACnB,MAAOinB,EAASC,GA3DpB,WACE,GAAI/Z,EAAQ12H,OAAS,EAAG,MAAO,CAC7B+a,EAAG,KACHzD,EAAG,MAEL,MAAMnH,EAAMogI,EAAQhnB,QAAQn5G,wBAC5B,MAAO,EAAEsmH,EAAQ,GAAG3qF,OAAS2qF,EAAQ,GAAG3qF,MAAQ2qF,EAAQ,GAAG3qF,OAAS,EAAI57B,EAAI4K,GAAKs1H,GAAe3Z,EAAQ,GAAG1qF,OAAS0qF,EAAQ,GAAG1qF,MAAQ0qF,EAAQ,GAAG1qF,OAAS,EAAI77B,EAAImH,GAAK+4H,EAC1K,CAoD+BsB,GAC3BpB,EAAQC,QAAUA,EAClBD,EAAQE,QAAUA,EAClBF,EAAQhnB,QAAQvoH,MAAM+S,mBAAqB,KAC7C,CACAu8H,GAAY,CA5BZ,CA6BF,CACA,SAASsB,EAAgBhmI,GACvB,IAAK4lI,EAAiB5lI,GAAI,OAC1B,MAAM5C,EAAS2gF,EAAO3gF,OAAOqwH,KACvBA,EAAO1vC,EAAO0vC,KACdV,EAAejC,EAAQkC,WAAUC,GAAYA,EAASC,YAAcltH,EAAEktH,YACxEH,GAAgB,IAAGjC,EAAQiC,GAAgB/sH,GAC3C8qH,EAAQ12H,OAAS,IAGrBowI,GAAmB,EACnBG,EAAQsB,UAAYR,IACfd,EAAQhnB,UAGb8P,EAAKtsD,MAAQwjE,EAAQsB,UAAYtB,EAAQmB,WAAarB,EAClDhX,EAAKtsD,MAAQwjE,EAAQP,WACvB3W,EAAKtsD,MAAQwjE,EAAQP,SAAW,GAAK3W,EAAKtsD,MAAQwjE,EAAQP,SAAW,IAAM,IAEzE3W,EAAKtsD,MAAQ/jE,EAAOq0H,WACtBhE,EAAKtsD,MAAQ/jE,EAAOq0H,SAAW,GAAKr0H,EAAOq0H,SAAWhE,EAAKtsD,MAAQ,IAAM,IAE3EwjE,EAAQhnB,QAAQvoH,MAAM8S,UAAa,4BAA2BulH,EAAKtsD,UACrE,CACA,SAAS+kE,EAAalmI,GACpB,IAAK4lI,EAAiB5lI,GAAI,OAC1B,GAAsB,UAAlBA,EAAEgrH,aAAsC,eAAXhrH,EAAEsgC,KAAuB,OAC1D,MAAMljC,EAAS2gF,EAAO3gF,OAAOqwH,KACvBA,EAAO1vC,EAAO0vC,KACdV,EAAejC,EAAQkC,WAAUC,GAAYA,EAASC,YAAcltH,EAAEktH,YACxEH,GAAgB,GAAGjC,EAAQxmH,OAAOyoH,EAAc,GAC/CwX,GAAuBC,IAG5BD,GAAqB,EACrBC,GAAmB,EACdG,EAAQhnB,UACb8P,EAAKtsD,MAAQvjE,KAAK+B,IAAI/B,KAAKgC,IAAI6tH,EAAKtsD,MAAOwjE,EAAQP,UAAWhnI,EAAOq0H,UACrEkT,EAAQhnB,QAAQvoH,MAAM+S,mBAAsB,GAAE41E,EAAO3gF,OAAOq+G,UAC5DkpB,EAAQhnB,QAAQvoH,MAAM8S,UAAa,4BAA2BulH,EAAKtsD,SACnEsjE,EAAehX,EAAKtsD,MACpBujE,GAAY,EACRjX,EAAKtsD,MAAQ,GAAKwjE,EAAQ3oB,QAC5B2oB,EAAQ3oB,QAAQl/G,UAAUC,IAAK,GAAEK,EAAOknI,oBAC/B7W,EAAKtsD,OAAS,GAAKwjE,EAAQ3oB,SACpC2oB,EAAQ3oB,QAAQl/G,UAAU6E,OAAQ,GAAEvE,EAAOknI,oBAE1B,IAAf7W,EAAKtsD,QACPwjE,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAClBF,EAAQ3oB,aAAU57G,IAEtB,CAWA,SAAS2kF,EAAY/kF,GACnB,IAAK4lI,EAAiB5lI,KAhHxB,SAAkCA,GAChC,MAAM5G,EAAY,IAAG2kF,EAAO3gF,OAAOqwH,KAAK4W,iBACxC,QAAIrkI,EAAEjM,OAAOmP,QAAQ9J,IACjB,IAAI2kF,EAAOi3C,OAAOngI,iBAAiBuE,IAAWH,QAAO4oE,GAAeA,EAAYv/D,SAAStC,EAAEjM,UAASK,OAAS,CAEnH,CA2G+B+xI,CAAyBnmI,GAAI,OAC1D,MAAMytH,EAAO1vC,EAAO0vC,KACpB,IAAKkX,EAAQhnB,QAAS,OACtB,IAAKvoB,EAAM3uD,YAAck+F,EAAQ3oB,QAAS,OACrC5mB,EAAMr4D,UACTq4D,EAAMhmE,MAAQu1G,EAAQhnB,QAAQz3G,YAC9BkvF,EAAMtkE,OAAS6zG,EAAQhnB,QAAQ13G,aAC/BmvF,EAAM62B,OAAStiG,GAAag7G,EAAQK,YAAa,MAAQ,EACzD5vC,EAAM82B,OAASviG,GAAag7G,EAAQK,YAAa,MAAQ,EACzDL,EAAQG,WAAaH,EAAQ3oB,QAAQ91G,YACrCy+H,EAAQI,YAAcJ,EAAQ3oB,QAAQ/1G,aACtC0+H,EAAQK,YAAY5vI,MAAM+S,mBAAqB,OAGjD,MAAMi+H,EAAchxC,EAAMhmE,MAAQq+F,EAAKtsD,MACjCklE,EAAejxC,EAAMtkE,OAAS28F,EAAKtsD,MACzC,GAAIilE,EAAczB,EAAQG,YAAcuB,EAAe1B,EAAQI,YAAa,OAC5E3vC,EAAM6vC,KAAOrnI,KAAKgC,IAAI+kI,EAAQG,WAAa,EAAIsB,EAAc,EAAG,GAChEhxC,EAAM+vC,MAAQ/vC,EAAM6vC,KACpB7vC,EAAM8vC,KAAOtnI,KAAKgC,IAAI+kI,EAAQI,YAAc,EAAIsB,EAAe,EAAG,GAClEjxC,EAAMgwC,MAAQhwC,EAAM8vC,KACpB9vC,EAAMiwC,eAAel2H,EAAI27G,EAAQ12H,OAAS,EAAI02H,EAAQ,GAAG3qF,MAAQngC,EAAEmgC,MACnEi1D,EAAMiwC,eAAe35H,EAAIo/G,EAAQ12H,OAAS,EAAI02H,EAAQ,GAAG1qF,MAAQpgC,EAAEogC,MAKnE,GAJoBxiC,KAAK+B,IAAI/B,KAAK+R,IAAIylF,EAAMiwC,eAAel2H,EAAIimF,EAAM1uD,aAAav3B,GAAIvR,KAAK+R,IAAIylF,EAAMiwC,eAAe35H,EAAI0pF,EAAM1uD,aAAah7B,IACzH,IAChBqyE,EAAO+tC,YAAa,IAEjB12B,EAAMr4D,UAAY2nG,EAAW,CAChC,GAAI3mD,EAAOkc,iBAAmBr8F,KAAKoX,MAAMogF,EAAM6vC,QAAUrnI,KAAKoX,MAAMogF,EAAM62B,SAAW72B,EAAMiwC,eAAel2H,EAAIimF,EAAM1uD,aAAav3B,GAAKvR,KAAKoX,MAAMogF,EAAM+vC,QAAUvnI,KAAKoX,MAAMogF,EAAM62B,SAAW72B,EAAMiwC,eAAel2H,EAAIimF,EAAM1uD,aAAav3B,GAEvO,YADAimF,EAAM3uD,WAAY,GAGpB,IAAKs3C,EAAOkc,iBAAmBr8F,KAAKoX,MAAMogF,EAAM8vC,QAAUtnI,KAAKoX,MAAMogF,EAAM82B,SAAW92B,EAAMiwC,eAAe35H,EAAI0pF,EAAM1uD,aAAah7B,GAAK9N,KAAKoX,MAAMogF,EAAMgwC,QAAUxnI,KAAKoX,MAAMogF,EAAM82B,SAAW92B,EAAMiwC,eAAe35H,EAAI0pF,EAAM1uD,aAAah7B,GAExO,YADA0pF,EAAM3uD,WAAY,EAGtB,CACIzmC,EAAEyI,YACJzI,EAAE+/B,iBAEJ//B,EAAE8/B,kBACFs1D,EAAMr4D,SAAU,EAChB,MAAMupG,GAAc7Y,EAAKtsD,MAAQsjE,IAAiBE,EAAQP,SAAWrmD,EAAO3gF,OAAOqwH,KAAKgE,WAClFmT,QACJA,EAAOC,QACPA,GACEF,EACJvvC,EAAM22B,SAAW32B,EAAMiwC,eAAel2H,EAAIimF,EAAM1uD,aAAav3B,EAAIimF,EAAM62B,OAASqa,GAAclxC,EAAMhmE,MAAkB,EAAVw1G,GAC5GxvC,EAAM42B,SAAW52B,EAAMiwC,eAAe35H,EAAI0pF,EAAM1uD,aAAah7B,EAAI0pF,EAAM82B,OAASoa,GAAclxC,EAAMtkE,OAAmB,EAAV+zG,GACzGzvC,EAAM22B,SAAW32B,EAAM6vC,OACzB7vC,EAAM22B,SAAW32B,EAAM6vC,KAAO,GAAK7vC,EAAM6vC,KAAO7vC,EAAM22B,SAAW,IAAM,IAErE32B,EAAM22B,SAAW32B,EAAM+vC,OACzB/vC,EAAM22B,SAAW32B,EAAM+vC,KAAO,GAAK/vC,EAAM22B,SAAW32B,EAAM+vC,KAAO,IAAM,IAErE/vC,EAAM42B,SAAW52B,EAAM8vC,OACzB9vC,EAAM42B,SAAW52B,EAAM8vC,KAAO,GAAK9vC,EAAM8vC,KAAO9vC,EAAM42B,SAAW,IAAM,IAErE52B,EAAM42B,SAAW52B,EAAMgwC,OACzBhwC,EAAM42B,SAAW52B,EAAMgwC,KAAO,GAAKhwC,EAAM42B,SAAW52B,EAAMgwC,KAAO,IAAM,IAIpE1R,EAAS4R,gBAAe5R,EAAS4R,cAAgBlwC,EAAMiwC,eAAel2H,GACtEukH,EAAS6R,gBAAe7R,EAAS6R,cAAgBnwC,EAAMiwC,eAAe35H,GACtEgoH,EAAS8R,WAAU9R,EAAS8R,SAAWtuI,KAAKiyB,OACjDuqG,EAASvkH,GAAKimF,EAAMiwC,eAAel2H,EAAIukH,EAAS4R,gBAAkBpuI,KAAKiyB,MAAQuqG,EAAS8R,UAAY,EACpG9R,EAAShoH,GAAK0pF,EAAMiwC,eAAe35H,EAAIgoH,EAAS6R,gBAAkBruI,KAAKiyB,MAAQuqG,EAAS8R,UAAY,EAChG5nI,KAAK+R,IAAIylF,EAAMiwC,eAAel2H,EAAIukH,EAAS4R,eAAiB,IAAG5R,EAASvkH,EAAI,GAC5EvR,KAAK+R,IAAIylF,EAAMiwC,eAAe35H,EAAIgoH,EAAS6R,eAAiB,IAAG7R,EAAShoH,EAAI,GAChFgoH,EAAS4R,cAAgBlwC,EAAMiwC,eAAel2H,EAC9CukH,EAAS6R,cAAgBnwC,EAAMiwC,eAAe35H,EAC9CgoH,EAAS8R,SAAWtuI,KAAKiyB,MACzBw7G,EAAQK,YAAY5vI,MAAM8S,UAAa,eAAcktF,EAAM22B,eAAe32B,EAAM42B,eAClF,CAoCA,SAASua,IACP,MAAM9Y,EAAO1vC,EAAO0vC,KAChBkX,EAAQ3oB,SAAWj+B,EAAO5d,cAAgB4d,EAAOG,OAAO1kF,QAAQmrI,EAAQ3oB,WACtE2oB,EAAQhnB,UACVgnB,EAAQhnB,QAAQvoH,MAAM8S,UAAY,+BAEhCy8H,EAAQK,cACVL,EAAQK,YAAY5vI,MAAM8S,UAAY,sBAExCy8H,EAAQ3oB,QAAQl/G,UAAU6E,OAAQ,GAAEo8E,EAAO3gF,OAAOqwH,KAAK6W,oBACvD7W,EAAKtsD,MAAQ,EACbsjE,EAAe,EACfE,EAAQ3oB,aAAU57G,EAClBukI,EAAQhnB,aAAUv9G,EAClBukI,EAAQK,iBAAc5kI,EACtBukI,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAEtB,CACA,SAAS2B,EAAOxmI,GACd,MAAMytH,EAAO1vC,EAAO0vC,KACdrwH,EAAS2gF,EAAO3gF,OAAOqwH,KAC7B,IAAKkX,EAAQ3oB,QAAS,CAChBh8G,GAAKA,EAAEjM,SACT4wI,EAAQ3oB,QAAUh8G,EAAEjM,OAAO+M,QAAS,IAAGi9E,EAAO3gF,OAAOwgH,6BAElD+mB,EAAQ3oB,UACPj+B,EAAO3gF,OAAOmiH,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,SAAWwlB,EAAOwhC,QACnEolB,EAAQ3oB,QAAUE,GAAgBn+B,EAAOmhC,SAAW,IAAGnhC,EAAO3gF,OAAOuoH,oBAAoB,GAEzFgf,EAAQ3oB,QAAUj+B,EAAOG,OAAOH,EAAO5d,cAG3C,IAAIw9C,EAAUgnB,EAAQ3oB,QAAQpnH,cAAe,IAAGwI,EAAOinI,kBACnD1mB,IACFA,EAAUA,EAAQ9oH,iBAAiB,kDAAkD,IAEvF8vI,EAAQhnB,QAAUA,EAEhBgnB,EAAQK,YADNrnB,EACoBrB,GAAeqoB,EAAQhnB,QAAU,IAAGvgH,EAAOinI,kBAAkB,QAE7DjkI,CAE1B,CACA,IAAKukI,EAAQhnB,UAAYgnB,EAAQK,YAAa,OAM9C,IAAIyB,EACAC,EACAC,EACAC,EACAv2B,EACAC,EACA3rB,EACAC,EACAiiD,EACAC,EACAV,EACAC,EACAU,EACAC,EACAC,EACAC,EACApC,EACAC,EAtBAhnD,EAAO3gF,OAAOujH,UAChB5iC,EAAO29B,UAAUtmH,MAAMg1C,SAAW,SAClC2zC,EAAO29B,UAAUtmH,MAAM+xI,YAAc,QAEvCxC,EAAQ3oB,QAAQl/G,UAAUC,IAAK,GAAEK,EAAOknI,yBAmBJ,IAAzBlvC,EAAM1uD,aAAav3B,GAAqBnP,GACjDymI,EAASzmI,EAAEmgC,MACXumG,EAAS1mI,EAAEogC,QAEXqmG,EAASrxC,EAAM1uD,aAAav3B,EAC5Bu3H,EAAStxC,EAAM1uD,aAAah7B,GAE9B,MAAM07H,EAA8B,iBAANpnI,EAAiBA,EAAI,KAC9B,IAAjBykI,GAAsB2C,IACxBX,OAASrmI,EACTsmI,OAAStmI,GAEXqtH,EAAKtsD,MAAQimE,GAAkBzC,EAAQK,YAAYrkI,aAAa,qBAAuBvD,EAAOgnI,SAC9FK,EAAe2C,GAAkBzC,EAAQK,YAAYrkI,aAAa,qBAAuBvD,EAAOgnI,UAC5FpkI,GAAwB,IAAjBykI,GAAsB2C,GA8B/BziD,EAAa,EACbC,EAAa,IA9BbkgD,EAAaH,EAAQ3oB,QAAQ91G,YAC7B6+H,EAAcJ,EAAQ3oB,QAAQ/1G,aAC9B0gI,EAAUxqB,GAAcwoB,EAAQ3oB,SAASh3G,KAAOnN,EAAOiN,QACvD8hI,EAAUzqB,GAAcwoB,EAAQ3oB,SAASj3G,IAAMlN,EAAO+M,QACtDyrG,EAAQs2B,EAAU7B,EAAa,EAAI2B,EACnCn2B,EAAQs2B,EAAU7B,EAAc,EAAI2B,EACpCG,EAAalC,EAAQhnB,QAAQz3G,YAC7B4gI,EAAcnC,EAAQhnB,QAAQ13G,aAC9BmgI,EAAcS,EAAapZ,EAAKtsD,MAChCklE,EAAeS,EAAcrZ,EAAKtsD,MAClC4lE,EAAgBnpI,KAAKgC,IAAIklI,EAAa,EAAIsB,EAAc,EAAG,GAC3DY,EAAgBppI,KAAKgC,IAAImlI,EAAc,EAAIsB,EAAe,EAAG,GAC7DY,GAAiBF,EACjBG,GAAiBF,EACjBriD,EAAa0rB,EAAQod,EAAKtsD,MAC1ByjB,EAAa0rB,EAAQmd,EAAKtsD,MACtBwjB,EAAaoiD,IACfpiD,EAAaoiD,GAEXpiD,EAAasiD,IACftiD,EAAasiD,GAEXriD,EAAaoiD,IACfpiD,EAAaoiD,GAEXpiD,EAAasiD,IACftiD,EAAasiD,IAMbE,GAAiC,IAAf3Z,EAAKtsD,QACzBwjE,EAAQC,QAAU,EAClBD,EAAQE,QAAU,GAEpBF,EAAQK,YAAY5vI,MAAM+S,mBAAqB,QAC/Cw8H,EAAQK,YAAY5vI,MAAM8S,UAAa,eAAcy8E,QAAiBC,SACtE+/C,EAAQhnB,QAAQvoH,MAAM+S,mBAAqB,QAC3Cw8H,EAAQhnB,QAAQvoH,MAAM8S,UAAa,4BAA2BulH,EAAKtsD,QACrE,CACA,SAASkmE,IACP,MAAM5Z,EAAO1vC,EAAO0vC,KACdrwH,EAAS2gF,EAAO3gF,OAAOqwH,KAC7B,IAAKkX,EAAQ3oB,QAAS,CAChBj+B,EAAO3gF,OAAOmiH,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,SAAWwlB,EAAOwhC,QACnEolB,EAAQ3oB,QAAUE,GAAgBn+B,EAAOmhC,SAAW,IAAGnhC,EAAO3gF,OAAOuoH,oBAAoB,GAEzFgf,EAAQ3oB,QAAUj+B,EAAOG,OAAOH,EAAO5d,aAEzC,IAAIw9C,EAAUgnB,EAAQ3oB,QAAQpnH,cAAe,IAAGwI,EAAOinI,kBACnD1mB,IACFA,EAAUA,EAAQ9oH,iBAAiB,kDAAkD,IAEvF8vI,EAAQhnB,QAAUA,EAEhBgnB,EAAQK,YADNrnB,EACoBrB,GAAeqoB,EAAQhnB,QAAU,IAAGvgH,EAAOinI,kBAAkB,QAE7DjkI,CAE1B,CACKukI,EAAQhnB,SAAYgnB,EAAQK,cAC7BjnD,EAAO3gF,OAAOujH,UAChB5iC,EAAO29B,UAAUtmH,MAAMg1C,SAAW,GAClC2zC,EAAO29B,UAAUtmH,MAAM+xI,YAAc,IAEvC1Z,EAAKtsD,MAAQ,EACbsjE,EAAe,EACfE,EAAQK,YAAY5vI,MAAM+S,mBAAqB,QAC/Cw8H,EAAQK,YAAY5vI,MAAM8S,UAAY,qBACtCy8H,EAAQhnB,QAAQvoH,MAAM+S,mBAAqB,QAC3Cw8H,EAAQhnB,QAAQvoH,MAAM8S,UAAY,8BAClCy8H,EAAQ3oB,QAAQl/G,UAAU6E,OAAQ,GAAEvE,EAAOknI,oBAC3CK,EAAQ3oB,aAAU57G,EAClBukI,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EACpB,CAGA,SAASyC,EAAWtnI,GAClB,MAAMytH,EAAO1vC,EAAO0vC,KAChBA,EAAKtsD,OAAwB,IAAfssD,EAAKtsD,MAErBkmE,IAGAb,EAAOxmI,EAEX,CACA,SAASunI,IASP,MAAO,CACL14G,kBATsBkvD,EAAO3gF,OAAOy0H,kBAAmB,CACvDvyF,SAAS,EACTz7B,SAAS,GAQT2jI,2BANgCzpD,EAAO3gF,OAAOy0H,kBAAmB,CACjEvyF,SAAS,EACTz7B,SAAS,GAMb,CAGA,SAASyvE,IACP,MAAMm6C,EAAO1vC,EAAO0vC,KACpB,GAAIA,EAAKl1D,QAAS,OAClBk1D,EAAKl1D,SAAU,EACf,MAAM1pC,gBACJA,EAAe24G,0BACfA,GACED,IAGJxpD,EAAO29B,UAAUnnH,iBAAiB,cAAesxI,EAAgBh3G,GACjEkvD,EAAO29B,UAAUnnH,iBAAiB,cAAeyxI,EAAiBwB,GAClE,CAAC,YAAa,gBAAiB,cAActzI,SAAQwR,IACnDq4E,EAAO29B,UAAUnnH,iBAAiBmR,EAAWwgI,EAAcr3G,EAAgB,IAI7EkvD,EAAO29B,UAAUnnH,iBAAiB,cAAewwF,EAAayiD,EAChE,CACA,SAASj0D,IACP,MAAMk6C,EAAO1vC,EAAO0vC,KACpB,IAAKA,EAAKl1D,QAAS,OACnBk1D,EAAKl1D,SAAU,EACf,MAAM1pC,gBACJA,EAAe24G,0BACfA,GACED,IAGJxpD,EAAO29B,UAAUlnH,oBAAoB,cAAeqxI,EAAgBh3G,GACpEkvD,EAAO29B,UAAUlnH,oBAAoB,cAAewxI,EAAiBwB,GACrE,CAAC,YAAa,gBAAiB,cAActzI,SAAQwR,IACnDq4E,EAAO29B,UAAUlnH,oBAAoBkR,EAAWwgI,EAAcr3G,EAAgB,IAIhFkvD,EAAO29B,UAAUlnH,oBAAoB,cAAeuwF,EAAayiD,EACnE,CAteA3zI,OAAOuE,eAAe2lF,EAAO0vC,KAAM,QAAS,CAC1Cp1H,IAAGA,IACM8oE,EAET7oE,IAAIC,GACF,GAAI4oE,IAAU5oE,EAAO,CACnB,MAAMolH,EAAUgnB,EAAQhnB,QAClB3B,EAAU2oB,EAAQ3oB,QACxB5pF,EAAK,aAAc75B,EAAOolH,EAAS3B,EACrC,CACA76C,EAAQ5oE,CACV,IA4dFqC,EAAG,QAAQ,KACLmjF,EAAO3gF,OAAOqwH,KAAKl1D,SACrB+a,GACF,IAEF14E,EAAG,WAAW,KACZ24E,GAAS,IAEX34E,EAAG,cAAc,CAACm8H,EAAI/2H,KACf+9E,EAAO0vC,KAAKl1D,SApWnB,SAAsBv4D,GACpB,MAAM2vB,EAASouD,EAAOpuD,OACtB,IAAKg1G,EAAQhnB,QAAS,OACtB,GAAIvoB,EAAM3uD,UAAW,OACjB9W,EAAOC,SAAW5vB,EAAEyI,YAAYzI,EAAE+/B,iBACtCq1D,EAAM3uD,WAAY,EAClB,MAAM1iC,EAAQ+mH,EAAQ12H,OAAS,EAAI02H,EAAQ,GAAK9qH,EAChDo1F,EAAM1uD,aAAav3B,EAAIpL,EAAMo8B,MAC7Bi1D,EAAM1uD,aAAah7B,EAAI3H,EAAMq8B,KAC/B,CA4VEykD,CAAa7kF,EAAE,IAEjBpF,EAAG,YAAY,CAACm8H,EAAI/2H,KACb+9E,EAAO0vC,KAAKl1D,SAlRnB,WACE,MAAMk1D,EAAO1vC,EAAO0vC,KACpB,IAAKkX,EAAQhnB,QAAS,OACtB,IAAKvoB,EAAM3uD,YAAc2uD,EAAMr4D,QAG7B,OAFAq4D,EAAM3uD,WAAY,OAClB2uD,EAAMr4D,SAAU,GAGlBq4D,EAAM3uD,WAAY,EAClB2uD,EAAMr4D,SAAU,EAChB,IAAI0qG,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoBjU,EAASvkH,EAAIs4H,EACjCG,EAAexyC,EAAM22B,SAAW4b,EAChCE,EAAoBnU,EAAShoH,EAAIg8H,EACjCI,EAAe1yC,EAAM42B,SAAW6b,EAGnB,IAAfnU,EAASvkH,IAASs4H,EAAoB7pI,KAAK+R,KAAKi4H,EAAexyC,EAAM22B,UAAY2H,EAASvkH,IAC3E,IAAfukH,EAAShoH,IAASg8H,EAAoB9pI,KAAK+R,KAAKm4H,EAAe1yC,EAAM42B,UAAY0H,EAAShoH,IAC9F,MAAMq8H,EAAmBnqI,KAAK+B,IAAI8nI,EAAmBC,GACrDtyC,EAAM22B,SAAW6b,EACjBxyC,EAAM42B,SAAW8b,EAEjB,MAAM1B,EAAchxC,EAAMhmE,MAAQq+F,EAAKtsD,MACjCklE,EAAejxC,EAAMtkE,OAAS28F,EAAKtsD,MACzCi0B,EAAM6vC,KAAOrnI,KAAKgC,IAAI+kI,EAAQG,WAAa,EAAIsB,EAAc,EAAG,GAChEhxC,EAAM+vC,MAAQ/vC,EAAM6vC,KACpB7vC,EAAM8vC,KAAOtnI,KAAKgC,IAAI+kI,EAAQI,YAAc,EAAIsB,EAAe,EAAG,GAClEjxC,EAAMgwC,MAAQhwC,EAAM8vC,KACpB9vC,EAAM22B,SAAWnuH,KAAK+B,IAAI/B,KAAKgC,IAAIw1F,EAAM22B,SAAU32B,EAAM+vC,MAAO/vC,EAAM6vC,MACtE7vC,EAAM42B,SAAWpuH,KAAK+B,IAAI/B,KAAKgC,IAAIw1F,EAAM42B,SAAU52B,EAAMgwC,MAAOhwC,EAAM8vC,MACtEP,EAAQK,YAAY5vI,MAAM+S,mBAAsB,GAAE4/H,MAClDpD,EAAQK,YAAY5vI,MAAM8S,UAAa,eAAcktF,EAAM22B,eAAe32B,EAAM42B,eAClF,CAiPEhnC,EAAY,IAEdpqF,EAAG,aAAa,CAACm8H,EAAI/2H,MACd+9E,EAAOvgF,WAAaugF,EAAO3gF,OAAOqwH,KAAKl1D,SAAWwlB,EAAO0vC,KAAKl1D,SAAWwlB,EAAO3gF,OAAOqwH,KAAKxlH,QAC/Fq/H,EAAWtnI,EACb,IAEFpF,EAAG,iBAAiB,KACdmjF,EAAO0vC,KAAKl1D,SAAWwlB,EAAO3gF,OAAOqwH,KAAKl1D,SAC5CguE,GACF,IAEF3rI,EAAG,eAAe,KACZmjF,EAAO0vC,KAAKl1D,SAAWwlB,EAAO3gF,OAAOqwH,KAAKl1D,SAAWwlB,EAAO3gF,OAAOujH,SACrE4lB,GACF,IAEF1yI,OAAOsJ,OAAO4gF,EAAO0vC,KAAM,CACzBn6C,SACAC,UACAy0D,GAAIxB,EACJllE,IAAK+lE,EACLp/H,OAAQq/H,GAEZ,ECzkBA,SAAoBhvG,GAClB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EAYJ,SAAS2vG,EAAa94H,EAAGzD,GACvB,MAAMw8H,EAAe,WACnB,IAAIC,EACAC,EACAC,EACJ,MAAO,CAAChhF,EAAOn+C,KAGb,IAFAk/H,GAAY,EACZD,EAAW9gF,EAAMjzD,OACV+zI,EAAWC,EAAW,GAC3BC,EAAQF,EAAWC,GAAY,EAC3B/gF,EAAMghF,IAAUn/H,EAClBk/H,EAAWC,EAEXF,EAAWE,EAGf,OAAOF,CAAQ,CAEnB,CAjBqB,GAwBrB,IAAIG,EACAC,EAYJ,OAnBAzxI,KAAKqY,EAAIA,EACTrY,KAAK4U,EAAIA,EACT5U,KAAKoyH,UAAY/5G,EAAE/a,OAAS,EAM5B0C,KAAK0xI,YAAc,SAAqB7C,GACtC,OAAKA,GAGL4C,EAAKL,EAAapxI,KAAKqY,EAAGw2H,GAC1B2C,EAAKC,EAAK,GAIF5C,EAAK7uI,KAAKqY,EAAEm5H,KAAQxxI,KAAK4U,EAAE68H,GAAMzxI,KAAK4U,EAAE48H,KAAQxxI,KAAKqY,EAAEo5H,GAAMzxI,KAAKqY,EAAEm5H,IAAOxxI,KAAK4U,EAAE48H,IAR1E,C,EAUXxxI,IACT,CA8EA,SAAS2xI,IACF1qD,EAAOysC,WAAWC,SACnB1sC,EAAOysC,WAAWke,SACpB3qD,EAAOysC,WAAWke,YAAStoI,SACpB29E,EAAOysC,WAAWke,OAE7B,CAtIAlV,EAAa,CACXhJ,WAAY,CACVC,aAASrqH,EACTuoI,SAAS,EACTC,GAAI,WAIR7qD,EAAOysC,WAAa,CAClBC,aAASrqH,GA8HXxF,EAAG,cAAc,KACf,GAAsB,oBAAX/C,SAEiC,iBAArCkmF,EAAO3gF,OAAOotH,WAAWC,SAAwB1sC,EAAO3gF,OAAOotH,WAAWC,mBAAmBtP,aAFpG,CAGE,MAAM0tB,EAAiBzyI,SAASxB,cAAcmpF,EAAO3gF,OAAOotH,WAAWC,SACvE,GAAIoe,GAAkBA,EAAe9qD,OACnCA,EAAOysC,WAAWC,QAAUoe,EAAe9qD,YACtC,GAAI8qD,EAAgB,CACzB,MAAMC,EAAqB9oI,IACzB+9E,EAAOysC,WAAWC,QAAUzqH,EAAEuI,OAAO,GACrCw1E,EAAOv1B,SACPqgF,EAAer0I,oBAAoB,OAAQs0I,EAAmB,EAEhED,EAAet0I,iBAAiB,OAAQu0I,EAC1C,CAEF,MACA/qD,EAAOysC,WAAWC,QAAU1sC,EAAO3gF,OAAOotH,WAAWC,OAAO,IAE9D7vH,EAAG,UAAU,KACX6tI,GAAc,IAEhB7tI,EAAG,UAAU,KACX6tI,GAAc,IAEhB7tI,EAAG,kBAAkB,KACnB6tI,GAAc,IAEhB7tI,EAAG,gBAAgB,CAACm8H,EAAI5kD,EAAWg1C,KAC5BppC,EAAOysC,WAAWC,UAAW1sC,EAAOysC,WAAWC,QAAQvnD,WAC5D6a,EAAOysC,WAAWtD,aAAa/0C,EAAWg1C,EAAa,IAEzDvsH,EAAG,iBAAiB,CAACm8H,EAAI15H,EAAU8pH,KAC5BppC,EAAOysC,WAAWC,UAAW1sC,EAAOysC,WAAWC,QAAQvnD,WAC5D6a,EAAOysC,WAAWjH,cAAclmH,EAAU8pH,EAAa,IAEzDtzH,OAAOsJ,OAAO4gF,EAAOysC,WAAY,CAC/BtD,aAtHF,SAAsB6hB,EAAI5hB,GACxB,MAAM6hB,EAAajrD,EAAOysC,WAAWC,QACrC,IAAIhG,EACAwkB,EACJ,MAAM7V,EAASr1C,EAAOnqF,YACtB,SAASs1I,EAAuBrsI,GAC9B,GAAIA,EAAEqmE,UAAW,OAMjB,MAAMiP,EAAY4L,EAAOqhC,cAAgBrhC,EAAO5L,UAAY4L,EAAO5L,UAC/B,UAAhC4L,EAAO3gF,OAAOotH,WAAWoe,MAhBjC,SAAgC/rI,GAC9BkhF,EAAOysC,WAAWke,OAAS3qD,EAAO3gF,OAAOohH,KAAO,IAAIypB,EAAalqD,EAAO4hC,WAAY9iH,EAAE8iH,YAAc,IAAIsoB,EAAalqD,EAAO2hC,SAAU7iH,EAAE6iH,SAC1I,CAeMypB,CAAuBtsI,GAGvBosI,GAAuBlrD,EAAOysC,WAAWke,OAAOF,aAAar2D,IAE1D82D,GAAuD,cAAhClrD,EAAO3gF,OAAOotH,WAAWoe,KACnDnkB,GAAc5nH,EAAEmvE,eAAiBnvE,EAAEkvE,iBAAmBgS,EAAO/R,eAAiB+R,EAAOhS,iBACjF7/C,OAAOC,MAAMs4F,IAAgBv4F,OAAOk9G,SAAS3kB,KAC/CA,EAAa,GAEfwkB,GAAuB92D,EAAY4L,EAAOhS,gBAAkB04C,EAAa5nH,EAAEkvE,gBAEzEgS,EAAO3gF,OAAOotH,WAAWme,UAC3BM,EAAsBpsI,EAAEmvE,eAAiBi9D,GAE3CpsI,EAAE2nH,eAAeykB,GACjBpsI,EAAEqqH,aAAa+hB,EAAqBlrD,GACpClhF,EAAEspH,oBACFtpH,EAAE2oH,qBACJ,CACA,GAAIztH,MAAMc,QAAQmwI,GAChB,IAAK,IAAIpvI,EAAI,EAAGA,EAAIovI,EAAW50I,OAAQwF,GAAK,EACtCovI,EAAWpvI,KAAOutH,GAAgB6hB,EAAWpvI,aAAcw5H,GAC7D8V,EAAuBF,EAAWpvI,SAG7BovI,aAAsB5V,GAAUjM,IAAiB6hB,GAC1DE,EAAuBF,EAE3B,EA4EEzlB,cA3EF,SAAuBlmH,EAAU8pH,GAC/B,MAAMiM,EAASr1C,EAAOnqF,YAChBo1I,EAAajrD,EAAOysC,WAAWC,QACrC,IAAI7wH,EACJ,SAASyvI,EAAwBxsI,GAC3BA,EAAEqmE,YACNrmE,EAAE0mH,cAAclmH,EAAU0gF,GACT,IAAb1gF,IACFR,EAAE4lF,kBACE5lF,EAAEO,OAAO86E,YACXlvD,IAAS,KACPnsB,EAAEumH,kBAAkB,IAGxB5G,GAAqB3/G,EAAE6+G,WAAW,KAC3BstB,GACLnsI,EAAEwvC,eAAe,KAGvB,CACA,GAAIt0C,MAAMc,QAAQmwI,GAChB,IAAKpvI,EAAI,EAAGA,EAAIovI,EAAW50I,OAAQwF,GAAK,EAClCovI,EAAWpvI,KAAOutH,GAAgB6hB,EAAWpvI,aAAcw5H,GAC7DiW,EAAwBL,EAAWpvI,SAG9BovI,aAAsB5V,GAAUjM,IAAiB6hB,GAC1DK,EAAwBL,EAE5B,GAgDF,ECrLA,SAAc1wG,GACZ,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACX8V,KAAM,CACJ/wE,SAAS,EACTgxE,kBAAmB,sBACnBC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAClBC,wBAAyB,wBACzBC,kBAAmB,+BACnBC,iBAAkB,KAClBC,gCAAiC,KACjCC,2BAA4B,KAC5BC,UAAW,QACXvyI,GAAI,QAGRqmF,EAAOurD,KAAO,CACZY,SAAS,GAEX,IAAIC,EAAa,KACjB,SAASC,EAAO3mF,GACd,MAAM4mF,EAAeF,EACO,IAAxBE,EAAaj2I,SACjBi2I,EAAa1wI,UAAY,GACzB0wI,EAAa1wI,UAAY8pD,EAC3B,CACA,MAAMs7E,EAAoBnmI,IAAOb,MAAMc,QAAQD,GAAMA,EAAK,CAACA,IAAKK,QAAO+G,KAAOA,IAQ9E,SAASsqI,EAAgB1xI,IACvBA,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,WAAY,IAAI,GAEvC,CACA,SAASk1I,EAAmB3xI,IAC1BA,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,WAAY,KAAK,GAExC,CACA,SAASm1I,EAAU5xI,EAAIg4C,IACrBh4C,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,OAAQu7C,EAAK,GAEpC,CACA,SAAS65F,EAAqB7xI,EAAI8xI,IAChC9xI,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,uBAAwBq1I,EAAY,GAE3D,CAOA,SAASC,EAAW/xI,EAAIsyE,IACtBtyE,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,aAAc61E,EAAM,GAE3C,CAaA,SAAS0/D,EAAUhyI,IACjBA,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,iBAAiB,EAAK,GAE7C,CACA,SAASw1I,EAASjyI,IAChBA,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,iBAAiB,EAAM,GAE9C,CACA,SAASy1I,EAAkB9qI,GACzB,GAAkB,KAAdA,EAAEqkE,SAAgC,KAAdrkE,EAAEqkE,QAAgB,OAC1C,MAAMjnE,EAAS2gF,EAAO3gF,OAAOksI,KACvBt0G,EAAWh1B,EAAEjM,OACfgqF,EAAOshD,YAActhD,EAAOshD,WAAWzmI,KAAOo8B,IAAa+oD,EAAOshD,WAAWzmI,IAAMmlF,EAAOshD,WAAWzmI,GAAG0J,SAAStC,EAAEjM,WAChHiM,EAAEjM,OAAOmP,QAAQsyH,GAAkBz3C,EAAO3gF,OAAOiiI,WAAWc,gBAE/DpiD,EAAOsxC,YAActxC,EAAOsxC,WAAWC,QAAUt6F,IAAa+oD,EAAOsxC,WAAWC,SAC5EvxC,EAAO6mC,QAAU7mC,EAAO3gF,OAAOohH,MACnCzgC,EAAOyqC,YAELzqC,EAAO6mC,MACTwlB,EAAOhtI,EAAOusI,kBAEdS,EAAOhtI,EAAOqsI,mBAGd1rD,EAAOsxC,YAActxC,EAAOsxC,WAAWE,QAAUv6F,IAAa+oD,EAAOsxC,WAAWE,SAC5ExxC,EAAO4mC,cAAgB5mC,EAAO3gF,OAAOohH,MACzCzgC,EAAO8qC,YAEL9qC,EAAO4mC,YACTylB,EAAOhtI,EAAOssI,mBAEdU,EAAOhtI,EAAOosI,mBAGdzrD,EAAOshD,YAAcrqG,EAAS9xB,QAAQsyH,GAAkBz3C,EAAO3gF,OAAOiiI,WAAWc,eACnFnrG,EAASn6B,QAEb,CA0BA,SAASkwI,IACP,OAAOhtD,EAAOshD,YAActhD,EAAOshD,WAAWyB,SAAW/iD,EAAOshD,WAAWyB,QAAQ1sI,MACrF,CACA,SAAS42I,IACP,OAAOD,KAAmBhtD,EAAO3gF,OAAOiiI,WAAWC,SACrD,CAmBA,MAAM2L,EAAYA,CAACryI,EAAIsyI,EAAWznF,KAChC6mF,EAAgB1xI,GACG,WAAfA,EAAG+vD,UACL6hF,EAAU5xI,EAAI,UACdA,EAAGrE,iBAAiB,UAAWu2I,IAEjCH,EAAW/xI,EAAI6qD,GA1HjB,SAAuB7qD,EAAIuyI,IACzBvyI,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,gBAAiB81I,EAAS,GAEjD,CAsHEC,CAAcxyI,EAAIsyI,EAAU,EAExBG,EAAoBA,KACxBttD,EAAOurD,KAAKY,SAAU,CAAI,EAEtBoB,EAAkBA,KACtB/zI,uBAAsB,KACpBA,uBAAsB,KACfwmF,EAAO7a,YACV6a,EAAOurD,KAAKY,SAAU,EACxB,GACA,GACF,EAEEqB,EAAcvrI,IAClB,GAAI+9E,EAAOurD,KAAKY,QAAS,OACzB,MAAMluB,EAAUh8G,EAAEjM,OAAO+M,QAAS,IAAGi9E,EAAO3gF,OAAOwgH,4BACnD,IAAK5B,IAAYj+B,EAAOG,OAAO51D,SAAS0zF,GAAU,OAClD,MAAM7M,EAAWpxB,EAAOG,OAAO1kF,QAAQwiH,KAAaj+B,EAAO5d,YACrDrI,EAAYimB,EAAO3gF,OAAO0lH,qBAAuB/kC,EAAO2lC,eAAiB3lC,EAAO2lC,cAAcp7F,SAAS0zF,GACzG7M,GAAYr3C,GACZ93D,EAAEwrI,oBAAsBxrI,EAAEwrI,mBAAmBC,mBAC7C1tD,EAAOkc,eACTlc,EAAOnlF,GAAGiM,WAAa,EAEvBk5E,EAAOnlF,GAAG+L,UAAY,EAExBo5E,EAAOI,QAAQJ,EAAOG,OAAO1kF,QAAQwiH,GAAU,GAAE,EAE7C8E,EAAaA,KACjB,MAAM1jH,EAAS2gF,EAAO3gF,OAAOksI,KACzBlsI,EAAO4sI,4BACTS,EAAqB1sD,EAAOG,OAAQ9gF,EAAO4sI,4BAEzC5sI,EAAO6sI,WACTO,EAAUzsD,EAAOG,OAAQ9gF,EAAO6sI,WAElC,MAAMxqB,EAAe1hC,EAAOG,OAAO9pF,OAC/BgJ,EAAOysI,mBACT9rD,EAAOG,OAAOhqF,SAAQ,CAAC8nH,EAASz9G,KAC9B,MAAM0jH,EAAalkC,EAAO3gF,OAAOohH,KAAOx3F,SAASg1F,EAAQr7G,aAAa,2BAA4B,IAAMpC,EAExGosI,EAAW3uB,EADc5+G,EAAOysI,kBAAkB9qI,QAAQ,gBAAiBkjH,EAAa,GAAGljH,QAAQ,uBAAwB0gH,GACtF,GAEzC,EAEItpF,EAAOA,KACX,MAAM/4B,EAAS2gF,EAAO3gF,OAAOksI,KAC7BvrD,EAAOnlF,GAAG6H,OAAO0pI,GAGjB,MAAMtoE,EAAckc,EAAOnlF,GACvBwE,EAAO2sI,iCACTU,EAAqB5oE,EAAazkE,EAAO2sI,iCAEvC3sI,EAAO0sI,kBACTa,EAAW9oE,EAAazkE,EAAO0sI,kBAIjC,MAAMpuB,EAAY39B,EAAO29B,UACnBwvB,EAAY9tI,EAAO1F,IAAMgkH,EAAU/6G,aAAa,OAAU,kBAvNzC2a,EAuN0E,QAtNpF,IAATA,IACFA,EAAO,IAGF,IAAIyL,OAAOzL,GAAMvc,QAAQ,MADb2sI,IAAM9tI,KAAKkO,MAAM,GAAKlO,KAAK6qB,UAAUrC,SAAS,QAJnE,IAAyB9K,EAwNvB,MAAMqwH,EAAO5tD,EAAO3gF,OAAOqyH,UAAY1xC,EAAO3gF,OAAOqyH,SAASl3D,QAAU,MAAQ,UA7KlF,SAAiB3/D,EAAIlB,IACnBkB,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,KAAMqC,EAAG,GAEhC,CAyKEk0I,CAAQlwB,EAAWwvB,GAxKrB,SAAmBtyI,EAAI+yI,IACrB/yI,EAAKmmI,EAAkBnmI,IACpB1E,SAAQ4nE,IACTA,EAAMzmE,aAAa,YAAas2I,EAAK,GAEzC,CAoKEE,CAAUnwB,EAAWiwB,GAGrB7qB,IAGA,IAAIwO,OACFA,EAAMC,OACNA,GACExxC,EAAOsxC,WAAatxC,EAAOsxC,WAAa,GAW5C,GAVAC,EAASyP,EAAkBzP,GAC3BC,EAASwP,EAAkBxP,GACvBD,GACFA,EAAOp7H,SAAQ0E,GAAMqyI,EAAUryI,EAAIsyI,EAAW9tI,EAAOqsI,oBAEnDla,GACFA,EAAOr7H,SAAQ0E,GAAMqyI,EAAUryI,EAAIsyI,EAAW9tI,EAAOosI,oBAInDwB,IAA0B,EACPjzI,MAAMc,QAAQklF,EAAOshD,WAAWzmI,IAAMmlF,EAAOshD,WAAWzmI,GAAK,CAACmlF,EAAOshD,WAAWzmI,KACxF1E,SAAQ0E,IACnBA,EAAGrE,iBAAiB,UAAWu2I,EAAkB,GAErD,CAGA/sD,EAAOnlF,GAAGrE,iBAAiB,QAASg3I,GAAa,GACjDxtD,EAAOnlF,GAAGrE,iBAAiB,cAAe82I,GAAmB,GAC7DttD,EAAOnlF,GAAGrE,iBAAiB,YAAa+2I,GAAiB,EAAK,EA8BhE1wI,EAAG,cAAc,KACfuvI,EAAal1I,GAAc,OAAQ8oF,EAAO3gF,OAAOksI,KAAKC,mBACtDY,EAAW90I,aAAa,YAAa,aACrC80I,EAAW90I,aAAa,cAAe,OAAO,IAEhDuF,EAAG,aAAa,KACTmjF,EAAO3gF,OAAOksI,KAAK/wE,SACxBpiC,GAAM,IAERv7B,EAAG,kEAAkE,KAC9DmjF,EAAO3gF,OAAOksI,KAAK/wE,SACxBuoD,GAAY,IAEdlmH,EAAG,yCAAyC,KACrCmjF,EAAO3gF,OAAOksI,KAAK/wE,SAlM1B,WACE,GAAIwlB,EAAO3gF,OAAOohH,MAAQzgC,EAAO3gF,OAAOmhH,SAAWxgC,EAAOsxC,WAAY,OACtE,MAAMC,OACJA,EAAMC,OACNA,GACExxC,EAAOsxC,WACPE,IACExxC,EAAO4mC,aACTimB,EAAUrb,GACVgb,EAAmBhb,KAEnBsb,EAAStb,GACT+a,EAAgB/a,KAGhBD,IACEvxC,EAAO6mC,OACTgmB,EAAUtb,GACVib,EAAmBjb,KAEnBub,EAASvb,GACTgb,EAAgBhb,IAGtB,CA2KEwc,EAAkB,IAEpBlxI,EAAG,oBAAoB,KAChBmjF,EAAO3gF,OAAOksI,KAAK/wE,SAvK1B,WACE,MAAMn7D,EAAS2gF,EAAO3gF,OAAOksI,KACxByB,KACLhtD,EAAOshD,WAAWyB,QAAQ5sI,SAAQgtI,IAC5BnjD,EAAO3gF,OAAOiiI,WAAWC,YAC3BgL,EAAgBpJ,GACXnjD,EAAO3gF,OAAOiiI,WAAWK,eAC5B8K,EAAUtJ,EAAU,UACpByJ,EAAWzJ,EAAU9jI,EAAOwsI,wBAAwB7qI,QAAQ,gBAAiBs9G,GAAa6kB,GAAY,MAGtGA,EAASh+H,QAAQsyH,GAAkBz3C,EAAO3gF,OAAOiiI,WAAWe,oBAC9Dc,EAAS7rI,aAAa,eAAgB,QAEtC6rI,EAAS16H,gBAAgB,eAC3B,GAEJ,CAuJEulI,EAAkB,IAEpBnxI,EAAG,WAAW,KACPmjF,EAAO3gF,OAAOksI,KAAK/wE,SAlD1B,WACM4xE,GAAYA,EAAWxoI,SAC3B,IAAI2tH,OACFA,EAAMC,OACNA,GACExxC,EAAOsxC,WAAatxC,EAAOsxC,WAAa,GAC5CC,EAASyP,EAAkBzP,GAC3BC,EAASwP,EAAkBxP,GACvBD,GACFA,EAAOp7H,SAAQ0E,GAAMA,EAAGpE,oBAAoB,UAAWs2I,KAErDvb,GACFA,EAAOr7H,SAAQ0E,GAAMA,EAAGpE,oBAAoB,UAAWs2I,KAIrDE,MACmBjzI,MAAMc,QAAQklF,EAAOshD,WAAWzmI,IAAMmlF,EAAOshD,WAAWzmI,GAAK,CAACmlF,EAAOshD,WAAWzmI,KACxF1E,SAAQ0E,IACnBA,EAAGpE,oBAAoB,UAAWs2I,EAAkB,IAKxD/sD,EAAOnlF,GAAGpE,oBAAoB,QAAS+2I,GAAa,GACpDxtD,EAAOnlF,GAAGpE,oBAAoB,cAAe62I,GAAmB,GAChEttD,EAAOnlF,GAAGpE,oBAAoB,YAAa82I,GAAiB,EAC9D,CAwBEz2G,EAAS,GAEb,EClVA,SAAiByD,GACf,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACXh9H,QAAS,CACP+hE,SAAS,EACT1nB,KAAM,GACNp6C,cAAc,EACdtC,IAAK,SACL63I,WAAW,KAGf,IAAIr3H,GAAc,EACd+vB,EAAQ,GACZ,MAAMunG,EAAUnkI,GACPA,EAAKse,WAAWrnB,QAAQ,OAAQ,KAAKA,QAAQ,WAAY,IAAIA,QAAQ,OAAQ,KAAKA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAEvHmtI,EAAgBC,IACpB,MAAMt0I,EAASF,KACf,IAAIlC,EAEFA,EADE02I,EACS,IAAI7vF,IAAI6vF,GAERt0I,EAAOpC,SAEpB,MAAM22I,EAAY32I,EAASM,SAAS+wB,MAAM,GAAG1sB,MAAM,KAAKnB,QAAOotB,GAAiB,KAATA,IACjEk7G,EAAQ6K,EAAUh4I,OAGxB,MAAO,CACLD,IAHUi4I,EAAU7K,EAAQ,GAI5BhpI,MAHY6zI,EAAU7K,EAAQ,GAI/B,EAEG8K,EAAaA,CAACl4I,EAAKoK,KACvB,MAAM1G,EAASF,KACf,IAAKgd,IAAgBopE,EAAO3gF,OAAO5G,QAAQ+hE,QAAS,OACpD,IAAI9iE,EAEFA,EADEsoF,EAAO3gF,OAAOisB,IACL,IAAIizB,IAAIyhC,EAAO3gF,OAAOisB,KAEtBxxB,EAAOpC,SAEpB,MAAMurH,EAAQjjC,EAAOG,OAAO3/E,GAC5B,IAAIhG,EAAQ0zI,EAAQjrB,EAAMrgH,aAAa,iBACvC,GAAIo9E,EAAO3gF,OAAO5G,QAAQq6C,KAAKz8C,OAAS,EAAG,CACzC,IAAIy8C,EAAOktC,EAAO3gF,OAAO5G,QAAQq6C,KACH,MAA1BA,EAAKA,EAAKz8C,OAAS,KAAYy8C,EAAOA,EAAK/pB,MAAM,EAAG+pB,EAAKz8C,OAAS,IACtEmE,EAAS,GAAEs4C,KAAQ18C,EAAO,GAAEA,KAAS,KAAKoE,G,MAChC9C,EAASM,SAASuyB,SAASn0B,KACrCoE,EAAS,GAAEpE,EAAO,GAAEA,KAAS,KAAKoE,KAEhCwlF,EAAO3gF,OAAO5G,QAAQw1I,YACxBzzI,GAAS9C,EAASQ,QAEpB,MAAMq2I,EAAez0I,EAAOrB,QAAQmvC,MAChC2mG,GAAgBA,EAAa/zI,QAAUA,IAGvCwlF,EAAO3gF,OAAO5G,QAAQC,aACxBoB,EAAOrB,QAAQC,aAAa,CAC1B8B,SACC,KAAMA,GAETV,EAAOrB,QAAQE,UAAU,CACvB6B,SACC,KAAMA,GACX,EAEIg0I,EAAgBA,CAAC9wB,EAAOljH,EAAOgvH,KACnC,GAAIhvH,EACF,IAAK,IAAIqB,EAAI,EAAGxF,EAAS2pF,EAAOG,OAAO9pF,OAAQwF,EAAIxF,EAAQwF,GAAK,EAAG,CACjE,MAAMonH,EAAQjjC,EAAOG,OAAOtkF,GAE5B,GADqBqyI,EAAQjrB,EAAMrgH,aAAa,mBAC3BpI,EAAO,CAC1B,MAAMgG,EAAQw/E,EAAO0rC,cAAczI,GACnCjjC,EAAOI,QAAQ5/E,EAAOk9G,EAAO8L,EAC/B,CACF,MAEAxpC,EAAOI,QAAQ,EAAGs9B,EAAO8L,EAC3B,EAEIilB,EAAqBA,KACzB9nG,EAAQwnG,EAAcnuD,EAAO3gF,OAAOisB,KACpCkjH,EAAcxuD,EAAO3gF,OAAOq+G,MAAO/2E,EAAMnsC,OAAO,EAAM,EA6BxDqC,EAAG,QAAQ,KACLmjF,EAAO3gF,OAAO5G,QAAQ+hE,SA5BfpiC,MACX,MAAMt+B,EAASF,KACf,GAAKomF,EAAO3gF,OAAO5G,QAAnB,CACA,IAAKqB,EAAOrB,UAAYqB,EAAOrB,QAAQE,UAGrC,OAFAqnF,EAAO3gF,OAAO5G,QAAQ+hE,SAAU,OAChCwlB,EAAO3gF,OAAOqvI,eAAel0E,SAAU,GAGzC5jD,GAAc,EACd+vB,EAAQwnG,EAAcnuD,EAAO3gF,OAAOisB,KAC/Bqb,EAAMvwC,KAAQuwC,EAAMnsC,OAMzBg0I,EAAc,EAAG7nG,EAAMnsC,MAAOwlF,EAAO3gF,OAAOupH,oBACvC5oC,EAAO3gF,OAAO5G,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAYi4I,IAP/BzuD,EAAO3gF,OAAO5G,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAYi4I,EAVZ,CAiB5B,EAUEr2G,EACF,IAEFv7B,EAAG,WAAW,KACRmjF,EAAO3gF,OAAO5G,QAAQ+hE,SAZZ1jC,MACd,MAAMh9B,EAASF,KACVomF,EAAO3gF,OAAO5G,QAAQC,cACzBoB,EAAOrD,oBAAoB,WAAYg4I,EACzC,EASE33G,EACF,IAEFj6B,EAAG,4CAA4C,KACzC+Z,GACF03H,EAAWtuD,EAAO3gF,OAAO5G,QAAQrC,IAAK4pF,EAAO5d,YAC/C,IAEFvlE,EAAG,eAAe,KACZ+Z,GAAeopE,EAAO3gF,OAAOujH,SAC/B0rB,EAAWtuD,EAAO3gF,OAAO5G,QAAQrC,IAAK4pF,EAAO5d,YAC/C,GAEJ,ECxIA,SAAwB7nC,GACtB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAYphG,KACZA,EAAIx3B,GACJA,GACE09B,EACA3jB,GAAc,EAClB,MAAMve,EAAWF,KACX2B,EAASF,KACf67H,EAAa,CACXiZ,eAAgB,CACdl0E,SAAS,EACT9hE,cAAc,EACdi2I,YAAY,EACZjjB,cAAcsN,EAAIrhI,GAChB,GAAIqoF,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAAS,CACnD,MAAMo0E,EAAgB5uD,EAAOG,OAAOjlF,QAAO+iH,GAAWA,EAAQr7G,aAAa,eAAiBjL,IAAM,GAClG,IAAKi3I,EAAe,OAAO,EAE3B,OADc3lH,SAAS2lH,EAAchsI,aAAa,2BAA4B,GAEhF,CACA,OAAOo9E,EAAO0rC,cAAcvN,GAAgBn+B,EAAOmhC,SAAW,IAAGnhC,EAAO3gF,OAAOwgH,yBAAyBloH,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMk3I,EAAeA,KACnBx6G,EAAK,cACL,MAAMy6G,EAAUz2I,EAASX,SAASC,KAAKqJ,QAAQ,IAAK,IAC9C+tI,EAAgB/uD,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAAUwlB,EAAOmhC,SAAStqH,cAAe,6BAA4BmpF,EAAO5d,iBAAmB4d,EAAOG,OAAOH,EAAO5d,aAElL,GAAI0sE,KADoBC,EAAgBA,EAAcnsI,aAAa,aAAe,IACjD,CAC/B,MAAM4nH,EAAWxqC,EAAO3gF,OAAOqvI,eAAehjB,cAAc1rC,EAAQ8uD,GACpE,QAAwB,IAAbtkB,GAA4Br8F,OAAOC,MAAMo8F,GAAW,OAC/DxqC,EAAOI,QAAQoqC,EACjB,GAEIwkB,EAAUA,KACd,IAAKp4H,IAAgBopE,EAAO3gF,OAAOqvI,eAAel0E,QAAS,OAC3D,MAAMu0E,EAAgB/uD,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAAUwlB,EAAOmhC,SAAStqH,cAAe,6BAA4BmpF,EAAO5d,iBAAmB4d,EAAOG,OAAOH,EAAO5d,aAC5K6sE,EAAkBF,EAAgBA,EAAcnsI,aAAa,cAAgBmsI,EAAcnsI,aAAa,gBAAkB,GAC5Ho9E,EAAO3gF,OAAOqvI,eAAeh2I,cAAgBoB,EAAOrB,SAAWqB,EAAOrB,QAAQC,cAChFoB,EAAOrB,QAAQC,aAAa,KAAM,KAAO,IAAGu2I,KAAqB,IACjE56G,EAAK,aAELh8B,EAASX,SAASC,KAAOs3I,GAAmB,GAC5C56G,EAAK,WACP,EAoBFx3B,EAAG,QAAQ,KACLmjF,EAAO3gF,OAAOqvI,eAAel0E,SAnBtBpiC,MACX,IAAK4nD,EAAO3gF,OAAOqvI,eAAel0E,SAAWwlB,EAAO3gF,OAAO5G,SAAWunF,EAAO3gF,OAAO5G,QAAQ+hE,QAAS,OACrG5jD,GAAc,EACd,MAAMjf,EAAOU,EAASX,SAASC,KAAKqJ,QAAQ,IAAK,IACjD,GAAIrJ,EAAM,CACR,MAAM+lH,EAAQ,EACRl9G,EAAQw/E,EAAO3gF,OAAOqvI,eAAehjB,cAAc1rC,EAAQroF,GACjEqoF,EAAOI,QAAQ5/E,GAAS,EAAGk9G,EAAO19B,EAAO3gF,OAAOupH,oBAAoB,EACtE,CACI5oC,EAAO3gF,OAAOqvI,eAAeC,YAC/B70I,EAAOtD,iBAAiB,aAAcq4I,EACxC,EASEz2G,EACF,IAEFv7B,EAAG,WAAW,KACRmjF,EAAO3gF,OAAOqvI,eAAel0E,SAV7BwlB,EAAO3gF,OAAOqvI,eAAeC,YAC/B70I,EAAOrD,oBAAoB,aAAco4I,EAW3C,IAEFhyI,EAAG,4CAA4C,KACzC+Z,GACFo4H,GACF,IAEFnyI,EAAG,eAAe,KACZ+Z,GAAeopE,EAAO3gF,OAAOujH,SAC/BosB,GACF,GAEJ,ECtFA,SAAkBz0G,GAChB,IAuBI0jG,EACAtvE,GAxBAqxB,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,EAAEw3B,KACFA,EAAIh1B,OACJA,GACEk7B,EACJylD,EAAO0xC,SAAW,CAChBC,SAAS,EACTC,QAAQ,EACRsd,SAAU,GAEZzZ,EAAa,CACX/D,SAAU,CACRl3D,SAAS,EACTtvC,MAAO,IACPikH,mBAAmB,EACnBC,sBAAsB,EACtBC,iBAAiB,EACjBC,kBAAkB,EAClBC,mBAAmB,KAKvB,IAEIC,EAEAC,EACA/mG,EACAgnG,EACAC,EACAC,EACAC,EATAC,EAAqBzwI,GAAUA,EAAOqyH,SAAWryH,EAAOqyH,SAASxmG,MAAQ,IACzE6kH,EAAuB1wI,GAAUA,EAAOqyH,SAAWryH,EAAOqyH,SAASxmG,MAAQ,IAE3E8kH,GAAoB,IAAI72I,MAAOuI,QAOnC,SAAS8mI,EAAgBvmI,GAClB+9E,IAAUA,EAAO7a,WAAc6a,EAAO29B,WACvC17G,EAAEjM,SAAWgqF,EAAO29B,YACxB39B,EAAO29B,UAAUlnH,oBAAoB,gBAAiB+xI,GACtD1W,IACF,CACA,MAAMme,EAAeA,KACnB,GAAIjwD,EAAO7a,YAAc6a,EAAO0xC,SAASC,QAAS,OAC9C3xC,EAAO0xC,SAASE,OAClB6d,GAAY,EACHA,IACTM,EAAuBP,EACvBC,GAAY,GAEd,MAAMP,EAAWlvD,EAAO0xC,SAASE,OAAS4d,EAAmBQ,EAAoBD,GAAuB,IAAI52I,MAAOuI,UACnHs+E,EAAO0xC,SAASwd,SAAWA,EAC3B76G,EAAK,mBAAoB66G,EAAUA,EAAWY,GAC9CnhF,EAAMn1D,uBAAsB,KAC1By2I,GAAc,GACd,EAaEC,EAAMC,IACV,GAAInwD,EAAO7a,YAAc6a,EAAO0xC,SAASC,QAAS,OAClDj4H,qBAAqBi1D,GACrBshF,IACA,IAAI/kH,OAA8B,IAAfilH,EAA6BnwD,EAAO3gF,OAAOqyH,SAASxmG,MAAQilH,EAC/EL,EAAqB9vD,EAAO3gF,OAAOqyH,SAASxmG,MAC5C6kH,EAAuB/vD,EAAO3gF,OAAOqyH,SAASxmG,MAC9C,MAAMklH,EAlBcC,MACpB,IAAItB,EAMJ,GAJEA,EADE/uD,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAC1BwlB,EAAOG,OAAOjlF,QAAO+iH,GAAWA,EAAQl/G,UAAUwF,SAAS,yBAAwB,GAEnFy7E,EAAOG,OAAOH,EAAO5d,cAElC2sE,EAAe,OAEpB,OAD0B9lH,SAAS8lH,EAAcnsI,aAAa,wBAAyB,GAC/D,EASEytI,IACrBliH,OAAOC,MAAMgiH,IAAsBA,EAAoB,QAA2B,IAAfD,IACtEjlH,EAAQklH,EACRN,EAAqBM,EACrBL,EAAuBK,GAEzBZ,EAAmBtkH,EACnB,MAAMwyF,EAAQ19B,EAAO3gF,OAAOq+G,MACtB4yB,EAAUA,KACTtwD,IAAUA,EAAO7a,YAClB6a,EAAO3gF,OAAOqyH,SAAS4d,kBACpBtvD,EAAO4mC,aAAe5mC,EAAO3gF,OAAOohH,MAAQzgC,EAAO3gF,OAAOmhH,QAC7DxgC,EAAO8qC,UAAUpN,GAAO,GAAM,GAC9BrpF,EAAK,aACK2rD,EAAO3gF,OAAOqyH,SAAS2d,kBACjCrvD,EAAOI,QAAQJ,EAAOG,OAAO9pF,OAAS,EAAGqnH,GAAO,GAAM,GACtDrpF,EAAK,cAGF2rD,EAAO6mC,OAAS7mC,EAAO3gF,OAAOohH,MAAQzgC,EAAO3gF,OAAOmhH,QACvDxgC,EAAOyqC,UAAU/M,GAAO,GAAM,GAC9BrpF,EAAK,aACK2rD,EAAO3gF,OAAOqyH,SAAS2d,kBACjCrvD,EAAOI,QAAQ,EAAGs9B,GAAO,GAAM,GAC/BrpF,EAAK,aAGL2rD,EAAO3gF,OAAOujH,UAChBotB,GAAoB,IAAI72I,MAAOuI,UAC/BlI,uBAAsB,KACpB02I,GAAK,KAET,EAcF,OAZIhlH,EAAQ,GACV5xB,aAAa2kI,GACbA,EAAU5kI,YAAW,KACnBi3I,GAAS,GACRplH,IAEH1xB,uBAAsB,KACpB82I,GAAS,IAKNplH,CAAK,EAERxf,EAAQA,KACZs0E,EAAO0xC,SAASC,SAAU,EAC1Bue,IACA77G,EAAK,gBAAgB,EAEjBr0B,EAAOA,KACXggF,EAAO0xC,SAASC,SAAU,EAC1Br4H,aAAa2kI,GACbvkI,qBAAqBi1D,GACrBt6B,EAAK,eAAe,EAEhBk8G,EAAQA,CAACh7B,EAAU/jF,KACvB,GAAIwuD,EAAO7a,YAAc6a,EAAO0xC,SAASC,QAAS,OAClDr4H,aAAa2kI,GACR1oB,IACHs6B,GAAsB,GAExB,MAAMS,EAAUA,KACdj8G,EAAK,iBACD2rD,EAAO3gF,OAAOqyH,SAASyd,kBACzBnvD,EAAO29B,UAAUnnH,iBAAiB,gBAAiBgyI,GAEnD1W,GACF,EAGF,GADA9xC,EAAO0xC,SAASE,QAAS,EACrBpgG,EAMF,OALIo+G,IACFJ,EAAmBxvD,EAAO3gF,OAAOqyH,SAASxmG,OAE5C0kH,GAAe,OACfU,IAGF,MAAMplH,EAAQskH,GAAoBxvD,EAAO3gF,OAAOqyH,SAASxmG,MACzDskH,EAAmBtkH,IAAS,IAAI/xB,MAAOuI,UAAYsuI,GAC/ChwD,EAAO6mC,OAAS2oB,EAAmB,IAAMxvD,EAAO3gF,OAAOohH,OACvD+uB,EAAmB,IAAGA,EAAmB,GAC7Cc,IAAS,EAELxe,EAASA,KACT9xC,EAAO6mC,OAAS2oB,EAAmB,IAAMxvD,EAAO3gF,OAAOohH,MAAQzgC,EAAO7a,YAAc6a,EAAO0xC,SAASC,UACxGqe,GAAoB,IAAI72I,MAAOuI,UAC3BmuI,GACFA,GAAsB,EACtBK,EAAIV,IAEJU,IAEFlwD,EAAO0xC,SAASE,QAAS,EACzBv9F,EAAK,kBAAiB,EAElBm8G,EAAqBA,KACzB,GAAIxwD,EAAO7a,YAAc6a,EAAO0xC,SAASC,QAAS,OAClD,MAAMt5H,EAAWF,KACgB,WAA7BE,EAASo4I,kBACXZ,GAAsB,EACtBU,GAAM,IAEyB,YAA7Bl4I,EAASo4I,iBACX3e,GACF,EAEI4e,EAAiBzuI,IACC,UAAlBA,EAAEgrH,cACN4iB,GAAsB,EAClB7vD,EAAOvgF,WAAaugF,EAAO0xC,SAASE,QACxC2e,GAAM,GAAK,EAEPI,EAAiB1uI,IACC,UAAlBA,EAAEgrH,aACFjtC,EAAO0xC,SAASE,QAClBE,GACF,EAoBFj1H,EAAG,QAAQ,KACLmjF,EAAO3gF,OAAOqyH,SAASl3D,UAlBvBwlB,EAAO3gF,OAAOqyH,SAAS6d,oBACzBvvD,EAAOnlF,GAAGrE,iBAAiB,eAAgBk6I,GAC3C1wD,EAAOnlF,GAAGrE,iBAAiB,eAAgBm6I,IAQ5Bx4I,KACR3B,iBAAiB,mBAAoBg6I,GAU5CR,GAAoB,IAAI72I,MAAOuI,UAC/BgK,IACF,IAEF7O,EAAG,WAAW,KAnBZmjF,EAAOnlF,GAAGpE,oBAAoB,eAAgBi6I,GAC9C1wD,EAAOnlF,GAAGpE,oBAAoB,eAAgBk6I,GAO7Bx4I,KACR1B,oBAAoB,mBAAoB+5I,GAa7CxwD,EAAO0xC,SAASC,SAClB3xH,GACF,IAEFnD,EAAG,yBAAyB,CAACm8H,EAAItb,EAAOnI,MAClCv1B,EAAO7a,WAAc6a,EAAO0xC,SAASC,UACrCpc,IAAav1B,EAAO3gF,OAAOqyH,SAAS0d,qBACtCmB,GAAM,GAAM,GAEZvwI,IACF,IAEFnD,EAAG,mBAAmB,MAChBmjF,EAAO7a,WAAc6a,EAAO0xC,SAASC,UACrC3xC,EAAO3gF,OAAOqyH,SAAS0d,qBACzBpvI,KAGF0oC,GAAY,EACZgnG,GAAgB,EAChBG,GAAsB,EACtBF,EAAoBt2I,YAAW,KAC7Bw2I,GAAsB,EACtBH,GAAgB,EAChBa,GAAM,EAAK,GACV,MAAI,IAET1zI,EAAG,YAAY,KACb,IAAImjF,EAAO7a,WAAc6a,EAAO0xC,SAASC,SAAYjpF,EAArD,CAGA,GAFApvC,aAAaq2I,GACbr2I,aAAa2kI,GACTj+C,EAAO3gF,OAAOqyH,SAAS0d,qBAGzB,OAFAM,GAAgB,OAChBhnG,GAAY,GAGVgnG,GAAiB1vD,EAAO3gF,OAAOujH,SAASkP,IAC5C4d,GAAgB,EAChBhnG,GAAY,CAVoD,CAU/C,IAEnB7rC,EAAG,eAAe,MACZmjF,EAAO7a,WAAc6a,EAAO0xC,SAASC,UACzCie,GAAe,EAAI,IAErB95I,OAAOsJ,OAAO4gF,EAAO0xC,SAAU,CAC7BhmH,QACA1L,OACAuwI,QACAze,UAEJ,ECtRA,SAAev3F,GACb,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACXmb,OAAQ,CACN5wD,OAAQ,KACR6wD,sBAAsB,EACtBC,iBAAkB,EAClBC,sBAAuB,4BACvBC,qBAAsB,mBAG1B,IAAIp6H,GAAc,EACdq6H,GAAgB,EAIpB,SAASC,IACP,MAAMC,EAAenxD,EAAO4wD,OAAO5wD,OACnC,IAAKmxD,GAAgBA,EAAahsE,UAAW,OAC7C,MAAM6jD,EAAemoB,EAAanoB,aAC5BD,EAAeooB,EAAapoB,aAClC,GAAIA,GAAgBA,EAAahqH,UAAUwF,SAASy7E,EAAO3gF,OAAOuxI,OAAOG,uBAAwB,OACjG,GAAI,MAAO/nB,EAAuD,OAClE,IAAIuC,EAEFA,EADE4lB,EAAa9xI,OAAOohH,KACPx3F,SAASkoH,EAAapoB,aAAanmH,aAAa,2BAA4B,IAE5EomH,EAEbhpC,EAAO3gF,OAAOohH,KAChBzgC,EAAOuqC,YAAYgB,GAEnBvrC,EAAOI,QAAQmrC,EAEnB,CACA,SAASnzF,IACP,MACEw4G,OAAQQ,GACNpxD,EAAO3gF,OACX,GAAIuX,EAAa,OAAO,EACxBA,GAAc,EACd,MAAMy6H,EAAcrxD,EAAOnqF,YAC3B,GAAIu7I,EAAapxD,kBAAkBqxD,EACjCrxD,EAAO4wD,OAAO5wD,OAASoxD,EAAapxD,OACpClqF,OAAOsJ,OAAO4gF,EAAO4wD,OAAO5wD,OAAOjrD,eAAgB,CACjDgwF,qBAAqB,EACrBkE,qBAAqB,IAEvBnzH,OAAOsJ,OAAO4gF,EAAO4wD,OAAO5wD,OAAO3gF,OAAQ,CACzC0lH,qBAAqB,EACrBkE,qBAAqB,IAEvBjpC,EAAO4wD,OAAO5wD,OAAOv1B,cAChB,GAAI90D,GAASy7I,EAAapxD,QAAS,CACxC,MAAMsxD,EAAqBx7I,OAAOsJ,OAAO,GAAIgyI,EAAapxD,QAC1DlqF,OAAOsJ,OAAOkyI,EAAoB,CAChCvsB,qBAAqB,EACrBkE,qBAAqB,IAEvBjpC,EAAO4wD,OAAO5wD,OAAS,IAAIqxD,EAAYC,GACvCL,GAAgB,CAClB,CAGA,OAFAjxD,EAAO4wD,OAAO5wD,OAAOnlF,GAAGkE,UAAUC,IAAIghF,EAAO3gF,OAAOuxI,OAAOI,sBAC3DhxD,EAAO4wD,OAAO5wD,OAAOnjF,GAAG,MAAOq0I,IACxB,CACT,CACA,SAASzmF,EAAOzb,GACd,MAAMmiG,EAAenxD,EAAO4wD,OAAO5wD,OACnC,IAAKmxD,GAAgBA,EAAahsE,UAAW,OAC7C,MAAM+6C,EAAsD,SAAtCixB,EAAa9xI,OAAO6gH,cAA2BixB,EAAahxB,uBAAyBgxB,EAAa9xI,OAAO6gH,cAG/H,IAAIqxB,EAAmB,EACvB,MAAMC,EAAmBxxD,EAAO3gF,OAAOuxI,OAAOG,sBAS9C,GARI/wD,EAAO3gF,OAAO6gH,cAAgB,IAAMlgC,EAAO3gF,OAAOsjH,iBACpD4uB,EAAmBvxD,EAAO3gF,OAAO6gH,eAE9BlgC,EAAO3gF,OAAOuxI,OAAOC,uBACxBU,EAAmB,GAErBA,EAAmB1xI,KAAKoX,MAAMs6H,GAC9BJ,EAAahxD,OAAOhqF,SAAQ8nH,GAAWA,EAAQl/G,UAAU6E,OAAO4tI,KAC5DL,EAAa9xI,OAAOohH,MAAQ0wB,EAAa9xI,OAAOmiH,SAAW2vB,EAAa9xI,OAAOmiH,QAAQhnD,QACzF,IAAK,IAAI3+D,EAAI,EAAGA,EAAI01I,EAAkB11I,GAAK,EACzCsiH,GAAgBgzB,EAAahwB,SAAW,6BAA4BnhC,EAAO0gC,UAAY7kH,OAAO1F,SAAQ8nH,IACpGA,EAAQl/G,UAAUC,IAAIwyI,EAAiB,SAI3C,IAAK,IAAI31I,EAAI,EAAGA,EAAI01I,EAAkB11I,GAAK,EACrCs1I,EAAahxD,OAAOH,EAAO0gC,UAAY7kH,IACzCs1I,EAAahxD,OAAOH,EAAO0gC,UAAY7kH,GAAGkD,UAAUC,IAAIwyI,GAI9D,MAAMV,EAAmB9wD,EAAO3gF,OAAOuxI,OAAOE,iBACxCW,EAAYX,IAAqBK,EAAa9xI,OAAOohH,KAC3D,GAAIzgC,EAAO0gC,YAAcywB,EAAazwB,WAAa+wB,EAAW,CAC5D,MAAMC,EAAqBP,EAAa/uE,YACxC,IAAIuvE,EACA5iG,EACJ,GAAIoiG,EAAa9xI,OAAOohH,KAAM,CAC5B,MAAMmxB,EAAiBT,EAAahxD,OAAOjlF,QAAO+iH,GAAWA,EAAQr7G,aAAa,6BAAgC,GAAEo9E,EAAO0gC,cAAa,GACxIixB,EAAiBR,EAAahxD,OAAO1kF,QAAQm2I,GAC7C7iG,EAAYixC,EAAO5d,YAAc4d,EAAO1B,cAAgB,OAAS,MACnE,MACEqzD,EAAiB3xD,EAAO0gC,UACxB3xE,EAAY4iG,EAAiB3xD,EAAO1B,cAAgB,OAAS,OAE3DmzD,IACFE,GAAgC,SAAd5iG,EAAuB+hG,GAAoB,EAAIA,GAE/DK,EAAajrB,sBAAwBirB,EAAajrB,qBAAqBzqH,QAAQk2I,GAAkB,IAC/FR,EAAa9xI,OAAOsjH,eAEpBgvB,EADEA,EAAiBD,EACFC,EAAiB9xI,KAAKoX,MAAMipG,EAAgB,GAAK,EAEjDyxB,EAAiB9xI,KAAKoX,MAAMipG,EAAgB,GAAK,EAE3DyxB,EAAiBD,GAAsBP,EAAa9xI,OAAOokH,eACtE0tB,EAAa/wD,QAAQuxD,EAAgB3iG,EAAU,OAAI3sC,GAEvD,CACF,CA9GA29E,EAAO4wD,OAAS,CACd5wD,OAAQ,MA8GVnjF,EAAG,cAAc,KACf,MAAM+zI,OACJA,GACE5wD,EAAO3gF,OACX,GAAKuxI,GAAWA,EAAO5wD,OACvB,GAA6B,iBAAlB4wD,EAAO5wD,QAAuB4wD,EAAO5wD,kBAAkBo9B,YAAa,CAC7E,MAAM/kH,EAAWF,KACX05I,EAA0BA,KAC9B,MAAMC,EAAyC,iBAAlBlB,EAAO5wD,OAAsB3nF,EAASxB,cAAc+5I,EAAO5wD,QAAU4wD,EAAO5wD,OACzG,GAAI8xD,GAAiBA,EAAc9xD,OACjC4wD,EAAO5wD,OAAS8xD,EAAc9xD,OAC9B5nD,IACAqyB,GAAO,QACF,GAAIqnF,EAAe,CACxB,MAAMC,EAAiB9vI,IACrB2uI,EAAO5wD,OAAS/9E,EAAEuI,OAAO,GACzBsnI,EAAcr7I,oBAAoB,OAAQs7I,GAC1C35G,IACAqyB,GAAO,GACPmmF,EAAO5wD,OAAOv1B,SACdu1B,EAAOv1B,QAAQ,EAEjBqnF,EAAct7I,iBAAiB,OAAQu7I,EACzC,CACA,OAAOD,CAAa,EAEhBE,EAAyBA,KAC7B,GAAIhyD,EAAO7a,UAAW,OACA0sE,KAEpBr4I,sBAAsBw4I,EACxB,EAEFx4I,sBAAsBw4I,EACxB,MACE55G,IACAqyB,GAAO,EACT,IAEF5tD,EAAG,4CAA4C,KAC7C4tD,GAAQ,IAEV5tD,EAAG,iBAAiB,CAACm8H,EAAI15H,KACvB,MAAM6xI,EAAenxD,EAAO4wD,OAAO5wD,OAC9BmxD,IAAgBA,EAAahsE,WAClCgsE,EAAa3rB,cAAclmH,EAAS,IAEtCzC,EAAG,iBAAiB,KAClB,MAAMs0I,EAAenxD,EAAO4wD,OAAO5wD,OAC9BmxD,IAAgBA,EAAahsE,WAC9B8rE,GACFE,EAAar6G,SACf,IAEFhhC,OAAOsJ,OAAO4gF,EAAO4wD,OAAQ,CAC3Bx4G,OACAqyB,UAEJ,EC3LA,SAAkBlwB,GAChB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAYphG,KACZA,EAAIH,KACJA,GACEqG,EACJk7F,EAAa,CACXzpB,SAAU,CACRxxC,SAAS,EACTy3E,UAAU,EACVC,cAAe,EACfC,gBAAgB,EAChBC,oBAAqB,EACrBC,sBAAuB,EACvBhS,QAAQ,EACRiS,gBAAiB,OAgNrBx8I,OAAOsJ,OAAO4gF,EAAQ,CACpBgsB,SAAU,CACRllB,aA/MJ,WACE,GAAI9G,EAAO3gF,OAAOujH,QAAS,OAC3B,MAAMxuC,EAAY4L,EAAOp0D,eACzBo0D,EAAOmpC,aAAa/0C,GACpB4L,EAAOwlC,cAAc,GACrBxlC,EAAOwsC,gBAAgBsJ,WAAWz/H,OAAS,EAC3C2pF,EAAOgsB,SAAS/kB,WAAW,CACzB6pC,WAAY9wC,EAAO9lD,IAAM8lD,EAAO5L,WAAa4L,EAAO5L,WAExD,EAuMI4S,YAtMJ,WACE,GAAIhH,EAAO3gF,OAAOujH,QAAS,OAC3B,MACE4J,gBAAiB7hH,EAAIw3B,QACrBA,GACE69C,EAE2B,IAA3Br1E,EAAKmrH,WAAWz/H,QAClBsU,EAAKmrH,WAAW/6H,KAAK,CACnB63C,SAAUzQ,EAAQ69C,EAAOkc,eAAiB,SAAW,UACrD/6F,KAAMwJ,EAAKm+B,iBAGfn+B,EAAKmrH,WAAW/6H,KAAK,CACnB63C,SAAUzQ,EAAQ69C,EAAOkc,eAAiB,WAAa,YACvD/6F,KAAMiqB,MAEV,EAsLI67D,WArLJ,SAAoBpxB,GAClB,IAAIi7D,WACFA,GACEj7D,EACJ,GAAImqB,EAAO3gF,OAAOujH,QAAS,OAC3B,MAAMvjH,OACJA,EAAMs+G,UACNA,EACA0D,aAAcnnF,EAAGynF,SACjBA,EACA6K,gBAAiB7hH,GACfq1E,EAGEnyC,EADeziB,KACWzgB,EAAKm+B,eACrC,GAAIgoF,GAAc9wC,EAAOhS,eACvBgS,EAAOI,QAAQJ,EAAO5d,kBAGxB,GAAI0uD,GAAc9wC,EAAO/R,eACnB+R,EAAOG,OAAO9pF,OAASsrH,EAAStrH,OAClC2pF,EAAOI,QAAQuhC,EAAStrH,OAAS,GAEjC2pF,EAAOI,QAAQJ,EAAOG,OAAO9pF,OAAS,OAJ1C,CAQA,GAAIgJ,EAAO2sG,SAASimC,SAAU,CAC5B,GAAItnI,EAAKmrH,WAAWz/H,OAAS,EAAG,CAC9B,MAAMk8I,EAAgB5nI,EAAKmrH,WAAW1uF,MAChCorG,EAAgB7nI,EAAKmrH,WAAW1uF,MAChC52B,EAAW+hI,EAAc3/F,SAAW4/F,EAAc5/F,SAClDzxC,EAAOoxI,EAAcpxI,KAAOqxI,EAAcrxI,KAChD6+E,EAAO21C,SAAWnlH,EAAWrP,EAC7B6+E,EAAO21C,UAAY,EACf91H,KAAK+R,IAAIouE,EAAO21C,UAAYt2H,EAAO2sG,SAASsmC,kBAC9CtyD,EAAO21C,SAAW,IAIhBx0H,EAAO,KAAOiqB,KAAQmnH,EAAcpxI,KAAO,OAC7C6+E,EAAO21C,SAAW,EAEtB,MACE31C,EAAO21C,SAAW,EAEpB31C,EAAO21C,UAAYt2H,EAAO2sG,SAASqmC,sBACnC1nI,EAAKmrH,WAAWz/H,OAAS,EACzB,IAAI2zI,EAAmB,IAAO3qI,EAAO2sG,SAASkmC,cAC9C,MAAMO,EAAmBzyD,EAAO21C,SAAWqU,EAC3C,IAAI0I,EAAc1yD,EAAO5L,UAAYq+D,EACjCv4G,IAAKw4G,GAAeA,GACxB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5BhzI,KAAK+R,IAAIouE,EAAO21C,UAAiBt2H,EAAO2sG,SAASomC,oBACtE,IAAIU,EACJ,GAAIJ,EAAc1yD,EAAO/R,eACnB5uE,EAAO2sG,SAASmmC,gBACdO,EAAc1yD,EAAO/R,gBAAkB4kE,IACzCH,EAAc1yD,EAAO/R,eAAiB4kE,GAExCF,EAAsB3yD,EAAO/R,eAC7B2kE,GAAW,EACXjoI,EAAKylH,qBAAsB,GAE3BsiB,EAAc1yD,EAAO/R,eAEnB5uE,EAAOohH,MAAQphH,EAAOsjH,iBAAgBmwB,GAAe,QACpD,GAAIJ,EAAc1yD,EAAOhS,eAC1B3uE,EAAO2sG,SAASmmC,gBACdO,EAAc1yD,EAAOhS,eAAiB6kE,IACxCH,EAAc1yD,EAAOhS,eAAiB6kE,GAExCF,EAAsB3yD,EAAOhS,eAC7B4kE,GAAW,EACXjoI,EAAKylH,qBAAsB,GAE3BsiB,EAAc1yD,EAAOhS,eAEnB3uE,EAAOohH,MAAQphH,EAAOsjH,iBAAgBmwB,GAAe,QACpD,GAAIzzI,EAAO2sG,SAASq0B,OAAQ,CACjC,IAAItY,EACJ,IAAK,IAAI3pH,EAAI,EAAGA,EAAIujH,EAAStrH,OAAQ+H,GAAK,EACxC,GAAIujH,EAASvjH,IAAMs0I,EAAa,CAC9B3qB,EAAY3pH,EACZ,KACF,CAGAs0I,EADE7yI,KAAK+R,IAAI+vG,EAASoG,GAAa2qB,GAAe7yI,KAAK+R,IAAI+vG,EAASoG,EAAY,GAAK2qB,IAA0C,SAA1B1yD,EAAO0uC,eAC5F/M,EAASoG,GAETpG,EAASoG,EAAY,GAErC2qB,GAAeA,CACjB,CAOA,GANII,GACF5+G,EAAK,iBAAiB,KACpB8rD,EAAO6qC,SAAS,IAII,IAApB7qC,EAAO21C,UAMT,GAJEqU,EADE9vG,EACiBr6B,KAAK+R,MAAM8gI,EAAc1yD,EAAO5L,WAAa4L,EAAO21C,UAEpD91H,KAAK+R,KAAK8gI,EAAc1yD,EAAO5L,WAAa4L,EAAO21C,UAEpEt2H,EAAO2sG,SAASq0B,OAAQ,CAQ1B,MAAM0S,EAAelzI,KAAK+R,KAAKsoB,GAAOw4G,EAAcA,GAAe1yD,EAAO5L,WACpE4+D,EAAmBhzD,EAAO6hC,gBAAgB7hC,EAAO5d,aAErD4nE,EADE+I,EAAeC,EACE3zI,EAAOq+G,MACjBq1B,EAAe,EAAIC,EACM,IAAf3zI,EAAOq+G,MAEQ,IAAfr+G,EAAOq+G,KAE9B,OACK,GAAIr+G,EAAO2sG,SAASq0B,OAEzB,YADArgD,EAAOqrC,iBAGLhsH,EAAO2sG,SAASmmC,gBAAkBS,GACpC5yD,EAAOymC,eAAeksB,GACtB3yD,EAAOwlC,cAAcwkB,GACrBhqD,EAAOmpC,aAAaupB,GACpB1yD,EAAO0E,iBAAgB,EAAM1E,EAAO0uC,gBACpC1uC,EAAOvgF,WAAY,EACnBg/G,GAAqBd,GAAW,KACzB39B,IAAUA,EAAO7a,WAAcx6D,EAAKylH,sBACzC/7F,EAAK,kBACL2rD,EAAOwlC,cAAcnmH,EAAOq+G,OAC5BrkH,YAAW,KACT2mF,EAAOmpC,aAAawpB,GACpBl0B,GAAqBd,GAAW,KACzB39B,IAAUA,EAAO7a,WACtB6a,EAAO1xC,eAAe,GACtB,GACD,GAAE,KAEE0xC,EAAO21C,UAChBthG,EAAK,8BACL2rD,EAAOymC,eAAeisB,GACtB1yD,EAAOwlC,cAAcwkB,GACrBhqD,EAAOmpC,aAAaupB,GACpB1yD,EAAO0E,iBAAgB,EAAM1E,EAAO0uC,gBAC/B1uC,EAAOvgF,YACVugF,EAAOvgF,WAAY,EACnBg/G,GAAqBd,GAAW,KACzB39B,IAAUA,EAAO7a,WACtB6a,EAAO1xC,eAAe,MAI1B0xC,EAAOymC,eAAeisB,GAExB1yD,EAAOooC,oBACPpoC,EAAOynC,qBACT,KAAO,IAAIpoH,EAAO2sG,SAASq0B,OAEzB,YADArgD,EAAOqrC,iBAEEhsH,EAAO2sG,UAChB33E,EAAK,6BACP,GACKh1B,EAAO2sG,SAASimC,UAAYpkG,GAAYxuC,EAAO6xH,gBAClDlxC,EAAOymC,iBACPzmC,EAAOooC,oBACPpoC,EAAOynC,sBApJT,CAsJF,IAQF,ECzOA,SAAcltF,GACZ,IAUI04G,EACAC,EACAC,GAZAnzD,OACFA,EAAMy1C,aACNA,GACEl7F,EACJk7F,EAAa,CACXxoD,KAAM,CACJmzC,KAAM,EACN6S,KAAM,YAMV,MAAMmgB,EAAkBA,KACtB,IAAIhxB,EAAepiC,EAAO3gF,OAAO+iH,aAMjC,MAL4B,iBAAjBA,GAA6BA,EAAa3mH,QAAQ,MAAQ,EACnE2mH,EAAenhH,WAAWmhH,EAAaphH,QAAQ,IAAK,KAAO,IAAMg/E,EAAOziE,KACvC,iBAAjB6kG,IAChBA,EAAenhH,WAAWmhH,IAErBA,CAAY,EAmFrBpiC,EAAO/S,KAAO,CACZ81C,WAlFiBrB,IACjB,MAAMxB,cACJA,GACElgC,EAAO3gF,QACL+gH,KACJA,EAAI6S,KACJA,GACEjzC,EAAO3gF,OAAO4tE,KAClBkmE,EAAiBtzI,KAAKoX,MAAMyqG,EAAetB,GAEzC6yB,EADEpzI,KAAKoX,MAAMyqG,EAAetB,KAAUsB,EAAetB,EAC5BsB,EAEA7hH,KAAKsX,KAAKuqG,EAAetB,GAAQA,EAEtC,SAAlBF,GAAqC,QAAT+S,IAC9BggB,EAAyBpzI,KAAK+B,IAAIqxI,EAAwB/yB,EAAgBE,IAE5E8yB,EAAeD,EAAyB7yB,CAAI,EAkE5C8C,YAhEkBA,CAACrnH,EAAGonH,EAAOvB,EAAcX,KAC3C,MAAM0C,eACJA,GACEzjC,EAAO3gF,OACL+iH,EAAegxB,KACfhzB,KACJA,EAAI6S,KACJA,GACEjzC,EAAO3gF,OAAO4tE,KAElB,IAAIomE,EACA5mC,EACAxgG,EACJ,GAAa,QAATgnH,GAAkBxP,EAAiB,EAAG,CACxC,MAAM32C,EAAajtE,KAAKoX,MAAMpb,GAAK4nH,EAAiBrD,IAC9CkzB,EAAoBz3I,EAAIukH,EAAOqD,EAAiB32C,EAChDymE,EAAgC,IAAfzmE,EAAmB22C,EAAiB5jH,KAAKgC,IAAIhC,KAAKsX,MAAMuqG,EAAe50C,EAAaszC,EAAOqD,GAAkBrD,GAAOqD,GAC3Ix3G,EAAMpM,KAAKoX,MAAMq8H,EAAoBC,GACrC9mC,EAAS6mC,EAAoBrnI,EAAMsnI,EAAiBzmE,EAAa22C,EACjE4vB,EAAqB5mC,EAASxgG,EAAMgnI,EAAyB7yB,EAC7D6C,EAAM5rH,MAAMm8I,MAAQH,CACtB,KAAoB,WAATpgB,GACTxmB,EAAS5sG,KAAKoX,MAAMpb,EAAIukH,GACxBn0G,EAAMpQ,EAAI4wG,EAAS2T,GACf3T,EAAS0mC,GAAkB1mC,IAAW0mC,GAAkBlnI,IAAQm0G,EAAO,KACzEn0G,GAAO,EACHA,GAAOm0G,IACTn0G,EAAM,EACNwgG,GAAU,MAIdxgG,EAAMpM,KAAKoX,MAAMpb,EAAIq3I,GACrBzmC,EAAS5wG,EAAIoQ,EAAMinI,GAErBjwB,EAAMh3G,IAAMA,EACZg3G,EAAMxW,OAASA,EACfwW,EAAM5rH,MAAM0pH,EAAkB,eAAyB,IAAR90G,EAAYm2G,GAAiB,GAAEA,MAAmB,EAAE,EA4BnGwB,kBA1BwBA,CAACd,EAAWnB,EAAUZ,KAC9C,MAAM4B,eACJA,EAAcW,aACdA,GACEtjC,EAAO3gF,OACL+iH,EAAegxB,KACfhzB,KACJA,GACEpgC,EAAO3gF,OAAO4tE,KAIlB,GAHA+S,EAAOuiC,aAAeO,EAAYV,GAAgB6wB,EAClDjzD,EAAOuiC,YAAc1iH,KAAKsX,KAAK6oE,EAAOuiC,YAAcnC,GAAQgC,EAC5DpiC,EAAO29B,UAAUtmH,MAAM0pH,EAAkB,UAAa,GAAE/gC,EAAOuiC,YAAcH,MACzEO,EAAgB,CAClB,MAAMkB,EAAgB,GACtB,IAAK,IAAIhoH,EAAI,EAAGA,EAAI8lH,EAAStrH,OAAQwF,GAAK,EAAG,CAC3C,IAAIioH,EAAiBnC,EAAS9lH,GAC1BynH,IAAcQ,EAAiBjkH,KAAKoX,MAAM6sG,IAC1CnC,EAAS9lH,GAAKmkF,EAAOuiC,YAAcZ,EAAS,IAAIkC,EAAc9oH,KAAK+oH,EACzE,CACAnC,EAASp7G,OAAO,EAAGo7G,EAAStrH,QAC5BsrH,EAAS5mH,QAAQ8oH,EACnB,GAOJ,ErBoEA,SAAsBtpF,GACpB,IAAIylD,OACFA,GACEzlD,EACJzkC,OAAOsJ,OAAO4gF,EAAQ,CACpB03C,YAAaA,GAAYjoG,KAAKuwD,GAC9B83C,aAAcA,GAAaroG,KAAKuwD,GAChCg4C,SAAUA,GAASvoG,KAAKuwD,GACxBq4C,YAAaA,GAAY5oG,KAAKuwD,GAC9Bw4C,gBAAiBA,GAAgB/oG,KAAKuwD,IAE1C,EsBvLA,SAAoBzlD,GAClB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACXge,WAAY,CACVC,WAAW,KAoCfjb,GAAW,CACTtwE,OAAQ,OACR63B,SACAnjF,KACAssH,aArCmBA,KACnB,MAAMhpC,OACJA,GACEH,EACWA,EAAO3gF,OAAOo0I,WAC7B,IAAK,IAAI53I,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAAG,CACzC,MAAMoiH,EAAUj+B,EAAOG,OAAOtkF,GAE9B,IAAI83I,GADW11B,EAAQ4H,kBAElB7lC,EAAO3gF,OAAO6pH,mBAAkByqB,GAAM3zD,EAAO5L,WAClD,IAAIw/D,EAAK,EACJ5zD,EAAOkc,iBACV03C,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAe7zD,EAAO3gF,OAAOo0I,WAAWC,UAAY7zI,KAAK+B,IAAI,EAAI/B,KAAK+R,IAAIqsG,EAAQr+G,UAAW,GAAK,EAAIC,KAAKgC,IAAIhC,KAAK+B,IAAIq8G,EAAQr+G,UAAW,GAAI,GAC/Iq3B,EAAWkiG,GAAa95H,EAAQ4+G,GACtChnF,EAAS5/B,MAAMk1C,QAAUsnG,EACzB58G,EAAS5/B,MAAM8S,UAAa,eAAcwpI,QAASC,WACrD,GAmBApuB,cAjBoBlmH,IACpB,MAAMk6H,EAAoBx5C,EAAOG,OAAOthF,KAAIo/G,GAAWD,GAAoBC,KAC3Eub,EAAkBrjI,SAAQ0E,IACxBA,EAAGxD,MAAM+S,mBAAsB,GAAE9K,KAAY,IAE/Ci6H,GAA2B,CACzBv5C,SACA1gF,WACAk6H,oBACAC,WAAW,GACX,EAQFf,gBAAiBA,MACfxY,cAAe,EACfuD,eAAgB,EAChBsB,qBAAqB,EACrB3C,aAAc,EACd8G,kBAAmBlpC,EAAO3gF,OAAOujH,WAGvC,EC5DA,SAAoBroF,GAClB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACXqe,WAAY,CACV7a,cAAc,EACd51G,QAAQ,EACR0wH,aAAc,GACdC,YAAa,OAGjB,MAAMC,EAAqBA,CAACh2B,EAASr+G,EAAUs8F,KAC7C,IAAIg4C,EAAeh4C,EAAe+hB,EAAQpnH,cAAc,6BAA+BonH,EAAQpnH,cAAc,4BACzGs9I,EAAcj4C,EAAe+hB,EAAQpnH,cAAc,8BAAgConH,EAAQpnH,cAAc,+BACxGq9I,IACHA,EAAeh9I,GAAc,OAAQ,iDAA+CglG,EAAe,OAAS,QAAQ7/F,MAAM,MAC1H4hH,EAAQv7G,OAAOwxI,IAEZC,IACHA,EAAcj9I,GAAc,OAAQ,iDAA+CglG,EAAe,QAAU,WAAW7/F,MAAM,MAC7H4hH,EAAQv7G,OAAOyxI,IAEbD,IAAcA,EAAa78I,MAAMk1C,QAAU1sC,KAAK+B,KAAKhC,EAAU,IAC/Du0I,IAAaA,EAAY98I,MAAMk1C,QAAU1sC,KAAK+B,IAAIhC,EAAU,GAAE,EA0HpE64H,GAAW,CACTtwE,OAAQ,OACR63B,SACAnjF,KACAssH,aApHmBA,KACnB,MAAMtuH,GACJA,EAAE8iH,UACFA,EAASx9B,OACTA,EACA9uD,MAAOssG,EACP5qG,OAAQ6qG,EACRvc,aAAcnnF,EACd3c,KAAM6jG,EAAUxC,QAChBA,GACE5+B,EACE3gF,EAAS2gF,EAAO3gF,OAAOy0I,WACvB53C,EAAelc,EAAOkc,eACtBqlB,EAAYvhC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAC1D,IACI45E,EADAC,EAAgB,EAEhBh1I,EAAOgkB,SACL64E,GACFk4C,EAAep0D,EAAO29B,UAAU9mH,cAAc,uBACzCu9I,IACHA,EAAel9I,GAAc,MAAO,sBACpC8oF,EAAO29B,UAAUj7G,OAAO0xI,IAE1BA,EAAa/8I,MAAM07B,OAAU,GAAE4qG,QAE/ByW,EAAev5I,EAAGhE,cAAc,uBAC3Bu9I,IACHA,EAAel9I,GAAc,MAAO,sBACpC2D,EAAG6H,OAAO0xI,MAIhB,IAAK,IAAIv4I,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAAG,CACzC,MAAMoiH,EAAU99B,EAAOtkF,GACvB,IAAIqoH,EAAaroH,EACb0lH,IACF2C,EAAaj7F,SAASg1F,EAAQr7G,aAAa,2BAA4B,KAEzE,IAAI0xI,EAA0B,GAAbpwB,EACbn2G,EAAQlO,KAAKoX,MAAMq9H,EAAa,KAChCp6G,IACFo6G,GAAcA,EACdvmI,EAAQlO,KAAKoX,OAAOq9H,EAAa,MAEnC,MAAM10I,EAAWC,KAAK+B,IAAI/B,KAAKgC,IAAIo8G,EAAQr+G,SAAU,IAAK,GAC1D,IAAI+zI,EAAK,EACLC,EAAK,EACLW,EAAK,EACLrwB,EAAa,GAAM,GACrByvB,EAAc,GAAR5lI,EAAYqzG,EAClBmzB,EAAK,IACKrwB,EAAa,GAAK,GAAM,GAClCyvB,EAAK,EACLY,EAAc,GAARxmI,EAAYqzG,IACR8C,EAAa,GAAK,GAAM,GAClCyvB,EAAKvyB,EAAqB,EAARrzG,EAAYqzG,EAC9BmzB,EAAKnzB,IACK8C,EAAa,GAAK,GAAM,IAClCyvB,GAAMvyB,EACNmzB,EAAK,EAAInzB,EAA0B,EAAbA,EAAiBrzG,GAErCmsB,IACFy5G,GAAMA,GAEHz3C,IACH03C,EAAKD,EACLA,EAAK,GAEP,MAAMxpI,EAAa,WAAU+xF,EAAe,GAAKo4C,iBAA0Bp4C,EAAeo4C,EAAa,qBAAqBX,QAASC,QAASW,OAC1I30I,GAAY,GAAKA,GAAY,IAC/By0I,EAA6B,GAAbnwB,EAA6B,GAAXtkH,EAC9Bs6B,IAAKm6G,EAA8B,IAAbnwB,EAA6B,GAAXtkH,IAE9Cq+G,EAAQ5mH,MAAM8S,UAAYA,EACtB9K,EAAO45H,cACTgb,EAAmBh2B,EAASr+G,EAAUs8F,EAE1C,CAGA,GAFAyhB,EAAUtmH,MAAMuyC,gBAAmB,YAAWw3E,EAAa,MAC3DzD,EAAUtmH,MAAM,4BAA+B,YAAW+pH,EAAa,MACnE/hH,EAAOgkB,OACT,GAAI64E,EACFk4C,EAAa/8I,MAAM8S,UAAa,oBAAmBwzH,EAAc,EAAIt+H,EAAO00I,oBAAoBpW,EAAc,2CAA2Ct+H,EAAO20I,mBAC3J,CACL,MAAMQ,EAAc30I,KAAK+R,IAAIyiI,GAA4D,GAA3Cx0I,KAAKoX,MAAMpX,KAAK+R,IAAIyiI,GAAiB,IAC7E3tB,EAAa,KAAO7mH,KAAKgT,IAAkB,EAAd2hI,EAAkB30I,KAAKE,GAAK,KAAO,EAAIF,KAAKC,IAAkB,EAAd00I,EAAkB30I,KAAKE,GAAK,KAAO,GAChH00I,EAASp1I,EAAO20I,YAChBU,EAASr1I,EAAO20I,YAActtB,EAC9BhpF,EAASr+B,EAAO00I,aACtBK,EAAa/8I,MAAM8S,UAAa,WAAUsqI,SAAcC,uBAA4B9W,EAAe,EAAIlgG,SAAckgG,EAAe,EAAI8W,sBAC1I,CAEF,MAAMC,GAAW/1B,EAAQK,UAAYL,EAAQQ,YAAcR,EAAQI,oBAAsBoC,EAAa,EAAI,EAC1GzD,EAAUtmH,MAAM8S,UAAa,qBAAoBwqI,gBAAsB30D,EAAOkc,eAAiB,EAAIm4C,iBAA6Br0D,EAAOkc,gBAAkBm4C,EAAgB,QACzK12B,EAAUtmH,MAAMuhD,YAAY,4BAA8B,GAAE+7F,MAAY,EAuBxEnvB,cArBoBlmH,IACpB,MAAMzE,GACJA,EAAEslF,OACFA,GACEH,EAOJ,GANAG,EAAOhqF,SAAQ8nH,IACbA,EAAQ5mH,MAAM+S,mBAAsB,GAAE9K,MACtC2+G,EAAQnnH,iBAAiB,gHAAgHX,SAAQ4nE,IAC/IA,EAAM1mE,MAAM+S,mBAAsB,GAAE9K,KAAY,GAChD,IAEA0gF,EAAO3gF,OAAOy0I,WAAWzwH,SAAW28D,EAAOkc,eAAgB,CAC7D,MAAMg9B,EAAWr+H,EAAGhE,cAAc,uBAC9BqiI,IAAUA,EAAS7hI,MAAM+S,mBAAsB,GAAE9K,MACvD,GAQAs5H,gBA9HsBA,KAEtB,MAAM18B,EAAelc,EAAOkc,eAC5Blc,EAAOG,OAAOhqF,SAAQ8nH,IACpB,MAAMr+G,EAAWC,KAAK+B,IAAI/B,KAAKgC,IAAIo8G,EAAQr+G,SAAU,IAAK,GAC1Dq0I,EAAmBh2B,EAASr+G,EAAUs8F,EAAa,GACnD,EAyHF28B,gBAAiBA,IAAM74C,EAAO3gF,OAAOy0I,WACrCnb,YAAaA,KAAM,EACnBD,gBAAiBA,MACfxY,cAAe,EACfuD,eAAgB,EAChBsB,qBAAqB,EACrB0L,gBAAiB,EACjBrO,aAAc,EACdO,gBAAgB,EAChBuG,kBAAkB,KAGxB,ECpKA,SAAoB3uF,GAClB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACXmf,WAAY,CACV3b,cAAc,EACd4b,eAAe,KAGnB,MAAMZ,EAAqBA,CAACh2B,EAASr+G,KACnC,IAAIs0I,EAAel0D,EAAOkc,eAAiB+hB,EAAQpnH,cAAc,6BAA+BonH,EAAQpnH,cAAc,4BAClHs9I,EAAcn0D,EAAOkc,eAAiB+hB,EAAQpnH,cAAc,8BAAgConH,EAAQpnH,cAAc,+BACjHq9I,IACHA,EAAeta,GAAa,OAAQ3b,EAASj+B,EAAOkc,eAAiB,OAAS,QAE3Ei4C,IACHA,EAAcva,GAAa,OAAQ3b,EAASj+B,EAAOkc,eAAiB,QAAU,WAE5Eg4C,IAAcA,EAAa78I,MAAMk1C,QAAU1sC,KAAK+B,KAAKhC,EAAU,IAC/Du0I,IAAaA,EAAY98I,MAAMk1C,QAAU1sC,KAAK+B,IAAIhC,EAAU,GAAE,EA8DpE64H,GAAW,CACTtwE,OAAQ,OACR63B,SACAnjF,KACAssH,aArDmBA,KACnB,MAAMhpC,OACJA,EACAkhC,aAAcnnF,GACZ8lD,EACE3gF,EAAS2gF,EAAO3gF,OAAOu1I,WAC7B,IAAK,IAAI/4I,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAAG,CACzC,MAAMoiH,EAAU99B,EAAOtkF,GACvB,IAAI+D,EAAWq+G,EAAQr+G,SACnBogF,EAAO3gF,OAAOu1I,WAAWC,gBAC3Bj1I,EAAWC,KAAK+B,IAAI/B,KAAKgC,IAAIo8G,EAAQr+G,SAAU,IAAK,IAEtD,MAAM89B,EAASugF,EAAQ4H,kBAEvB,IAAIivB,GADY,IAAMl1I,EAElBm1I,EAAU,EACVpB,EAAK3zD,EAAO3gF,OAAOujH,SAAWllF,EAASsiD,EAAO5L,WAAa12C,EAC3Dk2G,EAAK,EACJ5zD,EAAOkc,eAKDhiE,IACT46G,GAAWA,IALXlB,EAAKD,EACLA,EAAK,EACLoB,GAAWD,EACXA,EAAU,GAIZ72B,EAAQ5mH,MAAM86G,QAAUtyG,KAAK+R,IAAI/R,KAAKkO,MAAMnO,IAAaugF,EAAO9pF,OAC5DgJ,EAAO45H,cACTgb,EAAmBh2B,EAASr+G,GAE9B,MAAMuK,EAAa,eAAcwpI,QAASC,qBAAsBmB,iBAAuBD,QACtE3b,GAAa95H,EAAQ4+G,GAC7B5mH,MAAM8S,UAAYA,CAC7B,GAqBAq7G,cAnBoBlmH,IACpB,MAAMk6H,EAAoBx5C,EAAOG,OAAOthF,KAAIo/G,GAAWD,GAAoBC,KAC3Eub,EAAkBrjI,SAAQ0E,IACxBA,EAAGxD,MAAM+S,mBAAsB,GAAE9K,MACjCzE,EAAG/D,iBAAiB,gHAAgHX,SAAQ+iI,IAC1IA,EAAS7hI,MAAM+S,mBAAsB,GAAE9K,KAAY,GACnD,IAEJi6H,GAA2B,CACzBv5C,SACA1gF,WACAk6H,qBACA,EAQFZ,gBAlEsBA,KAEtB54C,EAAO3gF,OAAOu1I,WACd50D,EAAOG,OAAOhqF,SAAQ8nH,IACpB,IAAIr+G,EAAWq+G,EAAQr+G,SACnBogF,EAAO3gF,OAAOu1I,WAAWC,gBAC3Bj1I,EAAWC,KAAK+B,IAAI/B,KAAKgC,IAAIo8G,EAAQr+G,SAAU,IAAK,IAEtDq0I,EAAmBh2B,EAASr+G,EAAS,GACrC,EA0DFi5H,gBAAiBA,IAAM74C,EAAO3gF,OAAOu1I,WACrCjc,YAAaA,KAAM,EACnBD,gBAAiBA,MACfxY,cAAe,EACfuD,eAAgB,EAChBsB,qBAAqB,EACrB3C,aAAc,EACd8G,kBAAmBlpC,EAAO3gF,OAAOujH,WAGvC,ECtGA,SAAyBroF,GACvB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACXuf,gBAAiB,CACfhP,OAAQ,GACRiP,QAAS,EACTC,MAAO,IACP9xE,MAAO,EACP7+B,SAAU,EACV00F,cAAc,KAuElBR,GAAW,CACTtwE,OAAQ,YACR63B,SACAnjF,KACAssH,aAxEmBA,KACnB,MACE93F,MAAOssG,EACP5qG,OAAQ6qG,EAAYz9C,OACpBA,EAAM0hC,gBACNA,GACE7hC,EACE3gF,EAAS2gF,EAAO3gF,OAAO21I,gBACvB94C,EAAelc,EAAOkc,eACtB/xF,EAAY61E,EAAO5L,UACnBrR,EAASm5B,EAA4ByhC,EAAc,EAA1BxzH,EAA2CyzH,EAAe,EAA3BzzH,EACxD67H,EAAS9pC,EAAe78F,EAAO2mI,QAAU3mI,EAAO2mI,OAChD5xD,EAAY/0E,EAAO61I,MAEzB,IAAK,IAAIr5I,EAAI,EAAGxF,EAAS8pF,EAAO9pF,OAAQwF,EAAIxF,EAAQwF,GAAK,EAAG,CAC1D,MAAMoiH,EAAU99B,EAAOtkF,GACjBinH,EAAYjB,EAAgBhmH,GAE5Bs5I,GAAgBpyE,EADFk7C,EAAQ4H,kBACiB/C,EAAY,GAAKA,EACxDsyB,EAA8C,mBAApB/1I,EAAOklC,SAA0BllC,EAAOklC,SAAS4wG,GAAgBA,EAAe91I,EAAOklC,SACvH,IAAIuwG,EAAU54C,EAAe8pC,EAASoP,EAAmB,EACrDL,EAAU74C,EAAe,EAAI8pC,EAASoP,EAEtCC,GAAcjhE,EAAYv0E,KAAK+R,IAAIwjI,GACnCH,EAAU51I,EAAO41I,QAEE,iBAAZA,IAAkD,IAA1BA,EAAQx5I,QAAQ,OACjDw5I,EAAUh0I,WAAW5B,EAAO41I,SAAW,IAAMnyB,GAE/C,IAAIj8B,EAAaqV,EAAe,EAAI+4C,EAAUG,EAC1CxuD,EAAasV,EAAe+4C,EAAUG,EAAmB,EACzDhyE,EAAQ,GAAK,EAAI/jE,EAAO+jE,OAASvjE,KAAK+R,IAAIwjI,GAG1Cv1I,KAAK+R,IAAIg1E,GAAc,OAAOA,EAAa,GAC3C/mF,KAAK+R,IAAIi1E,GAAc,OAAOA,EAAa,GAC3ChnF,KAAK+R,IAAIyjI,GAAc,OAAOA,EAAa,GAC3Cx1I,KAAK+R,IAAIkjI,GAAW,OAAOA,EAAU,GACrCj1I,KAAK+R,IAAImjI,GAAW,OAAOA,EAAU,GACrCl1I,KAAK+R,IAAIwxD,GAAS,OAAOA,EAAQ,GACrC,MAAMkyE,EAAkB,eAAc1uD,OAAgBC,OAAgBwuD,iBAA0BN,iBAAuBD,eAAqB1xE,KAI5I,GAHiB+1D,GAAa95H,EAAQ4+G,GAC7B5mH,MAAM8S,UAAYmrI,EAC3Br3B,EAAQ5mH,MAAM86G,OAAmD,EAAzCtyG,KAAK+R,IAAI/R,KAAKkO,MAAMqnI,IACxC/1I,EAAO45H,aAAc,CAEvB,IAAIsc,EAAiBr5C,EAAe+hB,EAAQpnH,cAAc,6BAA+BonH,EAAQpnH,cAAc,4BAC3G2+I,EAAgBt5C,EAAe+hB,EAAQpnH,cAAc,8BAAgConH,EAAQpnH,cAAc,+BAC1G0+I,IACHA,EAAiB3b,GAAa,YAAa3b,EAAS/hB,EAAe,OAAS,QAEzEs5C,IACHA,EAAgB5b,GAAa,YAAa3b,EAAS/hB,EAAe,QAAU,WAE1Eq5C,IAAgBA,EAAel+I,MAAMk1C,QAAU6oG,EAAmB,EAAIA,EAAmB,GACzFI,IAAeA,EAAcn+I,MAAMk1C,SAAW6oG,EAAmB,GAAKA,EAAmB,EAC/F,CACF,GAgBA5vB,cAdoBlmH,IACM0gF,EAAOG,OAAOthF,KAAIo/G,GAAWD,GAAoBC,KACzD9nH,SAAQ0E,IACxBA,EAAGxD,MAAM+S,mBAAsB,GAAE9K,MACjCzE,EAAG/D,iBAAiB,gHAAgHX,SAAQ+iI,IAC1IA,EAAS7hI,MAAM+S,mBAAsB,GAAE9K,KAAY,GACnD,GACF,EAQFq5H,YAAaA,KAAM,EACnBD,gBAAiBA,MACf3T,qBAAqB,KAG3B,EC9FA,SAAwBxqF,GACtB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACXggB,eAAgB,CACdC,cAAe,EACfC,mBAAmB,EACnBC,mBAAoB,EACpBjd,aAAa,EACbpwH,KAAM,CACJ6rE,UAAW,CAAC,EAAG,EAAG,GAClB4xD,OAAQ,CAAC,EAAG,EAAG,GACfz5F,QAAS,EACT62B,MAAO,GAET59D,KAAM,CACJ4uE,UAAW,CAAC,EAAG,EAAG,GAClB4xD,OAAQ,CAAC,EAAG,EAAG,GACfz5F,QAAS,EACT62B,MAAO,MAIb,MAAMyyE,EAAoBr7I,GACH,iBAAVA,EAA2BA,EAC9B,GAAEA,MA+FZi+H,GAAW,CACTtwE,OAAQ,WACR63B,SACAnjF,KACAssH,aAjGmBA,KACnB,MAAMhpC,OACJA,EAAMw9B,UACNA,EAASkE,gBACTA,GACE7hC,EACE3gF,EAAS2gF,EAAO3gF,OAAOo2I,gBAE3BG,mBAAoBlvB,GAClBrnH,EACEy2I,EAAmB91D,EAAO3gF,OAAOsjH,eACvC,GAAImzB,EAAkB,CACpB,MAAMC,EAASl0B,EAAgB,GAAK,EAAI7hC,EAAO3gF,OAAO0iH,oBAAsB,EAC5EpE,EAAUtmH,MAAM8S,UAAa,yBAAwB4rI,OACvD,CACA,IAAK,IAAIl6I,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAAG,CACzC,MAAMoiH,EAAU99B,EAAOtkF,GACjBuqH,EAAgBnI,EAAQr+G,SACxBA,EAAWC,KAAKgC,IAAIhC,KAAK+B,IAAIq8G,EAAQr+G,UAAWP,EAAOq2I,eAAgBr2I,EAAOq2I,eACpF,IAAIlvB,EAAmB5mH,EAClBk2I,IACHtvB,EAAmB3mH,KAAKgC,IAAIhC,KAAK+B,IAAIq8G,EAAQuI,kBAAmBnnH,EAAOq2I,eAAgBr2I,EAAOq2I,gBAEhG,MAAMh4G,EAASugF,EAAQ4H,kBACjB73G,EAAI,CAACgyE,EAAO3gF,OAAOujH,SAAWllF,EAASsiD,EAAO5L,WAAa12C,EAAQ,EAAG,GACtEpnB,EAAI,CAAC,EAAG,EAAG,GACjB,IAAI0/H,GAAS,EACRh2D,EAAOkc,iBACVluF,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK,GAET,IAAIrD,EAAO,CACTypE,UAAW,CAAC,EAAG,EAAG,GAClB4xD,OAAQ,CAAC,EAAG,EAAG,GACf5iE,MAAO,EACP72B,QAAS,GAEP3sC,EAAW,GACb+K,EAAOtL,EAAOmG,KACdwwI,GAAS,GACAp2I,EAAW,IACpB+K,EAAOtL,EAAOkJ,KACdytI,GAAS,GAGXhoI,EAAE7X,SAAQ,CAACqE,EAAOgG,KAChBwN,EAAExN,GAAU,QAAOhG,UAAcq7I,EAAkBlrI,EAAKypE,UAAU5zE,SAAaX,KAAK+R,IAAIhS,EAAW8mH,MAAe,IAGpHpwG,EAAEngB,SAAQ,CAACqE,EAAOgG,KAChB8V,EAAE9V,GAASmK,EAAKq7H,OAAOxlI,GAASX,KAAK+R,IAAIhS,EAAW8mH,EAAW,IAEjEzI,EAAQ5mH,MAAM86G,QAAUtyG,KAAK+R,IAAI/R,KAAKkO,MAAMq4G,IAAkBjmC,EAAO9pF,OACrE,MAAM4/I,EAAkBjoI,EAAEwa,KAAK,MACzB0tH,EAAgB,WAAU5/H,EAAE,kBAAkBA,EAAE,kBAAkBA,EAAE,SACpE6/H,EAAc3vB,EAAmB,EAAK,SAAQ,GAAK,EAAI77G,EAAKy4D,OAASojD,EAAmBE,KAAiB,SAAQ,GAAK,EAAI/7G,EAAKy4D,OAASojD,EAAmBE,KAC3J0vB,EAAgB5vB,EAAmB,EAAI,GAAK,EAAI77G,EAAK4hC,SAAWi6E,EAAmBE,EAAa,GAAK,EAAI/7G,EAAK4hC,SAAWi6E,EAAmBE,EAC5Iv8G,EAAa,eAAc8rI,MAAoBC,KAAgBC,IAGrE,GAAIH,GAAUrrI,EAAK0Y,SAAW2yH,EAAQ,CACpC,IAAI9c,EAAWjb,EAAQpnH,cAAc,wBAIrC,IAHKqiI,GAAYvuH,EAAK0Y,SACpB61G,EAAWU,GAAa,WAAY3b,IAElCib,EAAU,CACZ,MAAMmd,EAAgBh3I,EAAOs2I,kBAAoB/1I,GAAY,EAAIP,EAAOq2I,eAAiB91I,EACzFs5H,EAAS7hI,MAAMk1C,QAAU1sC,KAAKgC,IAAIhC,KAAK+B,IAAI/B,KAAK+R,IAAIykI,GAAgB,GAAI,EAC1E,CACF,CACA,MAAMp/G,EAAWkiG,GAAa95H,EAAQ4+G,GACtChnF,EAAS5/B,MAAM8S,UAAYA,EAC3B8sB,EAAS5/B,MAAMk1C,QAAU6pG,EACrBzrI,EAAK5S,SACPk/B,EAAS5/B,MAAMuyC,gBAAkBj/B,EAAK5S,OAE1C,GAsBAytH,cApBoBlmH,IACpB,MAAMk6H,EAAoBx5C,EAAOG,OAAOthF,KAAIo/G,GAAWD,GAAoBC,KAC3Eub,EAAkBrjI,SAAQ0E,IACxBA,EAAGxD,MAAM+S,mBAAsB,GAAE9K,MACjCzE,EAAG/D,iBAAiB,wBAAwBX,SAAQ+iI,IAClDA,EAAS7hI,MAAM+S,mBAAsB,GAAE9K,KAAY,GACnD,IAEJi6H,GAA2B,CACzBv5C,SACA1gF,WACAk6H,oBACAC,WAAW,GACX,EAQFd,YAAaA,IAAM34C,EAAO3gF,OAAOo2I,eAAe9c,YAChDD,gBAAiBA,MACf3T,qBAAqB,EACrBmE,kBAAmBlpC,EAAO3gF,OAAOujH,WAGvC,ECvIA,SAAqBroF,GACnB,IAAIylD,OACFA,EAAMy1C,aACNA,EAAY54H,GACZA,GACE09B,EACJk7F,EAAa,CACX6gB,YAAa,CACXrd,cAAc,EACd+M,QAAQ,EACRuQ,eAAgB,EAChBC,eAAgB,KA6FpB/d,GAAW,CACTtwE,OAAQ,QACR63B,SACAnjF,KACAssH,aA9FmBA,KACnB,MAAMhpC,OACJA,EAAM/d,YACNA,EACAi/C,aAAcnnF,GACZ8lD,EACE3gF,EAAS2gF,EAAO3gF,OAAOi3I,aACvBzoE,eACJA,EAAcnlC,UACdA,GACEs3C,EAAOwsC,gBACL1+C,EAAmB5zC,GAAO8lD,EAAO5L,UAAY4L,EAAO5L,UAC1D,IAAK,IAAIv4E,EAAI,EAAGA,EAAIskF,EAAO9pF,OAAQwF,GAAK,EAAG,CACzC,MAAMoiH,EAAU99B,EAAOtkF,GACjBuqH,EAAgBnI,EAAQr+G,SACxBA,EAAWC,KAAKgC,IAAIhC,KAAK+B,IAAIwkH,GAAgB,GAAI,GACvD,IAAI1oF,EAASugF,EAAQ4H,kBACjB7lC,EAAO3gF,OAAOsjH,iBAAmB3iC,EAAO3gF,OAAOujH,UACjD5iC,EAAO29B,UAAUtmH,MAAM8S,UAAa,cAAa61E,EAAOhS,qBAEtDgS,EAAO3gF,OAAOsjH,gBAAkB3iC,EAAO3gF,OAAOujH,UAChDllF,GAAUyiD,EAAO,GAAG0lC,mBAEtB,IAAI4wB,EAAKz2D,EAAO3gF,OAAOujH,SAAWllF,EAASsiD,EAAO5L,WAAa12C,EAC3Dg5G,EAAK,EACT,MAAMC,GAAM,IAAM92I,KAAK+R,IAAIhS,GAC3B,IAAIwjE,EAAQ,EACR4iE,GAAU3mI,EAAOk3I,eAAiB32I,EAClCg3I,EAAQv3I,EAAOm3I,eAAsC,IAArB32I,KAAK+R,IAAIhS,GAC7C,MAAMskH,EAAalkC,EAAOwhC,SAAWxhC,EAAO3gF,OAAOmiH,QAAQhnD,QAAUwlB,EAAOwhC,QAAQ7oG,KAAO9c,EAAIA,EACzFg7I,GAAiB3yB,IAAe9hD,GAAe8hD,IAAe9hD,EAAc,IAAMxiE,EAAW,GAAKA,EAAW,IAAM8oC,GAAas3C,EAAO3gF,OAAOujH,UAAY90C,EAAmBD,EAC7KipE,GAAiB5yB,IAAe9hD,GAAe8hD,IAAe9hD,EAAc,IAAMxiE,EAAW,GAAKA,GAAY,IAAM8oC,GAAas3C,EAAO3gF,OAAOujH,UAAY90C,EAAmBD,EACpL,GAAIgpE,GAAiBC,EAAe,CAClC,MAAMpmD,GAAe,EAAI7wF,KAAK+R,KAAK/R,KAAK+R,IAAIhS,GAAY,IAAO,MAAS,GACxEomI,IAAW,GAAKpmI,EAAW8wF,EAC3BttB,IAAU,GAAMstB,EAChBkmD,GAAS,GAAKlmD,EACdgmD,GAAS,GAAKhmD,EAAc7wF,KAAK+R,IAAIhS,GAA/B,GACR,CAUA,GAPE62I,EAFE72I,EAAW,EAEP,QAAO62I,OAAQv8G,EAAM,IAAM,QAAQ08G,EAAQ/2I,KAAK+R,IAAIhS,QACjDA,EAAW,EAEd,QAAO62I,OAAQv8G,EAAM,IAAM,SAAS08G,EAAQ/2I,KAAK+R,IAAIhS,QAErD,GAAE62I,OAELz2D,EAAOkc,eAAgB,CAC1B,MAAMqzB,EAAQmnB,EACdA,EAAKD,EACLA,EAAKlnB,CACP,CACA,MAAM4mB,EAAcv2I,EAAW,EAAK,IAAE,GAAK,EAAIwjE,GAASxjE,GAAc,IAAE,GAAK,EAAIwjE,GAASxjE,GAGpFuK,EAAa,yBACHssI,MAAOC,MAAOC,yBAClBt3I,EAAO2mI,OAAS9rG,GAAO8rG,EAASA,EAAS,wBAC3CmQ,aAIV,GAAI92I,EAAO45H,aAAc,CAEvB,IAAIC,EAAWjb,EAAQpnH,cAAc,wBAChCqiI,IACHA,EAAWU,GAAa,QAAS3b,IAE/Bib,IAAUA,EAAS7hI,MAAMk1C,QAAU1sC,KAAKgC,IAAIhC,KAAK+B,KAAK/B,KAAK+R,IAAIhS,GAAY,IAAO,GAAK,GAAI,GACjG,CACAq+G,EAAQ5mH,MAAM86G,QAAUtyG,KAAK+R,IAAI/R,KAAKkO,MAAMq4G,IAAkBjmC,EAAO9pF,OACpD8iI,GAAa95H,EAAQ4+G,GAC7B5mH,MAAM8S,UAAYA,CAC7B,GAqBAq7G,cAnBoBlmH,IACpB,MAAMk6H,EAAoBx5C,EAAOG,OAAOthF,KAAIo/G,GAAWD,GAAoBC,KAC3Eub,EAAkBrjI,SAAQ0E,IACxBA,EAAGxD,MAAM+S,mBAAsB,GAAE9K,MACjCzE,EAAG/D,iBAAiB,wBAAwBX,SAAQ+iI,IAClDA,EAAS7hI,MAAM+S,mBAAsB,GAAE9K,KAAY,GACnD,IAEJi6H,GAA2B,CACzBv5C,SACA1gF,WACAk6H,qBACA,EAQFb,YAAaA,KAAM,EACnBD,gBAAiBA,MACf3T,qBAAqB,EACrBmE,kBAAmBlpC,EAAO3gF,OAAOujH,WAGvC,GtBnFAyS,GAAOp/F,IAAIf,IuBtCX,MAAM6hH,GAAa,CAAC,eAAgB,eAAgB,mBAAoB,UAAW,OAAQ,aAAc,iBAAkB,oBAAqB,eAAgB,SAAU,UAAW,uBAAwB,iBAAkB,SAAU,oBAAqB,WAAY,SAAU,UAAW,iCAAkC,YAAa,MAAO,sBAAuB,sBAAuB,YAAa,cAAe,iBAAkB,mBAAoB,UAAW,cAAe,gBAAiB,iBAAkB,0BAA2B,QAAS,kBAAmB,sBAAuB,sBAAuB,kBAAmB,wBAAyB,sBAAuB,qBAAsB,sBAAuB,4BAA6B,iBAAkB,eAAgB,aAAc,aAAc,gBAAiB,eAAgB,cAAe,kBAAmB,eAAgB,gBAAiB,iBAAkB,aAAc,2BAA4B,2BAA4B,gCAAiC,sBAAuB,oBAAqB,cAAe,mBAAoB,uBAAwB,cAAe,gBAAiB,2BAA4B,uBAAwB,QAAS,eAAgB,sBAAuB,UAAW,kBAAmB,kBAAmB,gBAAiB,aAAc,iBAAkB,oBAAqB,mBAAoB,yBAA0B,aAAc,mBAAoB,oBAAqB,iBAAkB,iBAAkB,eAAgB,qBAAsB,sBAAuB,qBAAsB,WAAY,iBAAkB,uBAE3mD,OAAQ,YAAa,cAAe,kBAAmB,aAAc,aAAc,aAAc,iBAAkB,cAAe,iBAAkB,UAAW,WAAY,aAAc,cAAe,cAAe,WAAY,aAAc,UAAW,UAAW,OAAQ,WAE/Q,SAASphJ,GAASq3B,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEn3B,aAAkE,WAAnDC,OAAOmF,UAAUotB,SAASltB,KAAK6xB,GAAGjE,MAAM,GAAI,EAC7G,CACA,SAAShzB,GAAOC,EAAQC,GACtB,MAAMknH,EAAW,CAAC,YAAa,cAAe,aAC9CrnH,OAAOI,KAAKD,GAAKiF,QAAO9E,GAAO+mH,EAAS1hH,QAAQrF,GAAO,IAAGD,SAAQC,SACrC,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,GAASM,EAAIG,KAAST,GAASK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,EAChJJ,EAAIG,GAAKinH,WAAYrnH,EAAOI,GAAOH,EAAIG,GAAUL,GAAOC,EAAOI,GAAMH,EAAIG,IAE7EJ,EAAOI,GAAOH,EAAIG,EACpB,GAEJ,CA8BA,SAAS4gJ,GAAWn0I,GAIlB,YAHiB,IAAbA,IACFA,EAAW,IAENA,EAAS7B,QAAQ,WAAW8oB,GAAKA,EAAEnmB,cAAc3C,QAAQ,IAAK,KACvE,CCjDA,MAAMgwF,GAAc7lF,IAClB,GAAIlK,WAAWkK,KAASgjB,OAAOhjB,GAAM,OAAOgjB,OAAOhjB,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIof,SAAS,MAAQpf,EAAIof,SAAS,MAAQpf,EAAIof,SAAS,KAAM,CAC1F,IAAID,EACJ,IACEA,EAAIwzB,KAAK7a,MAAM93B,E,CACf,MAAO2xB,GACPxS,EAAInf,CACN,CACA,OAAOmf,CACT,CACA,OAAOnf,CAVkC,CAU/B,EAEN8rI,GAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,GAAUp1I,EAAS0G,EAAU2uI,GACpC,MAAM93I,EAAS,GACTy4B,EAAe,GACrB/hC,GAAOsJ,EAAQ24B,IACf,MAAMo/G,EAAkB,IAAIL,GAAY,MAClCM,EAAgBD,EAAgBv4I,KAAIzI,GAAOA,EAAI4K,QAAQ,IAAK,MAGlEo2I,EAAgBjhJ,SAAQ0+C,IACtBA,EAAYA,EAAU7zC,QAAQ,IAAK,SACD,IAAvBc,EAAQ+yC,KACjB/c,EAAa+c,GAAa/yC,EAAQ+yC,GACpC,IAIF,MAAMyiG,EAAY,IAAIx1I,EAAQuB,YA2D9B,MA1DwB,iBAAbmF,QAA8C,IAAd2uI,GACzCG,EAAUv8I,KAAK,CACbwB,KAAMiM,EACNhO,MAAO28I,IAGXG,EAAUnhJ,SAAQmN,IAChB,MAAMi0I,EAAcN,GAAkB/7I,QAAOs8I,GAA8C,IAApCl0I,EAAK/G,KAAKd,QAAS,GAAE+7I,QAAkB,GAC9F,GAAID,EAAa,CACf,MAAME,EAAgBT,GAAWO,GAC3BG,EAAaV,GAAW1zI,EAAK/G,KAAKF,MAAO,GAAEk7I,MAAgB,SACtB,IAAhCz/G,EAAa2/G,KAAgC3/G,EAAa2/G,GAAiB,KAClD,IAAhC3/G,EAAa2/G,KACf3/G,EAAa2/G,GAAiB,CAC5Bj9E,SAAS,IAGb1iC,EAAa2/G,GAAeC,GAAc1mD,GAAY1tF,EAAK9I,MAC7D,KAAO,CACL,MAAM+B,EAAOy6I,GAAW1zI,EAAK/G,MAC7B,IAAK86I,EAAc9sH,SAAShuB,GAAO,OACnC,MAAM/B,EAAQw2F,GAAY1tF,EAAK9I,OAC3Bs9B,EAAav7B,IAAS06I,GAAkB1sH,SAASjnB,EAAK/G,OACpDu7B,EAAav7B,GAAM1G,cAAgBC,SACrCgiC,EAAav7B,GAAQ,IAEvBu7B,EAAav7B,GAAMi+D,QAAUhgE,GAE7Bs9B,EAAav7B,GAAQ/B,CAEzB,KAEFzE,GAAOsJ,EAAQy4B,GACXz4B,EAAOiyH,WACTjyH,EAAOiyH,WAAa,CAClBE,OAAQ,sBACRD,OAAQ,0BACkB,IAAtBlyH,EAAOiyH,WAAsBjyH,EAAOiyH,WAAa,KAExB,IAAtBjyH,EAAOiyH,mBACTjyH,EAAOiyH,WAEZjyH,EAAOwlI,UACTxlI,EAAOwlI,UAAY,CACjBhqI,GAAI,wBACqB,IAArBwE,EAAOwlI,UAAqBxlI,EAAOwlI,UAAY,KAEvB,IAArBxlI,EAAOwlI,kBACTxlI,EAAOwlI,UAEZxlI,EAAOiiI,WACTjiI,EAAOiiI,WAAa,CAClBzmI,GAAI,yBACsB,IAAtBwE,EAAOiiI,WAAsBjiI,EAAOiiI,WAAa,KAExB,IAAtBjiI,EAAOiiI,mBACTjiI,EAAOiiI,WAET,CACLjiI,SACAy4B,eAEJ,CClFA,MAAM6/G,GAAa,ioaAInB,MAAMC,GAAkC,oBAAX99I,QAAiD,oBAAhBsjH,YAD9D,QAC+GA,YACzGy6B,GAAY,udAEZC,GAAWA,CAAC55B,EAAYj2G,KAC5B,GAA6B,oBAAlB8vI,eAAiC75B,EAAW85B,mBAAoB,CACzE,MAAMC,EAAa,IAAIF,cACvBE,EAAWC,YAAYjwI,GACvBi2G,EAAW85B,mBAAqB,CAACC,EACnC,KAAO,CACL,MAAM5gJ,EAAQgB,SAASnB,cAAc,SACrCG,EAAM8gJ,IAAM,aACZ9gJ,EAAM2M,YAAciE,EACpBi2G,EAAW17G,YAAYnL,EACzB,GAEF,MAAM+gJ,WAAwBR,GAC5B/hJ,cACEqE,QACAnB,KAAKs/I,aAAa,CAChBv9G,KAAM,QAEV,CACA,wBAAWw9G,GACT,OAAOT,EACT,CACA,wBAAWU,GACT,OAAOV,GAAS72I,QAAQ,WAAY,6DACtC,CACAw3I,YACE,MAAO,CAACb,MAEJ5+I,KAAK0/I,cAAgBz+I,MAAMc,QAAQ/B,KAAK0/I,cAAgB1/I,KAAK0/I,aAAe,IAAKjwH,KAAK,KAC5F,CACAkwH,WACE,OAAO3/I,KAAK4/I,kBAAoB,EAClC,CACAC,iBACE,MAAMC,EAAmB9/I,KAAKi+H,YAAc,EAEtC8hB,EAAoB,IAAI//I,KAAKjC,iBAAkB,mBAAkB+H,KAAI8F,GAClEskB,SAAStkB,EAAM/B,aAAa,QAAQvG,MAAM,UAAU,GAAI,MAGjE,GADAtD,KAAKi+H,WAAa8hB,EAAkBziJ,OAASwJ,KAAK+B,OAAOk3I,GAAqB,EAAI,EAC7E//I,KAAKggJ,SACV,GAAIhgJ,KAAKi+H,WAAa6hB,EACpB,IAAK,IAAIh9I,EAAIg9I,EAAkBh9I,EAAI9C,KAAKi+H,WAAYn7H,GAAK,EAAG,CAC1D,MAAMoiH,EAAU5lH,SAASnB,cAAc,gBACvC+mH,EAAQ3mH,aAAa,OAAS,eAAcuE,EAAI,KAChD,MAAMm9I,EAAS3gJ,SAASnB,cAAc,QACtC8hJ,EAAO1hJ,aAAa,OAAS,SAAQuE,EAAI,KACzCoiH,EAAQz7G,YAAYw2I,GACpBjgJ,KAAKmlH,WAAWrnH,cAAc,mBAAmB2L,YAAYy7G,EAC/D,MACK,GAAIllH,KAAKi+H,WAAa6hB,EAAkB,CAC7C,MAAM14D,EAASpnF,KAAKinF,OAAOG,OAC3B,IAAK,IAAItkF,EAAIskF,EAAO9pF,OAAS,EAAGwF,GAAK,EAAGA,GAAK,EACvCA,EAAI9C,KAAKi+H,YACX72C,EAAOtkF,GAAG+H,QAGhB,CACF,CACApC,SACE,GAAIzI,KAAKggJ,SAAU,OACnBhgJ,KAAK6/I,iBAGL,IAAIK,EAAclgJ,KAAKy/I,YACnBz/I,KAAKi+H,WAAa,IACpBiiB,EAAcA,EAAYj4I,QAAQ,8BAA+B,OAE/Di4I,EAAY5iJ,QACdyhJ,GAAS/+I,KAAKmlH,WAAY+6B,GAE5BlgJ,KAAK2/I,WAAWviJ,SAAQm1B,IAEtB,GADmBvyB,KAAKmlH,WAAWrnH,cAAe,cAAay0B,OAC/C,OAChB,MAAM4tH,EAAS7gJ,SAASnB,cAAc,QACtCgiJ,EAAOf,IAAM,aACbe,EAAOphJ,KAAOwzB,EACdvyB,KAAKmlH,WAAW17G,YAAY02I,EAAO,IAGrC,MAAMr+I,EAAKxC,SAASnB,cAAc,OFxFtC,IAAyBmI,EEyFrBxE,EAAGkE,UAAUC,IAAI,UACjBnE,EAAGytB,KAAO,YAGVztB,EAAGe,UAAa,mIAIV5B,MAAM2e,KAAK,CACftiB,OAAQ0C,KAAKi+H,aACZn4H,KAAI,CAAC0zD,EAAG/xD,IAAW,6CACgBA,oCACZA,kDAEnBgoB,KAAK,sEFvGSnpB,EE0GDtG,KAAK++B,kBFzGZ,IAAXz4B,IACFA,EAAS,IAEJA,EAAOiyH,iBAAkD,IAA7BjyH,EAAOiyH,WAAWC,aAA8D,IAA7BlyH,EAAOiyH,WAAWE,OEsG5D,gEACez4H,KAAKlD,YAAY0iJ,mFACjBx/I,KAAKlD,YAAYyiJ,8BACpE,aFvGV,SAAyBj5I,GAIvB,YAHe,IAAXA,IACFA,EAAS,IAEJA,EAAOiiI,iBAA8C,IAAzBjiI,EAAOiiI,WAAWzmI,EACvD,CEmGQs+I,CAAgBpgJ,KAAK++B,cAAiB,4EAEpC,aFpGV,SAAwBz4B,GAItB,YAHe,IAAXA,IACFA,EAAS,IAEJA,EAAOwlI,gBAA4C,IAAxBxlI,EAAOwlI,UAAUhqI,EACrD,CEgGQu+I,CAAergJ,KAAK++B,cAAiB,0EAEnC,WAEN/+B,KAAKmlH,WAAW17G,YAAY3H,GAC5B9B,KAAKggJ,UAAW,CAClB,CACAM,aACE,IAAIjlF,EAAQr7D,KACZ,GAAIA,KAAK6d,YAAa,OACtB7d,KAAK6d,aAAc,EACnB,MACEvX,OAAQq2H,EAAY59F,aACpBA,GACEo/G,GAAUn+I,MACdA,KAAK28H,aAAeA,EACpB38H,KAAK++B,aAAeA,SACb/+B,KAAK28H,aAAat9F,KACzBr/B,KAAKyI,SAGLzI,KAAKinF,OAAS,IAAIq1C,GAAOt8H,KAAKmlH,WAAWrnH,cAAc,WAAY,IAC7D6+H,EAAalU,QAAU,GAAK,CAC9BqW,UAAU,EACVuD,qBAAsBriI,KAAKi+H,WAAa,MAEvCtB,EACHvI,kBAAmB,YACnB3N,MAAO,SAAUjjH,GACF,mBAATA,GACF63D,EAAMwkF,iBAER,MAAMjxI,EAAY+tH,EAAa4jB,aAAgB,GAAE5jB,EAAa4jB,eAAe/8I,EAAKiH,gBAAkBjH,EAAKiH,cACzG,IAAK,IAAI/E,EAAOhC,UAAUpG,OAAQqG,EAAO,IAAI1C,MAAMyE,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGjC,EAAKiC,EAAO,GAAKlC,UAAUkC,GAE7B,MAAMqH,EAAQ,IAAIlN,YAAY6O,EAAW,CACvC6C,OAAQ9N,EACR+N,SAAS,EACTC,YAAY,IAEd0pD,EAAMvpD,cAAc7E,EACtB,GAEJ,CACAuzI,oBACMxgJ,KAAK6d,aAAe7d,KAAK62H,QAAU72H,KAAKgK,QAAQ,iBAAmBhK,KAAKgK,QAAQ,gBAAgBspH,oBAGlF,IAAdtzH,KAAKq/B,MAAgD,UAA9Br/B,KAAK6J,aAAa,SAG7C7J,KAAKsgJ,YACP,CACAG,uBACMzgJ,KAAK62H,QAAU72H,KAAKgK,QAAQ,iBAAmBhK,KAAKgK,QAAQ,gBAAgBspH,oBAG5EtzH,KAAKinF,QAAUjnF,KAAKinF,OAAOlpD,SAC7B/9B,KAAKinF,OAAOlpD,UAEd/9B,KAAK6d,aAAc,EACrB,CACA6iI,yBAAyBjxI,EAAU2uI,GACjC,MACE93I,OAAQq2H,EAAY59F,aACpBA,GACEo/G,GAAUn+I,KAAMyP,EAAU2uI,GAC9Bp+I,KAAK++B,aAAeA,EACpB/+B,KAAK28H,aAAeA,EF1IxB,SAAsBn7F,GACpB,IAAIylD,OACFA,EAAMG,OACNA,EAAMroD,aACNA,EAAY4hH,cACZA,EAAanoB,OACbA,EAAMC,OACNA,EAAMmoB,YACNA,EAAWC,aACXA,GACEr/G,EACJ,MAAMs/G,EAAeH,EAAcx+I,QAAO9E,GAAe,aAARA,GAA8B,cAARA,GAA+B,iBAARA,KAE5FiJ,OAAQy6I,EAAaxY,WACrBA,EAAUhQ,WACVA,EAAUuT,UACVA,EAASrjB,QACTA,EAAOovB,OACPA,GACE5wD,EACJ,IAAI+5D,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAZ,EAAcnvH,SAAS,WAAauN,EAAa84G,QAAU94G,EAAa84G,OAAO5wD,QAAU85D,EAAclJ,SAAWkJ,EAAclJ,OAAO5wD,SACzI+5D,GAAiB,GAEfL,EAAcnvH,SAAS,eAAiBuN,EAAa20F,YAAc30F,EAAa20F,WAAWC,SAAWotB,EAAcrtB,aAAeqtB,EAAcrtB,WAAWC,UAC9JstB,GAAqB,GAEnBN,EAAcnvH,SAAS,eAAiBuN,EAAawpG,aAAexpG,EAAawpG,WAAWzmI,IAAM++I,KAAkBE,EAAcxY,aAA2C,IAA7BwY,EAAcxY,aAAyBA,IAAeA,EAAWzmI,KACnNo/I,GAAqB,GAEnBP,EAAcnvH,SAAS,cAAgBuN,EAAa+sG,YAAc/sG,EAAa+sG,UAAUhqI,IAAM8+I,KAAiBG,EAAcjV,YAAyC,IAA5BiV,EAAcjV,YAAwBA,IAAcA,EAAUhqI,KAC3Mq/I,GAAoB,GAElBR,EAAcnvH,SAAS,eAAiBuN,EAAaw5F,aAAex5F,EAAaw5F,WAAWE,QAAUA,KAAY15F,EAAaw5F,WAAWC,QAAUA,KAAYuoB,EAAcxoB,aAA2C,IAA7BwoB,EAAcxoB,aAAyBA,IAAeA,EAAWE,SAAWF,EAAWC,SACrR4oB,GAAqB,GAEvB,MAAMI,EAAgBp0G,IACf65C,EAAO75C,KACZ65C,EAAO75C,GAAKrP,UACA,eAARqP,GACE65C,EAAO1yB,YACT0yB,EAAO75C,GAAKqrF,OAAO5tH,SACnBo8E,EAAO75C,GAAKorF,OAAO3tH,UAErBk2I,EAAc3zG,GAAKqrF,YAASnvH,EAC5By3I,EAAc3zG,GAAKorF,YAASlvH,EAC5B29E,EAAO75C,GAAKqrF,YAASnvH,EACrB29E,EAAO75C,GAAKorF,YAASlvH,IAEjB29E,EAAO1yB,WACT0yB,EAAO75C,GAAKtrC,GAAG+I,SAEjBk2I,EAAc3zG,GAAKtrC,QAAKwH,EACxB29E,EAAO75C,GAAKtrC,QAAKwH,GACnB,EAEEq3I,EAAcnvH,SAAS,SAAWy1D,EAAO1yB,YACvCwsF,EAAcr5B,OAAS3oF,EAAa2oF,KACtC25B,GAAkB,GACRN,EAAcr5B,MAAQ3oF,EAAa2oF,KAC7C45B,GAAiB,EAEjBC,GAAiB,GAGrBT,EAAa1jJ,SAAQC,IACnB,GAAIT,GAASmkJ,EAAc1jJ,KAAST,GAASmiC,EAAa1hC,IACxDL,GAAO+jJ,EAAc1jJ,GAAM0hC,EAAa1hC,IAC3B,eAARA,GAAgC,eAARA,GAAgC,cAARA,KAAwB,YAAa0hC,EAAa1hC,KAAS0hC,EAAa1hC,GAAKokE,SAChI+/E,EAAcnkJ,OAEX,CACL,MAAM04F,EAAWh3D,EAAa1hC,IACZ,IAAb04F,IAAkC,IAAbA,GAAgC,eAAR14F,GAAgC,eAARA,GAAgC,cAARA,EAKhG0jJ,EAAc1jJ,GAAO0hC,EAAa1hC,IAJjB,IAAb04F,GACFyrD,EAAcnkJ,EAKpB,KAEEyjJ,EAAatvH,SAAS,gBAAkByvH,GAAsBh6D,EAAOysC,YAAczsC,EAAOysC,WAAWC,SAAWotB,EAAcrtB,YAAcqtB,EAAcrtB,WAAWC,UACvK1sC,EAAOysC,WAAWC,QAAUotB,EAAcrtB,WAAWC,SAEnDgtB,EAAcnvH,SAAS,aAAe41D,GAAUqhC,GAAWs4B,EAAct4B,QAAQhnD,UACnFgnD,EAAQrhC,OAASA,EACjBqhC,EAAQ/2D,QAAO,IAEbivF,EAAcnvH,SAAS,aAAe41D,GAAU25D,EAAcr5B,OAChE65B,GAAiB,GAEfP,GACkBnJ,EAAOx4G,QACVw4G,EAAOnmF,QAAO,GAE7BuvF,IACFh6D,EAAOysC,WAAWC,QAAUotB,EAAcrtB,WAAWC,SAEnDutB,KACEj6D,EAAO1yB,WAAessF,GAAwC,iBAAjBA,IAC/CA,EAAevhJ,SAASnB,cAAc,OACtC0iJ,EAAa76I,UAAUC,IAAI,qBAC3B46I,EAAatxH,KAAKtpB,IAAI,cACtBghF,EAAOnlF,GAAG2H,YAAYo3I,IAEpBA,IAAcE,EAAcxY,WAAWzmI,GAAK++I,GAChDtY,EAAWlpG,OACXkpG,EAAW9/H,SACX8/H,EAAW72E,UAETyvF,KACEl6D,EAAO1yB,WAAeqsF,GAAsC,iBAAhBA,IAC9CA,EAActhJ,SAASnB,cAAc,OACrCyiJ,EAAY56I,UAAUC,IAAI,oBAC1B26I,EAAYrxH,KAAKtpB,IAAI,aACrBghF,EAAOnlF,GAAG2H,YAAYm3I,IAEpBA,IAAaG,EAAcjV,UAAUhqI,GAAK8+I,GAC9C9U,EAAUzsG,OACVysG,EAAUlkB,aACVkkB,EAAU1b,gBAERgxB,IACEn6D,EAAO1yB,YACJikE,GAA4B,iBAAXA,IACpBA,EAASl5H,SAASnB,cAAc,OAChCq6H,EAAOxyH,UAAUC,IAAI,sBACrBuyH,EAAO31H,UAAYokF,EAAOi3C,OAAOphI,YAAYyiJ,cAC7C/mB,EAAOjpG,KAAKtpB,IAAI,eAChBghF,EAAOnlF,GAAG2H,YAAY+uH,IAEnBC,GAA4B,iBAAXA,IACpBA,EAASn5H,SAASnB,cAAc,OAChCs6H,EAAOzyH,UAAUC,IAAI,sBACrBwyH,EAAO51H,UAAYokF,EAAOi3C,OAAOphI,YAAY0iJ,cAC7C/mB,EAAOlpG,KAAKtpB,IAAI,eAChBghF,EAAOnlF,GAAG2H,YAAYgvH,KAGtBD,IAAQuoB,EAAcxoB,WAAWC,OAASA,GAC1CC,IAAQsoB,EAAcxoB,WAAWE,OAASA,GAC9CF,EAAWl5F,OACXk5F,EAAW7mE,UAETivF,EAAcnvH,SAAS,oBACzBy1D,EAAOiqC,eAAiBnyF,EAAamyF,gBAEnCyvB,EAAcnvH,SAAS,oBACzBy1D,EAAOkqC,eAAiBpyF,EAAaoyF,gBAEnCwvB,EAAcnvH,SAAS,cACzBy1D,EAAOszC,gBAAgBx7F,EAAaiX,WAAW,IAE7CqrG,GAAmBE,IACrBt6D,EAAO4sC,eAELytB,GAAkBC,IACpBt6D,EAAO2rC,aAET3rC,EAAOv1B,QACT,CE7BI+vF,CAAa,CACXx6D,OAAQjnF,KAAKinF,OACbloD,aAAc/+B,KAAK++B,aACnB4hH,cAAe,CAAC1C,GAAWxuI,OACV,eAAbA,GAA6BsvB,EAAatvB,GAAY,CACxDgpH,OAAQ,sBACRD,OAAQ,uBACN,MACa,eAAb/oH,GAA6BsvB,EAAatvB,GAAY,CACxDoxI,aAAc,sBACZ,MACa,cAAbpxI,GAA4BsvB,EAAatvB,GAAY,CACvDmxI,YAAa,qBACX,IAER,CACAc,yBAAyBn3I,EAAMo3I,EAAW5rD,GACnC/1F,KAAK6d,cACQ,SAAd8jI,GAAqC,OAAb5rD,IAC1BA,GAAW,GAEb/1F,KAAK0gJ,yBAAyBn2I,EAAMwrF,GACtC,CACA,6BAAW6rD,GAET,OADc5D,GAAW77I,QAAOswB,GAASA,EAAMjB,SAAS,OAAM1rB,KAAI2sB,GAASA,EAAMxqB,QAAQ,UAAUspB,GAAM,IAAGA,MAAKtpB,QAAQ,IAAK,IAAIwC,eAEpI,EAEFuzI,GAAW5gJ,SAAQ0+C,IACC,SAAdA,IACJA,EAAYA,EAAU7zC,QAAQ,IAAK,IACnClL,OAAOuE,eAAe+9I,GAAgBn9I,UAAW45C,EAAW,CAC1DkC,cAAc,EACdz8C,MACE,OAAQvB,KAAK++B,cAAgB,IAAI+c,E,EAEnCt6C,IAAIC,GACGzB,KAAK++B,eAAc/+B,KAAK++B,aAAe,IAC5C/+B,KAAK++B,aAAa+c,GAAar6C,EAC1BzB,KAAK6d,aACV7d,KAAK0gJ,yBAAyB5kG,EAChC,IACA,IAEJ,MAAM+lG,WAAoBhD,GACxB/hJ,cACEqE,QACAnB,KAAKs/I,aAAa,CAChBv9G,KAAM,QAEV,CACAt5B,SACE,MAAMq5I,EAAO9hJ,KAAK8hJ,MAAsC,KAA9B9hJ,KAAK6J,aAAa,SAAgD,SAA9B7J,KAAK6J,aAAa,QAGhF,GAFAk1I,GAAS/+I,KAAKmlH,WA1OM,0lEA2OpBnlH,KAAKmlH,WAAW17G,YAAYnK,SAASnB,cAAc,SAC/C2jJ,EAAM,CACR,MAAMC,EAAUziJ,SAASnB,cAAc,OACvC4jJ,EAAQ/7I,UAAUC,IAAI,yBACtB87I,EAAQxyH,KAAKtpB,IAAI,aACjBjG,KAAKmlH,WAAW17G,YAAYs4I,EAC9B,CACF,CACAzB,aACEtgJ,KAAKyI,QACP,CACA+3I,oBACExgJ,KAAKsgJ,YACP,EC3PF,SAAS0B,GAAWtV,GAClB,MAAM9uG,EAAM59B,KACNiiJ,EAAY5/I,EAAEqqI,GACpB,GAAyB,IAArBuV,EAAU3kJ,OAAc,OAC5B,MAAMi3D,EAAY0tF,EAAU,GAAGh7D,QAAUg7D,EAAU,GAAGh7D,OAAO1yB,UAC7D,GAAI0tF,EAAU,GAAGh7D,SAAWg7D,EAAU,GAAGh7D,OAAO1yB,UAAW,OAC3D,IAAI+8D,EAEA4wB,EACAC,EAFA77I,EAAS,GAGT27I,EAAU1/G,SAAS,UACrB+uF,EAAe2wB,EAAU7jJ,SAAS,gBAAgBsE,QAAQu/I,EAAU7jJ,SAAS,eAAe,IAC5F8jJ,GAAS,EACTC,EAAiBF,EAAUpwG,KAAK,kBAAkBv0C,OAAS,GAEzD2kJ,EAAU13I,KAAK,eACjBjE,EAASy+C,KAAK7a,MAAM+3G,EAAU13I,KAAK,gBAC1B03I,EAAU,GAAGG,eACtB97I,EAAS27I,EAAU,GAAGG,gBAEtB97I,EAAS27I,EAAU53I,UACnBtN,OAAOI,KAAKmJ,GAAQlJ,SAASC,IAC3B,MAAMoE,EAAQ6E,EAAOjJ,GACrB,GAAqB,iBAAVoE,GAA6C,IAAvBA,EAAMiB,QAAQ,MAAcjB,EAAMiB,QAAQ,KAAO,EAChF,IACE4D,EAAOjJ,GAAO0nD,KAAK7a,MAAMzoC,E,CACzB,MAAOyH,GACP,CAEJ,UAI+B,IAAxB5C,EAAOgrH,mBAAwD,IAAjBA,IACvDhrH,EAAOgrH,aAAeA,GAGxB,MAAMrqC,EAAS1yB,EAAY0tF,EAAU,GAAGh7D,OAASrpD,EAAIqpD,OAAOnqD,OAAOmlH,EAAU,GAAI37I,GAMjF,SAASm7I,IACPx6D,EAAOv1B,QACT,CANI6C,GACF0yB,EAAOI,QAAQiqC,EAAc,GAO/B,MAAM1vE,EAASqgG,EACZh4I,QAAQ,QACR9H,QAAQ89C,GAEoF,IAAzF59C,EAAE49C,GAAOv2C,OAAO,SAASA,OAAO,8CAA8CpM,SAGjF4M,GAAG,GACN+3I,EAAUh4I,QAAQ,iDAAiDnG,GAAG,aAAc29I,GACpFQ,EAAUh4I,QAAQ,UAAUnG,GAAG,aAAc29I,GACzC7/F,GAAUA,EAAOtkD,QACnBskD,EAAO99C,GAAG,WAAY29I,GAGxBx6D,EAAOnjF,GAAG,iBAAiB,KACzBm+I,EACGh4I,QAAQ,iDACRd,IAAI,aAAcs4I,GACrBQ,EAAUh4I,QAAQ,UAAUd,IAAI,aAAcs4I,GAC1C7/F,GAAUA,EAAOtkD,QACnBskD,EAAOz4C,IAAI,WAAYs4I,EACzB,IAEES,GACFj7D,EAAOnjF,GAAG,eAAe,KACvB,GAAIq+I,EAAgB,CAClB,IAAIlzG,EAAOrR,EAAIoR,MAAMztC,IAAI0gJ,EAAUh4I,QAAQ,UACtCglC,IAAMA,EAAOrR,EAAIoR,MAAM6d,MAC5B,MAAM5qB,EAASgN,EAAKhN,OACdogH,EAAcpgH,EAAO0f,gBAAgBt/C,EAAE4kF,EAAOG,QAAQl9E,GAAG+8E,EAAO5d,aAAa,IAC/Eg5E,GACF/hJ,YAAW,KACT2hC,EAAOyM,SAAS2zG,EAAY,GAC3B,EAEP,MACEzkH,EAAImd,IAAIqN,KAAK,CACXnI,MAAO59C,EAAE4kF,EAAOG,QAAQl9E,GAAG+8E,EAAO5d,cAEtC,GAGN,CD2KsB,oBAAXtoE,SACTA,OAAOuhJ,4BAA8Bh8I,IACnC03I,GAAWh8I,QAAQsE,EAAO,GANN,oBAAXvF,SACNA,OAAOwhJ,eAAehhJ,IAAI,qBAAqBR,OAAOwhJ,eAAeC,OAAO,mBAAoBnD,IAChGt+I,OAAOwhJ,eAAehhJ,IAAI,iBAAiBR,OAAOwhJ,eAAeC,OAAO,eAAgBX,KCxQ1F9gJ,OAAOu7H,SACVv7H,OAAOu7H,OAASA,IAgGlB,IAAAA,GAAe,CACb94H,KAAM,SACN65B,OAAQ,CACNi/F,WAEFx/F,SACc98B,KACRinF,OAAS1pD,GAAmB,CAC9BE,gBAAiB,UACjB3gC,YAAaw/H,GACb3+F,QAAS,U,EAGb75B,GAAI,CACF2+I,YAAYt+F,GACV,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,yBAAyB1qC,MAAMulI,IAC3CsV,GAAW5/I,KAAKw7B,EAAK8uG,EAAS,G,EAGlCrkE,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,yBAAyB1qC,MAAMulI,IAC3CsV,GAAW5/I,KAAKw7B,EAAK8uG,EAAS,G,EAGlCtkE,WAAWjkB,GACT,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,yBAAyB1qC,MAAMulI,IAC3C,MAAMzlD,EAASrpD,EAAIqpD,OAAO1lF,IAAImrI,GAC1BzlD,GAAUA,EAAOv1B,QAAQu1B,EAAOv1B,QAAQ,G,EAGhD+nB,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,yBACL1qC,MAAMulI,IACLsV,GAAW5/I,KAAKw7B,EAAK8uG,EAAS,G,EAGpCjkE,QAAQxoB,GACN,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,yBACL1qC,MAAMulI,IACL,MAAMzlD,EAASrpD,EAAIqpD,OAAO1lF,IAAImrI,GAC1BzlD,GAAUA,EAAOv1B,QAAQu1B,EAAOv1B,QAAQ,G,EAGlD60B,gBAAgBtmC,GACd,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,yBACL1qC,MAAMulI,IACL9uG,EAAIqpD,OAAOlpD,QAAQ2uG,EAAS,GAElC,I,OC7JJ,cAA2B9wG,GACzB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAM27C,EAAKv5E,KACXu5E,EAAG37C,IAAMA,EAET,MAAMqB,EAAWjiC,GACf,CACE8G,GAAI,IAEN85B,EAAIt3B,OAAOo8I,cAIbnpE,EAAGr9C,iBAAiB+C,GAEpBs6C,EAAGjzE,OAAStJ,GAAOiiC,EAAU34B,GAE7BtJ,GAAOu8E,EAAI,CACTopE,SAAS,EACT93E,QAAQ,EACRxB,YAAakQ,EAAGjzE,OAAO2gF,OAAOqqC,aAC9B/+F,IAAKgnD,EAAGjzE,OAAOisB,IACfq+C,aAAc,CACZsK,OAAO,EACPvrC,WAAW,EACX40B,UAAMj7D,EACNqJ,WAAOrJ,EACPglD,aAAShlD,EACTs5I,SAAS,EACTh0B,iBAAatlH,EACbu5I,eAAWv5I,KAKfiwE,EAAGx8C,aAGHw8C,EAAGl6C,MACL,CAEA,QAAI4P,GACF,MAAM3oC,OAAEA,EAAMs3B,IAAEA,GAAQ59B,KACxB,OAAOsG,EAAO2oC,MAAQrR,EAAIoR,MAAM6d,IAClC,CAEAi2F,cAAc77D,GACZ,MAAM1N,EAAKv5E,KACXu5E,EAAGlQ,YAAc4d,EAAO5d,YAExB,IAAI/a,EAAU24B,EAAO5d,YAAc,EAC/BohE,EAAQlxD,EAAGjzE,OAAOy8I,cAAgBxpE,EAAGjzE,OAAO08I,OAAO1lJ,OAAS2pF,EAAOG,OAAO9pF,OAC1E2pF,EAAO3gF,OAAOohH,OAChB+iB,GAAS,EACTn8E,GAAW24B,EAAOyrC,aACdpkE,EAAU,IAAGA,EAAUm8E,EAAQn8E,GAC/BA,EAAUm8E,IAAOn8E,GAAWm8E,IAGlC,MAAMwY,EAAiB1pE,EAAGjzE,OAAOy8I,cAC7B1gJ,EAAE4kF,EAAO29B,WAAW/yE,KAAM,0CAAyCo1C,EAAO5d,iBAC1EhnE,EAAE4kF,EAAOG,QAAQl9E,GAAG+8E,EAAO5d,aACzB65E,EAAmB3pE,EAAGjzE,OAAOy8I,cAC/B1gJ,EAAE4kF,EAAO29B,WAAW/yE,KAAM,0CAAyCo1C,EAAO1B,mBAC1EljF,EAAE4kF,EAAOG,QAAQl9E,GAAG+8E,EAAO1B,eAE/B,IAEIprC,EAFAshC,EAAalC,EAAGz7C,IAAI+T,KAAK,0BACzBsxG,EAAW5pE,EAAGz7C,IAAI+T,KAAK,wBAwB3B,GArBqB,SAAnB0nC,EAAGjzE,OAAOkjC,MACV+vC,EAAGjzE,OAAO2zC,QACY,IAAtBwhC,EAAWn+E,QACM,QAAjBi8E,EAAG37C,IAAIxM,QAEP+oB,EAAWo/B,EAAG37C,IAAIqc,OAAOC,YAAYq/B,EAAGz7C,KACpCqc,IACFshC,EAAap5E,EAAE83C,GAAUtI,KAAK,0BAC9BsxG,EAAW9gJ,EAAE83C,GAAUtI,KAAK,0BAG5B4pC,EAAWn+E,QAAU6lJ,EAAS7lJ,SAChCm+E,EAAWzqE,KAAKs9C,GAChB60F,EAASnyI,KAAKy5H,GACTtwF,IAAUA,EAAWshC,EAAWxxE,QAAQ,WAAW,IACpDkwC,GACFo/B,EAAG37C,IAAIqc,OAAOz1B,KAAK21B,IAKnBo/B,EAAG6pE,SAAS9lJ,OAAS,EAAG,CAC1B,MAAM+lJ,EAAep8D,EAAO3gF,OAAOohH,KAC/Bu7B,EAAe14I,KAAK,2BACpBgvE,EAAGlQ,YACPkQ,EAAG+pE,qBACAzxG,KAAK,iCACLrP,YAAY,gCACf+2C,EAAG+pE,qBACAzxG,KAAM,wBAAuBwxG,OAC7B/gH,SAAS,+BACd,CAGA,MAAMihH,EAAqBL,EAAiBrxG,KAAK,SAC7C0xG,EAAmBjmJ,OAAS,GAC1B,UAAWimJ,EAAmB,IAAIA,EAAmB,GAAG/L,OAEhE,CAEAzpD,eACE,MACMnd,EADK5wE,KACa4wE,aACnBA,EAAasK,QAClBtK,EAAajhC,WAAY,EAC3B,CAEAs+C,YAAY/kF,GACV,MAAMqwE,EAAKv5E,KACL4wE,EAAe2I,EAAG3I,aAEnBA,EAAajhC,YACbihC,EAAagyE,UAChBhyE,EAAagyE,SAAU,EACvBhyE,EAAaj+D,MAAmB,cAAXzJ,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACvEiwC,EAAGjzE,OAAOy8I,cACZnyE,EAAag+C,YAAcvsH,EAAEk3E,EAAG0N,OAAO29B,WAAWxmH,SAAS,wBAE3DwyE,EAAag+C,YAAcvsH,EAAEk3E,EAAG0N,OAAOG,QAAQl9E,GAAGqvE,EAAG0N,OAAO5d,aAE9DuH,EAAaiyE,UAAYxwH,MAE3BnpB,EAAE+/B,iBACF2nC,EAAatiB,QAAqB,cAAXplD,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MAC7EsnC,EAAarM,KAAOqM,EAAaj+D,MAAQi+D,EAAatiB,QACtDirB,EAAGz7C,IAAIkT,WAAW,GAAG5/B,UAAW,kBAAiBw/D,EAAarM,aAChE,CAEA2pB,aACE,MAAM3U,EAAKv5E,KACL4wE,EAAe2I,EAAG3I,aAExB,GADAA,EAAajhC,WAAY,GACpBihC,EAAagyE,QAEhB,YADAhyE,EAAagyE,SAAU,GAGzBhyE,EAAagyE,SAAU,EACvBhyE,EAAasK,OAAQ,EACrB,MAAM3W,EAAOz9D,KAAK+R,IAAI+3D,EAAarM,MAC7BzvB,GAAW,IAAI10C,MAAOuI,UAAYioE,EAAaiyE,UAChD/tG,EAAW,KAAOyvB,EAAO,IAAQzvB,GAAY,KAAOyvB,EAAO,IAC9DryC,IAAS,KACHqnD,EAAGz7C,MACD8yC,EAAarM,KAAO,EAAGgV,EAAGz7C,IAAIwE,SAAS,yBACtCi3C,EAAGz7C,IAAIwE,SAAS,uBAEvBi3C,EAAGj+C,KAAK,sBAAuBi+C,GAC/BA,EAAGz7C,IAAI1sB,UAAU,IAAI4/B,WAAW,IAChCuoC,EAAGh7C,QACHqyC,EAAasK,OAAQ,CAAI,KAIhB,IAAT3W,EACFgV,EAAGz7C,IAAIwE,SAAS,+BAA+BiT,eAAc,KAC3Dq7B,EAAasK,OAAQ,EACrB3B,EAAGz7C,IAAI0E,YAAY,8BAA8B,IAGnDouC,EAAasK,OAAQ,EAEvBhpD,IAAS,KACPqnD,EAAGz7C,IAAI1sB,UAAU,IAAI4/B,WAAW,GAAG,IAEvC,CAGAwyG,eACE,MAAMjqE,EAAKv5E,KACX,GAAIu5E,EAAGjzE,OAAOk9I,aAAc,OAAOjqE,EAAGjzE,OAAOk9I,aAAaphJ,KAAKm3E,GAE/D,MAAMkqE,EAAalqE,EAAGjzE,OAAOm9I,WAEvBzjD,EACa,QAAjBzmB,EAAG37C,IAAIxM,OAAmBmoD,EAAGjzE,OAAO05F,iBAAmBzmB,EAAGjzE,OAAO05F,iBAAmB,GAEhF0jD,OACiC,IAA9BnqE,EAAGjzE,OAAOq9I,gBACbpqE,EAAGjzE,OAAO08I,OAAO1lJ,OAAS,EAC1Bi8E,EAAGjzE,OAAOq9I,gBAEVC,EAA6B,SAAnBrqE,EAAGjzE,OAAOkjC,KAC1B,OACE7K,GAAA,OACE0zB,MAAQ,gCACc,SAApBknB,EAAGjzE,OAAO8qB,MAAmB,4BAA8B,KAG7DuN,GAAA,OAAK0zB,MAAM,cACX1zB,GAAA,OAAK0zB,MAAM,qDACPuxF,GACAjlH,GAAA,OAAK0zB,MAAM,QACT1zB,GAAA,KAAG0zB,MAAQ,QAAQ2tC,EAAiC,GAAd,oBACpCrhE,GAAA,KAAG0zB,MAAQ,mBAAiBoxF,EAAc,SAAQA,IAAe,MAChEzjD,GAAoBrhE,GAAA,YAAOqhE,KAIjC0jD,GACC/kH,GAAA,OAAK0zB,MAAM,SACT1zB,GAAA,QAAM0zB,MAAM,0BACZ1zB,GAAA,QAAM0zB,MAAM,oBAAoBknB,EAAGjzE,OAAOu9I,cAC1CllH,GAAA,QAAM0zB,MAAM,yBAGfuxF,IAAYrqE,EAAGjzE,OAAO+5F,oBAAsB9mB,EAAGjzE,OAAOw9I,qBACrDnlH,GAAA,OAAK0zB,MAAM,SACT1zB,GAAA,KAAG0zB,MAAM,mBAAmB,aAAW,wBACpCknB,EAAGjzE,OAAOw9I,oBAAuC,QAAjBvqE,EAAG37C,IAAIxM,OACtCuN,GAAA,SACEA,GAAA,OACEolH,MAAM,6BACNzrH,MAAM,KACN0B,OAAO,KACPgqH,QAAQ,aAERrlH,GAAA,QACEu7F,KAAK,eACLpkH,EAAE,giBAKTyjE,EAAGjzE,OAAOw9I,oBAAuC,OAAjBvqE,EAAG37C,IAAIxM,OACtCuN,GAAA,SACEA,GAAA,OACEolH,MAAM,6BACN/pH,OAAO,OACPgqH,QAAQ,YACR1rH,MAAM,OACN4hG,KAAK,gBAELv7F,GAAA,QAAM7oB,EAAE,kBAAkBokH,KAAK,SAC/Bv7F,GAAA,QAAM7oB,EAAE,oHAIbyjE,EAAGjzE,OAAO+5F,oBAAsB1hE,GAAO46C,cAAGjzE,OAAO+5F,uBAOhE,CAEAiP,gBACE,MAAM/1B,EAAKv5E,KACX,GAAIu5E,EAAGjzE,OAAOgpG,cAAe,OAAO/1B,EAAGjzE,OAAOgpG,cAAcltG,KAAKm3E,GAEjE,MAAMkqE,EAAalqE,EAAGjzE,OAAOm9I,WAE7B,OACE9kH,GAAA,OAAK0zB,MAAM,iCACT1zB,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,KAAG0zB,MAAM,2BACP1zB,GAAA,KAAG0zB,MAAQ,mBAAiBoxF,EAAc,SAAQA,IAAe,OAEnE9kH,GAAA,KAAG0zB,MAAM,2BACP1zB,GAAA,KAAG0zB,MAAQ,sBAAoBoxF,EAAc,SAAQA,IAAe,QAK9E,CAEAQ,eACE,MAAM1qE,EAAKv5E,KAEX,OACE2+B,GAAA,OAAK0zB,MAAM,+CACT1zB,GAAA,OAAK0zB,MAAM,UACT1zB,GAAA,OAAK0zB,MAAM,kBACRknB,EAAGjzE,OAAOuxI,OAAO/xI,KAAI,CAACo+I,EAAOz8I,IAAU8xE,EAAG4qE,YAAYD,EAAOz8I,OAKxE,CAEA28I,cAAcC,EAAS58I,GACrB,MAAM8xE,EAAKv5E,KACX,OAAIu5E,EAAGjzE,OAAO89I,cAAsB7qE,EAAGjzE,OAAO89I,cAAchiJ,KAAKm3E,EAAI8qE,EAAS58I,GAE5Ek3B,GAAA,OAAK0zB,MAAM,wBAAwB,qBAAoB5qD,GACpD48I,EAGP,CAEAC,aAAaC,EAAO98I,GAClB,MAAM8xE,EAAKv5E,KACX,OAAIu5E,EAAGjzE,OAAOg+I,aAAqB/qE,EAAGjzE,OAAOg+I,aAAaliJ,KAAKm3E,EAAIgrE,EAAO98I,GAExEk3B,GAAA,OACE0zB,MAAM,8DACN,0BAAyB5qD,GAExB88I,EAAM/hJ,KAAO+hJ,EAAM/hJ,KAAO+hJ,EAGjC,CAEAC,gBAAgBD,EAAO98I,GACrB,MAAM8xE,EAAKv5E,KACX,OAAIu5E,EAAGjzE,OAAOk+I,gBAAwBjrE,EAAGjzE,OAAOk+I,gBAAgBpiJ,KAAKm3E,EAAIgrE,EAAO98I,GAE9Ek3B,GAAA,OACE0zB,MAAM,4DACN,0BAAyB5qD,GAEzBk3B,GAAA,OAAK0zB,MAAM,0BACX1zB,GAAA,QAAM0zB,MAAM,yBACV1zB,GAAA,OAAK8lH,QAAQ,OAAOvnJ,IAAKqnJ,EAAMhyH,IAAMgyH,EAAMhyH,IAAMgyH,KAIzD,CAEAG,YAAYH,EAAO98I,GACjB,MAAM8xE,EAAKv5E,KACX,OAAIu5E,EAAGjzE,OAAOo+I,YAAoBnrE,EAAGjzE,OAAOo+I,YAAYtiJ,KAAKm3E,EAAIgrE,EAAO98I,GAEtEk3B,GAAA,OAAK0zB,MAAM,mCAAmC,0BAAyB5qD,GACrEk3B,GAAA,QAAM0zB,MAAM,yBACV1zB,GAAA,OAAKzhC,IAAKqnJ,EAAMhyH,IAAMgyH,EAAMhyH,IAAMgyH,KAI1C,CAEAJ,YAAYD,EAAOz8I,GACjB,MAAM8xE,EAAKv5E,KACLuyB,EAAuB,iBAAV2xH,EAAqBA,EAAQA,EAAM3xH,IACtD,OAAIgnD,EAAGjzE,OAAO69I,YAAoB5qE,EAAGjzE,OAAO69I,YAAY/hJ,KAAKm3E,EAAI2qE,EAAOz8I,GAEtEk3B,GAAA,OAAK0zB,MAAM,0CAA0C,0BAAyB5qD,GAC3E8qB,GAAOoM,GAAA,OAAKzhC,IAAKq1B,EAAKkyH,QAAQ,SAGrC,CAEAh8I,SACE,MAAM8wE,EAAKv5E,KACX,OAAIu5E,EAAGjzE,OAAOmC,OAAe8wE,EAAGjzE,OAAOmC,OAAOrG,KAAKm3E,EAAIA,EAAGjzE,QAExDq4B,GAAA,OAAK0zB,MAAQ,+BAA8BknB,EAAGjzE,OAAO8qB,SACnDuN,GAAA,OAAK0zB,MAAM,QACT1zB,GAAA,OACE0zB,MAAQ,8CAA6CknB,EAAGjzE,OAAO8qB,oBAC5DmoD,EAAGjzE,OAAO2zC,OAAuB,GAAd,cAEtB,YAAU,sBAETs/B,EAAGjzE,OAAO2zC,QAAUs/B,EAAGiqE,eACvBjqE,EAAGjzE,OAAOgjE,SAAWiQ,EAAG+1B,gBACxB/1B,EAAGjzE,OAAOuxI,QAAUt+D,EAAGjzE,OAAOuxI,OAAOv6I,QAAUi8E,EAAG0qE,eACnDtlH,GAAA,OACE0zB,MAAQ,iDACNknB,EAAGjzE,OAAOq+I,eAAiBprE,EAAGjzE,OAAO8qB,SAGtCmoD,EAAGjzE,OAAO08I,OAAOl9I,KAAI,CAACy+I,EAAO98I,IACxB88I,EAAMF,QAAgB9qE,EAAG6qE,cAAcG,EAAMF,QAAS58I,GACnD,MAGXk3B,GAAA,OAAK0zB,MAAM,yCACT1zB,GAAA,OAAK0zB,MAAM,gDACPknB,EAAGjzE,OAAOy8I,eACVxpE,EAAGjzE,OAAO08I,OAAOl9I,KAAI,CAACy+I,EAAO98I,IAEzB88I,EAAM/hJ,OACa,iBAAV+hJ,GAAsBA,aAAiBtzH,SAC9CszH,EAAM7hJ,QAAQ,MAAQ,GACtB6hJ,EAAM7hJ,QAAQ,MAAQ,EAEjB62E,EAAG+qE,aAAaC,EAAO98I,IAET,IAAnB8xE,EAAGjzE,OAAOw7I,KACLvoE,EAAGirE,gBAAgBD,EAAO98I,GAE5B8xE,EAAGmrE,YAAYH,EAAO98I,SAQ/C,CAEAm9I,mBACE,MAAMrrE,EAAKv5E,KACX,GAAIu5E,EAAGjzE,OAAOs+I,iBAAkB,OAAOrrE,EAAGjzE,OAAOs+I,iBAAiBxiJ,KAAKm3E,GAEvE,MADwB,2FAA0FA,EAAG9wE,gBAEvH,CAEAm3F,aACE,MAAMrmB,EAAKv5E,KACX,GAAIu5E,EAAGjzE,OAAOs5F,WAAY,OAAOrmB,EAAGjzE,OAAOs5F,WAAWx9F,KAAKm3E,GAG3D,OAFiBA,EAAG9wE,QAGtB,CAEA03F,cACE,MAAM5mB,EAAKv5E,KACX,GAAIu5E,EAAGjzE,OAAO65F,YAAa,OAAO5mB,EAAGjzE,OAAO65F,YAAY/9F,KAAKm3E,GAG7D,MAFmB,0CAAyCA,EAAG9wE,gBAGjE,CAGAuiE,OAAOxhC,EAAM1nC,GACX,MAAMy3E,EAAKv5E,KACL49B,EAAM27C,EAAG37C,IACTE,EAAMz7B,EAAEP,GAEdg8B,EAAI,GAAG+mH,eAAiBtrE,EAExBA,EAAGz7C,IAAMA,EACTy7C,EAAGz3E,GAAKg8B,EAAI,GACZy7C,EAAGqnB,SAAWp3D,EACd+vC,EAAG1O,QAAS,EAEZ0O,EAAGurE,mBAAqBvrE,EAAGz7C,IAAI+T,KAAK,mCACpC0nC,EAAGwrE,iBAAmBxrE,EAAGz7C,IAAI+T,KAAK,iCAClC0nC,EAAG6N,OAAS7N,EAAGz7C,IAAI+T,KAAK,wBACxB0nC,EAAG+pE,qBAAuB/pE,EAAGz7C,IAAI+T,KAAK,2BACtC0nC,EAAG6pE,SAAW7pE,EAAGz7C,IAAI+T,KAAK,0BAE1B,MAAMmzG,EAAYzrE,EAAGjzE,OAAOuxI,QAAUt+D,EAAGjzE,OAAOuxI,OAAOv6I,OAAS,EAGhE,IAAIw/H,EACAmoB,EACAC,EACJ,MAAM5zB,EAAe/3C,EAAGlQ,YAClBszD,EAAe3/H,GAAO,GAAIu8E,EAAGjzE,OAAO2gF,OAAQ,CAChDqqC,eAKAxtH,GAAI,CACFC,MAAMmF,GACJ3I,aAAau8H,GACTvjD,EAAGjzE,OAAO6+I,aACZroB,EAAex8H,YAAW,KACxBi5E,EAAG6rE,kBAAkB,GACpB,MAEL7rE,EAAGj+C,KAAK,aAAcpyB,GACtBqwE,EAAGj+C,KAAK,eAAgBpyB,E,EAE1Bm8I,YAAYn8I,GACV3I,aAAau8H,GACbvjD,EAAGj+C,KAAK,mBAAoBpyB,GAC5BqwE,EAAGj+C,KAAK,qBAAsBpyB,E,EAEhCo8I,cAEMN,GAAazrE,EAAG6+D,eAAiB8M,IACnCD,GAAqB,EACrB1rE,EAAG6+D,aAAa/wD,QAAQ9N,EAAG0N,OAAO5d,aAClC/oE,YAAW,KACT2kJ,GAAqB,CAAK,KAG9B1rE,EAAGupE,cARY9iJ,MAQU,QAAA0F,EAAAhC,UAAApG,OATZqG,EAAI1C,UAAAyE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJjC,EAAIiC,GAAAlC,UAAAkC,GAUjB2zE,EAAGj+C,KAAK,wBAAyB33B,E,EAEnCgoF,kBAAyB,QAAAh8E,EAAAjM,UAAApG,OAANqG,EAAI1C,UAAA0O,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjM,EAAIiM,GAAAlM,UAAAkM,GACrB2pE,EAAGj+C,KAAK,4BAA6B33B,E,EAEvC4xC,gBAAuB,QAAAtkC,EAAAvN,UAAApG,OAANqG,EAAI1C,UAAAgQ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvN,EAAIuN,GAAAxN,UAAAwN,GACnBqoE,EAAGj+C,KAAK,0BAA2B33B,E,EAErC4hJ,6BAEEhsE,EAAGupE,cADY9iJ,MACU,QAAAqL,EAAA3H,UAAApG,OAFGqG,EAAI1C,UAAAoK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3H,EAAI2H,GAAA5H,UAAA4H,GAGhCiuE,EAAGj+C,KAAK,uCAAwC33B,E,EAElD6hJ,2BAAkC,QAAAr3I,EAAAzK,UAAApG,OAANqG,EAAI1C,UAAAkN,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJzK,EAAIyK,GAAA1K,UAAA0K,GAC9BmrE,EAAGj+C,KAAK,qCAAsC33B,EAChD,KAGA41E,EAAGjzE,OAAOsqE,cAAmC,SAAnB2I,EAAGjzE,OAAOkjC,MACtCxsC,GAAO2/H,EAAa74H,GAAI,CACtB2hJ,WAAWx+D,EAAQ/9E,GACjBqwE,EAAGwU,aAAa7kF,GAChBqwE,EAAGj+C,KAAK,oBAAqBpyB,E,EAE/Bw8I,kBAAkBz+D,EAAQ/9E,GACxBqwE,EAAG0U,YAAY/kF,GACfqwE,EAAGj+C,KAAK,2BAA4BpyB,E,EAEtCy8I,SAAS1+D,EAAQ/9E,GACfqwE,EAAG2U,WAAWhlF,GACdqwE,EAAGj+C,KAAK,kBAAmBpyB,EAC7B,IAGAqwE,EAAGjzE,OAAOy8I,eACZ/lJ,GAAO2/H,EAAc,CACnBlU,QAAS,CACPrhC,OAAQ7N,EAAGjzE,OAAO08I,OAClBvgB,YAAWA,CAAC8hB,EAAO98I,IAEf88I,EAAM/hJ,OACa,iBAAV+hJ,GAAsBA,aAAiBtzH,SAC9CszH,EAAM7hJ,QAAQ,MAAQ,GACtB6hJ,EAAM7hJ,QAAQ,MAAQ,EAEjB62E,EAAG+qE,aAAaC,EAAO98I,IAET,IAAnB8xE,EAAGjzE,OAAOw7I,KACLvoE,EAAGirE,gBAAgBD,EAAO98I,GAE5B8xE,EAAGmrE,YAAYH,EAAO98I,MAKrC,MAAM1G,EAASF,IAQf,GAPA04E,EAAG0N,OAASrpD,EAAIqpD,OACZrpD,EAAIqpD,OAAOnqD,OAAOy8C,EAAGurE,mBAAmB,GAAInoB,GAC5C,IAAI57H,EAAOu7H,OAAO/iD,EAAGurE,mBAAmB,GAAInoB,IAEzB,IAAnBpjD,EAAGlQ,aAAqBkQ,EAAGjzE,OAAOy8I,gBACpCxpE,EAAGupE,cAAcvpE,EAAG0N,QAElB+9D,EAAW,CACb,MAAMzM,EAAqB,CACzBz2I,GAAIy3E,EAAGz7C,IAAI+T,KAAK,iCAAiC,GACjDs1E,cAAe,OACfyC,gBAAgB,EAChBP,aAAc,EACd2C,qBAAqB,EACrBsF,eACAxtH,GAAI,CACFkkG,YACEk9C,GAAmB,C,EAErBS,WACET,GAAmB,C,EAErBI,YAAYjuI,GACN4tI,GACJ1rE,EAAG0N,OAAOI,QAAQhwE,EAAEgyD,YAAa,E,EAEnCtlE,MAAMsT,GACJ,IAAKA,EAAE24G,aAAc,OACrB,MAAMvoH,EAAQyoB,SAAS7tB,EAAEgV,EAAE24G,cAAczlH,KAAK,2BAA4B,IAC1E8M,EAAEgwE,QAAQ5/E,EAAO,EACnB,IAIJ8xE,EAAG6+D,aAAex6G,EAAIqpD,OAClBrpD,EAAIqpD,OAAOnqD,OAAOy7G,GAClB,IAAIx3I,EAAOu7H,OAAOic,EACxB,CAEIh/D,EAAGz7C,KACLy7C,EAAGz7C,IAAIj6B,QAAQ,qBAEjB01E,EAAGj+C,KAAK,+BAAgCi+C,EAC1C,CAEAtO,WACE,MAAMsO,EAAKv5E,KACPu5E,EAAGz7C,KAA0B,eAAnBy7C,EAAGjzE,OAAOkjC,MACtB+vC,EAAGz7C,IAAIpyB,IAAI,YAAa,QAEtB6tE,EAAGz7C,KACLy7C,EAAGz7C,IAAIj6B,QAAQ,uBAEjB01E,EAAGj+C,KAAK,mCAAoCi+C,EAC9C,CAEArO,UACE,MAAMqO,EAAKv5E,KACPu5E,EAAGnN,YAGHmN,EAAG0N,QAAU1N,EAAG0N,OAAOlpD,UACzBw7C,EAAG0N,OAAOlpD,SAAQ,GAAM,GACxBw7C,EAAG0N,OAAS,YACL1N,EAAG0N,QAER1N,EAAG6+D,cAAgB7+D,EAAG6+D,aAAar6G,UACrCw7C,EAAG6+D,aAAar6G,SAAQ,GAAM,GAC9Bw7C,EAAG6+D,aAAe,YACX7+D,EAAG6+D,cAER7+D,EAAGz7C,KACLy7C,EAAGz7C,IAAIj6B,QAAQ,sBAEjB01E,EAAGj+C,KAAK,iCAAkCi+C,GAC5C,CAEApO,WACE,MAAMoO,EAAKv5E,KACPu5E,EAAGnN,YACPmN,EAAG1O,QAAS,EACZ0O,EAAGz7C,IAAM,KACTy7C,EAAGz3E,GAAK,YACDy3E,EAAGz7C,WACHy7C,EAAGz3E,GACNy3E,EAAGz7C,KACLy7C,EAAGz7C,IAAIj6B,QAAQ,uBAEjB01E,EAAGj+C,KAAK,mCAAoCi+C,GAC9C,CAGA6nB,WACE,MAAM7nB,EAAKv5E,KACX,GAAIu5E,EAAG1O,OAAQ,OAAO0O,EAEtB,MAAM8nB,EAAW9nB,EAAGqmB,aA6BpB,OA3BArmB,EAAGtqC,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAKgnD,EAAGhnD,IACR0a,MAAO,CACLhf,QAASozE,EACTp2D,KAAMsuC,EAAGhnD,IACTzuB,GAAI,CACFqkE,aAAaj/D,EAAGi7C,GACdo1B,EAAGtqC,KAAKnR,IAAIwE,SACT,mDAAkDi3C,EAAGjzE,OAAO8qB,SAE/DmoD,EAAGvO,OAAO,OAAQ7mB,EAAKriD,G,EAEzBukD,YAAYn9C,EAAGi7C,GACbo1B,EAAGtO,SAAS,OAAQ9mB,EAAKriD,G,EAE3Bw/F,cAAcp4F,EAAGi7C,GACfo1B,EAAGtqC,KAAKnR,IAAI0E,YACT,mFAAkF+2C,EAAGjzE,OAAO8qB,SAE/FmoD,EAAGrO,QAAQ,OAAQ/mB,EAAKriD,G,EAE1By/F,aAAar4F,EAAGi7C,GACdo1B,EAAGpO,SAAS,OAAQhnB,EAAKriD,GAC3B,MAICy3E,CACT,CAEAqsE,iBACE,MAAMrsE,EAAKv5E,KACX,GAAIu5E,EAAG1O,OAAQ,OAAO0O,EAEtB,MAEMkoB,EAAc,CAClBr2B,UAAU,EACVn9C,QAJqBsrD,EAAGqrE,mBAKxB9gJ,GAAI,CACF89F,UAAUhzC,GACR2qB,EAAGvO,OAAO,QAASpc,EAAM9sD,G,EAE3B+/F,YAAYjzC,GACV2qB,EAAGtO,SAAS,QAASrc,EAAM9sD,G,EAE7BggG,WAAWlzC,GACT2qB,EAAGrO,QAAQ,QAAStc,EAAM9sD,G,EAE5BigG,YAAYnzC,GACV2qB,EAAGpO,SAAS,QAASvc,EAAM9sD,GAC7B,IAeJ,OAXIy3E,EAAGjzE,OAAO07F,gBAAkBzoB,EAAGtqC,KACjCsqC,EAAGtqC,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAKgnD,EAAGhnD,IACR0a,MAAO,CACLhC,KAAMsuC,EAAGhnD,IACTq8B,MAAO6yC,KAIXloB,EAAGnhC,MAAQmhC,EAAG37C,IAAIgxB,MAAM9xB,OAAO2kE,GAAaxjE,OAEvCs7C,CACT,CAEAioB,YACE,MAAMjoB,EAAKv5E,KACX,GAAIu5E,EAAG1O,OAAQ,OAAO0O,EAEtB,MAEMkoB,EAAc,CAClBxzE,QAHgBsrD,EAAG4mB,cAInBn+F,KAAMu3E,EAAGjzE,OAAOo7F,UAChBz1B,qBAAsBsN,EAAGjzE,OAAO2lE,qBAChCnoE,GAAI,CACF89F,UAAUhzC,GACR2qB,EAAGvO,OAAO,QAASpc,EAAM9sD,G,EAE3B+/F,YAAYjzC,GACV2qB,EAAGtO,SAAS,QAASrc,EAAM9sD,G,EAE7BggG,WAAWlzC,GACT2qB,EAAGrO,QAAQ,QAAStc,EAAM9sD,G,EAE5BigG,YAAYnzC,GACV2qB,EAAGpO,SAAS,QAASvc,EAAM9sD,GAC7B,IAeJ,OAXIy3E,EAAGjzE,OAAO07F,gBAAkBzoB,EAAGtqC,KACjCsqC,EAAGtqC,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAKgnD,EAAGhnD,IACR0a,MAAO,CACLhC,KAAMsuC,EAAGhnD,IACTq8B,MAAO6yC,KAIXloB,EAAGnhC,MAAQmhC,EAAG37C,IAAIgxB,MAAM9xB,OAAO2kE,GAAaxjE,OAEvCs7C,CACT,CAGAssE,mBACE,MAAMtsE,EAAKv5E,KAQX,MAPuB,SAAnBu5E,EAAGjzE,OAAOkjC,MACZ+vC,EAAGtqC,KAAKnR,IAAIwE,SAAS,mCAEnBi3C,EAAGz7C,KAAKy7C,EAAGz7C,IAAIwE,SAAS,yBACxBi3C,EAAGjzE,OAAOw/I,wBACZvsE,EAAG+pE,qBAAqBhhH,SAAS,kCACnCi3C,EAAGopE,SAAU,EACNppE,CACT,CAEAwsE,oBACE,MAAMxsE,EAAKv5E,KAQX,MAPuB,SAAnBu5E,EAAGjzE,OAAOkjC,MACZ+vC,EAAGtqC,KAAKnR,IAAI0E,YAAY,mCAEtB+2C,EAAGz7C,KAAKy7C,EAAGz7C,IAAI0E,YAAY,yBAC3B+2C,EAAGjzE,OAAOw/I,wBACZvsE,EAAG+pE,qBAAqB9gH,YAAY,kCACtC+2C,EAAGopE,SAAU,EACNppE,CACT,CAEA6rE,mBACE,MAAM7rE,EAAKv5E,KAQX,MAPuB,SAAnBu5E,EAAGjzE,OAAOkjC,MACZ+vC,EAAGtqC,KAAKnR,IAAIq6C,YAAY,mCAEtBoB,EAAGz7C,KAAKy7C,EAAGz7C,IAAIq6C,YAAY,yBAC3BoB,EAAGjzE,OAAOw/I,wBACZvsE,EAAG+pE,qBAAqBnrE,YAAY,kCACtCoB,EAAGopE,SAAWppE,EAAGopE,QACVppE,CACT,CAEAt7C,KAAKx2B,GACH,MAAM8xE,EAAKv5E,KACLwpC,EAAO+vC,EAAGjzE,OAAOkjC,KACvB,OAAI+vC,EAAG1O,QACD0O,EAAG0N,aAA2B,IAAVx/E,GACtB8xE,EAAG0N,OAAOI,QAAQn3D,SAASzoB,EAAO,KAE7B8xE,SAEY,IAAV9xE,IACT8xE,EAAGlQ,YAAc5hE,GAEN,eAAT+hC,GACF+vC,EAAGqsE,iBAEQ,SAATp8G,GACF+vC,EAAG6nB,WAEQ,UAAT53D,GACF+vC,EAAGioB,YAEEjoB,EACT,CAEAh7C,QACE,MAAMg7C,EAAKv5E,KACX,OAAKu5E,EAAG1O,QACH0O,EAAGjzE,OAAO07F,gBAAkBzoB,EAAGtqC,MAAyB,SAAhBsqC,EAAGqnB,SAC9CrnB,EAAGtqC,KAAKhN,OAAOniC,QAEfy5E,EAAGnhC,MAAMjd,KAAK,eAAe,KAC3BjJ,IAAS,KACHqnD,EAAGnN,YACPmN,EAAGnhC,MAAMra,iBACFw7C,EAAGnhC,MAAK,GACf,IAEJmhC,EAAGnhC,MAAM7Z,SAEJg7C,GAbgBA,CAczB,CAEAl6C,OAAO,CAEPtB,UACE,IAAIw7C,EAAKv5E,KACTu5E,EAAGj+C,KAAK,iDAAkDi+C,GACtDA,EAAGz7C,MACLy7C,EAAGz7C,IAAIj6B,QAAQ,8BACf01E,EAAGz7C,IAAI,GAAG+mH,eAAiB,YACpBtrE,EAAGz7C,IAAI,GAAG+mH,gBAEnB7yH,GAAYunD,GACZA,EAAGnN,WAAY,EACfmN,EAAK,IACP,GC70BF,IAAAysE,GAAe,CACbxiJ,KAAM,eACN8C,OAAQ,CACNo8I,aAAc,CACZM,OAAQ,GACRnL,OAAQ,GACRsN,YAAY,EACZW,wBAAwB,EACxBt8G,KAAM,aACNyQ,QAAQ,EACRqvB,SAAS,EACTl4C,MAAO,QACPuzH,mBAAer7I,EACfm6I,gBAAYn6I,EACZo4F,WAAW,EACX9wB,cAAc,EACdovB,iBAAkB,OAClBK,wBAAoB/2F,EACpBw6I,oBAAoB,EACpBD,aAAc,KACdF,qBAAiBr6I,EACjB2lC,UAAM3lC,EACNipB,IAAK,UACLyvE,gBAAgB,EAChB+gD,eAAe,EACfjB,MAAM,EACN71E,sBAAsB,EAEtBu3E,kBAAcl6I,EACdgmG,mBAAehmG,EACf86I,mBAAe96I,EACfg7I,kBAAch7I,EACdk7I,qBAAiBl7I,EACjBo7I,iBAAap7I,EACb66I,iBAAa76I,EACbs2F,gBAAYt2F,EACZ62F,iBAAa72F,EACbs7I,sBAAkBt7I,EAElB29E,OAAQ,CACN4iC,SAAS,EACTyH,aAAc,EACdjI,aAAc,GACd1E,MAAO,IACP+C,MAAM,EACNqc,SAAU,CACRtiE,SAAS,GAEX82D,WAAY,CACVC,OAAQ,sBACRC,OAAQ,uBAEV9B,KAAM,CACJl1D,SAAS,EACT6rE,SAAU,EACV3S,SAAU,MAKlB79F,SACc98B,KACR0iJ,aAAenlH,GAAmB,CACpCE,gBAAiB,4CACjB3gC,YAAakpJ,GACbpoH,IAJU59B,KAKV29B,QAAS,kB,EAGbN,OAAQ,CACN2oH,kB,OCnEJ,cAA2B15E,GACzBxvE,YAAY8gC,EAAKt3B,GACf,MAAMimE,EAAiBvvE,GACrB,CACE8G,GAAI,IAEN85B,EAAIt3B,OAAOitI,aACXjtI,GAIFnF,MAAMy8B,EAAK2uC,GAEX,MAAMgnE,EAAevzI,KAErBuzI,EAAa31G,IAAMA,EAEnB21G,EAAajtI,OAASimE,EAEtB,MAAMgI,KACJA,EAAI/Q,MACJA,EAAKyiF,eACLA,EAAcC,SACdA,EAAQl1I,KACRA,EAAIunE,YACJA,EAAWC,aACXA,EAAY3L,SACZA,EAAQs5E,aACRA,GACE5S,EAAajtI,OAEjB,IAAIw3B,EAoDA6R,EACA1J,EACAS,EACAoJ,EACAC,EACAq2G,EAxDJ,GAAK7S,EAAajtI,OAAOxE,GAcvBg8B,EAAMz7B,EAAEkxI,EAAajtI,OAAOxE,QAdD,CAE3B,MAAMukJ,EAAmB9S,EAAa9qI,OAAO,CAC3C8rE,OACA/Q,QACAyiF,iBACAC,WACAl1I,OACAunE,cACA1L,aAGF/uC,EAAMz7B,EAAEgkJ,EACV,CAIA,GAAIvoH,GAAOA,EAAIxgC,OAAS,GAAKwgC,EAAI,GAAGQ,QAClC,OAAOR,EAAI,GAAGQ,QAGhB,GAAmB,IAAfR,EAAIxgC,OACN,OAAOi2I,EAAax1G,UAGtB/gC,GAAOu2I,EAAc,CACnBz1G,MACAh8B,GAAIg8B,EAAI,GACR0L,KAAM,iBAGR1L,EAAI,GAAGQ,QAAUi1G,EAEbh7D,GACFz6C,EAAI+T,KAAK,8BAA8B/tC,GAAG,SAAS,KACjDyvI,EAAah1G,OAAO,IAGxBT,EAAIh6B,GAAG,SAAUoF,IACXqvE,GAAel2E,EAAE6G,EAAEjM,QAAQ+M,QAAQ,8BAA8B1M,SAGrEi2I,EAAaj4G,KAAK,iCAAkCi4G,GAChD4S,GAAc5S,EAAah1G,QAAO,IAGxCg1G,EAAazvI,GAAG,iBAAiB,KAC/Bg6B,EAAI30B,IAAI,QAAQ,IAUlB,MAAMymC,EAAe,GACrB,SAASyB,EAAiBnoC,GACpBymC,IACJA,GAAY,EACZ1J,GAAU,EACVS,OAAcp9B,EACdymC,EAAiB1d,KACjBud,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MAC1E,CACA,SAASmI,EAAgBvoC,GACvB,IAAKymC,EAAW,OAChB,MAAMtG,EAAmB,cAAXngC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC9DC,EAAmB,cAAXpgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MAMpE,QAL2B,IAAhB5C,IACTA,KACEA,GAAe5/B,KAAK+R,IAAIywB,EAAQsG,EAAah7B,GAAK9N,KAAK+R,IAAIwwB,EAAQuG,EAAav3B,KAGhFquB,EAEF,YADAiJ,GAAY,GAGdzmC,EAAE+/B,iBACGhD,IACHstG,EAAaz1G,IAAI0E,YAAY,8BAC7B+wG,EAAaz1G,IAAIkT,WAAW,GAC5Bo1G,EAAqB7S,EAAaz1G,IAAI,GAAG3uB,aAAe,GAE1D82B,GAAU,EACV6J,EAAcxG,EAAQsG,EAAah7B,EACnC,IAAIqpE,EAAenuC,EACfA,EAAc,IAChBmuC,EAAenuC,GAAe,IAEhCyjG,EAAaz1G,IAAI1sB,UAAW,kBAAiB6sE,UAC/C,CACA,SAASrpC,IACP,IAAKjF,IAAc1J,EAGjB,OAFA0J,GAAY,OACZ1J,GAAU,GAKZ,GAFA0J,GAAY,EACZ1J,GAAU,EACU,IAAhB6J,EACF,OAGF,MAAMgF,EAAWziB,KAAQ0d,EACzBwjG,EAAaz1G,IAAIkT,WAAW,IAC5BuiG,EAAaz1G,IAAIwE,SAAS,8BAC1BixG,EAAaz1G,IAAI1sB,UAAU,KAEtB0+B,GAAe,IAAMgF,EAAW,MAAShF,GAAes2G,EAAqB,IAChF7S,EAAah1G,OAEjB,CAaA,IAAIk6C,EACJ,SAAS6tE,IACP7tE,EAAYvmD,IAAS,KACfyd,GAAa1J,EACfqgH,IAGF/S,EAAah1G,OAAO,GACnBi6C,EACL,CAsBA,OArBA+6D,EAAazvI,GAAG,QAAQ,KAClByvI,EAAajtI,OAAOsqE,eArBxB2iE,EAAaz1G,IAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB,CAAE7I,SAAS,IACxE5K,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,IAsB3BvyC,EAAE,0BAA0B8E,MAAMwxE,IAChC,MAAM4tE,EAAuB3oH,EAAI21G,aAAahyI,IAAIo3E,GAC9CA,IAAa46D,EAAazxI,IAAMykJ,GAClCA,EAAqBhoH,OACvB,IAEEi6C,GACF8tE,GACF,IAEF/S,EAAazvI,GAAG,uBAAuB,KACjCyvI,EAAajtI,OAAOsqE,eA9BxB2iE,EAAaz1G,IAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB,CAAE7I,SAAS,IACzE5K,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,IA+B5Br0C,aAAak4E,EAAU,IAGlB86D,CACT,CAEA9qI,SACE,MAAM8qI,EAAevzI,KACrB,GAAIuzI,EAAajtI,OAAOmC,OACtB,OAAO8qI,EAAajtI,OAAOmC,OAAOrG,KAAKmxI,EAAcA,GACvD,MAAMh/D,KAAEA,EAAI/Q,MAAEA,EAAKyiF,eAAEA,EAAcC,SAAEA,EAAQl1I,KAAEA,EAAIunE,YAAEA,EAAW1L,SAAEA,GAChE0mE,EAAajtI,OACf,OACEq4B,GAAA,OAAK0zB,MAAQ,gBAAekiB,EAAO,yBAA2B,MAAM1H,GAAY,MAC9EluC,GAAA,OAAK0zB,MAAM,uBACRkiB,GAAQ51C,GAAA,OAAK0zB,MAAM,qBAAqBkiB,GACxC/Q,GAAS7kC,GAAA,OAAK0zB,MAAM,sBAAsBmR,GAC1CyiF,GAAkBtnH,GAAA,OAAK0zB,MAAM,iCAAiC4zF,GAC9D1tE,GAAe55C,GAAA,QAAM0zB,MAAM,+BAE9B1zB,GAAA,OAAK0zB,MAAM,wBACR6zF,GAAYvnH,GAAA,OAAK0zB,MAAM,yBAAyB6zF,GAChDl1I,GAAQ2tB,GAAA,OAAK0zB,MAAM,qBAAqBrhD,IAIjD,GCvNF,IAAAw1I,GAAe,CACbhjJ,KAAM,eACN65B,OAAQ,CACNmpH,iBAEF1pH,SACc98B,KACRuzI,aAAev2I,GACjB,GACAghC,GAAa,CACXJ,IAJQ59B,KAKRlD,YAAa0pJ,GACb/oH,gBAAiB,2B,EAIvBn3B,OAAQ,CACNitI,aAAc,CACZh/D,KAAM,KACN/Q,MAAO,KACPyiF,eAAgB,KAChBC,SAAU,KACVl1I,KAAM,KACNunE,aAAa,EACbC,aAAc,KACd2tE,cAAc,EACdv1E,cAAc,EACd/D,SAAU,KACVpkE,OAAQ,KACRsiE,YAAa,Q,OClBnB,cAA2BnvC,GACzB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAMnkB,EAAKzZ,KACXyZ,EAAGmkB,IAAMA,EAET,MAAM/E,EAASN,KAET0G,EAAWjiC,GACf,CACE8G,GAAI,IAEN85B,EAAIt3B,OAAOmgJ,cAQb,IAAIC,EAMAj3D,EAVJh2E,EAAGyiB,iBAAiB+C,GAEpBxlB,EAAGnT,OAAStJ,GAAOiiC,EAAU34B,GAGzBmT,EAAGnT,OAAOqgJ,WACZD,EAAYrkJ,EAAEoX,EAAGnT,OAAOqgJ,UACpBD,EAAUppJ,SAAQopJ,EAAU,GAAGE,eAAiBntI,IAIlDA,EAAGnT,OAAOkpF,UACZC,EAAWptF,EAAEoX,EAAGnT,OAAOkpF,SACnBC,EAASnyF,SAAQmyF,EAAS,GAAGm3D,eAAiBntI,IAGpD,MAAMotI,EAAWjmJ,KAEjB,IAAI2xB,EAAMjsB,EAAOisB,KACZA,GAAOm0H,GAAaA,EAAUppJ,SAC7BopJ,EAAUn8I,KAAK,QAASgoB,EAAMm0H,EAAUn8I,KAAK,QACxCm8I,EAAU70G,KAAK,KAAKv0C,OAAS,IACpCi1B,EAAMm0H,EAAU70G,KAAK,KAAKtnC,KAAK,UAG9BgoB,GAAe,MAARA,GAAuB,KAARA,IAAYA,EAAM9Y,EAAGnT,OAAOisB,KAEvD,MAAMupE,EAAYriF,EAAGnT,OAAOyL,SAAW,WAAa,QAEpD/U,GAAOyc,EAAI,CACTitI,YACAC,SAAUD,GAAaA,EAAU,GACjCj3D,WACAD,QAASC,GAAYA,EAAS,GAC9B7uF,GAAIimJ,EACJt0H,MACA9wB,MAAOgY,EAAGnT,OAAO7E,OAAS,GAC1Bq6F,YACAW,UAAY,GAAEX,KAAa+qD,IAC3BxoH,cAAU/0B,EACVw9I,iBAAax9I,IAGf,IAAI2yG,EAAgB,GACpB,SAASN,IACP,IAAInpF,EAAQ/Y,EAAGg2E,SAASr9E,MAAM3P,OAEzBgX,EAAGnT,OAAOkW,QACf/C,EAAGnT,OAAOkW,OAAOpa,KAAKqX,EAAI+Y,GAAQtxB,IAChC,IAAI6lJ,EAAY,GAChB,MAAMC,EAAQvtI,EAAGnT,OAAO0gJ,MAAQlgJ,KAAKgC,IAAI2Q,EAAGnT,OAAO0gJ,MAAO9lJ,EAAM5D,QAAU4D,EAAM5D,OAEhF,IAAImlD,EAMAwkG,EACAC,EARJztI,EAAGvY,MAAQA,EAEPuY,EAAGnT,OAAO6gJ,mBACZ30H,EAAQA,EAAMvqB,QAAQ,sCAAuC,QAC7Dw6C,EAAS,IAAIvW,OAAQ,IAAG1Z,KAAU,MAKpC,IAAK,IAAI1vB,EAAI,EAAGA,EAAIkkJ,EAAOlkJ,GAAK,EAAG,CACjC,MAAMskJ,EACgB,iBAAblmJ,EAAM4B,GAAkB5B,EAAM4B,GAAG2W,EAAGnT,OAAO+gJ,eAAiBnmJ,EAAM4B,GACrEg6G,EACgB,iBAAb57G,EAAM4B,GAAkB5B,EAAM4B,GAAG2W,EAAGnT,OAAOghJ,cAAgBpmJ,EAAM4B,GAChE,IAANA,IACFmkJ,EAAaG,EACbF,EAAYztI,EAAGvY,MAAM4B,IAEvBikJ,GAAattI,EAAGwmE,WACd,CACEx+E,MAAO2lJ,EACPp2I,KAAMyI,EAAGnT,OAAO6gJ,iBAAmBrqC,EAAS70G,QAAQw6C,EAAQ,aAAeq6D,GAE7Eh6G,EAEJ,CAQA,GAPkB,KAAdikJ,GAA8B,KAAVv0H,GAAgB/Y,EAAGnT,OAAOihJ,0BAChDR,GAAattI,EAAGwmE,WAAW,CACzB8e,aAAa,EACb/tF,KAAMyI,EAAGnT,OAAOihJ,2BAGpB9tI,EAAGqtI,YAAYj1G,KAAK,MAAMrvC,KAAKukJ,GAC3BttI,EAAGnT,OAAOkhJ,UAAW,CACvB,IAAKP,IAAeC,EAClB,OAEF,GAA8D,IAA1DD,EAAWx8I,cAAc/H,QAAQ8vB,EAAM/nB,eACzC,OAEF,GAAIwxG,EAAcxxG,gBAAkB+nB,EAAM/nB,cAExC,YADAgP,EAAGhY,MAAQ,IAIb,GAAiE,IAA7Dw6G,EAAcxxG,cAAc/H,QAAQ8vB,EAAM/nB,eAG5C,OAFAwxG,EAAgBzpF,OAChB/Y,EAAGhY,MAAQ,IAGbguF,EAASr9E,IAAI60I,GACbx3D,EAAS,GAAGg4D,kBAAkBj1H,EAAMl1B,OAAQ2pJ,EAAW3pJ,QAEvD,MAAMs1F,EACmB,iBAAhBn5E,EAAGhY,MAAM,GAAkBgY,EAAGhY,MAAM,GAAGgY,EAAGnT,OAAO+gJ,eAAiB5tI,EAAGhY,MAAM,GAC/EmxF,GAAiBq0D,EAAWx8I,gBAAkBmoF,EAAcnoF,gBAC/DgP,EAAGhY,MAAQ,CAACylJ,GACZztI,EAAG6hB,KAAK,mCAAoC,CAAC4rH,IAEjD,CAEAjrC,EAAgBzpF,CAAK,GAEzB,CACA,SAASk1H,IACP,MAAMl4D,EAAUxvF,KACVyB,EAAQ+tF,EAAQ/tF,MAEtB,IAAIu8D,EACAopF,EACAO,EACJ,GAJiBtlJ,EAAEmtF,GAASvlF,QAAQ,wBAAwB3M,OAAS,GAKnE,GAAqB,aAAjBmc,EAAGqiF,YAA6BtM,EAAQE,QAAS,CACnD,IAAK,IAAI5sF,EAAI,EAAGA,EAAI2W,EAAGhY,MAAMnE,OAAQwF,GAAK,EACxC6kJ,EACyB,iBAAhBluI,EAAGhY,MAAMqB,GAAkB2W,EAAGhY,MAAMqB,GAAK2W,EAAGhY,MAAMqB,GAAG2W,EAAGnT,OAAO+gJ,eACpEM,IAAWlmJ,GAAkB,EAATkmJ,GAAuB,EAARlmJ,GACrCgY,EAAGhY,MAAM+L,OAAO1K,EAAG,GAGvB2W,EAAGmuI,eACHnuI,EAAG6hB,KAAK,mCAAoC7hB,EAAGhY,MACjD,MAXF,CAgBA,IAAK,IAAIqB,EAAI,EAAGA,EAAI2W,EAAGvY,MAAM5D,OAAQwF,GAAK,EACxCskJ,EACyB,iBAAhB3tI,EAAGvY,MAAM4B,GAAkB2W,EAAGvY,MAAM4B,GAAG2W,EAAGnT,OAAO+gJ,eAAiB5tI,EAAGvY,MAAM4B,GAChFskJ,IAAc3lJ,GAAqB,EAAZ2lJ,GAA0B,EAAR3lJ,IAAWu8D,EAAOvkD,EAAGvY,MAAM4B,IAE1E,GAAqB,UAAjB2W,EAAGqiF,UACLriF,EAAGhY,MAAQ,CAACu8D,QACP,GAAIwxB,EAAQE,QACjBj2E,EAAGhY,MAAMO,KAAKg8D,QAEd,IAAK,IAAIl7D,EAAI,EAAGA,EAAI2W,EAAGhY,MAAMnE,OAAQwF,GAAK,EACxC6kJ,EACyB,iBAAhBluI,EAAGhY,MAAMqB,GAAkB2W,EAAGhY,MAAMqB,GAAG2W,EAAGnT,OAAO+gJ,eAAiB5tI,EAAGhY,MAAMqB,GAChF6kJ,IAAWlmJ,GAAkB,EAATkmJ,GAAuB,EAARlmJ,GACrCgY,EAAGhY,MAAM+L,OAAO1K,EAAG,GAMzB2W,EAAGmuI,gBAGmB,UAAjBnuI,EAAGqiF,WAAyBtM,EAAQE,SAA6B,aAAjBj2E,EAAGqiF,YACtDriF,EAAG6hB,KAAK,mCAAoC7hB,EAAGhY,MA3BjD,CA6BF,CACA,SAAS0jG,EAAYj8F,GACnB,MAAMu1B,EAAYp8B,EAAE6G,EAAEjM,QAEpBwhC,EAAU10B,GAAG0P,EAAGg2E,SAAS,KACxBh2E,EAAGqtI,aAAeroH,EAAUz0B,QAAQyP,EAAGqtI,YAAY,IAAIxpJ,QAG1Dmc,EAAG8kB,OACL,CACA,SAASspH,IACPpuI,EAAGwkB,MACL,CACA,SAASgnE,IACPxrF,EAAGwkB,MACL,CACA,SAASo8D,IACH5gF,EAAGqtI,YAAYj1G,KAAK,sBAAsBv0C,OAAS,GACvDgD,YAAW,KACTmZ,EAAG8kB,OAAO,GACT,EACL,CACA,SAAS24C,IACPz9D,EAAGquI,kBACL,CAEA,SAASx6E,EAAUpkE,GACjB,IAAKuQ,EAAGoxD,OAAQ,OAChB,GAAkB,KAAd3hE,EAAEqkE,QAIJ,OAFArkE,EAAE+/B,sBACFxvB,EAAGg2E,SAAS7xF,OAGd,GAAkB,KAAdsL,EAAEqkE,QAAgB,CAEpB,MAAMw6E,EAAqBtuI,EAAGqtI,YAAYj1G,KAAK,yCAC/C,OAAIk2G,EAAmBzqJ,QACrB4L,EAAE+/B,iBACF8+G,EAAmBlkJ,QAAQ,cAC3B4V,EAAGg2E,SAAS7xF,aAGV6b,EAAGnT,OAAOkhJ,YACZt+I,EAAE+/B,iBACFxvB,EAAGg2E,SAAS7xF,QAGhB,CACA,GAAkB,KAAdsL,EAAEqkE,SAAgC,KAAdrkE,EAAEqkE,QAAgB,OAC1CrkE,EAAE+/B,iBACF,MAAM++G,EAAgBvuI,EAAGqtI,YAAYj1G,KAAK,mCAC1C,IAAIo2G,EACAD,EAAc1qJ,QAChB2qJ,EAAWD,EAA4B,KAAd9+I,EAAEqkE,QAAiB,OAAS,QAAQ,MACxD06E,EAAS3qJ,SACZ2qJ,EAAWxuI,EAAGqtI,YACXj1G,KAAK,MACL3nC,GAAiB,KAAdhB,EAAEqkE,QAAiB,EAAI9zD,EAAGqtI,YAAYj1G,KAAK,MAAMv0C,OAAS,KAGlE2qJ,EAAWxuI,EAAGqtI,YACXj1G,KAAK,MACL3nC,GAAiB,KAAdhB,EAAEqkE,QAAiB,EAAI9zD,EAAGqtI,YAAYj1G,KAAK,MAAMv0C,OAAS,GAE9D2qJ,EAAS1lH,SAAS,uCACtBylH,EAAcxlH,YAAY,kCAC1BylH,EAAS3lH,SAAS,kCACpB,CACA,SAAS4lH,IACP,MAAMx6F,EAAarrD,EAAErC,MACrB,IAAImoJ,EACJ,IAAK,IAAIrlJ,EAAI,EAAGA,EAAI2W,EAAGvY,MAAM5D,OAAQwF,GAAK,EAAG,CAC3C,MAAMskJ,EACmB,iBAAhB3tI,EAAGvY,MAAM4B,GAAkB2W,EAAGvY,MAAM4B,GAAG2W,EAAGnT,OAAO+gJ,eAAiB5tI,EAAGvY,MAAM4B,GAC9ErB,EAAQisD,EAAWnjD,KAAK,cAC1B68I,IAAc3lJ,GAAqB,EAAZ2lJ,GAA0B,EAAR3lJ,IAC3C0mJ,EAAc1uI,EAAGvY,MAAM4B,GAE3B,CACI2W,EAAGnT,OAAO8hJ,2BACZ3uI,EAAGg2E,SAASr9E,IACa,iBAAhB+1I,EAA2BA,EAAY1uI,EAAGnT,OAAO+gJ,eAAiBc,GAE3E1uI,EAAGg2E,SAAS5rF,QAAQ,iBAEtB4V,EAAGhY,MAAQ,CAAC0mJ,GACZ1uI,EAAG6hB,KAAK,mCAAoC,CAAC6sH,IAC7C1uI,EAAG8kB,OACL,CA6DA,OA3DA9kB,EAAGq8B,aAAe,WACS,aAArBr8B,EAAGnT,OAAO2gD,QAAyBxtC,EAAGitI,WACxCjtI,EAAGitI,UAAU5iJ,GAAG,QAAS+jJ,GAEF,aAArBpuI,EAAGnT,OAAO2gD,QAAyBxtC,EAAGg2E,WACxCh2E,EAAGg2E,SAAS3rF,GAAG,QAASmhG,GACxBxrF,EAAGg2E,SAAS3rF,GAAG2V,EAAGnT,OAAO8zG,YAAauB,GAClC9iF,EAAOC,QACTz2B,EAAE,QAAQyB,GAAG,QAASqhG,GAEtB1rF,EAAGg2E,SAAS3rF,GAAG,OAAQu2F,GAEzB5gF,EAAGg2E,SAAS3rF,GAAG,UAAWwpE,G,EAG9B7zD,EAAGsjD,aAAe,WACS,aAArBtjD,EAAGnT,OAAO2gD,QAAyBxtC,EAAGitI,WACxCjtI,EAAGitI,UAAUv9I,IAAI,QAAS0+I,GAEH,aAArBpuI,EAAGnT,OAAO2gD,QAAyBxtC,EAAGg2E,WACxCh2E,EAAGg2E,SAAStmF,IAAI,QAAS87F,GACzBxrF,EAAGg2E,SAAStmF,IAAIsQ,EAAGnT,OAAO8zG,YAAauB,GACnC9iF,EAAOC,QACTz2B,EAAE,QAAQ8G,IAAI,QAASg8F,GAEvB1rF,EAAGg2E,SAAStmF,IAAI,OAAQkxF,GAE1B5gF,EAAGg2E,SAAStmF,IAAI,UAAWmkE,G,EAG/B7zD,EAAG4uI,qBAAuB,WACxB5uI,EAAGqtI,YAAYhjJ,GAAG,QAAS,QAASokJ,GACpCtqH,EAAI95B,GAAG,SAAUozE,E,EAEnBz9D,EAAG6uI,qBAAuB,WACxB7uI,EAAGqtI,YAAY39I,IAAI,QAAS,QAAS++I,GACrCtqH,EAAIz0B,IAAI,SAAU+tE,E,EAGpBz9D,EAAG8uI,iBAAmB,WACpB9uI,EAAGqkB,IAAIh6B,GAAG,SAAU,8CAA+C4jJ,GAC/DjuI,EAAGnT,OAAOk2F,gBAAkB/iF,EAAGnT,OAAOyL,UACxC0H,EAAGqkB,IAAI3C,KAAK,QAAS,eAAe,KAClCjJ,IAAS,KACPzY,EAAG8kB,OAAO,GACV,G,EAIR9kB,EAAG+uI,iBAAmB,WACpB/uI,EAAGqkB,IAAI30B,IAAI,SAAU,8CAA+Cu+I,E,EAItEjuI,EAAGsjB,aAGHtjB,EAAG4lB,OAEI5lB,CACT,CAEA,QAAIw1B,GACF,MAAMx1B,EAAKzZ,MACL0mJ,UAAEA,EAASj3D,SAAEA,EAAQ7xD,IAAEA,GAAQnkB,EACrC,IAAIw1B,EACJ,GAAIx1B,EAAGnT,OAAO2oC,KACZA,EAAOx1B,EAAGnT,OAAO2oC,UACZ,GAAIy3G,GAAaj3D,EAAU,CAChC,MAAM3xD,EAAM4oH,GAAaj3D,EACzBxgD,EAAOnR,EAAI9zB,QAAQ,SAAS1M,QAAUwgC,EAAI9zB,QAAQ,SAAS,GAAG8iD,MAChE,CAEA,OADK7d,IAAMA,EAAOrR,EAAIoR,MAAM6d,MACrB5d,CACT,CAEA64G,mBACE,MACMr4D,SAAEA,EAAQ7xD,IAAEA,EAAGkpH,YAAEA,GADZ9mJ,KAGL2oE,EAAiB8mB,EAASxlF,QAAQ,iBACxC,GAA8B,IAA1B0+D,EAAerrE,OAAc,OACjC,MAAMmrJ,EAAch5D,EAAS9qD,SACvB+jH,EAAmBj5D,EAAS,GAAGrgF,YAC/Bu5I,EAAoBl5D,EAAS,GAAGtgF,aAChC01E,EAAU4K,EAASxlF,QAAQ,SAEjC,IAAI2+I,EACJ/jE,EAAQ56E,UAAU9C,MAAM0hJ,IACtB,GAAID,EAAa,OACjB,MAAMpqH,EAAYn8B,EAAEwmJ,GAChBrqH,EAAU90B,OAAOi/D,GAAgBrrE,SAAQsrJ,EAAcpqH,EAAS,IAGtE,MAAMsqH,EAAajkE,EAAQlgD,SACrB8yC,EAAgBvnD,SAASy4C,EAAej9D,IAAI,kBAAmB,IAC/Dq9I,EAAiBlkE,EAAQvnF,OAAS,EAAIwrJ,EAAW56I,KAAOy6D,EAAehkC,SAASz2B,KAAO,EACvF86I,EACJP,EAAYv6I,MAAQ22E,EAAQvnF,OAAS,EAAIwrJ,EAAW56I,KAAO,IAAM0vB,EAAIuD,IAAM,GACvEuxD,EACJ+1D,EAAYx6I,KAAO06D,EAAehkC,SAAS12B,IAAM06D,EAAe,GAAG96D,WAE/Di/E,EACJnkB,EAAe,GAAGj4D,aAClB+mE,GACCib,EAAiB/pB,EAAe,GAAG96D,WACpC4hF,EAAS,GAAGtgF,aAER85I,EAAcrrH,EAAIuD,IAAM,gBAAkB,eAChD,IAAI+nH,EACArkE,EAAQvnF,SACV4rJ,GACGtrH,EAAIuD,IAAM0jD,EAAQ,GAAGz1E,YAAc45I,EAAkBN,EAAmBM,IAC1D,OAAdprH,EAAIxM,MAAiB,GAAK,KAG/B01H,EAAYp7I,IAAI,CACdwC,KAAO,GAAE22E,EAAQvnF,OAAS,EAAIyrJ,EAAiBC,MAC/C/6I,IAAM,GAAEykF,EAAiB/pB,EAAe,GAAG96D,UAAY86I,MACvDrwH,MAAQ,GAAEusD,EAAQvnF,OAAS,EAAIunF,EAAQ,GAAGz1E,YAAcs5I,QAE1D5B,EAAY1oJ,SAAS,gCAAgCsN,IAAI,CACvDohF,UAAY,GAAEA,MACdm8D,CAACA,GAAcpkE,EAAQvnF,OAAS,EAAK,GAAE4rJ,MAAmB,IAE9D,CAEAllJ,QACahE,KACR89B,IAAI+T,KAAK,sBAAsB7tC,OACpC,CAEAwY,OAAOgW,GACL,MAAM/Y,EAAKzZ,KACX,IAAKyZ,EAAGnT,OAAOkW,OAAQ,OAEvB,MAAMshB,IAAEA,GAAQrkB,EAEhBA,EAAGnT,OAAOkW,OAAOpa,KAAKqX,EAAI+Y,GAAQtxB,IAChC,IAAI6lJ,EAAY,GAChB,MAAMC,EAAQvtI,EAAGnT,OAAO0gJ,MAAQlgJ,KAAKgC,IAAI2Q,EAAGnT,OAAO0gJ,MAAO9lJ,EAAM5D,QAAU4D,EAAM5D,OAChFmc,EAAGvY,MAAQA,EACX,IAAK,IAAI4B,EAAI,EAAGA,EAAIkkJ,EAAOlkJ,GAAK,EAAG,CACjC,IAAIqP,GAAW,EACf,MAAMi1I,EACgB,iBAAblmJ,EAAM4B,GAAkB5B,EAAM4B,GAAG2W,EAAGnT,OAAO+gJ,eAAiBnmJ,EAAM4B,GAC3E,IAAK,IAAIuC,EAAI,EAAGA,EAAIoU,EAAGhY,MAAMnE,OAAQ+H,GAAK,EAAG,CAC3C,MAAMsiJ,EACmB,iBAAhBluI,EAAGhY,MAAM4D,GAAkBoU,EAAGhY,MAAM4D,GAAGoU,EAAGnT,OAAO+gJ,eAAiB5tI,EAAGhY,MAAM4D,GAChFsiJ,IAAWP,GAAsB,EAATO,GAA2B,EAAZP,IAAej1I,GAAW,EACvE,CACA40I,GAAattI,EAAGwmE,WACd,CACEx+E,MAAO2lJ,EACPp2I,KAA0B,iBAAb9P,EAAM4B,GAAkB5B,EAAM4B,GAAG2W,EAAGnT,OAAOghJ,cAAgBpmJ,EAAM4B,GAC9Eg5F,UAAWriF,EAAGqiF,UACdl7F,GAAI6Y,EAAG7Y,GACP67F,UAAWhjF,EAAGgjF,UACdtqF,YAEFrP,EAEJ,CACAg7B,EAAI+T,KAAK,0BAA0BrvC,KAAKukJ,GACnB,IAAjB7lJ,EAAM5D,OACa,IAAjBk1B,EAAMl1B,QACRwgC,EAAI+T,KAAK,2BAA2BuW,OACpCtqB,EAAI+T,KAAK,6CAA6C2uB,SAEtD1iC,EAAI+T,KAAK,wBAAwBuW,OACjCtqB,EAAI+T,KAAK,gDAAgD2uB,SAG3D1iC,EAAI+T,KAAK,uBAAuBuW,OAChCtqB,EAAI+T,KAAK,iDAAiD2uB,OAC5D,GAEJ,CAEAonF,eACE,MAAMnuI,EAAKzZ,KACX,IAAImpJ,EAAa,GACjB,IAAK,IAAIrmJ,EAAI,EAAGA,EAAI2W,EAAGhY,MAAMnE,OAAQwF,GAAK,EACxCqmJ,GAAc1vI,EAAGwmE,WACf,CACEx+E,MACyB,iBAAhBgY,EAAGhY,MAAMqB,GAAkB2W,EAAGhY,MAAMqB,GAAG2W,EAAGnT,OAAO+gJ,eAAiB5tI,EAAGhY,MAAMqB,GACpFkO,KAA6B,iBAAhByI,EAAGhY,MAAMqB,GAAkB2W,EAAGhY,MAAMqB,GAAG2W,EAAGnT,OAAOghJ,cAAgB7tI,EAAGhY,MAAMqB,GACvFg5F,UAAWriF,EAAGqiF,UACdl7F,GAAI6Y,EAAG7Y,GACP67F,UAAY,GAAEhjF,EAAGgjF,qBACjBtqF,UAAU,GAEZrP,GAGJ2W,EAAGqkB,IAAI+T,KAAK,2BAA2BrvC,KAAK2mJ,EAC9C,CAEAC,gBACE,MAAM3vI,EAAKzZ,KACc,aAArByZ,EAAGnT,OAAO2gD,QAAyBxtC,EAAGqtI,YACxCrtI,EAAGqtI,YAAYj1G,KAAK,2BAA2BrP,YAAY,kCAE3DngC,EAAE,2BAA2BmgC,YAAY,iCAE7C,CAEA6mH,gBACE,MAAM5vI,EAAKzZ,KACc,aAArByZ,EAAGnT,OAAO2gD,QAAyBxtC,EAAGqtI,YACxCrtI,EAAGqtI,YAAYj1G,KAAK,2BAA2BvP,SAAS,kCAExDjgC,EAAE,2BAA2BigC,SAAS,iCAE1C,CAEAgnH,kBACE,MAAM7vI,EAAKzZ,KACLk5E,EAAa,CACjBrnD,uBACAD,uBAGF,OACE+M,GAAA,OACE0zB,MAAQ,qCACN54C,EAAGnT,OAAOijJ,eAAkB,SAAQ9vI,EAAGnT,OAAOijJ,iBAAmB,KAGlErwE,EAAY,GAAEz/D,EAAGmkB,IAAIxM,0BAA4B,GAGxD,CAEAwtE,kBACE,MAAMnlF,EAAKzZ,KACX,OAAIyZ,EAAGnT,OAAOs4F,gBAAwBnlF,EAAGnT,OAAOs4F,gBAAgBx8F,KAAKqX,GAGnEklB,GAAA,QAAM0zB,MAAM,aACV1zB,GAAA,OAAK0zB,MAAM,mBACT1zB,GAAA,OAAK0zB,MAAM,wBACT1zB,GAAA,SACE6K,KAAK,SACLq1D,WAAYplF,EAAGnT,OAAOw4F,qBAAuB,QAC7CC,YAAatlF,EAAGnT,OAAO04F,uBAEzBrgE,GAAA,KAAG0zB,MAAM,mBACT1zB,GAAA,QAAM0zB,MAAM,wBAEb54C,EAAGnT,OAAO24F,wBACTtgE,GAAA,QAAM0zB,MAAM,4BAA4B54C,EAAGnT,OAAO44F,uBAK5D,CAEAjf,WAAWjiB,EAAMv2D,GACf,MAAMgS,EAAKzZ,KACX,GAAIyZ,EAAGnT,OAAO25E,WAAY,OAAOxmE,EAAGnT,OAAO25E,WAAW79E,KAAKqX,EAAIukD,EAAMv2D,GAErE,MAAM2/I,EACJppF,EAAKv8D,OAA+B,iBAAfu8D,EAAKv8D,MACtBu8D,EAAKv8D,MAAMwG,QAAQ,KAAM,UACzB+1D,EAAKv8D,MACX,MAAyB,aAArBgY,EAAGnT,OAAO2gD,OAEVtoB,GAAA,UACEA,GAAA,SAAO0zB,MAAQ,QAAO2L,EAAK89B,0BACzBn9D,GAAA,SACE6K,KAAMw0B,EAAK89B,UACXt4F,KAAMw6D,EAAKy+B,UACXh7F,MAAO2lJ,EACP3nD,SAAUzhC,EAAK7rD,WAEjBwsB,GAAA,KAAG0zB,MAAQ,aAAY2L,EAAK89B,cAC5Bn9D,GAAA,OAAK0zB,MAAM,cACT1zB,GAAA,OAAK0zB,MAAM,cAAc2L,EAAKhtD,SAOnCgtD,EAAK+gC,YAcRpgE,GAAA,MAAI0zB,MAAM,qCACR1zB,GAAA,SAAO0zB,MAAM,gBACX1zB,GAAA,OAAK0zB,MAAM,cACT1zB,GAAA,OAAK0zB,MAAM,cAAc2L,EAAKhtD,SAflC2tB,GAAA,UACEA,GAAA,SAAO0zB,MAAM,0BAA0B,aAAY+0F,GACjDzoH,GAAA,OAAK0zB,MAAM,cACT1zB,GAAA,OAAK0zB,MAAM,cAAc2L,EAAKhtD,QAiB1C,CAEAwyI,eACE,MAAM/pI,EAAKzZ,KACX,GAAIyZ,EAAGnT,OAAOk9I,aAAc,OAAO/pI,EAAGnT,OAAOk9I,aAAaphJ,KAAKqX,GAC/D,IAAIomF,EAAYpmF,EAAGnT,OAAOu5F,eACD,IAAdA,GAA6BpmF,EAAGitI,WAAajtI,EAAGitI,UAAUppJ,SACnEuiG,EAAYpmF,EAAGitI,UAAU70G,KAAK,eAAe7gC,OAAOvO,QAEtD,MAAM+mJ,EAA+B,UAArB/vI,EAAGnT,OAAO2gD,OAGpBwiG,EAAaD,EACjB/vI,EAAGnT,OAAOmpE,WAAa9wC,GAAA,OAAK0zB,MAAM,QAAQ54C,EAAG6vI,mBAE7C3qH,GAAA,OAAK0zB,MAAM,gBACT1zB,GAAA,KAAG0zB,MAAM,aACP1zB,GAAA,KAAG0zB,MAAM,mBACT1zB,GAAA,QAAM0zB,MAAM,aAAa54C,EAAGnT,OAAO05F,oBAInC0pD,EAAcF,EAClB7qH,GAAA,OAAK0zB,MAAM,SACT1zB,GAAA,KAAG0zB,MAAM,mBAAmB,aAAW,uBACpC54C,EAAGnT,OAAO+5F,qBAIf5mF,EAAGnT,OAAOmpE,WAAa9wC,GAAA,OAAK0zB,MAAM,SAAS54C,EAAG6vI,mBAEhD,OACE3qH,GAAA,OACE0zB,MAAQ,WAAS54C,EAAGnT,OAAOy5F,iBAAoB,SAAQtmF,EAAGnT,OAAOy5F,mBAAqB,KAEtFphE,GAAA,OAAK0zB,MAAM,cACX1zB,GAAA,OACE0zB,MAAQ,iBACN54C,EAAGnT,OAAOy5F,iBAAoB,SAAQtmF,EAAGnT,OAAOy5F,mBAAqB,KAGtE0pD,EACA5pD,GAAalhE,GAAA,OAAK0zB,MAAM,iBAAiBwtC,GACzC6pD,EACD/qH,GAAA,OAAK0zB,MAAM,qBAAqB54C,EAAGmlF,oBAI3C,CAEA+qD,iBACE,MAAMlwI,EAAKzZ,KACX,OAAIyZ,EAAGnT,OAAOqjJ,eAAuBlwI,EAAGnT,OAAOqjJ,eAAevnJ,KAAKqX,EAAIA,EAAGvY,OAGxEy9B,GAAA,OAAK0zB,MAAM,yBACT1zB,GAAA,OAAK0zB,MAAM,+BACT1zB,GAAA,OAAK0zB,MAAQ,sBACX1zB,GAAQ,aAGXllB,EAAGnT,OAAOmpE,WAAah2D,EAAG6vI,kBAGjC,CAEA1pD,WAAW4pD,GACT,MAAM/vI,EAAKzZ,KACX,OAAIyZ,EAAGnT,OAAOs5F,WAAmBnmF,EAAGnT,OAAOs5F,WAAWx9F,KAAKqX,EAAIA,EAAGvY,OAGhEy9B,GAAA,OAAK0zB,MAAM,6CAA6C,YAAU,qBAC/D54C,EAAG+pI,aAAagG,GACjB7qH,GAAA,OAAK0zB,MAAM,uBACX1zB,GAAA,OAAK0zB,MAAM,gBACT1zB,GAAA,OACE0zB,MAAQ,+DAA8D54C,EAAG7Y,MACvE6Y,EAAGnT,OAAO45F,eAAkB,SAAQzmF,EAAGnT,OAAO45F,iBAAmB,MAGnEvhE,GAAA,YAEFA,GAAA,OAAK0zB,MAAM,+BACT1zB,GAAA,UACEA,GAAA,MAAI0zB,MAAM,gBACR1zB,GAAA,OAAK0zB,MAAM,cACT1zB,GAAA,OAAK0zB,MAAM,cAAc54C,EAAGnT,OAAOsjJ,kBAK3CjrH,GAAA,OAAK0zB,MAAM,4BACT1zB,GAAA,aAKV,CAEAwhE,cACE,MAAM1mF,EAAKzZ,KACX,OAAIyZ,EAAGnT,OAAO65F,YAAoB1mF,EAAGnT,OAAO65F,YAAY/9F,KAAKqX,EAAIA,EAAGvY,OAElEy9B,GAAA,OAAK0zB,MAAM,4BACT1zB,GAAA,OAAK0zB,MAAM,QAAQ54C,EAAGmmF,YAAW,GAAM,KAG7C,CAEA50B,OAAOxhC,EAAM1nC,GACX,MAAM2X,EAAKzZ,KACL49B,EAAMnkB,EAAGmkB,IACTE,EAAMz7B,EAAEP,GAMd,GALA2X,EAAGqkB,IAAMA,EACTrkB,EAAG3X,GAAKg8B,EAAI,GACZrkB,EAAGmnF,SAAWp3D,EACd/vB,EAAGoxD,QAAS,EAEa,aAArBpxD,EAAGnT,OAAO2gD,OACZxtC,EAAG4uI,uBAEH5uI,EAAGqtI,YAAYxkH,SAAS,4BACxB7oB,EAAGg2E,SAAS5rF,QAAQ,aACf,CAEL,IAAIi9F,EAAehjE,EAAI+T,KAAK,cACH,SAArBp4B,EAAGnT,OAAO2gD,QAAmC,QAAdrpB,EAAIxM,OAA2C,IAAxB0vE,EAAaxjG,SACrEwjG,EAAez+F,EAAEu7B,EAAIqc,OAAOC,YAAYpc,IAAM+T,KAAK,eAErDp4B,EAAGwmF,UAAYriE,EAAIqiE,UAAUnjE,OAAO,CAClCh7B,GAAIg/F,EACJ50B,WAAYpuC,EAAI+T,KAAK,uBACrBkpE,cAAc,EACdj3G,GAAI,CACF3E,OAAOg7G,EAAI3nF,GACY,IAAjBA,EAAMl1B,QAAgBmc,EAAGwmF,UAAUx+B,QACrChoD,EAAGwmF,UAAUmc,eAEb3iG,EAAGwmF,UAAUsc,eAEf9iG,EAAG+C,OAAOgW,EACZ,KAKJ/Y,EAAG8uI,mBAGH9uI,EAAGmuI,eAGCnuI,EAAGnT,OAAOujJ,qBAAqBpwI,EAAG+C,OAAO,GAC/C,CAEA/C,EAAG6hB,KAAK,+BAAgC7hB,EAC1C,CAEAk1D,YACE,MAAMl1D,EAAKzZ,KAIX,OAHIyZ,EAAGwmF,WAAaxmF,EAAGwmF,UAAUxQ,UAC/Bh2E,EAAGwmF,UAAUxQ,SAASzrF,QAEjByV,CACT,CAEAwxD,WACE,MAAMxxD,EAAKzZ,KACc,aAArByZ,EAAGnT,OAAO2gD,QAAyBxtC,EAAGnT,OAAOqoE,WAC/Cl1D,EAAGk1D,YAELl1D,EAAG6hB,KAAK,mCAAoC7hB,EAC9C,CAEAyxD,UACE,MAAMzxD,EAAKzZ,KACPyZ,EAAG2yD,YAGH3yD,EAAGwmF,WAAaxmF,EAAGwmF,UAAUliE,UAC/BtkB,EAAGwmF,UAAUliE,UACbtkB,EAAGwmF,UAAY,YACRxmF,EAAGwmF,WAGa,aAArBxmF,EAAGnT,OAAO2gD,QACZxtC,EAAG6uI,uBACH7uI,EAAGqtI,YAAYtkH,YAAY,4BAA4B33B,UAEvD4O,EAAG+uI,mBAGL/uI,EAAG6hB,KAAK,iCAAkC7hB,GAC5C,CAEA0xD,WACE,MAAM1xD,EAAKzZ,KACPyZ,EAAG2yD,YACP3yD,EAAGoxD,QAAS,EACZpxD,EAAGqkB,IAAM,KACTrkB,EAAG3X,GAAK,YACD2X,EAAGqkB,WACHrkB,EAAG3X,GAEV2X,EAAG6hB,KAAK,mCAAoC7hB,GAC9C,CAEA2nF,WACE,MAAM3nF,EAAKzZ,KACX,GAAIyZ,EAAGoxD,OAAQ,OAAOpxD,EACtB,MAAM4nF,EAAW5nF,EAAGmmF,aAyBpB,OAxBAnmF,EAAGw1B,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAK9Y,EAAG8Y,IACR0a,MAAO,CACLhf,QAASozE,EACTp2D,KAAMxxB,EAAG8Y,IACTzuB,GAAI,CACFqkE,aAAaj/D,EAAGi7C,GACd1qC,EAAGuxD,OAAO,OAAQ7mB,EAAKriD,G,EAEzBukD,YAAYn9C,EAAGi7C,GACb1qC,EAAGwxD,SAAS,OAAQ9mB,EAAKriD,G,EAE3Bw/F,cAAcp4F,EAAGi7C,GACf1qC,EAAGyxD,QAAQ,OAAQ/mB,EAAKriD,G,EAE1By/F,aAAar4F,EAAGi7C,GACd1qC,EAAG0xD,SAAS,OAAQhnB,EAAKriD,GAC3B,GAEFoQ,QAAS,CACP1K,QAASiS,EAAGnT,OAAOkB,YAIlBiS,CACT,CAEA+nF,YACE,MAAM/nF,EAAKzZ,KACX,GAAIyZ,EAAGoxD,OAAQ,OAAOpxD,EACtB,MAEMgoF,EAAc,CAClBxzE,QAHgBxU,EAAG0mF,cAInB34F,QAASiS,EAAGnT,OAAOkB,QACnBxF,KAAMyX,EAAGnT,OAAOo7F,UAChB9wB,aAAcn3D,EAAGnT,OAAOq7F,kBACxB79F,GAAI,CACF89F,UAAUhzC,GACRn1C,EAAGuxD,OAAO,QAASpc,EAAM9sD,G,EAE3B+/F,YAAYjzC,GACVn1C,EAAGwxD,SAAS,QAASrc,EAAM9sD,G,EAE7BggG,WAAWlzC,GACTn1C,EAAGyxD,QAAQ,QAAStc,EAAM9sD,G,EAE5BigG,YAAYnzC,GACVn1C,EAAG0xD,SAAS,QAASvc,EAAM9sD,GAC7B,IAeJ,OAXI2X,EAAGnT,OAAO07F,gBAAkBvoF,EAAGw1B,KACjCx1B,EAAGw1B,KAAKhN,OAAOyM,SAAS,CACtBnc,IAAK9Y,EAAG8Y,IACR0a,MAAO,CACLhC,KAAMxxB,EAAG8Y,IACTq8B,MAAO6yC,KAIXhoF,EAAG2+B,MAAQ3+B,EAAGmkB,IAAIgxB,MAAM9xB,OAAO2kE,GAAaxjE,KAAKxkB,EAAGnT,OAAOkB,SAEtDiS,CACT,CAEAqwI,eACE,MAAMrwI,EAAKzZ,KAENyZ,EAAGqtI,cACNrtI,EAAGqtI,YAAczkJ,EAAEoX,EAAGkwI,mBAGxB,MAAMhhF,EAAiBlvD,EAAGg2E,SAASxlF,QAAQ,iBACvCwP,EAAGnT,OAAOyjJ,oBACZ1nJ,EAAEoX,EAAGnT,OAAOyjJ,qBAAqBpgJ,OAAO8P,EAAGqtI,aACR,IAA1Bn+E,EAAerrE,OACxBmc,EAAGqtI,YAAYh5E,YAAYr0D,EAAGg2E,WAE9Bh2E,EAAGquI,mBACHn/E,EAAeh/D,OAAO8P,EAAGqtI,cAE3BrtI,EAAGuxD,OAAO,WAAYvxD,EAAGqtI,aACzBrtI,EAAGwxD,SAAS,WAAYxxD,EAAGqtI,YAC7B,CAEA7oH,OACE,MAAMxkB,EAAKzZ,KACX,GAAIyZ,EAAGoxD,OAAQ,OAAOpxD,EAWtB,OATAA,EACG,OAFYA,EAAGnT,OAAO2gD,OAGpB3jD,MAAM,IACNwC,KAAI,CAAChE,EAAI2F,IACM,IAAVA,EAAoB3F,EAAG8I,cACpB9I,IAER2tB,KAAK,SAEHhW,CACT,CAEA8kB,QACE,MAAM9kB,EAAKzZ,KACX,OAAKyZ,EAAGoxD,QACiB,aAArBpxD,EAAGnT,OAAO2gD,QACZxtC,EAAGyxD,UACHzxD,EAAG0xD,YACO1xD,EAAGnT,OAAO07F,gBAAkBvoF,EAAGw1B,MAAyB,SAAhBx1B,EAAGmnF,SACrDnnF,EAAGw1B,KAAKhN,OAAOniC,KAAK,CAAE0H,QAASiS,EAAGnT,OAAOkB,WAEzCiS,EAAG2+B,MAAMjd,KAAK,eAAe,KAC3BjJ,IAAS,KACHzY,EAAG2yD,YACP3yD,EAAG2+B,MAAMra,iBACFtkB,EAAG2+B,MAAK,GACf,IAEJ3+B,EAAG2+B,MAAM7Z,SAEJ9kB,GAhBgBA,CAiBzB,CAEA4lB,OACar/B,KACR81C,cACL,CAEA/X,UACE,MAAMtkB,EAAKzZ,KACXyZ,EAAG6hB,KAAK,iDAAkD7hB,GAC1DA,EAAGsjD,eACCtjD,EAAGg2E,UAAYh2E,EAAGg2E,SAAS,WACtBh2E,EAAGg2E,SAAS,GAAGm3D,eAEpBntI,EAAGitI,WAAajtI,EAAGitI,UAAU,WACxBjtI,EAAGitI,UAAU,GAAGE,eAEzB50H,GAAYvY,GACZA,EAAG2yD,WAAY,CACjB,GC/6BF,IAAA49E,GAAe,CACbxmJ,KAAM,eACN8C,OAAQ,CACNmgJ,aAAc,CACZE,cAAUr9I,EACVkmF,aAASlmF,EACT2lC,UAAM3lC,EAGNygJ,yBAAqBzgJ,EACrBi+I,6BAAyBj+I,EACzBk+I,WAAW,EACXL,kBAAkB,EAClBiB,0BAA0B,EAC1BhuC,YAAa,QAEb34G,WAAO6H,EACPyI,UAAU,EAEVyK,YAAQlT,EACR09I,WAAO19I,EACP+9I,cAAe,KACfC,aAAc,OAEdrgG,OAAQ,OACR+4C,iBAAkB,OAClBK,mBAAoB,QACpBR,eAAWv2F,EACX01F,qBAAsB,YACtBE,qBAAsB,SACtBD,wBAAwB,EACxBH,qBAAqB,EAErB4C,WAAW,EACXC,uBAAmBr4F,EAEnB9B,SAAS,EAETmnE,WAAW,EACX6tB,eAAe,EACfotD,aAAc,gBACdC,qBAAqB,EAGrBN,oBAAgBjgJ,EAChBmmE,WAAW,EAGXywB,oBAAgB52F,EAChBy2F,sBAAkBz2F,EAGlB04F,gBAAgB,EAChBzvE,IAAK,UAGLo3H,oBAAgBrgJ,EAChBs2F,gBAAYt2F,EACZ62F,iBAAa72F,EACb22E,gBAAY32E,EACZs1F,qBAAiBt1F,EACjBk6I,kBAAcl6I,IAGlB+zB,OAAQ,CACN2sH,iBAEFltH,SACE,MAAMc,EAAM59B,KACZ49B,EAAI6oH,aAAezpJ,GACjBugC,GAAmB,CACjBE,qBAAiBn0B,EACjBxM,YAAaktJ,GACbpsH,MACAD,QAAS,mBAEX,CACEM,KAAKgsH,GACH,MAAMxwI,EAAKmkB,EAAI6oH,aAAallJ,IAAI0oJ,GAChC,GAAIxwI,GAAMA,EAAGwkB,KAAM,OAAOxkB,EAAGwkB,M,EAG/BM,MAAM0rH,GACJ,MAAMxwI,EAAKmkB,EAAI6oH,aAAallJ,IAAI0oJ,GAChC,GAAIxwI,GAAMA,EAAG8kB,MAAO,OAAO9kB,EAAG8kB,OAEhC,GAGN,G,OCvFF,cAAsB3C,GACpB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAMssH,EAAUlqJ,KACVu3B,EAAUE,KAEVwH,EAAWjiC,GAAO,GAAI4gC,EAAIt3B,OAAO4jJ,SAEjC5qJ,EAAWF,IAGjB8qJ,EAAQhuH,iBAAiB+C,GAEzBirH,EAAQ5jJ,OAAStJ,GAAOiiC,EAAU34B,QAEP,IAAlBA,EAAOq+B,QACdpN,EAAQG,OACmB,UAA3BwyH,EAAQ5jJ,OAAOzC,UAEfqmJ,EAAQ5jJ,OAAOq+B,OAAS,IAG1B,MAAMzG,SAAEA,EAAQ6sC,YAAEA,GAAgBm/E,EAAQ5jJ,OAC1C,IAAK43B,IAAagsH,EAAQ5jJ,OAAO6jJ,UAAW,OAAOD,EAEnD,MAAMzrH,EAAYp8B,EAAE67B,GACpB,GAAyB,IAArBO,EAAUnhC,SAAiB4sJ,EAAQ5jJ,OAAO6jJ,UAAW,OAAOD,EAEhE,GAAIzrH,EAAU,IAAMA,EAAU,GAAG2rH,YAAcF,EAAQ5jJ,OAAO6jJ,UAC5D,OAAO1rH,EAAU,GAAG2rH,UAEtB,IAAIt/E,EAAezoE,EAAE0oE,GAAentC,EAAIE,KAAK5zB,GAAG,GACpB,IAAxB4gE,EAAaxtE,SACfwtE,EAAeltC,EAAIE,KAGrB,MAAMA,EAAMz7B,EAAE6nJ,EAAQzhJ,UAAUyB,GAAG,GAEnClN,GAAOktJ,EAAS,CACdtsH,MACAa,YACAP,SAAUO,GAAaA,EAAU,GACjCqsC,eACAC,YAAaD,GAAgBA,EAAa,GAC1ChtC,MACAh8B,GAAIg8B,GAAOA,EAAI,GACf9sB,KAAMk5I,EAAQ5jJ,OAAO0K,MAAQ,GAC7BmwD,SAAS,EACT0J,QAAQ,IAGNpsC,EAAU,KAAIA,EAAU,GAAG2rH,UAAYF,GAE3C,MAAMt6G,EAAe,GACrB,IAAID,EACJ,SAAS88B,IACHy9E,EAAQr/E,OAAQq/E,EAAQ1pF,OACvB0pF,EAAQ9hG,KAAKpoD,KACpB,CACA,SAASqqJ,EAAenhJ,GAEpBghJ,EAAQr/E,SACPxoE,EAAE6G,EAAEjM,QAAQ+M,QAAQy0B,GAAWnhC,QAAU+E,EAAE6G,EAAEjM,QAAQ+M,QAAQkgJ,EAAQpsH,KAAKxgC,SAG7E4sJ,EAAQ1pF,MACV,CACA,SAASnvB,EAAiBnoC,GACpBymC,IACJA,GAAY,EACZC,EAAav3B,EAAe,eAAXnP,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACxEuG,EAAah7B,EAAe,eAAX1L,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACxE4gH,EAAQ9hG,KAAKpoD,MACf,CACA,SAASyxC,EAAgBvoC,GACvB,IAAKymC,EAAW,OAChB,MAAMt3B,EAAe,cAAXnP,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MAC1Dz0B,EAAe,cAAX1L,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,QAC7CjxB,EAAIu3B,EAAav3B,IAAM,GAAKzD,EAAIg7B,EAAah7B,IAAM,IAAM,GAC7D,KACb+6B,GAAY,EACZu6G,EAAQ1pF,OAEZ,CACA,SAAS5rB,IACFjF,IACLA,GAAY,EACZu6G,EAAQ1pF,OACV,CACA,SAASslE,IACPokB,EAAQ9hG,KAAKpoD,KACf,CACA,SAASgmI,IACPkkB,EAAQ1pF,MACV,CACA,SAAS8pF,IACFxsH,EAAIyE,SAAS,eAChBzE,EAAI0E,YAAY,eAAe33B,QAEnC,CA6GA,OA3GAq/I,EAAQp0G,aAAe,WAErB,GADAhY,EAAIh6B,GAAG,gBAAiBwmJ,GACO,UAA3BJ,EAAQ5jJ,OAAOzC,QAOjB,OANIqmJ,EAAQ5jJ,OAAO6jJ,UACjB9nJ,EAAE/C,GAAUwE,GAAG,QAASomJ,EAAQ5jJ,OAAO43B,SAAUuuC,GAEjDy9E,EAAQzrH,UAAU36B,GAAG,QAAS2oE,QAEhCpqE,EAAE,QAAQyB,GAAG,QAASumJ,GAGxB,GAA+B,WAA3BH,EAAQ5jJ,OAAOzC,QACnB,GAAI0zB,EAAQG,MAAO,CACjB,MAAM8Q,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACjD0hH,EAAQ5jJ,OAAO6jJ,UACjB9nJ,EAAE/C,GAAUwE,GAAG85B,EAAI8H,YAAY/yB,MAAOu3I,EAAQ5jJ,OAAO43B,SAAUmT,EAAkB7I,GAEjF0hH,EAAQzrH,UAAU36B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GAEhE5K,EAAI95B,GAAG,YAAa2tC,GACpB7T,EAAI95B,GAAG,mBAAoB8wC,EAC7B,MAEMs1G,EAAQ5jJ,OAAO6jJ,WACjB9nJ,EAAE/C,GAAUwE,GACVyzB,EAAQK,cAAgB,eAAiB,aACzCsyH,EAAQ5jJ,OAAO43B,SACf4nG,GACA,GAEFzjI,EAAE/C,GAAUwE,GACVyzB,EAAQK,cAAgB,eAAiB,aACzCsyH,EAAQ5jJ,OAAO43B,SACf8nG,GACA,KAGFkkB,EAAQzrH,UAAU36B,GAChByzB,EAAQK,cAAgB,eAAiB,aACzCkuG,GAEFokB,EAAQzrH,UAAU36B,GAChByzB,EAAQK,cAAgB,eAAiB,aACzCouG,G,EAKRkkB,EAAQntF,aAAe,WAErB,GADAj/B,EAAI30B,IAAI,gBAAiBmhJ,GACM,UAA3BJ,EAAQ5jJ,OAAOzC,QAOjB,OANIqmJ,EAAQ5jJ,OAAO6jJ,UACjB9nJ,EAAE/C,GAAUwE,GAAG,QAASomJ,EAAQ5jJ,OAAO43B,SAAUuuC,GAEjDy9E,EAAQzrH,UAAUt1B,IAAI,QAASsjE,QAEjCpqE,EAAE,QAAQ8G,IAAI,QAASkhJ,GAGzB,GAA+B,WAA3BH,EAAQ5jJ,OAAOzC,QACnB,GAAI0zB,EAAQG,MAAO,CACjB,MAAM8Q,IAAUjR,EAAQQ,iBAAkB,CAAEyQ,SAAS,GACjD0hH,EAAQ5jJ,OAAO6jJ,UACjB9nJ,EAAE/C,GAAU6J,IACVy0B,EAAI8H,YAAY/yB,MAChBu3I,EAAQ5jJ,OAAO43B,SACfmT,EACA7I,GAGF0hH,EAAQzrH,UAAUt1B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkB7I,GAEjE5K,EAAIz0B,IAAI,YAAasoC,GACrB7T,EAAIz0B,IAAI,mBAAoByrC,EAC9B,MAEMs1G,EAAQ5jJ,OAAO6jJ,WACjB9nJ,EAAE/C,GAAU6J,IACVouB,EAAQK,cAAgB,eAAiB,aACzCsyH,EAAQ5jJ,OAAO43B,SACf4nG,GACA,GAEFzjI,EAAE/C,GAAU6J,IACVouB,EAAQK,cAAgB,eAAiB,aACzCsyH,EAAQ5jJ,OAAO43B,SACf8nG,GACA,KAGFkkB,EAAQzrH,UAAUt1B,IAChBouB,EAAQK,cAAgB,eAAiB,aACzCkuG,GAEFokB,EAAQzrH,UAAUt1B,IAChBouB,EAAQK,cAAgB,eAAiB,aACzCouG,G,EAORkkB,EAAQntH,aAERmtH,EAAQ7qH,OAED6qH,CACT,CAEAK,YAAYrsH,GACV,MAAMgsH,EAAUlqJ,KAKhB,OAJAkqJ,EAAQntF,eACRmtF,EAAQzrH,UAAYp8B,EAAE67B,GACtBgsH,EAAQhsH,SAAWgsH,EAAQzrH,UAAU,GACrCyrH,EAAQp0G,eACDo0G,CACT,CAEArwG,SAAS3b,GACP,MAAMgsH,EAAUlqJ,MACV89B,IAAEA,EAAGF,IAAEA,EAAGktC,aAAEA,GAAiBo/E,EAC7BM,IAAmBN,EAAQ5jJ,OAAOykE,YAClC0/E,EAAgBP,EAAQ5jJ,OAAOq+B,QAAU,EAC/C7G,EAAIpyB,IAAI,CAAEwC,KAAM,GAAID,IAAK,KACzB,MAAMwwB,EAAYp8B,EAAE67B,GAAYgsH,EAAQhsH,WACjC5F,EAAO0B,GAAU,CAAC8D,EAAIxF,QAASwF,EAAI9D,UAI1C,IAAIw4C,EACAC,EACAC,EACAC,EALJ70C,EAAIpyB,IAAI,CAAEwC,KAAM,GAAID,IAAK,KAOzB,MAAMy8I,EACJF,GAAkB1/E,EAAaxtE,OAASwtE,EAAa,GAAGp9D,wBAA0BkwB,EAEpF,GAAIa,GAAaA,EAAUnhC,OAAS,EAAG,CAGrC,GAFAk1E,EAAc/zC,EAAUolC,aACxB4O,EAAeh0C,EAAUs0C,mBACE,IAAhBP,QAAuD,IAAjBC,EAA8B,CAC7E,MAAMk4E,EAAalsH,EAAU,GAAG/wB,wBAChC8kE,EAAcm4E,EAAWryH,MACzBm6C,EAAek4E,EAAW3wH,MAC5B,CAEA,MAAMg5C,EAAev0C,EAAUkG,SAC/B+tC,EAAmBM,EAAa9kE,KAAOw8I,EAAWx8I,KAClDykE,EAAkBK,EAAa/kE,IAAMy8I,EAAWz8I,IAEhD,MAAMglE,EAAmBx0C,EAAUx0B,QAAQ,SACvCgpE,EAAiB31E,OAAS,IAC5Bq1E,GAAmBM,EAAiB,GAAGplE,UAE3C,CACA,IAAKK,EAAMD,GAAO,CAAC,EAAG,EAAG,GAGrB4rC,EAAW,MAEX7f,EAASywH,EAAgB93E,EAE3B1kE,EAAM0kE,EAAkB34C,EAASywH,EACxBzwH,EAAS0wH,EAAW1wH,OAAS24C,EAAkBF,GAExD54B,EAAW,SACX5rC,EAAM0kE,EAAkBF,EAAeg4E,IAGvC5wG,EAAW,SACX5rC,EAAMwkE,EAAe,EAAIE,EAAkB34C,EAAS,EAChD/rB,GAAO,EACTA,EAAM,EACGA,EAAM+rB,GAAU0wH,EAAW1wH,SACpC/rB,EAAMy8I,EAAW1wH,OAASA,EAAS,IAKtB,QAAb6f,GAAmC,WAAbA,GACxB3rC,EAAOskE,EAAc,EAAIE,EAAmBp6C,EAAQ,EAChDpqB,EAAO,IAAGA,EAAO,GACjBA,EAAOoqB,EAAQoyH,EAAWpyH,QAAOpqB,EAAOw8I,EAAWpyH,MAAQA,EAAQ,GACnEpqB,EAAO,IAAGA,EAAO,IACC,WAAb2rC,IACT3rC,EAAOwkE,EAAmBp6C,GACtBpqB,EAAO,GAAKA,EAAOoqB,EAAQoyH,EAAWpyH,SACpCpqB,EAAO,IAAGA,EAAOwkE,EAAmBF,GACpCtkE,EAAOoqB,EAAQoyH,EAAWpyH,QAAOpqB,EAAOw8I,EAAWpyH,MAAQA,EAAQ,KAK3EwF,EAAIpyB,IAAI,CAAEuC,IAAM,GAAEA,MAASC,KAAO,GAAEA,OACtC,CAEAk6C,KAAKwiG,GACH,MAAMV,EAAUlqJ,MACV89B,IAAEA,EAAGW,UAAEA,EAASqsC,aAAEA,GAAiBo/E,EACrCp/E,EAAa,IAAMhtC,EAAI,KAAOgtC,EAAa,GAAGt/D,SAASsyB,EAAI,KAC7DgtC,EAAanhE,OAAOm0B,GAEtBosH,EAAQrwG,SAAS+wG,GACjB,MAAMC,EAAYxoJ,EAAEuoJ,GAUpB,OATAV,EAAQ/oF,SAAU,EAClB+oF,EAAQr/E,QAAS,EACjBpsC,EAAU56B,QAAQ,gBAClBi6B,EAAIj6B,QAAQ,gBACRgnJ,EAAUvtJ,QAAUutJ,EAAU,KAAOpsH,EAAU,IACjDosH,EAAUhnJ,QAAQ,gBAEpBqmJ,EAAQ5uH,KAAK,0BAA2B4uH,GACxCpsH,EAAI0E,YAAY,eAAeF,SAAS,cACjC4nH,CACT,CAEA1pF,OACE,MAAM0pF,EAAUlqJ,MACV89B,IAAEA,EAAGW,UAAEA,GAAcyrH,EAO3B,OANAA,EAAQ/oF,SAAU,EAClB+oF,EAAQr/E,QAAS,EACjBpsC,EAAU56B,QAAQ,gBAClBi6B,EAAIj6B,QAAQ,gBACZqmJ,EAAQ5uH,KAAK,0BAA2B4uH,GACxCpsH,EAAIwE,SAAS,eAAeE,YAAY,cACjC0nH,CACT,CAEAzhJ,SACE,MAAMyhJ,EAAUlqJ,KAChB,GAAIkqJ,EAAQ5jJ,OAAOmC,OAAQ,OAAOyhJ,EAAQ5jJ,OAAOmC,OAAOrG,KAAK8nJ,EAASA,GACtE,MAAMr9E,SAAEA,EAAQ77D,KAAEA,GAASk5I,EAAQ5jJ,OACnC,MAAQ,+BACgBumE,GAAY,8CACD77D,GAAQ,+BAEzCvO,MACJ,CAEAkrE,QAAQC,GACN,MAAMs8E,EAAUlqJ,KAChB,YAAuB,IAAZ4tE,IAGXs8E,EAAQ5jJ,OAAO0K,KAAO48D,EACtBs8E,EAAQl5I,KAAO48D,EACXs8E,EAAQpsH,KACVosH,EAAQpsH,IAAI1/B,SAAS,oBAAoBoE,KAAKorE,GAE5Cs8E,EAAQr/E,QACVq/E,EAAQrwG,YARDqwG,CAWX,CAEA7qH,OACkBr/B,KACR81C,cACV,CAEA/X,UACE,MAAMmsH,EAAUlqJ,KACXkqJ,EAAQzrH,YAAayrH,EAAQ99E,YAClC89E,EAAQzrH,UAAU56B,QAAQ,yBAC1BqmJ,EAAQ5uH,KAAK,4CAA6C4uH,GAC1DA,EAAQpsH,IAAIjzB,SACRq/I,EAAQzrH,UAAU,WAAWyrH,EAAQzrH,UAAU,GAAG2rH,UACtDF,EAAQntF,eACR/qC,GAAYk4H,GACZA,EAAQ99E,WAAY,EACtB,GCvXF,IAAA0+E,GAAe,CACbtnJ,KAAM,UACN65B,OAAQ,CACNytH,YAEFhuH,SACE,MAAMc,EAAM59B,KACZ49B,EAAIssH,QAAU3sH,GAAmB,CAC/BE,gBAAiB,WACjB3gC,YAAaguJ,GACbltH,MACAD,QAAS,cAEXC,EAAIssH,QAAQ9hG,KAAO,SAActmD,GAC/B,MAAMg8B,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OACtB,MAAM4sJ,EAAUpsH,EAAI,GAAGssH,UACvB,OAAKF,GACLA,EAAQ9hG,KAAKtqB,EAAI,IACVosH,QAFP,C,EAIFtsH,EAAIssH,QAAQ1pF,KAAO,SAAc1+D,GAC/B,MAAMg8B,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OACtB,MAAM4sJ,EAAUpsH,EAAI,GAAGssH,UACvB,OAAKF,GACLA,EAAQ1pF,OACD0pF,QAFP,C,EAIFtsH,EAAIssH,QAAQv8E,QAAU,SAAc7rE,EAAI8rE,GACtC,MAAM9vC,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OACtB,MAAM4sJ,EAAUpsH,EAAI,GAAGssH,UACvB,OAAKF,GACLA,EAAQv8E,QAAQC,GACTs8E,QAFP,C,GAKJ5jJ,OAAQ,CACN4jJ,QAAS,CACPhsH,SAAU,KACVisH,WAAW,EACXn5I,KAAM,KACN67D,SAAU,KACVpkE,OAAQ,KACRk8B,OAAQ,EACR9gC,QAAS,QACTknE,iBAAazhE,IAGjBxF,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,iBACL1qC,MAAMrF,IACL,MAAMkP,EAAO3O,EAAEP,GAAIyI,KAAK,gBACnByG,GACL4sB,EAAIssH,QAAQptH,OAAO,CAAEoB,SAAUp8B,EAAIkP,QAAO,G,EAGhDu1E,gBAAgBtmC,GACd59C,EAAE49C,GACCpO,KAAK,iBACL1qC,MAAMrF,IACDA,EAAGsoJ,WAAWtoJ,EAAGsoJ,UAAUrsH,SAAS,G,EAG9CsqC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,iBAAiB1qC,MAAMrF,IACnC,MAAMkP,EAAO3O,EAAEP,GAAIyI,KAAK,gBACnByG,GACL4sB,EAAIssH,QAAQptH,OAAO,CAAEoB,SAAUp8B,EAAIkP,QAAO,IAG5B,QAAd4sB,EAAIxM,OACJ+yB,EAAKlV,MACLkV,EAAKlV,KAAKhN,OAAO+N,eACjBmU,EAAKjL,WACLiL,EAAKjL,UAAU57C,OAAS,GAExB6mD,EAAKjL,UAAUrH,KAAK,iBAAiB1qC,MAAMrF,IACzC,MAAMkP,EAAO3O,EAAEP,GAAIyI,KAAK,gBACnByG,GACL4sB,EAAIssH,QAAQptH,OAAO,CAAEoB,SAAUp8B,EAAIkP,QAAO,G,EAIhDk3D,iBAAiB/jB,GAEfA,EAAKrmB,IAAI+T,KAAK,iBAAiB1qC,MAAMrF,IAC/BA,EAAGsoJ,WAAWtoJ,EAAGsoJ,UAAUrsH,SAAS,IAG1B,QALJ/9B,KAKNoxB,OACJ+yB,EAAKlV,MACLkV,EAAKlV,KAAKhN,OAAO+N,eACjBmU,EAAKjL,WACLiL,EAAKjL,UAAU57C,OAAS,GAExB6mD,EAAKjL,UAAUrH,KAAK,iBAAiB1qC,MAAMrF,IACrCA,EAAGsoJ,WAAWtoJ,EAAGsoJ,UAAUrsH,SAAS,GAG9C,GAEFrB,MAAO,CACL,eAAgB,CACd+0B,OAAO/0B,GACL,MACM56B,EAAK46B,EAAM4zB,IACXt/C,EAAO3O,EAAEP,GAAIyI,KAAK,gBACnByG,GAHOhR,KAIRkqJ,QAAQptH,OAAO,CAAEoB,SAAUp8B,EAAIkP,Q,EAErC0gD,OAAOh1B,GACL,MAAM56B,EAAK46B,EAAM4zB,IACZxuD,EAAGsoJ,WACJ1tH,GAASA,EAAM9qB,MAAQ8qB,EAAM9qB,KAAKhI,OAAS8yB,EAAM9qB,KAAKhI,MAAM,iBAC9D9H,EAAGsoJ,UAAUz8E,QAAQjxC,EAAM9qB,KAAKhI,MAAM,gB,EAG1Cm0B,QAAQrB,GACN,MAAM56B,EAAK46B,EAAM4zB,IACbxuD,EAAGsoJ,WAAWtoJ,EAAGsoJ,UAAUrsH,SACjC,K,OC1HN,cAAoBnC,GAClB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IAEf,MAAM3C,EAAOj7B,KAEPi/B,EAAWjiC,GAAO,GAAI4gC,EAAIt3B,OAAOykJ,OAGvC9vH,EAAKiB,iBAAiB+C,GAEtBhE,EAAK30B,OAAStJ,GAAOiiC,EAAU34B,GAE/B,MAAMxE,GAAEA,GAAOm5B,EAAK30B,OACpB,IAAKxE,EAAI,OAAOm5B,EAEhB,MAAM6C,EAAMz7B,EAAEP,GACd,OAAmB,IAAfg8B,EAAIxgC,OAAqB29B,EAEzB6C,EAAI,GAAGktH,QAAgBltH,EAAI,GAAGktH,SAElChuJ,GAAOi+B,EAAM,CACX2C,MACAE,MACAh8B,GAAIg8B,GAAOA,EAAI,KAGjBA,EAAI,GAAGktH,QAAU/vH,EAGjBA,EAAK8B,aAEL9B,EAAKoE,OAEEpE,EACT,CAEAgwH,aACE,MACMzmI,KAAEA,EAAI0mI,YAAEA,GADDlrJ,KACsBsG,OACnC,OAAOke,EAAO,EAAI0mI,EAAc,CAClC,CAEAC,mBACE,MACMC,EADOprJ,KACOirJ,aACpB,OAAO,EAAInkJ,KAAKE,GAAKokJ,CACvB,CAEA3iJ,SACE,MAAMwyB,EAAOj7B,KACb,GAAIi7B,EAAK30B,OAAOmC,OAAQ,OAAOwyB,EAAK30B,OAAOmC,OAAOrG,KAAK64B,EAAMA,GAE7D,MAAMuO,KACJA,EAAI/nC,MACJA,EAAK+iB,KACLA,EAAI6mI,QACJA,EAAOC,cACPA,EAAaC,YACbA,EAAWL,YACXA,EAAWM,UACXA,EAASC,eACTA,EAAcC,cACdA,EAAaC,gBACbA,EAAeC,UACfA,EAASC,eACTA,EAAcC,cACdA,EAAaC,gBACbA,GACE9wH,EAAK30B,OAEH0lJ,EAAsB,eAATxiH,EACb4hH,EAASnwH,EAAKgwH,aACd3tJ,EAAS29B,EAAKkwH,mBACdtkJ,EAAWC,KAAK+B,IAAI/B,KAAKgC,IAAIrH,EAAO,GAAI,GAE9C,OACEk9B,GAAA,OACE0zB,MAAM,YACN/5B,MAAQ,GAAE9T,MACVwV,OAAS,GAAEgyH,EAAaxnI,EAAO,EAAIA,MACnCw/H,QAAU,OAAMx/H,KAAQwnI,EAAaxnI,EAAO,EAAIA,KAE/CwnI,GACCrtH,GAAA,QACE0zB,MAAM,kBACNv8C,EAAI,IAAG0O,EAAO0mI,EAAc,KAAK1mI,EAAO,iBAAiBA,EAAO0mI,MAChEe,OAAQX,EACR,eAAcJ,EACdhxB,KAAMmxB,GAAW,SAGpBW,GACCrtH,GAAA,QACE0zB,MAAM,mBACNv8C,EAAI,IAAG0O,EAAO0mI,EAAc,KAAK1mI,EAAO,iBAAiBA,EAAO0mI,MAChEe,OAAQV,EACR,eAAcL,EACd,mBAAkB5tJ,EAAS,EAC3B,oBAAoBA,EAAS,GAAM,EAAIuJ,GACvCqzH,KAAMoxB,EAAgB,OAASD,GAAW,UAG5CW,GAAcV,GACd3sH,GAAA,UACE0zB,MAAM,oBACN45F,OAAQX,EACR,eAAcJ,EACdhxB,KAAMmxB,GAAW,OACjBa,GAAI1nI,EAAO,EACX2nI,GAAI3nI,EAAO,EACXjH,EAAG6tI,KAGLY,GACArtH,GAAA,UACE0zB,MAAM,qBACNjhD,UAAY,cAAaoT,EAAO,KAAKA,EAAO,KAC5CynI,OAAQV,EACR,eAAcL,EACd,mBAAkB5tJ,EAClB,oBAAmBA,GAAU,EAAIuJ,GACjCqzH,KAAMoxB,EAAgB,OAASD,GAAW,OAC1Ca,GAAI1nI,EAAO,EACX2nI,GAAI3nI,EAAO,EACXjH,EAAG6tI,IAINI,GACC7sH,GAAA,QACE0zB,MAAM,mBACNh6C,EAAE,MACFzD,EAAGo3I,EAAa,OAAS,MACzB,cAAaL,EACb,YAAWD,EACXxxB,KAAMuxB,EACNW,GAAIJ,EAAcJ,GAAaE,EAAgB,IAAM,EAAK,EAC1D,cAAY,SACZ,qBAAoBE,GAAc,UAEjCR,GAGJI,GACCjtH,GAAA,QACE0zB,MAAM,mBACNh6C,EAAE,MACFzD,EAAGo3I,EAAa,OAAS,MACzB,cAAaD,EACb,YAAWD,EACX5xB,KAAM2xB,EACNO,GAAIJ,GAAc,EAAIR,EAAYE,EAAgB,EAAI,GAAK,EAC3D,cAAY,SACZ,qBAAoBM,GAAc,UAEjCJ,GAKX,CAEAl6F,OAAO8qE,QAAS,IAATA,MAAY,IACjB,MAAMvhG,EAAOj7B,KACPV,EAAWF,KACXkH,OAAEA,EAAM+lJ,OAAEA,GAAWpxH,EAO3B,GALAl+B,OAAOI,KAAKq/H,GAAWp/H,SAASq1B,SACE,IAArB+pG,EAAU/pG,KACnBnsB,EAAOmsB,GAAS+pG,EAAU/pG,GAC5B,IAEoB,IAAlB45H,EAAO/uJ,OAAc,OAAO29B,EAEhC,MAAMx5B,MACJA,EAAK+iB,KACLA,EAAI6mI,QACJA,EAAOC,cACPA,EAAaC,YACbA,EAAWL,YACXA,EAAWM,UACXA,EAASC,eACTA,EAAcC,cACdA,EAAaC,gBACbA,EAAeC,UACfA,EAASC,eACTA,EAAcC,cACdA,EAAaC,gBACbA,GACEzlJ,EAEEhJ,EAAS29B,EAAKkwH,mBACdtkJ,EAAWC,KAAK+B,IAAI/B,KAAKgC,IAAIrH,EAAO,GAAI,GACxC2pJ,EAASnwH,EAAKgwH,aACde,EAA6B,eAAhB1lJ,EAAOkjC,KAEpB8iH,EAAW,CACfh0H,MAAQ,GAAE9T,MACVwV,OAAS,GAAEgyH,EAAaxnI,EAAO,EAAIA,MACnCw/H,QAAU,OAAMx/H,KAAQwnI,EAAaxnI,EAAO,EAAIA,KAKlD,GAHAznB,OAAOI,KAAKmvJ,GAAUlvJ,SAASmN,IAC7B8hJ,EAAO9hJ,KAAKA,EAAM+hJ,EAAS/hJ,GAAM,IAE/ByhJ,EAAY,CACd,MAAMO,EAAY,CAChBz2I,EAAI,IAAG0O,EAAO0mI,EAAc,KAAK1mI,EAAO,iBAAiBA,EAAO0mI,MAChEe,OAAQX,EACR,eAAgBJ,EAChBhxB,KAAMmxB,GAAW,QAEbmB,EAAa,CACjB12I,EAAI,IAAG0O,EAAO0mI,EAAc,KAAK1mI,EAAO,iBAAiBA,EAAO0mI,MAChEe,OAAQV,EACR,eAAgBL,EAChB,mBAAoB5tJ,EAAS,EAC7B,oBAAsBA,EAAS,GAAM,EAAIuJ,GACzCqzH,KAAMoxB,EAAgB,OAASD,GAAW,QAE5CtuJ,OAAOI,KAAKovJ,GAAWnvJ,SAASmN,IAC9B8hJ,EAAOx6G,KAAK,oBAAoBtnC,KAAKA,EAAMgiJ,EAAUhiJ,GAAM,IAE7DxN,OAAOI,KAAKqvJ,GAAYpvJ,SAASmN,IAC/B8hJ,EAAOx6G,KAAK,qBAAqBtnC,KAAKA,EAAMiiJ,EAAWjiJ,GAAM,GAEjE,KAAO,CACL,MAAMgiJ,EAAY,CAChBN,OAAQX,EACR,eAAgBJ,EAChBhxB,KAAMmxB,GAAW,OACjBa,GAAI1nI,EAAO,EACX2nI,GAAI3nI,EAAO,EACXjH,EAAG6tI,GAECoB,EAAa,CACjBp7I,UAAY,cAAaoT,EAAO,KAAKA,EAAO,KAC5CynI,OAAQV,EACR,eAAgBL,EAChB,mBAAoB5tJ,EACpB,oBAAqBA,GAAU,EAAIuJ,GACnCqzH,KAAMoxB,EAAgB,OAASD,GAAW,OAC1Ca,GAAI1nI,EAAO,EACX2nI,GAAI3nI,EAAO,EACXjH,EAAG6tI,GAELruJ,OAAOI,KAAKovJ,GAAWnvJ,SAASmN,IAC9B8hJ,EAAOx6G,KAAK,sBAAsBtnC,KAAKA,EAAMgiJ,EAAUhiJ,GAAM,IAE/DxN,OAAOI,KAAKqvJ,GAAYpvJ,SAASmN,IAC/B8hJ,EAAOx6G,KAAK,uBAAuBtnC,KAAKA,EAAMiiJ,EAAWjiJ,GAAM,GAEnE,CACA,GAAIihJ,EAAW,CACb,IAAKa,EAAOx6G,KAAK,qBAAqBv0C,OAAQ,CAC5C,MAAMq2C,EAASr0C,EAASb,gBAAgB,6BAA8B,QACtEk1C,EAAO3tC,UAAUC,IAAI,oBACrBomJ,EAAO1iJ,OAAOgqC,EAChB,CACA,MAAM84G,EAAY,CAChBp0I,EAAG,MACHzD,EAAGo3I,EAAa,OAAS,MACzB,cAAeL,EACf,YAAaD,EACbxxB,KAAMuxB,EACNW,GAAIJ,EAAcJ,GAAaE,EAAgB,IAAM,EAAK,EAC1D,cAAe,SACf,qBAAsBE,GAAc,UAEtCjvJ,OAAOI,KAAKsvJ,GAAWrvJ,SAASmN,IAC9B8hJ,EAAOx6G,KAAK,qBAAqBtnC,KAAKA,EAAMkiJ,EAAUliJ,GAAM,IAE9D8hJ,EAAOx6G,KAAK,qBAAqB7gC,KAAKw6I,EACxC,MACEa,EAAOx6G,KAAK,qBAAqBhnC,SAEnC,GAAI+gJ,EAAW,CACb,IAAKS,EAAOx6G,KAAK,qBAAqBv0C,OAAQ,CAC5C,MAAMq2C,EAASr0C,EAASb,gBAAgB,6BAA8B,QACtEk1C,EAAO3tC,UAAUC,IAAI,oBACrBomJ,EAAO1iJ,OAAOgqC,EAChB,CACA,MAAM+4G,EAAa,CACjBr0I,EAAG,MACHzD,EAAGo3I,EAAa,OAAS,MACzB,cAAeD,EACf,YAAaD,EACb5xB,KAAM2xB,EACNO,GAAIJ,GAAc,EAAIR,EAAYE,EAAgB,EAAI,GAAK,EAC3D,cAAe,SACf,qBAAsBM,GAAc,UAEtCjvJ,OAAOI,KAAKuvJ,GAAYtvJ,SAASmN,IAC/B8hJ,EAAOx6G,KAAK,qBAAqBtnC,KAAKA,EAAMmiJ,EAAWniJ,GAAM,IAE/D8hJ,EAAOx6G,KAAK,qBAAqB7gC,KAAK46I,EACxC,MACES,EAAOx6G,KAAK,qBAAqBhnC,SAEnC,OAAOowB,CACT,CAEAoE,OACE,MAAMpE,EAAOj7B,KACPqsJ,EAAShqJ,EAAE44B,EAAKxyB,UAAUyB,GAAG,GAOnC,OANAmiJ,EAAOrB,QAAU/vH,EACjBj+B,GAAOi+B,EAAM,CACXoxH,SACAM,MAAON,GAAUA,EAAO,KAE1BpxH,EAAK6C,IAAIn0B,OAAO0iJ,GACTpxH,CACT,CAEA8C,UACE,MAAM9C,EAAOj7B,KACRi7B,EAAK6C,MAAO7C,EAAKmxC,YACtBnxC,EAAK6C,IAAIj6B,QAAQ,uBACjBo3B,EAAKK,KAAK,0CAA2CL,GACrDA,EAAKoxH,OAAOxhJ,gBACLowB,EAAK6C,IAAI,GAAGktH,QACnBh5H,GAAYiJ,GACZA,EAAKmxC,WAAY,EACnB,GCtUF,IAAAwgF,GAAe,CACbppJ,KAAM,QACN65B,OAAQ,CACNuvH,UAEF9vH,SACE,MAAMc,EAAM59B,KACZ49B,EAAImtH,MAAQxtH,GAAmB,CAC7BE,gBAAiB,SACjB3gC,YAAa8vJ,GACbhvH,MACAD,QAAS,YAEXC,EAAImtH,MAAMr5F,OAAS,SAAgB5vD,EAAI06H,GAErC,GAAmB,IADPn6H,EAAEP,GACNxE,OAAc,OACtB,MAAMytJ,EAAQntH,EAAImtH,MAAMxpJ,IAAIO,GAC5B,OAAKipJ,GACLA,EAAMr5F,OAAO8qE,GACNuuB,QAFP,C,GAKJzkJ,OAAQ,CACNykJ,MAAO,CACLjpJ,GAAI,KACJ0nC,KAAM,SACN/nC,MAAO,EACP+iB,KAAM,IACN6mI,QAAS,cACTC,cAAe,UACfC,YAAa,UACbL,YAAa,GACbM,UAAW,KACXC,eAAgB,UAChBC,cAAe,GACfC,gBAAiB,IACjBC,UAAW,KACXC,eAAgB,UAChBC,cAAe,GACfC,gBAAiB,MAGrBjoJ,GAAI,CACF21E,WAAWx5B,GACT,MAAMriB,EAAM59B,KACZqC,EAAE49C,GACCpO,KAAK,eACL1qC,MAAMrF,IACL87B,EAAImtH,MAAMjuH,OAAO9/B,GAAO,CAAE8E,MAAMO,EAAEP,GAAIuI,WAAa,IAAI,G,EAG7Dk8E,gBAAgBtmC,GACd59C,EAAE49C,GACCpO,KAAK,eACL1qC,MAAMrF,IACDA,EAAGkpJ,SAASlpJ,EAAGkpJ,QAAQjtH,SAAS,G,EAG1CsqC,SAASlkB,GACP,MAAMvmB,EAAM59B,KACZmkD,EAAKrmB,IAAI+T,KAAK,eAAe1qC,MAAMrF,IACjC87B,EAAImtH,MAAMjuH,OAAO9/B,GAAO,CAAE8E,MAAMO,EAAEP,GAAIuI,WAAa,IAAI,G,EAG3D69D,iBAAiB/jB,GACfA,EAAKrmB,IAAI+T,KAAK,eAAe1qC,MAAMrF,IAC7BA,EAAGkpJ,SAASlpJ,EAAGkpJ,QAAQjtH,SAAS,GAExC,GAEFrB,MAAO,CACL,aAAc,CACZ+0B,OAAO/0B,GACL,MACM56B,EAAK46B,EAAM4zB,IADLtwD,KAER+qJ,MAAMjuH,OAAO9/B,GAAO,CAAE8E,MAAMO,EAAEP,GAAIuI,WAAa,I,EAErD0zB,QAAQrB,GACN,MAAM56B,EAAK46B,EAAM4zB,IACbxuD,EAAGkpJ,SAASlpJ,EAAGkpJ,QAAQjtH,SAC7B,KClFN8uH,GAAe,CACbpkJ,OAAOwyB,GACL,MAAM6xH,YAAEA,EAAWC,YAAEA,EAAWC,oBAAEA,EAAmBC,eAAEA,GAAmBhyH,EAAK30B,OAC/E,OACEq4B,GAAA,OAAK0zB,MAAM,wDACT1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6B46F,GACxDtuH,GAAA,OAAK0zB,MAAM,+DACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SAAO6K,KAAK,SAASqqD,KAAK,OAAO/qF,IAAI,IAAID,IAAI,IAAIwpD,MAAM,6BAEvD1zB,GAAA,QAAM0zB,MAAM,+B,EAQ1BhzB,KAAKpE,GAcH,SAASu4D,EAAkBtqF,GACzB,MAAMyQ,EAAQshB,EAAKx5B,MAAMkY,MACzB,IAAIlY,EAAQyG,WAAWgB,EAAEjM,OAAOwE,OAC5B2zB,OAAOC,MAAM5zB,GACfyH,EAAEjM,OAAOwE,MAAQkY,GAGnBlY,EAAQqF,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,EAAGrH,IAChCw5B,EAAK+6D,SAAS,CAAEr8E,MAAOlY,IACzB,CAtBAw5B,EAAKiyH,iBAAmBjyH,EAAK2C,IAAI+1D,MAAM72D,OAAO,CAC5Ch7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,8BAClB/oC,IAAK,EACLD,IAAK,EACLgrF,KAAM,IACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZ,MAAMkY,EAAQ7S,KAAKoX,MAAc,IAARzc,GAAe,IACxCw5B,EAAK+6D,SAAS,CAAEr8E,SAClB,KAcJshB,EAAK6C,IAAIh6B,GAAG,SAAU,0CAA2C0vF,GAEjEv4D,EAAKkyH,yBAA2B,WAC9BlyH,EAAK6C,IAAI30B,IAAI,SAAU,0CAA2CqqF,E,GAGtE9hC,OAAOz2B,GACL,MAAMx5B,MAAEA,GAAUw5B,GACZ8xH,YAAEA,EAAWC,oBAAEA,GAAwB/xH,EAAK30B,QAE5CqT,MAAEA,GAAUlY,EAClBw5B,EAAKiyH,iBAAiBzrJ,MAAQkY,EAC9BshB,EAAKiyH,iBAAiB72D,SAClB02D,GAAeC,EACjB/xH,EAAK6C,IAAI+T,KAAK,kCAAkCz/B,IAAIuH,GAEpDshB,EAAK6C,IAAI+T,KAAK,iCAAiC7gC,KAAK2I,E,EAGxDokB,QAAQ9C,GACFA,EAAKiyH,kBAAoBjyH,EAAKiyH,iBAAiBnvH,SACjD9C,EAAKiyH,iBAAiBnvH,iBAEjB9C,EAAKiyH,iBAERjyH,EAAKkyH,0BAA0BlyH,EAAKkyH,kCACjClyH,EAAKkyH,wBACd,GCzEFC,GAAe,CACb3kJ,OAAMA,IAEFk2B,GAAA,OAAK0zB,MAAM,yDACT1zB,GAAA,OAAK0zB,MAAM,gCAIjBX,OAAOz2B,GACLA,EAAK6C,IACF+T,KAAK,kEACLnmC,IAAI,mBAAoBuvB,EAAKx5B,MAAMkuB,IACxC,GCZF09H,GAAe,CACb5kJ,OAAOwyB,GACL,MAAMqyH,SAAEA,EAAQC,aAAEA,EAAYC,iBAAEA,GAAqBvyH,EAAK30B,OAC1D,OACEq4B,GAAA,OAAK0zB,MAAM,+CACT1zB,GAAA,OAAK0zB,MAAM,yBACRi7F,GAAY3uH,GAAA,OAAK0zB,MAAM,0BAA0Bk7F,GAClD5uH,GAAA,OAAK0zB,MAAM,0BACRm7F,EACC7uH,GAAA,SAAO6K,KAAK,OAAO6oB,MAAM,2BAEzB1zB,GAAA,QAAM0zB,MAAM,6B,EAOxBhzB,KAAKpE,GACH,SAASu4D,EAAkBtqF,GACzB,MAAMymB,EAAMsL,EAAKx5B,MAAMkuB,IACvB,IAAIluB,EAAQyH,EAAEjM,OAAOwE,MAAMwG,QAAQ,KAAM,IACzC,GAAImtB,OAAOC,MAAM5zB,KAAWA,GAA2B,IAAjBA,EAAMnE,QAAiC,IAAjBmE,EAAMnE,OAEhE,YADA4L,EAAEjM,OAAOwE,MAAQkuB,GAGnB,MACM2+B,EAAUp+B,SAASzuB,EAAO,IAE5B6sD,EADQp+B,SAAS,SAAU,MAE7BzuB,EAAQ,OAEN6sD,EANQ,IAOV7sD,EAAQ,OAEVw5B,EAAK+6D,SAAS,CAAErmE,IAAKluB,GACvB,CAEAw5B,EAAK6C,IAAIh6B,GAAG,SAAU,iCAAkC0vF,GAExDv4D,EAAKwyH,iBAAmB,WACtBxyH,EAAK6C,IAAI30B,IAAI,SAAU,iCAAkCqqF,E,GAG7D9hC,OAAOz2B,GACL,MAAMx5B,MAAEA,GAAUw5B,GAEZuyH,iBAAEA,GAAqBvyH,EAAK30B,QAE5BqpB,IAAEA,GAAQluB,EACZ+rJ,EACFvyH,EAAK6C,IAAI+T,KAAK,gCAAgCz/B,IAAIud,GAElDsL,EAAK6C,IAAI+T,KAAK,+BAA+B7gC,KAAK2e,E,EAGtDoO,QAAQ9C,GACFA,EAAKwyH,kBAAkBxyH,EAAKwyH,0BACzBxyH,EAAKwyH,gBACd,GCzDFC,GAAe,CACbjlJ,OAAOwyB,GACL,MAAM6xH,YACJA,EAAWC,YACXA,EAAWC,oBACXA,EAAmBW,aACnBA,EAAYC,oBACZA,EAAmBC,oBACnBA,GACE5yH,EAAK30B,OACT,OACEq4B,GAAA,OAAK0zB,MAAM,uDACT1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6Bs7F,GACxDhvH,GAAA,OAAK0zB,MAAM,6DACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,MACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,yBACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,6BAKpB1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6Bu7F,GACxDjvH,GAAA,OAAK0zB,MAAM,oEACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,MACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,gCACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,oCAKpB1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6Bw7F,GACxDlvH,GAAA,OAAK0zB,MAAM,oEACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,MACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,gCACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,oC,EAQ1BhzB,KAAKpE,GAwCH,SAASu4D,EAAkBtqF,GACzB,MAAM4kJ,EAAM,IAAI7yH,EAAKx5B,MAAMqsJ,KACrBrmJ,EAAQyoB,SAAS7tB,EAAE6G,EAAEjM,QAAQsN,KAAK,oBAAqB,IAC7D,IAAI9I,EAAQyG,WAAWgB,EAAEjM,OAAOwE,OAC5B2zB,OAAOC,MAAM5zB,GACfyH,EAAEjM,OAAOwE,MAAQqsJ,EAAIrmJ,IAIrBhG,EADY,IAAVgG,EACMX,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,IAAKrH,IAE1BqF,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,IAAKrH,IAAU,IAG9CqsJ,EAAIrmJ,GAAShG,EACbw5B,EAAK+6D,SAAS,CAAE83D,QAClB,CAvDA7yH,EAAK8yH,eAAiB9yH,EAAK2C,IAAI+1D,MAAM72D,OAAO,CAC1Ch7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,4BAClB/oC,IAAK,EACLD,IAAK,IACLgrF,KAAM,GACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZw5B,EAAK+6D,SAAS,CAAE/+E,IAAKxV,GACvB,KAGJw5B,EAAK+yH,sBAAwB/yH,EAAK2C,IAAI+1D,MAAM72D,OAAO,CACjDh7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,mCAClB/oC,IAAK,EACLD,IAAK,EACLgrF,KAAM,KACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZ,MAAM4V,EAAIvQ,KAAKoX,MAAc,IAARzc,GAAgB,IACrCw5B,EAAK+6D,SAAS,CAAE83D,IAAK,CAAC7yH,EAAKx5B,MAAMqsJ,IAAI,GAAIz2I,EAAG4jB,EAAKx5B,MAAMqsJ,IAAI,KAC7D,KAGJ7yH,EAAKgzH,sBAAwBhzH,EAAK2C,IAAI+1D,MAAM72D,OAAO,CACjDh7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,mCAClB/oC,IAAK,EACLD,IAAK,EACLgrF,KAAM,KACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZ,MAAM0X,EAAIrS,KAAKoX,MAAc,IAARzc,GAAgB,IACrCw5B,EAAK+6D,SAAS,CAAE83D,IAAK,CAAC7yH,EAAKx5B,MAAMqsJ,IAAI,GAAI7yH,EAAKx5B,MAAMqsJ,IAAI,GAAI30I,IAC9D,KAsBJ8hB,EAAK6C,IAAIh6B,GAAG,SAAU,yCAA0C0vF,GAEhEv4D,EAAKizH,wBAA0B,WAC7BjzH,EAAK6C,IAAI30B,IAAI,SAAU,yCAA0CqqF,E,GAGrE9hC,OAAOz2B,GACL,MAAM2C,IAAEA,EAAGn8B,MAAEA,GAAUw5B,GACjB8xH,YAAEA,EAAWC,oBAAEA,GAAwB/xH,EAAK30B,QAE5CwnJ,IAAEA,EAAG72I,IAAEA,GAAQxV,EAErBw5B,EAAK8yH,eAAetsJ,MAAQwV,EAC5BgkB,EAAK+yH,sBAAsBvsJ,MAAQqsJ,EAAI,GACvC7yH,EAAKgzH,sBAAsBxsJ,MAAQqsJ,EAAI,GAEvC7yH,EAAK8yH,eAAe13D,SACpBp7D,EAAK+yH,sBAAsB33D,SAC3Bp7D,EAAKgzH,sBAAsB53D,SAE3B,MAAM83D,EAAa74H,GAAcw4H,EAAI,GAAIA,EAAI,GAAI,GAC3CM,EAAU94H,GAAcw4H,EAAI,GAAI,EAAG,GACnCO,EAAW/4H,GAAcw4H,EAAI,GAAI,EAAG,GACpCQ,EAAaR,EAAI,GAEvB7yH,EAAK8yH,eAAejwH,IAAI,GAAGx/B,MAAMuhD,YAAY,wBAA0B,OAAM5oC,iBAC7EgkB,EAAK+yH,sBAAsBlwH,IAAI,GAAGx/B,MAAMuhD,YACtC,wBACC,OAAMsuG,EAAW,OAAuB,IAAhBA,EAAW,QAA8B,IAAhBA,EAAW,QAE/DlzH,EAAKgzH,sBAAsBnwH,IAAI,GAAGx/B,MAAMuhD,YACtC,wBACC,OAAmB,IAAbyuG,MAAkC,IAAbA,MAAkC,IAAbA,MAEnDrzH,EAAK+yH,sBAAsBlwH,IACxB+T,KAAK,cACLnmC,IACC,mBACC,mBAAkBkyB,EAAIuD,IAAM,UAAY,mBAAmBitH,EAAQ,OACrD,IAAbA,EAAQ,QACS,IAAbA,EAAQ,aAAmBC,EAAS,OAAqB,IAAdA,EAAS,QAC1C,IAAdA,EAAS,SAIXtB,GAAeC,GACjB/xH,EAAK6C,IAAI+T,KAAK,gCAAgCz/B,IAAK,GAAE6E,KACrDgkB,EAAK6C,IAAI+T,KAAK,uCAAuCz/B,IAAK,GAAY,IAAT07I,EAAI,GAAa,IAC9E7yH,EAAK6C,IAAI+T,KAAK,uCAAuCz/B,IAAK,GAAY,IAAT07I,EAAI,GAAa,KACrEf,IACT9xH,EAAK6C,IAAI+T,KAAK,+BAA+B7gC,KAAM,GAAEiG,KACrDgkB,EAAK6C,IAAI+T,KAAK,sCAAsC7gC,KAAM,GAAY,IAAT88I,EAAI,GAAa,IAC9E7yH,EAAK6C,IAAI+T,KAAK,sCAAsC7gC,KAAM,GAAY,IAAT88I,EAAI,GAAa,I,EAGlF/vH,QAAQ9C,GACFA,EAAK8yH,gBAAkB9yH,EAAK8yH,eAAehwH,SAC7C9C,EAAK8yH,eAAehwH,UAElB9C,EAAK+yH,uBAAyB/yH,EAAK+yH,sBAAsBjwH,SAC3D9C,EAAK+yH,sBAAsBjwH,UAEzB9C,EAAKgzH,uBAAyBhzH,EAAKgzH,sBAAsBlwH,SAC3D9C,EAAKgzH,sBAAsBlwH,iBAGtB9C,EAAK8yH,sBACL9yH,EAAK+yH,6BACL/yH,EAAKgzH,sBAERhzH,EAAKizH,yBAAyBjzH,EAAKizH,iCAChCjzH,EAAKizH,uBACd,GC/MFK,GAAe,CACb9lJ,OAAOwyB,GACL,MAAM6xH,YAAEA,EAAWC,YAAEA,EAAWC,oBAAEA,EAAmBW,aAAEA,GAAiB1yH,EAAK30B,OAC7E,OACEq4B,GAAA,OAAK0zB,MAAM,sDACT1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6Bs7F,GACxDhvH,GAAA,OAAK0zB,MAAM,6DACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SAAO6K,KAAK,SAASqqD,KAAK,MAAM/qF,IAAI,IAAID,IAAI,MAAMwpD,MAAM,2BAExD1zB,GAAA,QAAM0zB,MAAM,6B,EAQ1BhzB,KAAKpE,GACHA,EAAK8yH,eAAiB9yH,EAAK2C,IAAI+1D,MAAM72D,OAAO,CAC1Ch7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,4BAClB/oC,IAAK,EACLD,IAAK,IACLgrF,KAAM,GACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZw5B,EAAK+6D,SAAS,CAAE/+E,IAAKxV,GACvB,I,EAINiwD,OAAOz2B,GACL,MAAMx5B,MAAEA,GAAUw5B,GACZ8xH,YAAEA,EAAWC,oBAAEA,GAAwB/xH,EAAK30B,QAE5C2Q,IAAEA,GAAQxV,EAEhBw5B,EAAK8yH,eAAetsJ,MAAQwV,EAC5BgkB,EAAK8yH,eAAe13D,SACpBp7D,EAAK8yH,eAAejwH,IAAI,GAAGx/B,MAAMuhD,YAAY,wBAA0B,OAAM5oC,iBACzE81I,GAAeC,EACjB/xH,EAAK6C,IAAI+T,KAAK,gCAAgCz/B,IAAK,GAAE6E,KAC5C81I,GACT9xH,EAAK6C,IAAI+T,KAAK,+BAA+B7gC,KAAM,GAAEiG,I,EAGzD8mB,QAAQ9C,GACFA,EAAK8yH,gBAAkB9yH,EAAK8yH,eAAehwH,SAC7C9C,EAAK8yH,eAAehwH,iBAEf9C,EAAK8yH,cACd,GCtDFS,GAAe,CACb/lJ,OAAOwyB,GACL,MAAM6xH,YAAEA,EAAWC,YAAEA,EAAWC,oBAAEA,EAAmBa,oBAAEA,GAAwB5yH,EAAK30B,OACpF,OACEq4B,GAAA,OAAK0zB,MAAM,6DACT1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6Bw7F,GACxDlvH,GAAA,OAAK0zB,MAAM,oEACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,MACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,kCAGR1zB,GAAA,QAAM0zB,MAAM,oC,EAQ1BhzB,KAAKpE,GACHA,EAAKgzH,sBAAwBhzH,EAAK2C,IAAI+1D,MAAM72D,OAAO,CACjDh7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,mCAClB/oC,IAAK,EACLD,IAAK,EACLgrF,KAAM,KACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZ,MAAM0X,EAAIrS,KAAKoX,MAAc,IAARzc,GAAgB,IACrCw5B,EAAK+6D,SAAS,CAAE83D,IAAK,CAAC7yH,EAAKx5B,MAAMqsJ,IAAI,GAAI7yH,EAAKx5B,MAAMqsJ,IAAI,GAAI30I,IAC9D,I,EAINu4C,OAAOz2B,GACL,MAAMx5B,MAAEA,EAAKm8B,IAAEA,GAAQ3C,GACjB8xH,YAAEA,EAAWC,oBAAEA,GAAwB/xH,EAAK30B,QAE5CwnJ,IAAEA,GAAQrsJ,EAEhBw5B,EAAKgzH,sBAAsBxsJ,MAAQqsJ,EAAI,GACvC7yH,EAAKgzH,sBAAsB53D,SAE3B,MAAM83D,EAAa74H,GAAcw4H,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAC/CM,EAAU94H,GAAcw4H,EAAI,GAAIA,EAAI,GAAI,GACxCO,EAAW/4H,GAAcw4H,EAAI,GAAIA,EAAI,GAAI,GAE/C7yH,EAAKgzH,sBAAsBnwH,IAAI,GAAGx/B,MAAMuhD,YACtC,wBACC,OAAMsuG,EAAW,OAAuB,IAAhBA,EAAW,QAA8B,IAAhBA,EAAW,QAE/DlzH,EAAKgzH,sBAAsBnwH,IACxB+T,KAAK,cACLnmC,IACC,mBACC,mBAAkBkyB,EAAIuD,IAAM,UAAY,mBAAmBitH,EAAQ,OACrD,IAAbA,EAAQ,QACS,IAAbA,EAAQ,aAAmBC,EAAS,OAAqB,IAAdA,EAAS,QAC1C,IAAdA,EAAS,SAGXtB,GAAeC,EACjB/xH,EAAK6C,IAAI+T,KAAK,uCAAuCz/B,IAAK,GAAY,IAAT07I,EAAI,GAAa,IACrEf,GACT9xH,EAAK6C,IAAI+T,KAAK,sCAAsC7gC,KAAM,GAAY,IAAT88I,EAAI,GAAa,G,EAGlF/vH,QAAQ9C,GACFA,EAAKgzH,uBAAyBhzH,EAAKgzH,sBAAsBlwH,SAC3D9C,EAAKgzH,sBAAsBlwH,iBAEtB9C,EAAKgzH,qBACd,GC/EFQ,GAAe,CACbhmJ,OAAOwyB,GAEH0D,GAAA,OAAK0zB,MAAM,mDACT1zB,GAAA,OAAK0zB,MAAM,wBACRp3B,EAAK30B,OAAOmd,QAAQ3d,KAAKooB,IACxB,GAAIjtB,MAAMc,QAAQmsB,GAAI,CACpB,IAAIhb,EAAM,yCAMV,OAJAA,GAAOgb,EAAEpoB,KAAKC,GAAO,iFAC2CA,+BAA+BA,8BAC5F0pB,KAAK,IACRvc,GAAO,SACAA,CACT,CACA,OACEyrB,GAAA,OACE0zB,MAAM,6BACN,qBAAoBnkC,EACpB5vB,MAAQ,qBAAoB4vB,KACvB,MAOnBmR,KAAKpE,GACH,SAASyzH,EAAmBxlJ,GAC1B,MAAMymB,EAAMttB,EAAE6G,EAAEjM,QAAQsN,KAAK,sBAC7B0wB,EAAK+6D,SAAS,CACZrmE,OAEJ,CAEAsL,EAAK6C,IAAIh6B,GACP,QACA,2DACA4qJ,GAGFzzH,EAAK0zH,qBAAuB,WAC1B1zH,EAAK6C,IAAI30B,IAAI,QAAS,iCAAkCulJ,E,GAG5D3wH,QAAQ9C,GACFA,EAAK0zH,sBACP1zH,EAAK0zH,8BAEA1zH,EAAK0zH,oBACd,GCpDFC,GAAe,CACbnmJ,OAAMA,IAEFk2B,GAAA,OAAK0zB,MAAM,kEACT1zB,GAAA,OAAK0zB,MAAM,uCACT1zB,GAAA,OAAK0zB,MAAM,+BACX1zB,GAAA,OAAK0zB,MAAM,iCAKnBhzB,KAAKpE,GACH,SAAS4zH,IACP,GAAI5zH,EAAKtzB,aAAc,CACrB,MAAMgoB,IAAEA,EAAGhW,MAAEA,GAAUshB,EAAKtzB,aAC5BszB,EAAK+6D,SAAS,CACZrmE,MACAhW,SAEJ,CACF,CACAshB,EAAK6C,IAAIh6B,GAAG,QAAS,8BAA+B+qJ,GACpD5zH,EAAK6zH,4BAA8B,WACjC7zH,EAAK6C,IAAI30B,IAAI,QAAS,8BAA+B0lJ,E,GAGzDn9F,OAAOz2B,GACLA,EAAK6C,IACF+T,KAAK,2EACLnmC,IAAI,mBAAoBuvB,EAAKtzB,aAAagoB,KAC7CsL,EAAK6C,IACF+T,KAAK,2EACLnmC,IAAI,mBAAoBuvB,EAAKx5B,MAAMkuB,I,EAExCoO,QAAQ9C,GACFA,EAAK6zH,6BACP7zH,EAAK6zH,qCAEA7zH,EAAK6zH,2BACd,GCtCFC,GAAe,CACbtmJ,OAAOwyB,GACL,MAAM+zH,SAAEA,EAAQC,SAAEA,EAAQC,iBAAEA,EAAgBC,aAAEA,EAAYC,eAAEA,EAAcC,cAAEA,GAC1Ep0H,EAAK30B,OACP,OACEq4B,GAAA,OAAK0zB,MAAM,oDACT1zB,GAAA,OAAK0zB,MAAM,yBACR28F,GAAYrwH,GAAA,OAAK0zB,MAAM,0BAA0B88F,GAClDxwH,GAAA,OAAK0zB,MAAM,uDACV48F,GACCtwH,GAAA,OAAK0zB,MAAM,0BACR68F,EACCvwH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,IACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,6BACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,iCAKpB1zB,GAAA,OAAK0zB,MAAM,yBACR28F,GAAYrwH,GAAA,OAAK0zB,MAAM,0BAA0B+8F,GAClDzwH,GAAA,OAAK0zB,MAAM,yDACV48F,GACCtwH,GAAA,OAAK0zB,MAAM,0BACR68F,EACCvwH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,IACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,+BACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,mCAKpB1zB,GAAA,OAAK0zB,MAAM,yBACR28F,GAAYrwH,GAAA,OAAK0zB,MAAM,0BAA0Bg9F,GAClD1wH,GAAA,OAAK0zB,MAAM,wDACV48F,GACCtwH,GAAA,OAAK0zB,MAAM,0BACR68F,EACCvwH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,IACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,8BACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,kC,EAQ1BhzB,KAAKpE,GAyCH,SAASu4D,EAAkBtqF,GACzB,MAAMysB,EAAM,IAAIsF,EAAKx5B,MAAMk0B,KACrBluB,EAAQyoB,SAAS7tB,EAAE6G,EAAEjM,QAAQsN,KAAK,oBAAqB,IAC7D,IAAI9I,EAAQyuB,SAAShnB,EAAEjM,OAAOwE,MAAO,IACjC2zB,OAAOC,MAAM5zB,GACfyH,EAAEjM,OAAOwE,MAAQk0B,EAAIluB,IAGvBhG,EAAQqF,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,IAAKrH,IAClCk0B,EAAIluB,GAAShG,EACbw5B,EAAK+6D,SAAS,CAAErgE,QAClB,CAnDAsF,EAAKq0H,OAASr0H,EAAK2C,IAAI+1D,MAAM72D,OAAO,CAClCh7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,yBAClB/oC,IAAK,EACLD,IAAK,IACLgrF,KAAM,EACNpyF,MAAO,EACPsyF,UAAU,EACVjwF,GAAI,CACFS,OAAOovF,EAAOlyF,GACZw5B,EAAK+6D,SAAS,CAAErgE,IAAK,CAACl0B,EAAOw5B,EAAKx5B,MAAMk0B,IAAI,GAAIsF,EAAKx5B,MAAMk0B,IAAI,KACjE,KAGJsF,EAAKs0H,SAAWt0H,EAAK2C,IAAI+1D,MAAM72D,OAAO,CACpCh7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,2BAClB/oC,IAAK,EACLD,IAAK,IACLgrF,KAAM,EACNpyF,MAAO,EACPsyF,UAAU,EACVjwF,GAAI,CACFS,OAAOovF,EAAOlyF,GACZw5B,EAAK+6D,SAAS,CAAErgE,IAAK,CAACsF,EAAKx5B,MAAMk0B,IAAI,GAAIl0B,EAAOw5B,EAAKx5B,MAAMk0B,IAAI,KACjE,KAGJsF,EAAKu0H,QAAUv0H,EAAK2C,IAAI+1D,MAAM72D,OAAO,CACnCh7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,0BAClB/oC,IAAK,EACLD,IAAK,IACLgrF,KAAM,EACNpyF,MAAO,EACPsyF,UAAU,EACVjwF,GAAI,CACFS,OAAOovF,EAAOlyF,GACZw5B,EAAK+6D,SAAS,CAAErgE,IAAK,CAACsF,EAAKx5B,MAAMk0B,IAAI,GAAIsF,EAAKx5B,MAAMk0B,IAAI,GAAIl0B,IAC9D,KAiBJw5B,EAAK6C,IAAIh6B,GAAG,SAAU,sCAAuC0vF,GAE7Dv4D,EAAKw0H,qBAAuB,WAC1Bx0H,EAAK6C,IAAI30B,IAAI,SAAU,sCAAuCqqF,E,GAGlE9hC,OAAOz2B,GACL,MAAMx5B,MAAEA,EAAK6tJ,OAAEA,EAAMC,SAAEA,EAAQC,QAAEA,GAAYv0H,GAEvCg0H,SAAEA,EAAQC,iBAAEA,GAAqBj0H,EAAK30B,QAEtCqvB,IAAEA,GAAQl0B,EAEhB6tJ,EAAO7tJ,MAAQk0B,EAAI,GACnB45H,EAAS9tJ,MAAQk0B,EAAI,GACrB65H,EAAQ/tJ,MAAQk0B,EAAI,GAEpB25H,EAAOj5D,SACPk5D,EAASl5D,SACTm5D,EAAQn5D,SAERi5D,EAAOxxH,IACJ+T,KAAK,cACLnmC,IACC,mBACC,kCAAiCiqB,EAAI,OAAOA,EAAI,iBAAiBA,EAAI,OAAOA,EAAI,QAErF45H,EAASzxH,IACN+T,KAAK,cACLnmC,IACC,mBACC,+BAA8BiqB,EAAI,UAAUA,EAAI,YAAYA,EAAI,YAAYA,EAAI,QAErF65H,EAAQ1xH,IACL+T,KAAK,cACLnmC,IACC,mBACC,+BAA8BiqB,EAAI,OAAOA,EAAI,eAAeA,EAAI,OAAOA,EAAI,aAG5Es5H,GAAYC,GACdj0H,EAAK6C,IAAI+T,KAAK,oCAAoCz/B,IAAIujB,EAAI,IAC1DsF,EAAK6C,IAAI+T,KAAK,sCAAsCz/B,IAAIujB,EAAI,IAC5DsF,EAAK6C,IAAI+T,KAAK,qCAAqCz/B,IAAIujB,EAAI,KAClDs5H,IACTh0H,EAAK6C,IAAI+T,KAAK,mCAAmC7gC,KAAK2kB,EAAI,IAC1DsF,EAAK6C,IAAI+T,KAAK,qCAAqC7gC,KAAK2kB,EAAI,IAC5DsF,EAAK6C,IAAI+T,KAAK,oCAAoC7gC,KAAK2kB,EAAI,I,EAG/DoI,QAAQ9C,GACFA,EAAKq0H,QAAUr0H,EAAKq0H,OAAOvxH,SAC7B9C,EAAKq0H,OAAOvxH,UAEV9C,EAAKs0H,UAAYt0H,EAAKs0H,SAASxxH,SACjC9C,EAAKs0H,SAASxxH,UAEZ9C,EAAKu0H,SAAWv0H,EAAKu0H,QAAQzxH,SAC/B9C,EAAKu0H,QAAQzxH,iBAGR9C,EAAKq0H,cACLr0H,EAAKs0H,gBACLt0H,EAAKu0H,QAERv0H,EAAKw0H,sBAAsBx0H,EAAKw0H,8BAC7Bx0H,EAAKw0H,oBACd,GC9LFC,GAAe,CACbjnJ,OAAOwyB,GACL,MAAM6xH,YACJA,EAAWC,YACXA,EAAWC,oBACXA,EAAmBmC,aACnBA,EAAYC,eACZA,EAAcC,cACdA,GACEp0H,EAAK30B,OACT,OACEq4B,GAAA,OAAK0zB,MAAM,uDACT1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6B88F,GACxDxwH,GAAA,OAAK0zB,MAAM,6DACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,IACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,yBACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,6BAKpB1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6B+8F,GACxDzwH,GAAA,OAAK0zB,MAAM,+DACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,IACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,2BACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,+BAKpB1zB,GAAA,OAAK0zB,MAAM,4BACRy6F,GAAenuH,GAAA,OAAK0zB,MAAM,6BAA6Bg9F,GACxD1wH,GAAA,OAAK0zB,MAAM,8DACV06F,GACCpuH,GAAA,OAAK0zB,MAAM,6BACR26F,EACCruH,GAAA,SACE6K,KAAK,SACLqqD,KAAK,IACL/qF,IAAI,IACJD,IAAI,MACJwpD,MAAM,0BACN,mBAAiB,MAGnB1zB,GAAA,QAAM0zB,MAAM,8B,EAQ1BhzB,KAAKpE,GAsCH,SAASu4D,EAAkBtqF,GACzB,MAAMysB,EAAM,IAAIsF,EAAKx5B,MAAMk0B,KACrBluB,EAAQyoB,SAAS7tB,EAAE6G,EAAEjM,QAAQsN,KAAK,oBAAqB,IAC7D,IAAI9I,EAAQyuB,SAAShnB,EAAEjM,OAAOwE,MAAO,IACjC2zB,OAAOC,MAAM5zB,GACfyH,EAAEjM,OAAOwE,MAAQk0B,EAAIluB,IAGvBhG,EAAQqF,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,IAAKrH,IAClCk0B,EAAIluB,GAAShG,EACbw5B,EAAK+6D,SAAS,CAAErgE,QAClB,CAhDAsF,EAAK00H,eAAiB10H,EAAK2C,IAAI+1D,MAAM72D,OAAO,CAC1Ch7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,4BAClB/oC,IAAK,EACLD,IAAK,IACLgrF,KAAM,EACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZw5B,EAAK+6D,SAAS,CAAErgE,IAAK,CAACl0B,EAAOw5B,EAAKx5B,MAAMk0B,IAAI,GAAIsF,EAAKx5B,MAAMk0B,IAAI,KACjE,KAGJsF,EAAK20H,iBAAmB30H,EAAK2C,IAAI+1D,MAAM72D,OAAO,CAC5Ch7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,8BAClB/oC,IAAK,EACLD,IAAK,IACLgrF,KAAM,EACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZw5B,EAAK+6D,SAAS,CAAErgE,IAAK,CAACsF,EAAKx5B,MAAMk0B,IAAI,GAAIl0B,EAAOw5B,EAAKx5B,MAAMk0B,IAAI,KACjE,KAGJsF,EAAK40H,gBAAkB50H,EAAK2C,IAAI+1D,MAAM72D,OAAO,CAC3Ch7B,GAAIm5B,EAAK6C,IAAI+T,KAAK,6BAClB/oC,IAAK,EACLD,IAAK,IACLgrF,KAAM,EACNpyF,MAAO,EACPqC,GAAI,CACFS,OAAOovF,EAAOlyF,GACZw5B,EAAK+6D,SAAS,CAAErgE,IAAK,CAACsF,EAAKx5B,MAAMk0B,IAAI,GAAIsF,EAAKx5B,MAAMk0B,IAAI,GAAIl0B,IAC9D,KAiBJw5B,EAAK6C,IAAIh6B,GAAG,SAAU,yCAA0C0vF,GAEhEv4D,EAAK60H,wBAA0B,WAC7B70H,EAAK6C,IAAI30B,IAAI,SAAU,yCAA0CqqF,E,GAGrE9hC,OAAOz2B,GACL,MAAM2C,IAAEA,EAAGn8B,MAAEA,EAAKkuJ,eAAEA,EAAcC,iBAAEA,EAAgBC,gBAAEA,GAAoB50H,GAEpE8xH,YAAEA,EAAWC,oBAAEA,GAAwB/xH,EAAK30B,QAE5CqvB,IAAEA,GAAQl0B,EAEhBkuJ,EAAeluJ,MAAQk0B,EAAI,GAC3Bi6H,EAAiBnuJ,MAAQk0B,EAAI,GAC7Bk6H,EAAgBpuJ,MAAQk0B,EAAI,GAE5Bg6H,EAAet5D,SACfu5D,EAAiBv5D,SACjBw5D,EAAgBx5D,SAEhBs5D,EAAe7xH,IAAI,GAAGx/B,MAAMuhD,YAC1B,wBACC,OAAMlqB,EAAI,OAAOA,EAAI,OAAOA,EAAI,OAEnCi6H,EAAiB9xH,IAAI,GAAGx/B,MAAMuhD,YAC5B,wBACC,OAAMlqB,EAAI,OAAOA,EAAI,OAAOA,EAAI,OAEnCk6H,EAAgB/xH,IAAI,GAAGx/B,MAAMuhD,YAC3B,wBACC,OAAMlqB,EAAI,OAAOA,EAAI,OAAOA,EAAI,OAGnC,MAAMqgB,EAAYpY,EAAIuD,IAAM,UAAY,WAExCwuH,EAAe7xH,IACZ+T,KAAK,cACLnmC,IACC,mBACC,mBAAkBsqC,aAAqBrgB,EAAI,OAAOA,EAAI,iBAAiBA,EAAI,OAAOA,EAAI,QAE3Fi6H,EAAiB9xH,IACd+T,KAAK,cACLnmC,IACC,mBACC,mBAAkBsqC,UAAkBrgB,EAAI,UAAUA,EAAI,YAAYA,EAAI,YAAYA,EAAI,QAE3Fk6H,EAAgB/xH,IACb+T,KAAK,cACLnmC,IACC,mBACC,mBAAkBsqC,UAAkBrgB,EAAI,OAAOA,EAAI,eAAeA,EAAI,OAAOA,EAAI,aAGlFo3H,GAAeC,GACjB/xH,EAAK6C,IAAI+T,KAAK,gCAAgCz/B,IAAIujB,EAAI,IACtDsF,EAAK6C,IAAI+T,KAAK,kCAAkCz/B,IAAIujB,EAAI,IACxDsF,EAAK6C,IAAI+T,KAAK,iCAAiCz/B,IAAIujB,EAAI,KAC9Co3H,IACT9xH,EAAK6C,IAAI+T,KAAK,+BAA+B7gC,KAAK2kB,EAAI,IACtDsF,EAAK6C,IAAI+T,KAAK,iCAAiC7gC,KAAK2kB,EAAI,IACxDsF,EAAK6C,IAAI+T,KAAK,gCAAgC7gC,KAAK2kB,EAAI,I,EAG3DoI,QAAQ9C,GACFA,EAAK00H,gBAAkB10H,EAAK00H,eAAe5xH,SAC7C9C,EAAK00H,eAAe5xH,UAElB9C,EAAK20H,kBAAoB30H,EAAK20H,iBAAiB7xH,SACjD9C,EAAK20H,iBAAiB7xH,UAEpB9C,EAAK40H,iBAAmB50H,EAAK40H,gBAAgB9xH,SAC/C9C,EAAK40H,gBAAgB9xH,iBAGhB9C,EAAK00H,sBACL10H,EAAK20H,wBACL30H,EAAK40H,gBAER50H,EAAK60H,yBAAyB70H,EAAK60H,iCAChC70H,EAAK60H,uBACd,GC/MFC,GAAe,CACbtnJ,OAAMA,IAEFk2B,GAAA,OAAK0zB,MAAM,uDACT1zB,GAAA,OAAK0zB,MAAM,2BAA2B/zD,MAAM,uCAC1CqgC,GAAA,OAAK0zB,MAAM,sCAKnBhzB,KAAKpE,GACH,MAAM2C,IAAEA,GAAQ3C,EAEhB,IACIgL,EACAH,EACAC,EACA0D,EACAC,EAEAsmH,EACAC,EACAC,EAEJ,MAAMpyH,IAAEA,GAAQ7C,EAEhB,SAASk1H,EAAuB93I,EAAGzD,GACjC,IAAIyC,GAAKgB,EAAI23I,EAAY9hJ,MAAQ8hJ,EAAY13H,MACzCnf,GAAKvE,EAAIo7I,EAAY/hJ,KAAO+hJ,EAAYh2H,OAC5C3iB,EAAIvQ,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,EAAGuO,IAC5B8B,EAAI,EAAIrS,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,EAAGqQ,IAEhC8hB,EAAK+6D,SAAS,CAAE83D,IAAK,CAAC7yH,EAAKx5B,MAAMwV,IAAKI,EAAG8B,IAC3C,CAEA,SAASk4B,EAAiBnoC,GACxB,GAAI+8B,EAAsB,OAC1BH,EAAyB,eAAX58B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACrEI,EAAgB3D,EAChBC,EAAyB,eAAX78B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACrEI,EAAgB3D,EAChB,MAAMtH,EAAYp8B,EAAE6G,EAAEjM,QACtBizJ,EAAyBzxH,EAAUz0B,QAAQ,oCAAoC1M,OAAS,EACnF4yJ,IACHD,EAAmBxxH,EAAUz0B,QAAQ,6BAA6B1M,OAAS,GAEzE2yJ,IACFD,EAAclyH,EAAI+T,KAAK,6BAA6B,GAAGnkC,wBACvDyiJ,EAAuBrqH,EAAaC,KAElCmqH,GAA0BD,IAC5BnyH,EACG+T,KAAK,oCACLvP,SAAS,0CAEhB,CACA,SAASmP,EAAgBvoC,IACjB+mJ,GAAoBC,KAC1BzmH,EAA2B,cAAXvgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACtEK,EAA2B,cAAXxgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACtEpgC,EAAE+/B,iBACGhD,IAEHA,GAAU,EACNiqH,IACFF,EAAclyH,EAAI+T,KAAK,6BAA6B,GAAGnkC,2BAGvDuiJ,GAAoBC,IACtBC,EAAuB1mH,EAAeC,GAE1C,CACA,SAASkL,IACP3O,GAAU,GACNgqH,GAAoBC,IACtBpyH,EACG+T,KAAK,oCACLrP,YAAY,2CAEjBytH,GAAmB,EACnBC,GAAyB,CAC3B,CAEA,SAASzjG,IACPxxB,EAAKkB,QAAQ,eAAeu1B,OAAOz2B,EACrC,CAEA,MAAMlD,IACsB,eAA1B6F,EAAI8H,YAAY/yB,QAA0B8kB,KAAaM,kBACnD,CAAEyQ,SAAS,EAAMz7B,SAAS,GAGhCkuB,EAAK6C,IAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACrD6F,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BhX,EAAI95B,GAAG,SAAU2oD,GAEjBxxB,EAAKm1H,sBAAwB,WAC3Bn1H,EAAK6C,IAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACtD6F,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,GAC5BhX,EAAIz0B,IAAI,SAAUsjD,E,GAGtBiF,OAAOz2B,GACL,MAAMx5B,MAAEA,GAAUw5B,GAEZrF,IAAEA,EAAGk4H,IAAEA,GAAQrsJ,EAEf4uJ,EAAep1H,EAAK6C,IAAI+T,KAAK,6BAA6B,GAAGziC,YAC7DkhJ,EAAgBr1H,EAAK6C,IAAI+T,KAAK,6BAA6B,GAAG1iC,aAEpE8rB,EAAK6C,IAAI+T,KAAK,6BAA6BnmC,IAAI,mBAAqB,OAAMkqB,EAAI,kBAE9EqF,EAAK6C,IACF+T,KAAK,oCACLnmC,IAAI,mBAAqB,OAAMkqB,EAAI,OAAgB,IAATA,EAAI,QAAuB,IAATA,EAAI,QAChExkB,UAAW,aAAYi/I,EAAevC,EAAI,SAASwC,GAAiB,EAAIxC,EAAI,S,EAEjF/vH,QAAQ9C,GACFA,EAAKm1H,uBAAuBn1H,EAAKm1H,+BAC9Bn1H,EAAKm1H,qBACd,GCzHFG,GAAe,CACb9nJ,OAAMA,IAEFk2B,GAAA,OAAK0zB,MAAM,uDACT1zB,GAAA,OAAK0zB,MAAM,4BACT1zB,GAAA,OAAK0zB,MAAM,sCAKnBhzB,KAAKpE,GACH,MAAM2C,IAAEA,GAAQ3C,EAEhB,IACIgL,EACAH,EACAC,EACA0D,EACAC,EAEAsmH,EACAC,EACAC,EAEJ,MAAMpyH,IAAEA,GAAQ7C,EAEhB,SAASu1H,EAAuBn4I,EAAGzD,GACjC,IAAIoF,GAAM3B,EAAI23I,EAAY9hJ,MAAQ8hJ,EAAY13H,MAAS,IACnDjhB,GAAKzC,EAAIo7I,EAAY/hJ,KAAO+hJ,EAAYh2H,OAC5ChgB,EAAIlT,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,IAAKkR,IAC9B3C,EAAI,EAAIvQ,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,EAAGuO,IAEhC4jB,EAAK+6D,SAAS,CAAE83D,IAAK,CAAC9zI,EAAG3C,EAAG4jB,EAAKx5B,MAAMqsJ,IAAI,KAC7C,CAEA,SAASz8G,EAAiBnoC,GACxB,GAAI+8B,EAAsB,OAC1BH,EAAyB,eAAX58B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACrEI,EAAgB3D,EAChBC,EAAyB,eAAX78B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACrEI,EAAgB3D,EAChB,MAAMtH,EAAYp8B,EAAE6G,EAAEjM,QACtBizJ,EAAyBzxH,EAAUz0B,QAAQ,oCAAoC1M,OAAS,EACnF4yJ,IACHD,EAAmBxxH,EAAUz0B,QAAQ,6BAA6B1M,OAAS,GAEzE2yJ,IACFD,EAAclyH,EAAI+T,KAAK,6BAA6B,GAAGnkC,wBACvD8iJ,EAAuB1qH,EAAaC,KAElCmqH,GAA0BD,IAC5BnyH,EACG+T,KAAK,oCACLvP,SAAS,0CAEhB,CACA,SAASmP,EAAgBvoC,IACjB+mJ,GAAoBC,KAC1BzmH,EAA2B,cAAXvgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACtEK,EAA2B,cAAXxgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACtEpgC,EAAE+/B,iBACGhD,IAEHA,GAAU,EACNiqH,IACFF,EAAclyH,EAAI+T,KAAK,6BAA6B,GAAGnkC,2BAGvDuiJ,GAAoBC,IACtBM,EAAuB/mH,EAAeC,GAE1C,CACA,SAASkL,IACP3O,GAAU,GACNgqH,GAAoBC,IACtBpyH,EACG+T,KAAK,oCACLrP,YAAY,2CAEjBytH,GAAmB,EACnBC,GAAyB,CAC3B,CAEA,SAASzjG,IACPxxB,EAAKkB,QAAQ,eAAeu1B,OAAOz2B,EACrC,CAEA,MAAMlD,IACsB,eAA1B6F,EAAI8H,YAAY/yB,QAA0B8kB,KAAaM,kBACnD,CAAEyQ,SAAS,EAAMz7B,SAAS,GAGhCkuB,EAAK6C,IAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACrD6F,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BhX,EAAI95B,GAAG,SAAU2oD,GAEjBxxB,EAAKm1H,sBAAwB,WAC3Bn1H,EAAK6C,IAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACtD6F,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,GAC5BhX,EAAIz0B,IAAI,SAAUsjD,E,GAGtBiF,OAAOz2B,GACL,MAAMx5B,MAAEA,GAAUw5B,GAEZ6yH,IAAEA,GAAQrsJ,EAEV4uJ,EAAep1H,EAAK6C,IAAI+T,KAAK,6BAA6B,GAAGziC,YAC7DkhJ,EAAgBr1H,EAAK6C,IAAI+T,KAAK,6BAA6B,GAAG1iC,aAE9DshJ,EAAYn7H,GAAcw4H,EAAI,GAAIA,EAAI,GAAI,GAEhD7yH,EAAK6C,IACF+T,KAAK,oCACLnmC,IACC,mBACC,OAAM+kJ,EAAU,OAAsB,IAAfA,EAAU,QAA6B,IAAfA,EAAU,QAE3Dr/I,UACE,aAAYi/I,GAAgBvC,EAAI,GAAK,WAAWwC,GAAiB,EAAIxC,EAAI,S,EAGhF/vH,QAAQ9C,GACFA,EAAKm1H,uBAAuBn1H,EAAKm1H,+BAC9Bn1H,EAAKm1H,qBACd,GCpHF,IAAAM,GAAe,CACbjoJ,OAAMA,IAEFk2B,GAAA,OAAK0zB,MAAM,iDACT1zB,GAAA,OAAK0zB,MAAM,sBACT1zB,GAAA,OAAKqlH,QAAQ,cAAc1rH,MAAM,MAAM0B,OAAO,OAjBxD,WAEE,IAAI22H,EAAU,GACd,IAAK,IAAI7tJ,EAFK,IAEMA,EAAI,EAAGA,GAAK,EAAG,CACjC,MAAMgZ,EAAShZ,EAAIgE,KAAKE,GAAE,IACpBiQ,EAAO,QAAenU,EAC5B6tJ,GAAY,eAAc,IAAwB,IAAlB7pJ,KAAKgT,IAAIgC,WACvC,IAAwB,IAAlBhV,KAAKC,IAAI+U,wBACK7E,0BACxB,CACA,OAAO05I,CACT,CAOaC,IAEHjyH,GAAA,OAAK0zB,MAAM,8BACX1zB,GAAA,OAAK0zB,MAAM,2BAA2B/zD,MAAM,uCAC1CqgC,GAAA,OAAK0zB,MAAM,uCAMrBhzB,KAAKpE,GACH,MAAM2C,IAAEA,GAAQ3C,EAEhB,IACIgL,EACAH,EACAC,EACA0D,EACAC,EAEAmnH,EACAC,EACAC,EACAf,EACAC,EACAC,EAEJ,MAAMpyH,IAAEA,GAAQ7C,EAEhB,SAAS+1H,EAAsB34I,EAAGzD,GAChC,MAAMq8I,EAAeJ,EAAU3iJ,KAAO2iJ,EAAUv4H,MAAQ,EAClD44H,EAAeL,EAAU5iJ,IAAM4iJ,EAAU72H,OAAS,EAExD,IAAIm3H,EAAuB,IADVrqJ,KAAKyS,MAAM3E,EAAIs8I,EAAc74I,EAAI44I,GAChBnqJ,KAAKE,GAAK,GACxCmqJ,EAAW,IAAGA,GAAY,KAC9BA,EAAW,IAAMA,EACjBl2H,EAAK+6D,SAAS,CAAE/+E,IAAKk6I,GACvB,CACA,SAAShB,EAAuB93I,EAAGzD,GACjC,IAAIyC,GAAKgB,EAAI23I,EAAY9hJ,MAAQ8hJ,EAAY13H,MACzCnf,GAAKvE,EAAIo7I,EAAY/hJ,KAAO+hJ,EAAYh2H,OAC5C3iB,EAAIvQ,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,EAAGuO,IAC5B8B,EAAI,EAAIrS,KAAK+B,IAAI,EAAG/B,KAAKgC,IAAI,EAAGqQ,IAEhC8hB,EAAK+6D,SAAS,CAAE83D,IAAK,CAAC7yH,EAAKx5B,MAAMwV,IAAKI,EAAG8B,IAC3C,CAEA,SAASk4B,EAAiBnoC,GACxB,GAAI+8B,EAAsB,OAC1BH,EAAyB,eAAX58B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACrEI,EAAgB3D,EAChBC,EAAyB,eAAX78B,EAAEsgC,KAAwBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACrEI,EAAgB3D,EAChB,MAAMtH,EAAYp8B,EAAE6G,EAAEjM,QACtB8zJ,EAAuBtyH,EAAUz0B,QAAQ,8BAA8B1M,OAAS,EAChFwzJ,EAAiBryH,EAAUz0B,QAAQ,UAAU1M,OAAS,EACtD4yJ,EAAyBzxH,EAAUz0B,QAAQ,oCAAoC1M,OAAS,EACnF4yJ,IACHD,EAAmBxxH,EAAUz0B,QAAQ,6BAA6B1M,OAAS,GAEzEwzJ,IACFD,EAAY/yH,EAAI+T,KAAK,uBAAuB,GAAGnkC,wBAC/CsjJ,EAAsBlrH,EAAaC,IAEjCkqH,IACFD,EAAclyH,EAAI+T,KAAK,6BAA6B,GAAGnkC,wBACvDyiJ,EAAuBrqH,EAAaC,KAElCmqH,GAA0BD,IAC5BnyH,EACG+T,KAAK,oCACLvP,SAAS,0CAEhB,CACA,SAASmP,EAAgBvoC,IAEnB4nJ,GAAkBC,GAClBd,GAAoBC,KAGxBzmH,EAA2B,cAAXvgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGE,MAAQngC,EAAEmgC,MACtEK,EAA2B,cAAXxgC,EAAEsgC,KAAuBtgC,EAAEigC,cAAc,GAAGG,MAAQpgC,EAAEogC,MACtEpgC,EAAE+/B,iBACGhD,IAEHA,GAAU,EACN8qH,IACFF,EAAY/yH,EAAI+T,KAAK,uBAAuB,GAAGnkC,yBAE7CwiJ,IACFF,EAAclyH,EAAI+T,KAAK,6BAA6B,GAAGnkC,2BAGvDojJ,GAAkBC,IACpBC,EAAsBvnH,EAAeC,IAEnCumH,GAAoBC,IACtBC,EAAuB1mH,EAAeC,GAE1C,CACA,SAASkL,IACP3O,GAAU,GACNgqH,GAAoBC,IACtBpyH,EACG+T,KAAK,oCACLrP,YAAY,2CAEjBsuH,GAAiB,EACjBC,GAAuB,EACvBd,GAAmB,EACnBC,GAAyB,CAC3B,CAEA,SAASzjG,IACPxxB,EAAKkB,QAAQi1H,MAAM1/F,OAAOz2B,EAC5B,CAEA,MAAMlD,IACsB,eAA1B6F,EAAI8H,YAAY/yB,QAA0B8kB,KAAaM,kBACnD,CAAEyQ,SAAS,EAAMz7B,SAAS,GAGhCkuB,EAAK6C,IAAIh6B,GAAG85B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACrD6F,EAAI95B,GAAG,mBAAoB2tC,GAC3B7T,EAAI95B,GAAG,mBAAoB8wC,GAC3BhX,EAAI95B,GAAG,SAAU2oD,GAEjBxxB,EAAKo2H,mBAAqB,WACxBp2H,EAAK6C,IAAI30B,IAAIy0B,EAAI8H,YAAY/yB,MAAO0+B,EAAkBtZ,GACtD6F,EAAIz0B,IAAI,mBAAoBsoC,GAC5B7T,EAAIz0B,IAAI,mBAAoByrC,GAC5BhX,EAAIz0B,IAAI,SAAUsjD,E,GAGtBiF,OAAOz2B,GACL,MAAMx5B,MAAEA,GAAUw5B,GAEZrF,IAAEA,EAAGk4H,IAAEA,GAAQrsJ,EAEf4uJ,EAAep1H,EAAK6C,IAAI+T,KAAK,6BAA6B,GAAGziC,YAC7DkhJ,EAAgBr1H,EAAK6C,IAAI+T,KAAK,6BAA6B,GAAG1iC,aAC9DmiJ,EAAYr2H,EAAK6C,IAAI+T,KAAK,uBAAuB,GAAGziC,YACpDmiJ,EAAgBD,EAAY,EAC5BE,EAAY/vJ,EAAMwV,IAAMnQ,KAAKE,GAAM,IAEnCyqJ,EADaH,EAAY,EACK,EAC9B5T,EACJ6T,EAAgBzqJ,KAAKgT,IAAI03I,IAAaD,EAAgBE,GAAkBA,EACpE9T,EACJ4T,EAAgBzqJ,KAAKC,IAAIyqJ,IAAaD,EAAgBE,GAAkBA,EAC1Ex2H,EAAK6C,IACF+T,KAAK,8BACLnmC,IAAI,mBAAqB,OAAMkqB,EAAI,kBACnCxkB,UAAW,aAAYssI,QAASC,QAEnC1iH,EAAK6C,IAAI+T,KAAK,6BAA6BnmC,IAAI,mBAAqB,OAAMkqB,EAAI,kBAE9EqF,EAAK6C,IACF+T,KAAK,oCACLnmC,IAAI,mBAAqB,OAAMkqB,EAAI,OAAgB,IAATA,EAAI,QAAuB,IAATA,EAAI,QAChExkB,UAAW,aAAYi/I,EAAevC,EAAI,SAASwC,GAAiB,EAAIxC,EAAI,S,EAEjF/vH,QAAQ9C,GACFA,EAAKo2H,oBAAoBp2H,EAAKo2H,4BAC3Bp2H,EAAKo2H,kBACd,G,OC5JF,cAA0Bz1H,GACxB9+B,YAAY8gC,EAAKt3B,QAAM,IAANA,MAAS,IACxBnF,MAAMmF,EAAQ,CAACs3B,IACf,MAAM3C,EAAOj7B,KAIb,IAAI8qE,EAMA2kB,EAKAhxD,EAVJ,GAHAxD,EAAK30B,OAAStJ,GAAO,GAAI4gC,EAAIt3B,OAAOorJ,YAAaprJ,GAG7C20B,EAAK30B,OAAOykE,cACdD,EAAezoE,EAAE44B,EAAK30B,OAAOykE,aACD,IAAxBD,EAAaxtE,QAAc,OAAO29B,EA0CxC,SAASg/D,IACPh/D,EAAKgD,MACP,CACA,SAASgnE,EAAa/7F,GACpBA,EAAE+/B,gBACJ,CACA,SAAS0oH,IACP12H,EAAKgD,MACP,CACA,SAASknE,EAAYj8F,GACnB,GAAI+xB,EAAKmxC,YAAcnxC,EAAK30B,OAAQ,OACpC,GAA2B,SAAvB20B,EAAK30B,OAAO2gD,OAAmB,OACnC,MAAM2qG,EAAiBvvJ,EAAE6G,EAAEjM,QACtBg+B,EAAK4vC,SAAU5vC,EAAKoqE,UACrBusD,EAAe5nJ,QAAQ,uBAAuB1M,QAC9Cs0J,EAAe5nJ,QAAQ,8CAA8C1M,SACrEmyF,GAAYA,EAASnyF,OAAS,EAE9Bs0J,EAAe,KAAOniE,EAAS,IACmB,IAAlDmiE,EAAe5nJ,QAAQ,gBAAgB1M,QAEvC29B,EAAKsD,QAEiD,IAA/Cl8B,EAAE6G,EAAEjM,QAAQ+M,QAAQ,gBAAgB1M,QAC7C29B,EAAKsD,SAET,CAsCA,OAtGItD,EAAK30B,OAAOkpF,UACdC,EAAWptF,EAAE44B,EAAK30B,OAAOkpF,UAIvBv0D,EAAK30B,OAAO43B,WACdO,EAAYp8B,EAAE44B,EAAK30B,OAAO43B,WAG5BlhC,GAAOi+B,EAAM,CACX2C,MACAktC,eACAC,YAAaD,GAAgBA,EAAa,GAC1Cs4B,OAAQt4B,GAAgBA,EAAaxtE,OAAS,EAC9CmyF,WACAD,QAASC,GAAYA,EAAS,GAC9BhxD,YACAP,SAAUO,GAAaA,EAAU,GACjC5gB,aAAa,EACbgtD,QAAQ,EACRt4C,IAAK0I,EAAK30B,OAAOisB,IACjB4J,QAAS,CACP,eAAgB0wH,GAChB,gBAAiBO,GACjBz9H,IAAK09H,GACL,cAAeK,GACf,aAAca,GACd,oBAAqBC,GACrB/qI,QAASgrI,GACT,yBAA0BG,GAC1B,WAAYG,GACZ,cAAeW,GACf,cAAeK,GACf,cAAeQ,GACfa,MAAOV,MAiCX1zJ,GAAOi+B,EAAM,CACXwqE,oBACExqE,EAAKw0D,SAAS3rF,GAAG,QAASm2F,GACtBh/D,EAAK30B,OAAOo/F,gBACdzqE,EAAKw0D,SAAS3rF,GAAG,kBAAmBmhG,GAChChqE,EAAKw0D,SAAS,KAChBx0D,EAAKw0D,SAAS,GAAG+B,oBAAqB,G,EAI5CmU,oBACE1qE,EAAKw0D,SAAStmF,IAAI,QAAS8wF,GACvBh/D,EAAK30B,OAAOo/F,gBACdzqE,EAAKw0D,SAAStmF,IAAI,kBAAmB87F,GACjChqE,EAAKw0D,SAAS,WACTx0D,EAAKw0D,SAAS,GAAG+B,mB,EAI9BqgE,qBACE52H,EAAKwD,UAAU36B,GAAG,QAAS6tJ,E,EAE7BG,qBACE72H,EAAKwD,UAAUt1B,IAAI,QAASwoJ,E,EAE9B/rD,mBACEhoE,EAAI95B,GAAG,QAASqhG,E,EAElBU,mBACEjoE,EAAIz0B,IAAI,QAASg8F,EACnB,IAGFlqE,EAAKoE,OAEEpE,CACT,CAEA,QAAIgU,GACF,MAAMwgD,SAAEA,EAAQhxD,UAAEA,EAASb,IAAEA,EAAGt3B,OAAEA,GAAWtG,KAC7C,IAAIivC,EAaJ,OAZI3oC,EAAO2oC,KACTA,EAAO3oC,EAAO2oC,MAEVwgD,IACFxgD,EAAOwgD,EAASxlF,QAAQ,SAAS3M,QAAUmyF,EAASxlF,QAAQ,SAAS,GAAG6iD,SAErE7d,GAAQxQ,IACXwQ,EAAOxQ,EAAUx0B,QAAQ,SAAS3M,QAAUmhC,EAAUx0B,QAAQ,SAAS,GAAG6iD,SAGzE7d,IAAMA,EAAOrR,EAAIoR,MAAM6d,MAErB5d,CACT,CAEA6G,eACE,MAAM7a,EAAOj7B,KACbi7B,EAAK82H,cAAgB92H,EAAK82H,cAAcr7H,KAAKuE,GACzCA,EAAK30B,OAAOyrJ,eACd92H,EAAK2C,IAAI95B,GAAG,SAAUm3B,EAAK82H,cAE/B,CAEAh1F,eACE,MAAM9hC,EAAOj7B,KACTi7B,EAAK30B,OAAOyrJ,eACd92H,EAAK2C,IAAIz0B,IAAI,SAAU8xB,EAAK82H,cAEhC,CAEAA,gBACE,MAAM92H,EAAOj7B,KACb,IAAKi7B,EAAK4vC,SAAW5vC,EAAK6C,KAAO7C,EAAKmoE,OAAQ,OAC9C,MAAMz6B,EAAiB1tC,EAAK6C,IAAI+T,KAAK,iBACrC,IAAK82B,EAAerrE,OAAQ,OAC5B,MAAMoT,aAAEA,EAAYvB,aAAEA,GAAiBw5D,EAAe,GAClDj4D,GAAgBvB,EAClBw5D,EAAermC,SAAS,0BAExBqmC,EAAenmC,YAAY,yBAE/B,CAEA0mE,YACE,MAAMjuE,EAAOj7B,KACRi7B,EAAKw0D,UACNx0D,EAAK30B,OAAOo/F,eAAezqE,EAAKw0D,SAASznF,KAAK,YAAY,EAChE,CAEAgqJ,eACE,MACMp0H,IAAEA,EAAGwa,MAAEA,EAAK9xC,OAAEA,GADPtG,MAEPinD,OAAEA,EAAMgrG,YAAEA,GAAgB3rJ,EAC1BuyB,EAASN,KACf,OAAI6f,GAASA,EAAM5O,KAAa4O,EAAM5O,KACvB,SAAXyd,EAA0BA,EALjBjnD,KAMJojG,OAAe,KACpBvqE,EAAOxC,IACFwC,EAAOM,KAAO,UAAY84H,EAE/Br0H,EAAItF,OAAS,IACR,UAGF25H,CACT,CAEAh6D,cACE,MAAMh9D,EAAOj7B,MACPyB,MAAEA,GAAUw5B,EAClB,OAAIA,EAAK30B,OAAO2xF,YACPh9D,EAAK30B,OAAO2xF,YAAY71F,KAAK64B,EAAMx5B,GAErCA,EAAMkuB,GACf,CAGAuiI,kBAAkBtwJ,GAChB,MAAO,CACLkF,KAAKoX,MAAe,GAATtc,EAAI,IAAW,GAC1BkF,KAAKoX,MAAe,IAATtc,EAAI,IAAa,IAC5BkF,KAAKoX,MAAe,IAATtc,EAAI,IAAa,IAEhC,CAEAo0F,SAASv0F,EAAY0wJ,QAAP,IAAL1wJ,MAAQ,SAAiB,IAAb0wJ,OAAgB,GACnC,MAAMl3H,EAAOj7B,KACb,QAAqB,IAAVyB,EAAuB,OAElC,IAAIkuB,IAAEA,EAAGgG,IAAEA,EAAGC,IAAEA,EAAGk4H,IAAEA,EAAGn0I,MAAEA,EAAQ,EAAC1C,IAAEA,EAAG+Z,KAAEA,EAAIohI,KAAEA,GAASn3H,EAAKx5B,OAAS,GAEvE,MAAM4wJ,EAAkBp3H,EAAKx5B,QAAWw5B,EAAKx5B,QAAUw5B,EAAK30B,OAAO7E,MACnE,IAAIs1F,EAiBJ,GAhBAh6F,OAAOI,KAAKsE,GAAOrE,SAASiM,IAC1B,IAAK4xB,EAAKx5B,YAAkC,IAAlBw5B,EAAKx5B,MAAM4H,GAEnC,YADA0tF,GAAe,GAGjB,MAAMxlE,EAAI9vB,EAAM4H,GACZpI,MAAMc,QAAQwvB,GAChBA,EAAEn0B,SAAQ,CAACk1J,EAAM76D,KACX66D,IAASr3H,EAAKx5B,MAAM4H,GAAGouF,KACzBV,GAAe,EACjB,IAEOxlE,IAAM0J,EAAKx5B,MAAM4H,KAC1B0tF,GAAe,EACjB,IAEGA,EAAL,CAEA,GAAIt1F,EAAMk0B,KAAOl0B,EAAMuvB,KAAM,CAC3B,MAAOzT,EAAGD,EAAGnE,EAAGpW,EAAI4W,GAASlY,EAAMk0B,KAAOl0B,EAAMuvB,KAChD2E,EAAM,CAACpY,EAAGD,EAAGnE,GACbwW,EAAMoF,MAAiBY,GACvBC,EAAMZ,MAAiBW,GACvBm4H,EAAMr4H,MAAiBG,GACvBA,EAAMqF,EAAKi3H,kBAAkBt8H,GAC7Bk4H,EAAM7yH,EAAKi3H,kBAAkBpE,GAC7B72I,EAAM62I,EAAI,GACVn0I,EAAQ5W,EACRiuB,EAAO,CAAC2E,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI5yB,GAChCqvJ,EAAO,CAACx8H,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI7yB,EAClC,CAEA,GAAItB,EAAMm0B,KAAOn0B,EAAM2wJ,KAAM,CAC3B,MAAOp4I,EAAG3C,EAAG0Z,EAAGhuB,EAAI4W,GAASlY,EAAMm0B,KAAOn0B,EAAM2wJ,KAChDx8H,EAAM,CAAC5b,EAAG3C,EAAG0Z,GACb4E,EAAMV,MAAiBW,GACvBjG,EAAMoF,MAAiBY,GACvBm4H,EAAMr4H,MAAiBG,GACvBA,EAAMqF,EAAKi3H,kBAAkBt8H,GAC7Bk4H,EAAM7yH,EAAKi3H,kBAAkBpE,GAC7B72I,EAAM62I,EAAI,GACVn0I,EAAQ5W,EACRiuB,EAAO,CAAC2E,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI5yB,GAChCqvJ,EAAO,CAACx8H,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI7yB,EAClC,CAEA,GAAItB,EAAMqsJ,IAAK,CACb,MAAO9zI,EAAG3C,EAAG8B,EAAGpW,EAAI4W,GAASlY,EAAMqsJ,IACnCA,EAAM,CAAC9zI,EAAG3C,EAAG8B,GACbyc,EAAMN,MAAiBw4H,GACvBn4H,EAAMV,MAAiBW,GACvBjG,EAAMoF,MAAiBY,GACvBC,EAAMqF,EAAKi3H,kBAAkBt8H,GAC7Bk4H,EAAM7yH,EAAKi3H,kBAAkBpE,GAC7B72I,EAAM62I,EAAI,GACVn0I,EAAQ5W,EACRiuB,EAAO,CAAC2E,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI5yB,GAChCqvJ,EAAO,CAACx8H,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI7yB,EAClC,CAwBA,GAtBItB,EAAMkuB,MACRgG,EAAMf,GAAcnzB,EAAMkuB,KAC1BA,EAAMoF,MAAiBY,GACvBC,EAAMZ,MAAiBW,GACvBm4H,EAAMr4H,MAAiBG,GACvBA,EAAMqF,EAAKi3H,kBAAkBt8H,GAC7Bk4H,EAAM7yH,EAAKi3H,kBAAkBpE,GAC7B72I,EAAM62I,EAAI,GACV98H,EAAO,CAAC2E,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIhc,GAChCy4I,EAAO,CAACx8H,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIjc,SAGP,IAAhBlY,EAAMkY,QACfA,EAAQlY,EAAMkY,WACK,IAARgc,IACT3E,EAAO,CAAC2E,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIhc,SAEf,IAARic,IACTw8H,EAAO,CAACx8H,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIjc,UAIX,IAAdlY,EAAMwV,IAAqB,CACpC,MAAO+C,EAAG3C,EAAG0Z,GAAK6E,EAClBA,EAAM,CAACn0B,EAAMwV,IAAKI,EAAG0Z,GACrB+8H,EAAMr4H,MAAiBG,GACvBD,EAAMV,MAAiBW,GACvBjG,EAAMoF,MAAiBY,GACvBC,EAAMqF,EAAKi3H,kBAAkBt8H,GAC7Bk4H,EAAM7yH,EAAKi3H,kBAAkBpE,GAC7B72I,EAAM62I,EAAI,GACV98H,EAAO,CAAC2E,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIhc,GAChCy4I,EAAO,CAACx8H,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIjc,EAClC,CACAshB,EAAKx5B,MAAQ,CACXkuB,MACAhW,QACA1C,MACA0e,MACAC,MACAk4H,MACA98H,OACAohI,QAEGn3H,EAAKtzB,eAAcszB,EAAKtzB,aAAe3K,GAAO,GAAIi+B,EAAKx5B,QAC5Dw5B,EAAK2vE,YAAYynD,GACbp3H,EAAK4vC,QAAUsnF,GACjBl3H,EAAKk3H,eA3FY,CA6FrB,CAEAh7D,WAEE,OADan3F,KACDyB,KACd,CAEAmpG,YAAY2nD,QAAU,IAAVA,OAAa,GACvB,MAAMt3H,EAAOj7B,MACPyvF,SAAEA,EAAQhuF,MAAEA,EAAKg9B,UAAEA,GAAcxD,EACvC,GAAIwD,GAAaxD,EAAK30B,OAAOksJ,2BAA4B,CACvD,MAAMxhI,KAAEA,GAASvvB,EACjBg9B,EAAU/yB,IAAI,mBAAqB,QAAOslB,EAAKvB,KAAK,SACtD,CAKA,GAJI8iI,GACFt3H,EAAKK,KAAK,kCAAmCL,EAAMx5B,GAGjDguF,GAAYA,EAASnyF,OAAQ,CAC/B,MAAM8xE,EAAan0C,EAAKg9D,YAAYx2F,GAChCguF,GAAYA,EAASnyF,SACvBmyF,EAASr9E,IAAIg9D,GACTmjF,GACF9iE,EAAS5rF,QAAQ,UAGvB,CACF,CAEAsuJ,gBACE,MAAMl3H,EAAOj7B,MACPm8B,QAAEA,GAAYlB,EACpBA,EAAK30B,OAAO61B,QAAQ/+B,SAASga,IACV,iBAANA,GAAkB+kB,EAAQ/kB,IAAM+kB,EAAQ/kB,GAAGs6C,OACpDv1B,EAAQ/kB,GAAGs6C,OAAOz2B,GACT7jB,GAAKA,EAAEs6C,QAChBt6C,EAAEs6C,OAAOz2B,EACX,GAEJ,CAEAy2B,SACe1xD,KACRmyJ,eACP,CAEAM,eACE,MAAMx3H,EAAOj7B,MACPsG,OAAEA,EAAM61B,QAAEA,GAAYlB,EAC5B,IAAIz4B,EAAO,GAUX,OARA8D,EAAO61B,QAAQ/+B,SAASga,IACL,iBAANA,GAAkB+kB,EAAQ/kB,IAAM+kB,EAAQ/kB,GAAG3O,OACpDjG,GAAQ25B,EAAQ/kB,GAAG3O,OAAOwyB,GACjB7jB,GAAKA,EAAE3O,SAChBjG,GAAQ4U,EAAE3O,OAAOwyB,GACnB,IAGKz4B,CACT,CAEAghJ,eACE,MAAMvoH,EAAOj7B,KACb,GAAIi7B,EAAK30B,OAAOk9I,aACd,OAAOvoH,EAAK30B,OAAOk9I,aAAaphJ,KAAK64B,EAAMA,GAE7C,MAAMgsB,OAAEA,EAAMyrG,gBAAEA,EAAeC,mBAAEA,EAAkBC,gBAAEA,GAAoB33H,EAAK30B,OAC9E,OACEq4B,GAAA,OAAK0zB,MAAM,UACT1zB,GAAA,OAAK0zB,MAAM,cACX1zB,GAAA,OAAK0zB,MAAM,wBACG,SAAXpL,GACCtoB,GAAA,OAAK0zB,MAAM,QACT1zB,GAAA,KAAG0zB,MAAM,aACP1zB,GAAA,KAAG0zB,MAAM,mBACT1zB,GAAA,QAAM0zB,MAAM,aAAasgG,KAI/Bh0H,GAAA,OAAK0zB,MAAM,SAASqgG,GACR,SAAXzrG,GACCtoB,GAAA,OAAK0zB,MAAM,SACT1zB,GAAA,KAAG0zB,MAAM,mBAAmB,aAAW,uBACpCugG,KAOf,CAEAtjD,gBACE,MAAMr0E,EAAOj7B,KACb,OAAIi7B,EAAK30B,OAAOgpG,cACPr0E,EAAK30B,OAAOgpG,cAAcltG,KAAK64B,EAAMA,GAG5C0D,GAAA,OAAK0zB,MAAM,uBACT1zB,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,OAAK0zB,MAAM,SACX1zB,GAAA,OAAK0zB,MAAM,SACT1zB,GAAA,KACE0zB,MAAM,iCACN,aAAW,4BACX,eAAa,yBAEZp3B,EAAK30B,OAAO+oG,oBAMzB,CAEAI,eACE,MACM5iC,SAAEA,EAAQgmF,eAAEA,GADL7yJ,KAC6BsG,OAC1C,OACEq4B,GAAA,OACE0zB,MAAQ,oCACNwgG,EAAiB,+BAAiC,MAChDhmF,GAAY,MANP7sE,KAQHyyJ,eAGZ,CAEAnyD,cACE,MAAMrlE,EAAOj7B,MACP6sE,SAAEA,EAAQimF,aAAEA,EAAYD,eAAEA,GAAmB53H,EAAK30B,OACxD,OACEq4B,GAAA,OACE0zB,MAAQ,qDACNwgG,EAAiB,+BAAiC,MAChDhmF,GAAY,MAEfimF,GAAgB73H,EAAKq0E,gBACtB3wE,GAAA,OAAK0zB,MAAM,qBACT1zB,GAAA,OAAK0zB,MAAM,gBAAgBp3B,EAAKw3H,iBAIxC,CAEA/+E,gBACE,MAAMz4C,EAAOj7B,MACP6sE,SAAEA,EAAQkmF,eAAEA,EAAcF,eAAEA,GAAmB53H,EAAK30B,OAC1D,OACEq4B,GAAA,OAAK0zB,MAAQ,gCAA+Bwa,GAAY,MACtDluC,GAAA,OAAK0zB,MAAM,iBACT1zB,GAAA,OAAK0zB,MAAQ,iBAAewgG,EAAiB,+BAAiC,KAC3EE,GAAkB93H,EAAKq0E,gBACxB3wE,GAAA,OAAK0zB,MAAM,gBAAgBp3B,EAAKw3H,kBAK1C,CAEAtyD,cACE,MAAMllE,EAAOj7B,MACP6sE,SAAEA,EAAQmmF,YAAEA,EAAWH,eAAEA,GAAmB53H,EAAK30B,OACvD,OACEq4B,GAAA,OAAK0zB,MAAQ,4BAA2Bwa,GAAY,MAClDluC,GAAA,OAAK0zB,MAAM,QACR2gG,GAAe/3H,EAAKuoH,eACrB7kH,GAAA,OAAK0zB,MAAQ,iBAAewgG,EAAiB,+BAAiC,KAC5El0H,GAAA,OAAK0zB,MAAM,gBAAgBp3B,EAAKw3H,kBAK1C,CAEA7yD,aACE,MAAM3kE,EAAOj7B,MACP6sE,SAAEA,EAAQgmF,eAAEA,GAAmB53H,EAAK30B,OAC1C,OACEq4B,GAAA,OAAK0zB,MAAQ,0BAAyBwa,GAAY,KAAM,YAAU,qBAC/D5xC,EAAKuoH,eACN7kH,GAAA,OAAK0zB,MAAQ,iBAAewgG,EAAiB,+BAAiC,KAC5El0H,GAAA,OAAK0zB,MAAM,gBAAgBp3B,EAAKw3H,iBAIxC,CAGAhqJ,SACE,MAAMwyB,EAAOj7B,MACPsG,OAAEA,GAAW20B,EACnB,GAAI30B,EAAOmC,OAAQ,OAAOnC,EAAOmC,OAAOrG,KAAK64B,GAC7C,GAAIA,EAAKmoE,OAAQ,OAAOnoE,EAAKw0E,eAC7B,GAAsB,SAAlBnpG,EAAO2gD,OACT,OAAOhsB,EAAK2kE,aAGd,MAAM3nD,EAAYhd,EAAK+2H,eACvB,MAAkB,YAAd/5G,EAAgChd,EAAKy4C,gBACvB,UAAdz7B,EAA8Bhd,EAAKqlE,cACrB,UAAdroD,EAA8Bhd,EAAKklE,mBAAvC,CACF,CAEAn1B,SACE,MAAM/vC,EAAOj7B,MACP6d,YAAEA,EAAWigB,IAAEA,EAAGF,IAAEA,EAAG6xD,SAAEA,EAAQ2T,OAAEA,EAAM3hG,MAAEA,EAAK6E,OAAEA,EAAM61B,QAAEA,GAAYlB,EAC5EA,EAAKoqE,SAAU,EACfpqE,EAAK4vC,QAAS,EACd5vC,EAAKu2E,SAAU,EAGfv2E,EAAK6a,eAELxvC,EAAO61B,QAAQ/+B,SAASga,IACL,iBAANA,GAAkB+kB,EAAQ/kB,IAAM+kB,EAAQ/kB,GAAGioB,KACpDlD,EAAQ/kB,GAAGioB,KAAKpE,GACP7jB,GAAKA,EAAEioB,MAChBjoB,EAAEioB,KAAKpE,EACT,IAGF,MAAM2vE,GAAenpG,GAAS6E,EAAO7E,MAGhCoc,EAOMpc,IACTw5B,EAAKtzB,aAAe3K,GAAO,GAAIyE,GAC/Bw5B,EAAK+6D,SAASv0F,GAAO,IARjBA,EAAOw5B,EAAK+6D,SAASv0F,GAChB6E,EAAO7E,MACdw5B,EAAK+6D,SAAS1vF,EAAO7E,OAAO,GAClB6E,EAAO7E,OACjBw5B,EAAK+6D,SAAS,CAAErmE,IAAK,YAAa,GAQlCi7E,GAAa3vE,EAAK2vE,cACtB3vE,EAAKk3H,gBAGD7rJ,EAAOyrJ,eACT92H,EAAK82H,iBAIF3uD,GAAU3T,GAAYA,EAASnyF,QAAwB,OAAdsgC,EAAIxM,OAChDq+D,EAAS5rF,QAAQ,SAGnBo3B,EAAKpd,aAAc,EAGfigB,GACFA,EAAIj6B,QAAQ,oBAEV4rF,GACFA,EAAS5rF,QAAQ,oBAEnBo3B,EAAKK,KAAK,8BAA+BL,EAC3C,CAEAgwC,WACE,MAAMhwC,EAAOj7B,KACbi7B,EAAKu2E,SAAU,EACXv2E,EAAK6C,KACP7C,EAAK6C,IAAIj6B,QAAQ,sBAEfo3B,EAAKw0D,UACPx0D,EAAKw0D,SAAS5rF,QAAQ,sBAExBo3B,EAAKK,KAAK,kCAAmCL,EAC/C,CAEAiwC,UACE,MAAMjwC,EAAOj7B,MACP49B,IAAEA,EAAGt3B,OAAEA,EAAM61B,QAAEA,GAAYlB,EAOjC,GANAA,EAAKu2E,SAAU,EACfv2E,EAAKoqE,SAAU,EAGfpqE,EAAK8hC,eAED9hC,EAAKw0D,SACP,GAAkB,OAAd7xD,EAAIxM,MACN6J,EAAKw0D,SAAS5rF,QAAQ,YACjB,CACL,MAAMmoC,EAAW/Q,EAAKw0D,SAASllF,KAAK,YAC9BknG,EAAWx2E,EAAKw0D,SAASllF,KAAK,YAChCyhC,GAAYylE,GACd7zE,EAAI9qB,MAAMk5B,SAAS/Q,EAAKw0D,SAE5B,CAEFnpF,EAAO61B,QAAQ/+B,SAASga,IACL,iBAANA,GAAkB+kB,EAAQ/kB,IAAM+kB,EAAQ/kB,GAAG2mB,QACpD5B,EAAQ/kB,GAAG2mB,QAAQ9C,GACV7jB,GAAKA,EAAE2mB,SAChB3mB,EAAE2mB,QAAQ9C,EACZ,IAGEA,EAAK6C,KACP7C,EAAK6C,IAAIj6B,QAAQ,qBAEfo3B,EAAKw0D,UACPx0D,EAAKw0D,SAAS5rF,QAAQ,qBAExBo3B,EAAKK,KAAK,gCAAiCL,EAC7C,CAEAkwC,WACE,MAAMlwC,EAAOj7B,KACbi7B,EAAK4vC,QAAS,EACd5vC,EAAKoqE,SAAU,EAEVpqE,EAAKmoE,QACRlxE,IAAS,KACH+I,EAAKmd,OAASnd,EAAKmd,MAAMt2C,IAAMm5B,EAAKmd,MAAMra,UACvC9C,EAAK30B,OAAO07F,gBACf/mE,EAAKmd,MAAMra,kBAGR9C,EAAKmd,KAAK,IAGjBnd,EAAK6C,KACP7C,EAAK6C,IAAIj6B,QAAQ,sBAEfo3B,EAAKw0D,UACPx0D,EAAKw0D,SAAS5rF,QAAQ,sBAExBo3B,EAAKK,KAAK,kCAAmCL,EAC/C,CAEAgD,OACE,MAAMhD,EAAOj7B,MACP49B,IAAEA,EAAGitC,OAAEA,EAAMu4B,OAAEA,EAAM3T,SAAEA,EAAQhxD,UAAEA,EAASn4B,OAAEA,GAAW20B,EAC7D,GAAI4vC,EAAQ,OAEZ,GAAIu4B,EAMF,OALAnoE,EAAK6C,IAAMz7B,EAAE44B,EAAKxyB,UAClBwyB,EAAK6C,IAAI,GAAGm1H,cAAgBh4H,EAC5BA,EAAK6vC,aAAanhE,OAAOsxB,EAAK6C,KAC9B7C,EAAK+vC,cACL/vC,EAAKgwC,WAIP,MAAMioF,EAAqBj4H,EAAKxyB,SAEhC,GAAsB,SAAlBnC,EAAO2gD,OACThsB,EAAKgU,KAAKhN,OAAOyM,SAAS,CACxBnc,IAAK0I,EAAK1I,IACV0a,MAAO,CACLhf,QAASilI,EACTjoH,KAAMhQ,EAAK1I,IACXzuB,GAAI,CACFqkE,aAAaj/D,EAAGi7C,GACdlpB,EAAK6C,IAAMqmB,EAAKrmB,IAAI+T,KAAK,iBACzB5W,EAAK6C,IAAI,GAAGm1H,cAAgBh4H,EAC5BA,EAAK+vC,Q,EAEP3kB,cACEprB,EAAKgwC,U,EAEPq2B,gBACErmE,EAAKiwC,S,EAEPq2B,eACEtmE,EAAKkwC,WACDlwC,EAAK6C,KAAO7C,EAAK6C,IAAI,KACvB7C,EAAK6C,IAAI,GAAGm1H,cAAgB,YACrBh4H,EAAK6C,IAAI,GAAGm1H,cAEvB,UAID,CACL,MAAMh7G,EAAYhd,EAAK+2H,eACvB,IAAI5mF,EAAW9kE,EAAO8kE,SAClBA,UACgB,YAAdnzB,IAA2D,IAAhCra,EAAIt3B,OAAOwoD,QAAQsc,WAAoBA,GAAW,GAC/D,UAAdnzB,IAAuBmzB,GAAW,IAExC,MAAM1hB,EAAc,CAClBxrB,SAAUO,GAAagxD,EACvBnY,WAAYhxE,EAAOqrG,cAAgBlzE,GAAagxD,OAAWnmF,EAC3D2kB,QAASilI,EACT9nF,WACAa,qBAAsB3lE,EAAO2lE,qBAC7BnoE,GAAI,CACFm6B,OACE,MAAMma,EAAQp4C,KACdi7B,EAAKmd,MAAQA,EACbnd,EAAK6C,IACW,YAAdma,GAAyC,UAAdA,EACvBG,EAAMta,IAAI+T,KAAK,iBACfuG,EAAMta,IACZ7C,EAAK6C,IAAI,GAAGm1H,cAAgBh4H,EAC5BA,EAAK+vC,Q,EAEPH,SACE5vC,EAAKgwC,U,EAEP1sC,QACEtD,EAAKiwC,S,EAEP+I,SACEh5C,EAAKkwC,WACDlwC,EAAK6C,KAAO7C,EAAK6C,IAAI,KACvB7C,EAAK6C,IAAI,GAAGm1H,cAAgB,YACrBh4H,EAAK6C,IAAI,GAAGm1H,cAEvB,IAGc,UAAdh7G,IACFyR,EAAY1nD,KAAOsE,EAAOo7F,UAC1Bh4C,EAAYknB,aAAetqE,EAAOq7F,mBAElB,UAAd1pD,IACFyR,EAAY1nD,KAAOsE,EAAO87F,UAC1B14C,EAAYknB,aAAetqE,EAAO+7F,mBAEhC/7F,EAAO07F,gBAAkB/mE,EAAKgU,KAChChU,EAAKgU,KAAKhN,OAAOyM,SAAS,CACxBnc,IAAK0I,EAAK1I,IACV0a,MAAO,CACLhC,KAAMhQ,EAAK1I,IACX0lB,CAACA,GAAYyR,MAIjBzuB,EAAKmd,MAAQxa,EAAIqa,GAAWnb,OAAO4sB,GACnCzuB,EAAKmd,MAAMna,OAEf,CACF,CAEAM,QACE,MAAMtD,EAAOj7B,MACP6qE,OAAEA,EAAMu4B,OAAEA,GAAWnoE,EAC3B,GAAK4vC,EACL,OAAIu4B,GACFnoE,EAAKiwC,eACLjwC,EAAKkwC,iBAGFlwC,EAAK30B,OAAO07F,gBAAkB/mE,EAAKgU,MAAgC,SAAvBhU,EAAK30B,OAAO2gD,OAC3DhsB,EAAKgU,KAAKhN,OAAOniC,OAEjBm7B,EAAKmd,MAAM7Z,QAEf,CAEAc,OACE,MAAMpE,EAAOj7B,KAIb,GAFAi7B,EAAKiuE,YAEDjuE,EAAKmoE,OAGP,OAFAnoE,EAAKgD,YACLhD,EAAKK,KAAK,8BAA+BL,IAItCA,EAAKpd,aAAeod,EAAK30B,OAAO7E,OACnCw5B,EAAK+6D,SAAS/6D,EAAK30B,OAAO7E,OAIxBw5B,EAAKw0D,UACPx0D,EAAKwqE,oBAEHxqE,EAAKwD,WACPxD,EAAK42H,qBAEH52H,EAAK30B,OAAOurE,qBACd52C,EAAK2qE,mBAEP3qE,EAAKK,KAAK,8BAA+BL,EAC3C,CAEA8C,UACE,MAAM9C,EAAOj7B,KACb,GAAIi7B,EAAKmxC,UAAW,OACpB,MAAMtuC,IAAEA,GAAQ7C,EAChBA,EAAKK,KAAK,gDAAiDL,GACvD6C,GAAKA,EAAIj6B,QAAQ,6BAErBo3B,EAAKsD,QAGLtD,EAAK8hC,eACD9hC,EAAKw0D,UACPx0D,EAAK0qE,oBAEH1qE,EAAKwD,WACPxD,EAAK62H,qBAEH72H,EAAK30B,OAAOurE,qBACd52C,EAAK4qE,mBAGH/nE,GAAOA,EAAIxgC,eAAe29B,EAAK6C,IAAI,GAAGm1H,cAC1CjhI,GAAYiJ,GACZA,EAAKmxC,WAAY,CACnB,GCh2BF,IAAA+mF,GAAe,CACb3vJ,KAAM,cACN65B,OAAQ,CACN81H,gBAEFr2H,SACE,MAAMc,EAAM59B,KACZ49B,EAAI8zH,YAAcn0H,GAAmB,CACnCE,gBAAiB,gBACjB3gC,YAAaq2J,GACbv1H,MACAD,QAAS,kBAEXC,EAAI8zH,YAAYnzH,MAAQ,SAAez8B,QAAE,IAAFA,MAAK,iBAC1C,MAAMg8B,EAAMz7B,EAAEP,GACd,GAAmB,IAAfg8B,EAAIxgC,OAAc,OACtB,MAAMo0J,EAAc5zH,EAAI,GAAGm1H,eACtBvB,GAAgBA,IAAgBA,EAAY7mF,QACjD6mF,EAAYnzH,O,GAGhBj4B,OAAQ,CACNorJ,YAAa,CAEXjwJ,MAAO,KACP06B,QAAS,CAAC,SACV1Y,QAAS,CACP,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGJovI,gBAAgB,EAChBd,eAAe,EAEfjF,aAAa,EACbC,aAAa,EACbqG,oBAAoB,EAEpBpE,UAAU,EACVC,UAAU,EACVoE,iBAAiB,EAEjB/F,UAAU,EACVE,kBAAkB,EAElB2B,aAAc,IACdC,eAAgB,IAChBC,cAAe,IACf1B,aAAc,IACdC,oBAAqB,IACrBC,oBAAqB,IACrBN,aAAc,MACdN,eAAgB,IAGhBliF,YAAa,KACb9jB,OAAQ,UACRgrG,YAAa,QACbvwD,WAAW,EACXC,uBAAmBr4F,EACnB84F,WAAW,EACXC,uBAAmB/4F,EACnB2uF,YAAa,KACb/5D,SAAU,KACVs0H,4BAA4B,EAC5BhjE,QAAS,KACTkW,eAAe,EACf7zB,qBAAqB,EACrB8/B,eAAe,EACfmhD,cAAc,EACdC,gBAAgB,EAChB1jD,iBAAkB,OAClB2jD,aAAa,EACbJ,gBAAiB,OACjBF,gBAAiB,QACjBC,mBAAoB,OACpB9lF,SAAU,KACVm1B,gBAAgB,EAChB/yD,KAAM,KACN1c,IAAK,SACL64C,SAAU,KACVa,sBAAsB,EAEtBqjC,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"}