1 line
213 KiB
Plaintext
1 line
213 KiB
Plaintext
{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/selector-engine.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","object","Object","prototype","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","this","domElement","findHandler","events","delegationSelector","values","find","originalHandler","normalizeParameters","originalTypeEvent","delegationFunction","delegation","typeEvent","getTypeEvent","has","addHandler","wrapFunction","relatedTarget","handlers","previousFunction","replace","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","keys","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","normalizeData","value","JSON","parse","decodeURIComponent","_unused","normalizeDataKey","chr","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","enableDismissTrigger","component","method","clickEvent","tagName","getOrCreateInstance","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","_destroyElement","each","data","undefined","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","leftCallback","rightCallback","endCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","eventName","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","getBoundingClientRect","selected","triggerArray","isOpen","selectorElements","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","offset","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","modifiers","options","enabled","_selectMenuItem","openToggles","context","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","dataApiKeydownHandler","clearMenus","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_MOUSEDOWN","className","rootElement","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","trapElement","autofocus","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","htmlElement","handleUpdate","scrollTop","modalBody","_triggerBackdropTransition","currentTarget","_resetAdjustments","isModalOverflowing","scrollHeight","clientHeight","initialOverflowY","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","scroll","Offcanvas","blur","position","uriAttributes","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","innerHTML","extraClass","template","content","html","sanitize","sanitizeFn","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","entries","_setContent","arg","templateElement","_putElementInTemplate","textContent","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","title","delay","container","fallbackPlacements","customClass","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","ownerDocument","_getTipElement","previousHoverState","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","isShown","_getDelegateConfig","attachment","phase","state","triggers","eventIn","eventOut","_fixTitle","originalTitle","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","hash","height","offsetTop","scrollTo","top","threshold","_getRootMargin","IntersectionObserver","_observerCallback","targetElement","id","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","_activateParents","listGroup","item","activeNodes","node","spy","CLASS_DROPDOWN","SELECTOR_DROPDOWN_MENU","SELECTOR_DROPDOWN_ITEM","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":";;;;;sCAOA,MAAMA,QAAU,IACVC,wBAA0B,IAC1BC,eAAiB,gBAGjBC,OAASC,GACTA,MAAAA,EACM,GAAEA,IAGLC,OAAOC,UAAUC,SAASC,KAAKJ,GAAQK,MAAM,eAAe,GAAGC,cAOlEC,OAASC,IACb,GACEA,GAAUC,KAAKC,MAnBH,IAmBSD,KAAKE,gBACnBC,SAASC,eAAeL,IAEjC,OAAOA,GAGHM,YAAcC,IAClB,IAAIC,EAAWD,EAAQE,aAAa,kBAEpC,IAAKD,GAAyB,MAAbA,EAAkB,CACjC,IAAIE,EAAgBH,EAAQE,aAAa,QAMzC,IAAKC,IAAmBA,EAAcC,SAAS,OAASD,EAAcE,WAAW,KAC/E,OAAO,KAILF,EAAcC,SAAS,OAASD,EAAcE,WAAW,OAC3DF,EAAiB,IAAGA,EAAcG,MAAM,KAAK,MAG/CL,EAAWE,GAAmC,MAAlBA,EAAwBA,EAAcI,OAAS,KAG7E,OAAON,GAGHO,uBAAyBR,IAC7B,MAAMC,EAAWF,YAAYC,GAE7B,OAAIC,GACKJ,SAASY,cAAcR,GAAYA,EAGrC,MAGHS,uBAAyBV,IAC7B,MAAMC,EAAWF,YAAYC,GAE7B,OAAOC,EAAWJ,SAASY,cAAcR,GAAY,MAGjDU,iCAAmCX,IACvC,IAAKA,EACH,OAAO,EAIT,IAAIY,mBAAEA,EAAFC,gBAAsBA,GAAoBC,OAAOC,iBAAiBf,GAEtE,MAAMgB,EAA0BC,OAAOC,WAAWN,GAC5CO,EAAuBF,OAAOC,WAAWL,GAG/C,OAAKG,GAA4BG,GAKjCP,EAAqBA,EAAmBN,MAAM,KAAK,GACnDO,EAAkBA,EAAgBP,MAAM,KAAK,GAnFf,KAqFtBW,OAAOC,WAAWN,GAAsBK,OAAOC,WAAWL,KAPzD,GAULO,qBAAuBpB,IAC3BA,EAAQqB,cAAc,IAAIC,MAAMvC,kBAG5BwC,UAAYtC,MACXA,GAA4B,iBAAXA,UAIO,IAAlBA,EAAOuC,SAChBvC,EAASA,EAAO,SAGgB,IAApBA,EAAOwC,UAGjBC,WAAazC,GAEbsC,UAAUtC,GACLA,EAAOuC,OAASvC,EAAO,GAAKA,EAGf,iBAAXA,GAAuBA,EAAO0C,OAAS,EACzC9B,SAASY,cAAcxB,GAGzB,KAGH2C,UAAY5B,IAChB,IAAKuB,UAAUvB,IAAgD,IAApCA,EAAQ6B,iBAAiBF,OAClD,OAAO,EAGT,MAAMG,EAAgF,YAA7Df,iBAAiBf,GAAS+B,iBAAiB,cAE9DC,EAAgBhC,EAAQiC,QAAQ,uBAEtC,IAAKD,EACH,OAAOF,EAGT,GAAIE,IAAkBhC,EAAS,CAC7B,MAAMkC,EAAUlC,EAAQiC,QAAQ,WAChC,GAAIC,GAAWA,EAAQC,aAAeH,EACpC,OAAO,EAGT,GAAgB,OAAZE,EACF,OAAO,EAIX,OAAOJ,GAGHM,WAAapC,IACZA,GAAWA,EAAQyB,WAAaY,KAAKC,gBAItCtC,EAAQuC,UAAUC,SAAS,mBAIC,IAArBxC,EAAQyC,SACVzC,EAAQyC,SAGVzC,EAAQ0C,aAAa,aAAoD,UAArC1C,EAAQE,aAAa,aAG5DyC,eAAiB3C,IACrB,IAAKH,SAAS+C,gBAAgBC,aAC5B,OAAO,KAIT,GAAmC,mBAAxB7C,EAAQ8C,YAA4B,CAC7C,MAAMC,EAAO/C,EAAQ8C,cACrB,OAAOC,aAAgBC,WAAaD,EAAO,KAG7C,OAAI/C,aAAmBgD,WACdhD,EAIJA,EAAQmC,WAINQ,eAAe3C,EAAQmC,YAHrB,MAMLc,KAAO,OAUPC,OAASlD,IACbA,EAAQmD,cAGJC,UAAY,IACZtC,OAAOuC,SAAWxD,SAASyD,KAAKZ,aAAa,qBACxC5B,OAAOuC,OAGT,KAGHE,0BAA4B,GAE5BC,mBAAqBC,IACG,YAAxB5D,SAAS6D,YAENH,0BAA0B5B,QAC7B9B,SAAS8D,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMF,KAAYF,0BACrBE,OAKNF,0BAA0BK,KAAKH,IAE/BA,KAIEI,MAAQ,IAAuC,QAAjChE,SAAS+C,gBAAgBkB,IAEvCC,mBAAqBC,IAnBAP,IAAAA,EAAAA,EAoBN,KACjB,MAAMQ,EAAIb,YAEV,GAAIa,EAAG,CACL,MAAMC,EAAOF,EAAOG,KACdC,EAAqBH,EAAEI,GAAGH,GAChCD,EAAEI,GAAGH,GAAQF,EAAOM,gBACpBL,EAAEI,GAAGH,GAAMK,YAAcP,EACzBC,EAAEI,GAAGH,GAAMM,WAAa,KACtBP,EAAEI,GAAGH,GAAQE,EACNJ,EAAOM,mBA7BQ,YAAxBzE,SAAS6D,YAENH,0BAA0B5B,QAC7B9B,SAAS8D,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMF,KAAYF,0BACrBE,OAKNF,0BAA0BK,KAAKH,IAE/BA,KAuBEgB,QAAUhB,IACU,mBAAbA,GACTA,KAIEiB,uBAAyB,CAACjB,EAAUkB,EAAmBC,GAAoB,KAC/E,IAAKA,EAEH,YADAH,QAAQhB,GAIV,MACMoB,EAAmBlE,iCAAiCgE,GADlC,EAGxB,IAAIG,GAAS,EAEb,MAAMC,EAAU,EAAGC,OAAAA,MACbA,IAAWL,IAIfG,GAAS,EACTH,EAAkBM,oBAAoBlG,eAAgBgG,GACtDN,QAAQhB,KAGVkB,EAAkBhB,iBAAiB5E,eAAgBgG,GACnDG,YAAW,KACJJ,GACH1D,qBAAqBuD,KAEtBE,IAYCM,qBAAuB,CAACC,EAAMC,EAAeC,EAAeC,KAChE,MAAMC,EAAaJ,EAAKzD,OACxB,IAAI8D,EAAQL,EAAKM,QAAQL,GAIzB,OAAe,IAAXI,GACMH,GAAiBC,EAAiBH,EAAKI,EAAa,GAAKJ,EAAK,IAGxEK,GAASH,EAAgB,GAAK,EAE1BC,IACFE,GAASA,EAAQD,GAAcA,GAG1BJ,EAAK1F,KAAKiG,IAAI,EAAGjG,KAAKkG,IAAIH,EAAOD,EAAa,OC1SjDK,eAAiB,qBACjBC,eAAiB,OACjBC,cAAgB,SAChBC,cAAgB,GACtB,IAAIC,SAAW,EACf,MAAMC,aAAe,CACnBC,WAAY,YACZC,WAAY,YAGRC,aAAe,IAAIC,IAAI,CAC3B,QACA,WACA,UACA,YACA,cACA,aACA,iBACA,YACA,WACA,YACA,cACA,YACA,UACA,WACA,QACA,oBACA,aACA,YACA,WACA,cACA,cACA,cACA,YACA,eACA,gBACA,eACA,gBACA,aACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,eACA,SACA,OACA,mBACA,mBACA,QACA,QACA,WAOF,SAASC,YAAYvG,EAASwG,GAC5B,OAAQA,GAAQ,GAAEA,MAAQP,cAAiBjG,EAAQiG,UAAYA,WAGjE,SAASQ,SAASzG,GAChB,MAAMwG,EAAMD,YAAYvG,GAKxB,OAHAA,EAAQiG,SAAWO,EACnBR,cAAcQ,GAAOR,cAAcQ,IAAQ,GAEpCR,cAAcQ,GAGvB,SAASE,iBAAiB1G,EAASqE,GACjC,OAAO,SAASU,EAAQ4B,GAOtB,OANAA,EAAMC,eAAiB5G,EAEnB+E,EAAQ8B,QACVC,aAAaC,IAAI/G,EAAS2G,EAAMK,KAAM3C,GAGjCA,EAAG4C,MAAMjH,EAAS,CAAC2G,KAI9B,SAASO,2BAA2BlH,EAASC,EAAUoE,GACrD,OAAO,SAASU,EAAQ4B,GACtB,MAAMQ,EAAcnH,EAAQoH,iBAAiBnH,GAE7C,IAAK,IAAI+E,OAAEA,GAAW2B,EAAO3B,GAAUA,IAAWqC,KAAMrC,EAASA,EAAO7C,WACtE,IAAK,MAAMmF,KAAcH,EACvB,GAAIG,IAAetC,EAUnB,OANA2B,EAAMC,eAAiB5B,EAEnBD,EAAQ8B,QACVC,aAAaC,IAAI/G,EAAS2G,EAAMK,KAAM/G,EAAUoE,GAG3CA,EAAG4C,MAAMjC,EAAQ,CAAC2B,KAMjC,SAASY,YAAYC,EAAQzC,EAAS0C,EAAqB,MACzD,OAAOvI,OAAOwI,OAAOF,GAClBG,MAAKhB,GAASA,EAAMiB,kBAAoB7C,GAAW4B,EAAMc,qBAAuBA,IAGrF,SAASI,oBAAoBC,EAAmB/C,EAASgD,GACvD,MAAMC,EAAgC,iBAAZjD,EACpB6C,EAAkBI,EAAaD,EAAqBhD,EAC1D,IAAIkD,EAAYC,aAAaJ,GAM7B,OAJKzB,aAAa8B,IAAIF,KACpBA,EAAYH,GAGP,CAACE,EAAYJ,EAAiBK,GAGvC,SAASG,WAAWpI,EAAS8H,EAAmB/C,EAASgD,EAAoBlB,GAC3E,GAAiC,iBAAtBiB,IAAmC9H,EAC5C,OAUF,GAPK+E,IACHA,EAAUgD,EACVA,EAAqB,MAKnBD,KAAqB5B,aAAc,CACrC,MAAMmC,EAAehE,GACZ,SAAUsC,GACf,IAAKA,EAAM2B,eAAkB3B,EAAM2B,gBAAkB3B,EAAMC,iBAAmBD,EAAMC,eAAepE,SAASmE,EAAM2B,eAChH,OAAOjE,EAAGhF,KAAKgI,KAAMV,IAKvBoB,EACFA,EAAqBM,EAAaN,GAElChD,EAAUsD,EAAatD,GAI3B,MAAOiD,EAAYJ,EAAiBK,GAAaJ,oBAAoBC,EAAmB/C,EAASgD,GAC3FP,EAASf,SAASzG,GAClBuI,EAAWf,EAAOS,KAAeT,EAAOS,GAAa,IACrDO,EAAmBjB,YAAYgB,EAAUX,EAAiBI,EAAajD,EAAU,MAEvF,GAAIyD,EAGF,YAFAA,EAAiB3B,OAAS2B,EAAiB3B,QAAUA,GAKvD,MAAML,EAAMD,YAAYqB,EAAiBE,EAAkBW,QAAQ5C,eAAgB,KAC7ExB,EAAK2D,EACTd,2BAA2BlH,EAAS+E,EAASgD,GAC7CrB,iBAAiB1G,EAAS+E,GAE5BV,EAAGoD,mBAAqBO,EAAajD,EAAU,KAC/CV,EAAGuD,gBAAkBA,EACrBvD,EAAGwC,OAASA,EACZxC,EAAG4B,SAAWO,EACd+B,EAAS/B,GAAOnC,EAEhBrE,EAAQ2D,iBAAiBsE,EAAW5D,EAAI2D,GAG1C,SAASU,cAAc1I,EAASwH,EAAQS,EAAWlD,EAAS0C,GAC1D,MAAMpD,EAAKkD,YAAYC,EAAOS,GAAYlD,EAAS0C,GAE9CpD,IAILrE,EAAQiF,oBAAoBgD,EAAW5D,EAAIsE,QAAQlB,WAC5CD,EAAOS,GAAW5D,EAAG4B,WAG9B,SAAS2C,yBAAyB5I,EAASwH,EAAQS,EAAWY,GAC5D,MAAMC,EAAoBtB,EAAOS,IAAc,GAE/C,IAAK,MAAMc,KAAc7J,OAAO8J,KAAKF,GACnC,GAAIC,EAAW3I,SAASyI,GAAY,CAClC,MAAMlC,EAAQmC,EAAkBC,GAChCL,cAAc1I,EAASwH,EAAQS,EAAWtB,EAAMiB,gBAAiBjB,EAAMc,qBAK7E,SAASS,aAAavB,GAGpB,OADAA,EAAQA,EAAM8B,QAAQ3C,eAAgB,IAC/BI,aAAaS,IAAUA,EAGhC,MAAMG,aAAe,CACnBmC,GAAGjJ,EAAS2G,EAAO5B,EAASgD,GAC1BK,WAAWpI,EAAS2G,EAAO5B,EAASgD,GAAoB,IAG1DmB,IAAIlJ,EAAS2G,EAAO5B,EAASgD,GAC3BK,WAAWpI,EAAS2G,EAAO5B,EAASgD,GAAoB,IAG1DhB,IAAI/G,EAAS8H,EAAmB/C,EAASgD,GACvC,GAAiC,iBAAtBD,IAAmC9H,EAC5C,OAGF,MAAOgI,EAAYJ,EAAiBK,GAAaJ,oBAAoBC,EAAmB/C,EAASgD,GAC3FoB,EAAclB,IAAcH,EAC5BN,EAASf,SAASzG,GAClBoJ,EAActB,EAAkBzH,WAAW,KAEjD,QAA+B,IAApBuH,EAAiC,CAE1C,IAAKJ,IAAWA,EAAOS,GACrB,OAIF,YADAS,cAAc1I,EAASwH,EAAQS,EAAWL,EAAiBI,EAAajD,EAAU,MAIpF,GAAIqE,EACF,IAAK,MAAMC,KAAgBnK,OAAO8J,KAAKxB,GACrCoB,yBAAyB5I,EAASwH,EAAQ6B,EAAcvB,EAAkBwB,MAAM,IAIpF,MAAMR,EAAoBtB,EAAOS,IAAc,GAC/C,IAAK,MAAMsB,KAAerK,OAAO8J,KAAKF,GAAoB,CACxD,MAAMC,EAAaQ,EAAYd,QAAQ1C,cAAe,IAEtD,IAAKoD,GAAerB,EAAkB1H,SAAS2I,GAAa,CAC1D,MAAMpC,EAAQmC,EAAkBS,GAChCb,cAAc1I,EAASwH,EAAQS,EAAWtB,EAAMiB,gBAAiBjB,EAAMc,uBAK7E+B,QAAQxJ,EAAS2G,EAAO8C,GACtB,GAAqB,iBAAV9C,IAAuB3G,EAChC,OAAO,KAGT,MAAMiE,EAAIb,YAIV,IAAIsG,EAAc,KACdC,GAAU,EACVC,GAAiB,EACjBC,GAAmB,EALHlD,IADFuB,aAAavB,IAQZ1C,IACjByF,EAAczF,EAAE3C,MAAMqF,EAAO8C,GAE7BxF,EAAEjE,GAASwJ,QAAQE,GACnBC,GAAWD,EAAYI,uBACvBF,GAAkBF,EAAYK,gCAC9BF,EAAmBH,EAAYM,sBAGjC,MAAMC,EAAM,IAAI3I,MAAMqF,EAAO,CAAEgD,QAAAA,EAASO,YAAY,IAGpD,QAAoB,IAATT,EACT,IAAK,MAAMU,KAAOjL,OAAO8J,KAAKS,GAC5BvK,OAAOkL,eAAeH,EAAKE,EAAK,CAC9BE,IAAG,IACMZ,EAAKU,KAkBpB,OAZIN,GACFI,EAAIK,iBAGFV,GACF5J,EAAQqB,cAAc4I,GAGpBA,EAAIJ,kBAAoBH,GAC1BA,EAAYY,iBAGPL,IChTLM,WAAa,IAAIC,IAEvBC,KAAe,CACbC,IAAI1K,EAASmK,EAAKQ,GACXJ,WAAWpC,IAAInI,IAClBuK,WAAWG,IAAI1K,EAAS,IAAIwK,KAG9B,MAAMI,EAAcL,WAAWF,IAAIrK,GAI9B4K,EAAYzC,IAAIgC,IAA6B,IAArBS,EAAYC,KAMzCD,EAAYF,IAAIP,EAAKQ,GAJnBG,QAAQC,MAAO,+EAA8EC,MAAMC,KAAKL,EAAY5B,QAAQ,QAOhIqB,IAAG,CAACrK,EAASmK,IACPI,WAAWpC,IAAInI,IACVuK,WAAWF,IAAIrK,GAASqK,IAAIF,IAG9B,KAGTe,OAAOlL,EAASmK,GACd,IAAKI,WAAWpC,IAAInI,GAClB,OAGF,MAAM4K,EAAcL,WAAWF,IAAIrK,GAEnC4K,EAAYO,OAAOhB,GAGM,IAArBS,EAAYC,MACdN,WAAWY,OAAOnL,KC5CxB,SAASoL,cAAcC,GACrB,GAAc,SAAVA,EACF,OAAO,EAGT,GAAc,UAAVA,EACF,OAAO,EAGT,GAAIA,IAAUpK,OAAOoK,GAAOjM,WAC1B,OAAO6B,OAAOoK,GAGhB,GAAc,KAAVA,GAA0B,SAAVA,EAClB,OAAO,KAGT,GAAqB,iBAAVA,EACT,OAAOA,EAGT,IACE,OAAOC,KAAKC,MAAMC,mBAAmBH,IACrC,MAAMI,GACN,OAAOJ,GAIX,SAASK,iBAAiBvB,GACxB,OAAOA,EAAI1B,QAAQ,UAAUkD,GAAQ,IAAGA,EAAIpM,kBAG9C,MAAMqM,YAAc,CAClBC,iBAAiB7L,EAASmK,EAAKkB,GAC7BrL,EAAQ8L,aAAc,WAAUJ,iBAAiBvB,KAAQkB,IAG3DU,oBAAoB/L,EAASmK,GAC3BnK,EAAQgM,gBAAiB,WAAUN,iBAAiBvB,OAGtD8B,kBAAkBjM,GAChB,IAAKA,EACH,MAAO,GAGT,MAAMkM,EAAa,GACbC,EAASjN,OAAO8J,KAAKhJ,EAAQoM,SAASC,QAAOlC,GAAOA,EAAI9J,WAAW,QAAU8J,EAAI9J,WAAW,cAElG,IAAK,MAAM8J,KAAOgC,EAAQ,CACxB,IAAIG,EAAUnC,EAAI1B,QAAQ,MAAO,IACjC6D,EAAUA,EAAQC,OAAO,GAAGhN,cAAgB+M,EAAQhD,MAAM,EAAGgD,EAAQ3K,QACrEuK,EAAWI,GAAWlB,cAAcpL,EAAQoM,QAAQjC,IAGtD,OAAO+B,GAGTM,iBAAgB,CAACxM,EAASmK,IACjBiB,cAAcpL,EAAQE,aAAc,WAAUwL,iBAAiBvB,QCpD1E,MAAMsC,OAEOC,qBACT,MAAO,GAGEC,yBACT,MAAO,GAGExI,kBACT,MAAM,IAAIyI,MAAM,uEAGlBC,WAAWC,GAIT,OAHAA,EAASzF,KAAK0F,gBAAgBD,GAC9BA,EAASzF,KAAK2F,kBAAkBF,GAChCzF,KAAK4F,iBAAiBH,GACfA,EAGTE,kBAAkBF,GAChB,OAAOA,EAGTC,gBAAgBD,EAAQ9M,GACtB,MAAMkN,EAAa3L,UAAUvB,GAAW4L,YAAYY,iBAAiBxM,EAAS,UAAY,GAE1F,MAAO,IACFqH,KAAK8F,YAAYT,WACM,iBAAfQ,EAA0BA,EAAa,MAC9C3L,UAAUvB,GAAW4L,YAAYK,kBAAkBjM,GAAW,MAC5C,iBAAX8M,EAAsBA,EAAS,IAI9CG,iBAAiBH,EAAQM,EAAc/F,KAAK8F,YAAYR,aACtD,IAAK,MAAMU,KAAYnO,OAAO8J,KAAKoE,GAAc,CAC/C,MAAME,EAAgBF,EAAYC,GAC5BhC,EAAQyB,EAAOO,GACfE,EAAYhM,UAAU8J,GAAS,UJzCrCpM,OADSA,EI0C+CoM,GJxClD,GAAEpM,IAGLC,OAAOC,UAAUC,SAASC,KAAKJ,GAAQK,MAAM,eAAe,GAAGC,cIuClE,IAAK,IAAIiO,OAAOF,GAAeG,KAAKF,GAClC,MAAM,IAAIG,UACP,GAAErG,KAAK8F,YAAYhJ,KAAKwJ,0BAA0BN,qBAA4BE,yBAAiCD,OJ9C3GrO,IAAAA,GKIf,MAAM2O,QAAU,cAMhB,MAAMC,sBAAsBpB,OAC1BU,YAAYnN,EAAS8M,GACnBgB,SAEA9N,EAAU0B,WAAW1B,MAKrBqH,KAAK0G,SAAW/N,EAChBqH,KAAK2G,QAAU3G,KAAKwF,WAAWC,GAE/BrC,KAAKC,IAAIrD,KAAK0G,SAAU1G,KAAK8F,YAAYc,SAAU5G,OAIrD6G,UACEzD,KAAKS,OAAO7D,KAAK0G,SAAU1G,KAAK8F,YAAYc,UAC5CnH,aAAaC,IAAIM,KAAK0G,SAAU1G,KAAK8F,YAAYgB,WAEjD,IAAK,MAAMC,KAAgBlP,OAAOmP,oBAAoBhH,MACpDA,KAAK+G,GAAgB,KAIzBE,eAAe7K,EAAUzD,EAASuO,GAAa,GAC7C7J,uBAAuBjB,EAAUzD,EAASuO,GAG5C1B,WAAWC,GAIT,OAHAA,EAASzF,KAAK0F,gBAAgBD,EAAQzF,KAAK0G,UAC3CjB,EAASzF,KAAK2F,kBAAkBF,GAChCzF,KAAK4F,iBAAiBH,GACfA,EAIS0B,mBAACxO,GACjB,OAAOyK,KAAKJ,IAAI3I,WAAW1B,GAAUqH,KAAK4G,UAGlBO,2BAACxO,EAAS8M,EAAS,IAC3C,OAAOzF,KAAKoH,YAAYzO,IAAY,IAAIqH,KAAKrH,EAA2B,iBAAX8M,EAAsBA,EAAS,MAGnFc,qBACT,OAAOA,QAGEK,sBACT,MAAQ,MAAK5G,KAAKlD,OAGTgK,uBACT,MAAQ,IAAG9G,KAAK4G,WAGFO,iBAACtK,GACf,MAAQ,GAAEA,IAAOmD,KAAK8G,aCtE1B,MAAMO,qBAAuB,CAACC,EAAWC,EAAS,UAChD,MAAMC,EAAc,gBAAeF,EAAUR,YACvCjK,EAAOyK,EAAUxK,KAEvB2C,aAAamC,GAAGpJ,SAAUgP,EAAa,qBAAoB3K,OAAU,SAAUyC,GAK7E,GAJI,CAAC,IAAK,QAAQvG,SAASiH,KAAKyH,UAC9BnI,EAAM2D,iBAGJlI,WAAWiF,MACb,OAGF,MAAMrC,EAAStE,uBAAuB2G,OAASA,KAAKpF,QAAS,IAAGiC,KAC/CyK,EAAUI,oBAAoB/J,GAGtC4J,SCXPzK,OAAO,QACP8J,WAAW,WACXE,YAAa,YAEba,YAAe,iBACfC,aAAgB,kBAChBC,kBAAkB,OAClBC,kBAAkB,OAMxB,MAAMC,cAAcvB,cAEP1J,kBACT,OAAOA,OAITkL,QAGE,GAFmBvI,aAAa0C,QAAQnC,KAAK0G,SAAUiB,aAExCnF,iBACb,OAGFxC,KAAK0G,SAASxL,UAAU2I,OApBJ,QAsBpB,MAAMqD,EAAalH,KAAK0G,SAASxL,UAAUC,SAvBvB,QAwBpB6E,KAAKiH,gBAAe,IAAMjH,KAAKiI,mBAAmBjI,KAAK0G,SAAUQ,GAInEe,kBACEjI,KAAK0G,SAAS7C,SACdpE,aAAa0C,QAAQnC,KAAK0G,SAAUkB,cACpC5H,KAAK6G,UAIeM,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAOJ,MAAML,oBAAoB1H,MAEvC,GAAsB,iBAAXyF,EAAX,CAIA,QAAqB2C,IAAjBD,EAAK1C,IAAyBA,EAAOzM,WAAW,MAAmB,gBAAXyM,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,GAAQzF,WASnBqH,qBAAqBU,MAAO,SAM5BrL,mBAAmBqL,OCrEnB,MAAMjL,OAAO,SACP8J,WAAW,YACXE,YAAa,aACbuB,eAAe,YAEfC,oBAAoB,SACpBC,uBAAuB,4BACvBC,uBAAwB,2BAM9B,MAAMC,eAAejC,cAER1J,kBACT,OAAOA,OAIT4L,SAEE1I,KAAK0G,SAASjC,aAAa,eAAgBzE,KAAK0G,SAASxL,UAAUwN,OAjB7C,WAqBFvB,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAOM,OAAOf,oBAAoB1H,MAEzB,WAAXyF,GACF0C,EAAK1C,SAUbhG,aAAamC,GAAGpJ,SAAUgQ,uBAAsBD,wBAAsBjJ,IACpEA,EAAM2D,iBAEN,MAAM0F,EAASrJ,EAAM3B,OAAO/C,QAAQ2N,wBACvBE,OAAOf,oBAAoBiB,GAEnCD,YAOPhM,mBAAmB+L,QCxDnB,MAAMG,eAAiB,CACrBtI,KAAI,CAAC1H,EAAUD,EAAUH,SAAS+C,kBACzB,GAAGsN,UAAUC,QAAQhR,UAAUiI,iBAAiB/H,KAAKW,EAASC,IAGvEmQ,QAAO,CAACnQ,EAAUD,EAAUH,SAAS+C,kBAC5BuN,QAAQhR,UAAUsB,cAAcpB,KAAKW,EAASC,GAGvDoQ,SAAQ,CAACrQ,EAASC,IACT,GAAGiQ,UAAUlQ,EAAQqQ,UAAUhE,QAAOiE,GAASA,EAAMC,QAAQtQ,KAGtEuQ,QAAQxQ,EAASC,GACf,MAAMuQ,EAAU,GAChB,IAAIC,EAAWzQ,EAAQmC,WAAWF,QAAQhC,GAE1C,KAAOwQ,GACLD,EAAQ5M,KAAK6M,GACbA,EAAWA,EAAStO,WAAWF,QAAQhC,GAGzC,OAAOuQ,GAGTE,KAAK1Q,EAASC,GACZ,IAAI0Q,EAAW3Q,EAAQ4Q,uBAEvB,KAAOD,GAAU,CACf,GAAIA,EAASJ,QAAQtQ,GACnB,MAAO,CAAC0Q,GAGVA,EAAWA,EAASC,uBAGtB,MAAO,IAGTC,KAAK7Q,EAASC,GACZ,IAAI4Q,EAAO7Q,EAAQ8Q,mBAEnB,KAAOD,GAAM,CACX,GAAIA,EAAKN,QAAQtQ,GACf,MAAO,CAAC4Q,GAGVA,EAAOA,EAAKC,mBAGd,MAAO,IAGTC,kBAAkB/Q,GAChB,MAAMgR,EAAa,CACjB,IACA,SACA,QACA,WACA,SACA,UACA,aACA,4BACAC,KAAIhR,GAAa,GAAEA,2BAAiCiR,KAAK,KAE3D,OAAO7J,KAAKM,KAAKqJ,EAAYhR,GAASqM,QAAO8E,IAAO/O,WAAW+O,IAAOvP,UAAUuP,OC/D9EhN,OAAO,QACPgK,YAAY,YACZiD,iBAAoB,sBACpBC,gBAAmB,qBACnBC,eAAkB,oBAClBC,kBAAqB,uBACrBC,gBAAmB,qBACnBC,mBAAqB,QACrBC,iBAAmB,MACnBC,yBAA2B,gBAC3BC,gBAAkB,GAElBlF,UAAU,CACdmF,aAAc,KACdC,cAAe,KACfC,YAAa,MAGTpF,cAAc,CAClBkF,aAAc,kBACdC,cAAe,kBACfC,YAAa,mBAOf,MAAMC,cAAcvF,OAClBU,YAAYnN,EAAS8M,GACnBgB,QACAzG,KAAK0G,SAAW/N,EAEXA,GAAYgS,MAAMC,gBAIvB5K,KAAK2G,QAAU3G,KAAKwF,WAAWC,GAC/BzF,KAAK6K,QAAU,EACf7K,KAAK8K,sBAAwBxJ,QAAQ7H,OAAOsR,cAC5C/K,KAAKgL,eAII3F,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT+J,UACEpH,aAAaC,IAAIM,KAAK0G,SAzDR,aA6DhBuE,OAAO3L,GACAU,KAAK8K,sBAMN9K,KAAKkL,wBAAwB5L,KAC/BU,KAAK6K,QAAUvL,EAAM6L,SANrBnL,KAAK6K,QAAUvL,EAAM8L,QAAQ,GAAGD,QAUpCE,KAAK/L,GACCU,KAAKkL,wBAAwB5L,KAC/BU,KAAK6K,QAAUvL,EAAM6L,QAAUnL,KAAK6K,SAGtC7K,KAAKsL,eACLlO,QAAQ4C,KAAK2G,QAAQ+D,aAGvBa,MAAMjM,GACJU,KAAK6K,QAAUvL,EAAM8L,SAAW9L,EAAM8L,QAAQ9Q,OAAS,EACrD,EACAgF,EAAM8L,QAAQ,GAAGD,QAAUnL,KAAK6K,QAGpCS,eACE,MAAME,EAAYnT,KAAKoT,IAAIzL,KAAK6K,SAEhC,GAAIW,GAlFgB,GAmFlB,OAGF,MAAME,EAAYF,EAAYxL,KAAK6K,QAEnC7K,KAAK6K,QAAU,EAEVa,GAILtO,QAAQsO,EAAY,EAAI1L,KAAK2G,QAAQ8D,cAAgBzK,KAAK2G,QAAQ6D,cAGpEQ,cACMhL,KAAK8K,uBACPrL,aAAamC,GAAG5B,KAAK0G,SAAUwD,mBAAmB5K,GAASU,KAAKiL,OAAO3L,KACvEG,aAAamC,GAAG5B,KAAK0G,SAAUyD,iBAAiB7K,GAASU,KAAKqL,KAAK/L,KAEnEU,KAAK0G,SAASxL,UAAUyQ,IAvGG,mBAyG3BlM,aAAamC,GAAG5B,KAAK0G,SAAUqD,kBAAkBzK,GAASU,KAAKiL,OAAO3L,KACtEG,aAAamC,GAAG5B,KAAK0G,SAAUsD,iBAAiB1K,GAASU,KAAKuL,MAAMjM,KACpEG,aAAamC,GAAG5B,KAAK0G,SAAUuD,gBAAgB3K,GAASU,KAAKqL,KAAK/L,MAItE4L,wBAAwB5L,GACtB,OAAOU,KAAK8K,wBAjHS,QAiHiBxL,EAAMsM,aAlHrB,UAkHyDtM,EAAMsM,aAItEzE,qBAChB,MAAO,iBAAkB3O,SAAS+C,iBAAmBsQ,UAAUC,eAAiB,GCnHpF,MAAMhP,OAAO,WACP8J,WAAW,cACXE,YAAa,eACbuB,eAAe,YAEf0D,iBAAiB,YACjBC,kBAAkB,aAClBC,uBAAyB,IAEzBC,WAAa,OACbC,WAAa,OACbC,eAAiB,OACjBC,gBAAkB,QAElBC,YAAe,oBACfC,WAAc,mBACdC,gBAAiB,sBACjBC,mBAAoB,yBACpBC,mBAAoB,yBACpBC,iBAAoB,wBACpBC,sBAAuB,4BACvBpE,uBAAwB,6BAExBqE,oBAAsB,WACtBvE,oBAAoB,SACpBwE,iBAAmB,QACnBC,eAAiB,oBACjBC,iBAAmB,sBACnBC,gBAAkB,qBAClBC,gBAAkB,qBAElBC,gBAAkB,UAClBC,cAAgB,iBAChBC,qBAAuBF,wBACvBG,kBAAoB,qBACpBC,oBAAsB,uBACtBC,oBAAsB,sCACtBC,mBAAqB,4BAErBC,iBAAmB,CACvBC,UA5BsB,QA6BtBC,WA9BqB,QAiCjBvI,UAAU,CACdwI,SAAU,IACVC,UAAU,EACVC,MAAO,QACPC,MAAM,EACNC,OAAO,EACPC,MAAM,GAGF5I,cAAc,CAClBuI,SAAU,mBACVC,SAAU,UACVE,KAAM,mBACND,MAAO,mBACPE,MAAO,UACPC,KAAM,WAOR,MAAMC,iBAAiB3H,cACrBV,YAAYnN,EAAS8M,GACnBgB,MAAM9N,EAAS8M,GAEfzF,KAAKoO,UAAY,KACjBpO,KAAKqO,eAAiB,KACtBrO,KAAKsO,YAAa,EAClBtO,KAAKuO,aAAe,KACpBvO,KAAKwO,aAAe,KAEpBxO,KAAKyO,mBAAqB7F,eAAeG,QAAQwE,oBAAqBvN,KAAK0G,UAC3E1G,KAAK0O,qBAtDmB,aAwDpB1O,KAAK2G,QAAQqH,MACfhO,KAAK2O,QAKEtJ,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT0M,OACExJ,KAAK4O,OA1FU,QA6FjBC,mBAIOrW,SAASsW,QAAUvU,UAAUyF,KAAK0G,WACrC1G,KAAKwJ,OAITH,OACErJ,KAAK4O,OAtGU,QAyGjBb,QACM/N,KAAKsO,YACPvU,qBAAqBiG,KAAK0G,UAG5B1G,KAAK+O,iBAGPJ,QACE3O,KAAK+O,iBACL/O,KAAKgP,kBAELhP,KAAKoO,UAAYa,aAAY,IAAMjP,KAAK6O,mBAAmB7O,KAAK2G,QAAQkH,UAG1EqB,oBACOlP,KAAK2G,QAAQqH,OAIdhO,KAAKsO,WACP7O,aAAaoC,IAAI7B,KAAK0G,SAAU6F,YAAY,IAAMvM,KAAK2O,UAIzD3O,KAAK2O,SAGPQ,GAAG/Q,GACD,MAAMgR,EAAQpP,KAAKqP,YACnB,GAAIjR,EAAQgR,EAAM9U,OAAS,GAAK8D,EAAQ,EACtC,OAGF,GAAI4B,KAAKsO,WAEP,YADA7O,aAAaoC,IAAI7B,KAAK0G,SAAU6F,YAAY,IAAMvM,KAAKmP,GAAG/Q,KAI5D,MAAMkR,EAActP,KAAKuP,cAAcvP,KAAKwP,cAC5C,GAAIF,IAAgBlR,EAClB,OAGF,MAAMqR,EAAQrR,EAAQkR,EAtJP,OACA,OAuJftP,KAAK4O,OAAOa,EAAOL,EAAMhR,IAG3ByI,UACM7G,KAAKwO,cACPxO,KAAKwO,aAAa3H,UAGpBJ,MAAMI,UAIRlB,kBAAkBF,GAEhB,OADAA,EAAOiK,gBAAkBjK,EAAOoI,SACzBpI,EAGTiJ,qBACM1O,KAAK2G,QAAQmH,UACfrO,aAAamC,GAAG5B,KAAK0G,SAAU8F,iBAAelN,GAASU,KAAK2P,SAASrQ,KAG5C,UAAvBU,KAAK2G,QAAQoH,QACftO,aAAamC,GAAG5B,KAAK0G,SAAU+F,oBAAkB,IAAMzM,KAAK+N,UAC5DtO,aAAamC,GAAG5B,KAAK0G,SAAUgG,oBAAkB,IAAM1M,KAAKkP,uBAG1DlP,KAAK2G,QAAQsH,OAAStD,MAAMC,eAC9B5K,KAAK4P,0BAITA,0BACE,IAAK,MAAMC,KAAOjH,eAAetI,KAAKgN,kBAAmBtN,KAAK0G,UAC5DjH,aAAamC,GAAGiO,EAAKlD,kBAAkBrN,GAASA,EAAM2D,mBAGxD,MAqBM6M,EAAc,CAClBtF,aAAc,IAAMxK,KAAK4O,OAAO5O,KAAK+P,kBAjNpB,SAkNjBtF,cAAe,IAAMzK,KAAK4O,OAAO5O,KAAK+P,kBAjNpB,UAkNlBrF,YAxBkB,KACS,UAAvB1K,KAAK2G,QAAQoH,QAYjB/N,KAAK+N,QACD/N,KAAKuO,cACPyB,aAAahQ,KAAKuO,cAGpBvO,KAAKuO,aAAe1Q,YAAW,IAAMmC,KAAKkP,qBAjNjB,IAiN+DlP,KAAK2G,QAAQkH,aASvG7N,KAAKwO,aAAe,IAAI7D,MAAM3K,KAAK0G,SAAUoJ,GAG/CH,SAASrQ,GACP,GAAI,kBAAkB8G,KAAK9G,EAAM3B,OAAO8J,SACtC,OAGF,MAAMiE,EAAYgC,iBAAiBpO,EAAMwD,KACrC4I,IACFpM,EAAM2D,iBACNjD,KAAK4O,OAAO5O,KAAK+P,kBAAkBrE,KAIvC6D,cAAc5W,GACZ,OAAOqH,KAAKqP,YAAYhR,QAAQ1F,GAGlCsX,2BAA2B7R,GACzB,IAAK4B,KAAKyO,mBACR,OAGF,MAAMyB,EAAkBtH,eAAeG,QA1NnB,UA0N4C/I,KAAKyO,oBAErEyB,EAAgBhV,UAAU2I,OAnOJ,UAoOtBqM,EAAgBvL,gBAAgB,gBAEhC,MAAMwL,EAAqBvH,eAAeG,QAAS,sBAAqB3K,MAAW4B,KAAKyO,oBAEpF0B,IACFA,EAAmBjV,UAAUyQ,IAzOT,UA0OpBwE,EAAmB1L,aAAa,eAAgB,SAIpDuK,kBACE,MAAMrW,EAAUqH,KAAKqO,gBAAkBrO,KAAKwP,aAE5C,IAAK7W,EACH,OAGF,MAAMyX,EAAkBxW,OAAOyW,SAAS1X,EAAQE,aAAa,oBAAqB,IAElFmH,KAAK2G,QAAQkH,SAAWuC,GAAmBpQ,KAAK2G,QAAQ+I,gBAG1Dd,OAAOa,EAAO9W,EAAU,MACtB,GAAIqH,KAAKsO,WACP,OAGF,MAAMtQ,EAAgBgC,KAAKwP,aACrBc,EA/QS,SA+QAb,EACTc,EAAc5X,GAAWmF,qBAAqBkC,KAAKqP,YAAarR,EAAesS,EAAQtQ,KAAK2G,QAAQuH,MAE1G,GAAIqC,IAAgBvS,EAClB,OAGF,MAAMwS,EAAmBxQ,KAAKuP,cAAcgB,GAEtCE,EAAeC,GACZjR,aAAa0C,QAAQnC,KAAK0G,SAAUgK,EAAW,CACpDzP,cAAesP,EACf7E,UAAW1L,KAAK2Q,kBAAkBlB,GAClC7L,KAAM5D,KAAKuP,cAAcvR,GACzBmR,GAAIqB,IAMR,GAFmBC,EAAanE,aAEjB9J,iBACb,OAGF,IAAKxE,IAAkBuS,EAGrB,OAGF,MAAMK,EAAYtP,QAAQtB,KAAKoO,WAC/BpO,KAAK+N,QAEL/N,KAAKsO,YAAa,EAElBtO,KAAKiQ,2BAA2BO,GAChCxQ,KAAKqO,eAAiBkC,EAEtB,MAAMM,EAAuBP,EAAStD,iBAAmBD,eACnD+D,EAAiBR,EAASrD,gBAAkBC,gBAElDqD,EAAYrV,UAAUyQ,IAAImF,GAE1BjV,OAAO0U,GAEPvS,EAAc9C,UAAUyQ,IAAIkF,GAC5BN,EAAYrV,UAAUyQ,IAAIkF,GAa1B7Q,KAAKiH,gBAXoB,KACvBsJ,EAAYrV,UAAU2I,OAAOgN,EAAsBC,GACnDP,EAAYrV,UAAUyQ,IAlTF,UAoTpB3N,EAAc9C,UAAU2I,OApTJ,SAoT8BiN,EAAgBD,GAElE7Q,KAAKsO,YAAa,EAElBmC,EAAalE,cAGuBvO,EAAegC,KAAK+Q,eAEtDH,GACF5Q,KAAK2O,QAIToC,cACE,OAAO/Q,KAAK0G,SAASxL,UAAUC,SAlUV,SAqUvBqU,aACE,OAAO5G,eAAeG,QAAQsE,qBAAsBrN,KAAK0G,UAG3D2I,YACE,OAAOzG,eAAetI,KAAK8M,cAAepN,KAAK0G,UAGjDqI,iBACM/O,KAAKoO,YACP4C,cAAchR,KAAKoO,WACnBpO,KAAKoO,UAAY,MAIrB2B,kBAAkBrE,GAChB,OAAIlP,QAnWe,SAoWVkP,EArWM,OADA,OAEI,SAuWZA,EAzWQ,OACA,OA2WjBiF,kBAAkBlB,GAChB,OAAIjT,QA5WW,SA6WNiT,EA5WU,OACC,QAFL,SAgXRA,EA9Wa,QADD,OAmXCtI,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAOgG,SAASzG,oBAAoB1H,KAAMyF,GAEhD,GAAsB,iBAAXA,GAKX,GAAsB,iBAAXA,EAAqB,CAC9B,QAAqB2C,IAAjBD,EAAK1C,IAAyBA,EAAOzM,WAAW,MAAmB,gBAAXyM,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,WATL0C,EAAKgH,GAAG1J,OAmBhBhG,aAAamC,GAAGpJ,SAAUgQ,uBAAsBgF,qBAAqB,SAAUlO,GAC7E,MAAM3B,EAAStE,uBAAuB2G,MAEtC,IAAKrC,IAAWA,EAAOzC,UAAUC,SAlYP,YAmYxB,OAGFmE,EAAM2D,iBAEN,MAAMgO,EAAW9C,SAASzG,oBAAoB/J,GACxCuT,EAAalR,KAAKnH,aAAa,oBAErC,OAAIqY,GACFD,EAAS9B,GAAG+B,QACZD,EAAS/B,qBAIyC,SAAhD3K,YAAYY,iBAAiBnF,KAAM,UACrCiR,EAASzH,YACTyH,EAAS/B,sBAIX+B,EAAS5H,YACT4H,EAAS/B,wBAGXzP,aAAamC,GAAGnI,OAAQmT,uBAAqB,KAC3C,MAAMuE,EAAYvI,eAAetI,KAAKmN,oBAEtC,IAAK,MAAMwD,KAAYE,EACrBhD,SAASzG,oBAAoBuJ,MAQjCvU,mBAAmByR,UClcnB,MAAMrR,OAAO,WACP8J,WAAW,cACXE,YAAa,eACbuB,eAAe,YAEf+I,aAAc,mBACdC,cAAe,oBACfC,aAAc,mBACdC,eAAgB,qBAChB/I,uBAAwB,6BAExBV,kBAAkB,OAClB0J,oBAAsB,WACtBC,sBAAwB,aACxBC,qBAAuB,YACvBC,2BAA8B,6BAC9BC,sBAAwB,sBAExBC,MAAQ,QACRC,OAAS,SAETC,iBAAmB,uCACnBxJ,uBAAuB,8BAEvBlD,UAAU,CACdqD,QAAQ,EACRsJ,OAAQ,MAGJ1M,cAAc,CAClBoD,OAAQ,UACRsJ,OAAQ,kBAOV,MAAMC,iBAAiBzL,cACrBV,YAAYnN,EAAS8M,GACnBgB,MAAM9N,EAAS8M,GAEfzF,KAAKkS,kBAAmB,EACxBlS,KAAKmS,cAAgB,GAErB,MAAMC,EAAaxJ,eAAetI,KAAKiI,wBAEvC,IAAK,MAAM8J,KAAQD,EAAY,CAC7B,MAAMxZ,EAAWO,uBAAuBkZ,GAClCC,EAAgB1J,eAAetI,KAAK1H,GACvCoM,QAAOuN,GAAgBA,IAAiBvS,KAAK0G,WAE/B,OAAb9N,GAAqB0Z,EAAchY,QACrC0F,KAAKmS,cAAc5V,KAAK8V,GAI5BrS,KAAKwS,sBAEAxS,KAAK2G,QAAQqL,QAChBhS,KAAKyS,0BAA0BzS,KAAKmS,cAAenS,KAAK0S,YAGtD1S,KAAK2G,QAAQ+B,QACf1I,KAAK0I,SAKErD,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT4L,SACM1I,KAAK0S,WACP1S,KAAK2S,OAEL3S,KAAK4S,OAITA,OACE,GAAI5S,KAAKkS,kBAAoBlS,KAAK0S,WAChC,OAGF,IAAIG,EAAiB,GASrB,GANI7S,KAAK2G,QAAQqL,SACfa,EAAiB7S,KAAK8S,uBAAuBf,kBAC1C/M,QAAOrM,GAAWA,IAAYqH,KAAK0G,WACnCkD,KAAIjR,GAAWsZ,SAASvK,oBAAoB/O,EAAS,CAAE+P,QAAQ,OAGhEmK,EAAevY,QAAUuY,EAAe,GAAGX,iBAC7C,OAIF,GADmBzS,aAAa0C,QAAQnC,KAAK0G,SAAU0K,cACxC5O,iBACb,OAGF,IAAK,MAAMuQ,KAAkBF,EAC3BE,EAAeJ,OAGjB,MAAMK,EAAYhT,KAAKiT,gBAEvBjT,KAAK0G,SAASxL,UAAU2I,OA3GA,YA4GxB7D,KAAK0G,SAASxL,UAAUyQ,IA3GE,cA6G1B3L,KAAK0G,SAASwM,MAAMF,GAAa,EAEjChT,KAAKyS,0BAA0BzS,KAAKmS,eAAe,GACnDnS,KAAKkS,kBAAmB,EAExB,MAYMiB,EAAc,SADSH,EAAU,GAAG1M,cAAgB0M,EAAU/Q,MAAM,KAG1EjC,KAAKiH,gBAdY,KACfjH,KAAKkS,kBAAmB,EAExBlS,KAAK0G,SAASxL,UAAU2I,OArHA,cAsHxB7D,KAAK0G,SAASxL,UAAUyQ,IAvHF,WADJ,QA0HlB3L,KAAK0G,SAASwM,MAAMF,GAAa,GAEjCvT,aAAa0C,QAAQnC,KAAK0G,SAAU2K,iBAMRrR,KAAK0G,UAAU,GAC7C1G,KAAK0G,SAASwM,MAAMF,GAAc,GAAEhT,KAAK0G,SAASyM,OAGpDR,OACE,GAAI3S,KAAKkS,mBAAqBlS,KAAK0S,WACjC,OAIF,GADmBjT,aAAa0C,QAAQnC,KAAK0G,SAAU4K,cACxC9O,iBACb,OAGF,MAAMwQ,EAAYhT,KAAKiT,gBAEvBjT,KAAK0G,SAASwM,MAAMF,GAAc,GAAEhT,KAAK0G,SAAS0M,wBAAwBJ,OAE1EnX,OAAOmE,KAAK0G,UAEZ1G,KAAK0G,SAASxL,UAAUyQ,IApJE,cAqJ1B3L,KAAK0G,SAASxL,UAAU2I,OAtJA,WADJ,QAyJpB,IAAK,MAAM1B,KAAWnC,KAAKmS,cAAe,CACxC,MAAMxZ,EAAUU,uBAAuB8I,GAEnCxJ,IAAYqH,KAAK0S,SAAS/Z,IAC5BqH,KAAKyS,0BAA0B,CAACtQ,IAAU,GAI9CnC,KAAKkS,kBAAmB,EASxBlS,KAAK0G,SAASwM,MAAMF,GAAa,GAEjChT,KAAKiH,gBATY,KACfjH,KAAKkS,kBAAmB,EACxBlS,KAAK0G,SAASxL,UAAU2I,OAnKA,cAoKxB7D,KAAK0G,SAASxL,UAAUyQ,IArKF,YAsKtBlM,aAAa0C,QAAQnC,KAAK0G,SAAU6K,kBAKRvR,KAAK0G,UAAU,GAG/CgM,SAAS/Z,EAAUqH,KAAK0G,UACtB,OAAO/N,EAAQuC,UAAUC,SAhLL,QAoLtBwK,kBAAkBF,GAGhB,OAFAA,EAAOiD,OAASpH,QAAQmE,EAAOiD,QAC/BjD,EAAOuM,OAAS3X,WAAWoL,EAAOuM,QAC3BvM,EAGTwN,gBACE,OAAOjT,KAAK0G,SAASxL,UAAUC,SAtLL,uBAsLuC0W,MAAQC,OAG3EU,sBACE,IAAKxS,KAAK2G,QAAQqL,OAChB,OAGF,MAAMhJ,EAAWhJ,KAAK8S,uBAAuBvK,wBAE7C,IAAK,MAAM5P,KAAWqQ,EAAU,CAC9B,MAAMqK,EAAWha,uBAAuBV,GAEpC0a,GACFrT,KAAKyS,0BAA0B,CAAC9Z,GAAUqH,KAAK0S,SAASW,KAK9DP,uBAAuBla,GACrB,MAAMoQ,EAAWJ,eAAetI,KAAKqR,2BAA4B3R,KAAK2G,QAAQqL,QAE9E,OAAOpJ,eAAetI,KAAK1H,EAAUoH,KAAK2G,QAAQqL,QAAQhN,QAAOrM,IAAYqQ,EAASjQ,SAASJ,KAGjG8Z,0BAA0Ba,EAAcC,GACtC,GAAKD,EAAahZ,OAIlB,IAAK,MAAM3B,KAAW2a,EACpB3a,EAAQuC,UAAUwN,OAvNK,aAuNyB6K,GAChD5a,EAAQ8L,aAAa,gBAAiB8O,GAKpBpM,uBAAC1B,GACrB,MAAMkB,EAAU,GAKhB,MAJsB,iBAAXlB,GAAuB,YAAYW,KAAKX,KACjDkB,EAAQ+B,QAAS,GAGZ1I,KAAKkI,MAAK,WACf,MAAMC,EAAO8J,SAASvK,oBAAoB1H,KAAM2G,GAEhD,GAAsB,iBAAXlB,EAAqB,CAC9B,QAA4B,IAAjB0C,EAAK1C,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,UAUbhG,aAAamC,GAAGpJ,SAAUgQ,uBAAsBD,wBAAsB,SAAUjJ,IAEjD,MAAzBA,EAAM3B,OAAO8J,SAAoBnI,EAAMC,gBAAmD,MAAjCD,EAAMC,eAAekI,UAChFnI,EAAM2D,iBAGR,MAAMrK,EAAWO,uBAAuB6G,MAClCwT,EAAmB5K,eAAetI,KAAK1H,GAE7C,IAAK,MAAMD,KAAW6a,EACpBvB,SAASvK,oBAAoB/O,EAAS,CAAE+P,QAAQ,IAASA,YAQ7DhM,mBAAmBuV,UChRnB,MAAMnV,OAAO,WACP8J,WAAW,cACXE,YAAa,eACbuB,eAAe,YAEfoL,aAAa,SACbC,UAAU,MACVC,eAAe,UACfC,iBAAiB,YACjBC,mBAAqB,EAErBvC,aAAc,mBACdC,eAAgB,qBAChBH,aAAc,mBACdC,cAAe,oBACf7I,uBAAwB,6BACxBsL,uBAA0B,+BAC1BC,qBAAwB,6BAExBjM,kBAAkB,OAClBkM,kBAAoB,SACpBC,mBAAqB,UACrBC,qBAAuB,YACvBC,yBAA2B,gBAC3BC,2BAA6B,kBAE7B7L,uBAAuB,4DACvB8L,2BAA8B,GAAE9L,8BAChC+L,cAAgB,iBAChBC,gBAAkB,UAClBC,oBAAsB,cACtBC,uBAAyB,8DAEzBC,cAAgBlY,QAAU,UAAY,YACtCmY,iBAAmBnY,QAAU,YAAc,UAC3CoY,iBAAmBpY,QAAU,aAAe,eAC5CqY,oBAAsBrY,QAAU,eAAiB,aACjDsY,gBAAkBtY,QAAU,aAAe,cAC3CuY,eAAiBvY,QAAU,cAAgB,aAC3CwY,oBAAsB,MACtBC,uBAAyB,SAEzB5P,UAAU,CACd6P,OAAQ,CAAC,EAAG,GACZC,SAAU,kBACVC,UAAW,SACXC,QAAS,UACTC,aAAc,KACdC,WAAW,GAGPjQ,cAAc,CAClB4P,OAAQ,0BACRC,SAAU,mBACVC,UAAW,0BACXC,QAAS,SACTC,aAAc,yBACdC,UAAW,oBAOb,MAAMC,iBAAiBhP,cACrBV,YAAYnN,EAAS8M,GACnBgB,MAAM9N,EAAS8M,GAEfzF,KAAKyV,QAAU,KACfzV,KAAK0V,QAAU1V,KAAK0G,SAAS5L,WAC7BkF,KAAK2V,MAAQ/M,eAAeG,QAAQuL,cAAetU,KAAK0V,SACxD1V,KAAK4V,UAAY5V,KAAK6V,gBAIbxQ,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT4L,SACE,OAAO1I,KAAK0S,WAAa1S,KAAK2S,OAAS3S,KAAK4S,OAG9CA,OACE,GAAI7X,WAAWiF,KAAK0G,WAAa1G,KAAK0S,WACpC,OAGF,MAAMzR,EAAgB,CACpBA,cAAejB,KAAK0G,UAKtB,IAFkBjH,aAAa0C,QAAQnC,KAAK0G,SAAU0K,aAAYnQ,GAEpDuB,iBAAd,CAUA,GANAxC,KAAK8V,gBAMD,iBAAkBtd,SAAS+C,kBAAoByE,KAAK0V,QAAQ9a,QAnFxC,eAoFtB,IAAK,MAAMjC,IAAW,GAAGkQ,UAAUrQ,SAASyD,KAAK+M,UAC/CvJ,aAAamC,GAAGjJ,EAAS,YAAaiD,MAI1CoE,KAAK0G,SAASqP,QACd/V,KAAK0G,SAASjC,aAAa,iBAAiB,GAE5CzE,KAAK2V,MAAMza,UAAUyQ,IAvGD,QAwGpB3L,KAAK0G,SAASxL,UAAUyQ,IAxGJ,QAyGpBlM,aAAa0C,QAAQnC,KAAK0G,SAAU2K,cAAapQ,IAGnD0R,OACE,GAAI5X,WAAWiF,KAAK0G,YAAc1G,KAAK0S,WACrC,OAGF,MAAMzR,EAAgB,CACpBA,cAAejB,KAAK0G,UAGtB1G,KAAKgW,cAAc/U,GAGrB4F,UACM7G,KAAKyV,SACPzV,KAAKyV,QAAQQ,UAGfxP,MAAMI,UAGRqP,SACElW,KAAK4V,UAAY5V,KAAK6V,gBAClB7V,KAAKyV,SACPzV,KAAKyV,QAAQS,SAKjBF,cAAc/U,GAEZ,IADkBxB,aAAa0C,QAAQnC,KAAK0G,SAAU4K,aAAYrQ,GACpDuB,iBAAd,CAMA,GAAI,iBAAkBhK,SAAS+C,gBAC7B,IAAK,MAAM5C,IAAW,GAAGkQ,UAAUrQ,SAASyD,KAAK+M,UAC/CvJ,aAAaC,IAAI/G,EAAS,YAAaiD,MAIvCoE,KAAKyV,SACPzV,KAAKyV,QAAQQ,UAGfjW,KAAK2V,MAAMza,UAAU2I,OA1JD,QA2JpB7D,KAAK0G,SAASxL,UAAU2I,OA3JJ,QA4JpB7D,KAAK0G,SAASjC,aAAa,gBAAiB,SAC5CF,YAAYG,oBAAoB1E,KAAK2V,MAAO,UAC5ClW,aAAa0C,QAAQnC,KAAK0G,SAAU6K,eAActQ,IAGpDuE,WAAWC,GAGT,GAAgC,iBAFhCA,EAASgB,MAAMjB,WAAWC,IAER2P,YAA2Blb,UAAUuL,EAAO2P,YACV,mBAA3C3P,EAAO2P,UAAUhC,sBAGxB,MAAM,IAAI/M,UAAW,GAAEvJ,OAAKwJ,+GAG9B,OAAOb,EAGTqQ,gBACE,QAAsB,IAAXK,OACT,MAAM,IAAI9P,UAAU,gEAGtB,IAAI+P,EAAmBpW,KAAK0G,SAEG,WAA3B1G,KAAK2G,QAAQyO,UACfgB,EAAmBpW,KAAK0V,QACfxb,UAAU8F,KAAK2G,QAAQyO,WAChCgB,EAAmB/b,WAAW2F,KAAK2G,QAAQyO,WACA,iBAA3BpV,KAAK2G,QAAQyO,YAC7BgB,EAAmBpW,KAAK2G,QAAQyO,WAGlC,MAAME,EAAetV,KAAKqW,mBAC1BrW,KAAKyV,QAAUU,OAAOG,aAAaF,EAAkBpW,KAAK2V,MAAOL,GAGnE5C,WACE,OAAO1S,KAAK2V,MAAMza,UAAUC,SAlMR,QAqMtBob,gBACE,MAAMC,EAAiBxW,KAAK0V,QAE5B,GAAIc,EAAetb,UAAUC,SAtMN,WAuMrB,OAAO2Z,gBAGT,GAAI0B,EAAetb,UAAUC,SAzMJ,aA0MvB,OAAO4Z,eAGT,GAAIyB,EAAetb,UAAUC,SA5MA,iBA6M3B,MA7LsB,MAgMxB,GAAIqb,EAAetb,UAAUC,SA/ME,mBAgN7B,MAhMyB,SAoM3B,MAAMsb,EAAkF,QAA1E/c,iBAAiBsG,KAAK2V,OAAOjb,iBAAiB,iBAAiBxB,OAE7E,OAAIsd,EAAetb,UAAUC,SA1NP,UA2Nbsb,EAAQ9B,iBAAmBD,cAG7B+B,EAAQ5B,oBAAsBD,iBAGvCiB,gBACE,OAAkD,OAA3C7V,KAAK0G,SAAS9L,QAzND,WA4NtB8b,aACE,MAAMxB,OAAEA,GAAWlV,KAAK2G,QAExB,MAAsB,iBAAXuO,EACFA,EAAOjc,MAAM,KAAK2Q,KAAI5F,GAASpK,OAAOyW,SAASrM,EAAO,MAGzC,mBAAXkR,EACFyB,GAAczB,EAAOyB,EAAY3W,KAAK0G,UAGxCwO,EAGTmB,mBACE,MAAMO,EAAwB,CAC5BC,UAAW7W,KAAKuW,gBAChBO,UAAW,CAAC,CACVja,KAAM,kBACNka,QAAS,CACP5B,SAAUnV,KAAK2G,QAAQwO,WAG3B,CACEtY,KAAM,SACNka,QAAS,CACP7B,OAAQlV,KAAK0W,iBAcnB,OARI1W,KAAK4V,WAAsC,WAAzB5V,KAAK2G,QAAQ0O,WACjC9Q,YAAYC,iBAAiBxE,KAAK2V,MAAO,SAAU,UACnDiB,EAAsBE,UAAY,CAAC,CACjCja,KAAM,cACNma,SAAS,KAIN,IACFJ,KACsC,mBAA9B5W,KAAK2G,QAAQ2O,aAA8BtV,KAAK2G,QAAQ2O,aAAasB,GAAyB5W,KAAK2G,QAAQ2O,cAI1H2B,iBAAgBnU,IAAEA,EAAFnF,OAAOA,IACrB,MAAMyR,EAAQxG,eAAetI,KAAKmU,uBAAwBzU,KAAK2V,OAAO3Q,QAAOrM,GAAW4B,UAAU5B,KAE7FyW,EAAM9U,QAMXwD,qBAAqBsR,EAAOzR,EAAQmF,IAAQ8Q,kBAAiBxE,EAAMrW,SAAS4E,IAASoY,QAIjE5O,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAOqN,SAAS9N,oBAAoB1H,KAAMyF,GAEhD,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjB0C,EAAK1C,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,SAIQ0B,kBAAC7H,GAChB,GA5TuB,IA4TnBA,EAAMqJ,QAAiD,UAAfrJ,EAAMK,MA/TtC,QA+T0DL,EAAMwD,IAC1E,OAGF,MAAMoU,EAActO,eAAetI,KAAK+T,4BAExC,IAAK,MAAM3L,KAAUwO,EAAa,CAChC,MAAMC,EAAU3B,SAASpO,YAAYsB,GACrC,IAAKyO,IAAyC,IAA9BA,EAAQxQ,QAAQ4O,UAC9B,SAGF,MAAM6B,EAAe9X,EAAM8X,eACrBC,EAAeD,EAAare,SAASoe,EAAQxB,OACnD,GACEyB,EAAare,SAASoe,EAAQzQ,WACC,WAA9ByQ,EAAQxQ,QAAQ4O,YAA2B8B,GACb,YAA9BF,EAAQxQ,QAAQ4O,WAA2B8B,EAE5C,SAIF,GAAIF,EAAQxB,MAAMxa,SAASmE,EAAM3B,UAA4B,UAAf2B,EAAMK,MAtV1C,QAsV8DL,EAAMwD,KAAoB,qCAAqCsD,KAAK9G,EAAM3B,OAAO8J,UACvJ,SAGF,MAAMxG,EAAgB,CAAEA,cAAekW,EAAQzQ,UAE5B,UAAfpH,EAAMK,OACRsB,EAAcuG,WAAalI,GAG7B6X,EAAQnB,cAAc/U,IAIEkG,6BAAC7H,GAI3B,MAAMgY,EAAU,kBAAkBlR,KAAK9G,EAAM3B,OAAO8J,SAC9C8P,EA1WS,WA0WOjY,EAAMwD,IACtB0U,EAAkB,CAAC7D,eAAcC,kBAAgB7a,SAASuG,EAAMwD,KAEtE,IAAK0U,IAAoBD,EACvB,OAGF,GAAID,IAAYC,EACd,OAGFjY,EAAM2D,iBAEN,MAAMwU,EAAkB7O,eAAeG,QAAQR,uBAAsBjJ,EAAMC,eAAezE,YACpFwI,EAAWkS,SAAS9N,oBAAoB+P,GAE9C,GAAID,EAIF,OAHAlY,EAAMoY,kBACNpU,EAASsP,YACTtP,EAAS2T,gBAAgB3X,GAIvBgE,EAASoP,aACXpT,EAAMoY,kBACNpU,EAASqP,OACT8E,EAAgB1B,UAStBtW,aAAamC,GAAGpJ,SAAUsb,uBAAwBvL,uBAAsBiN,SAASmC,uBACjFlY,aAAamC,GAAGpJ,SAAUsb,uBAAwBQ,cAAekB,SAASmC,uBAC1ElY,aAAamC,GAAGpJ,SAAUgQ,uBAAsBgN,SAASoC,YACzDnY,aAAamC,GAAGpJ,SAAUub,qBAAsByB,SAASoC,YACzDnY,aAAamC,GAAGpJ,SAAUgQ,uBAAsBD,wBAAsB,SAAUjJ,GAC9EA,EAAM2D,iBACNuS,SAAS9N,oBAAoB1H,MAAM0I,YAOrChM,mBAAmB8Y,UC3anB,MAAMqC,uBAAyB,oDACzBC,wBAA0B,cAC1BC,iBAAmB,gBACnBC,gBAAkB,eAMxB,MAAMC,gBACJnS,cACE9F,KAAK0G,SAAWlO,SAASyD,KAI3Bic,WAEE,MAAMC,EAAgB3f,SAAS+C,gBAAgB6c,YAC/C,OAAO/f,KAAKoT,IAAIhS,OAAO4e,WAAaF,GAGtCxF,OACE,MAAM2F,EAAQtY,KAAKkY,WACnBlY,KAAKuY,mBAELvY,KAAKwY,sBAAsBxY,KAAK0G,SAvBX,iBAuBuC+R,GAAmBA,EAAkBH,IAEjGtY,KAAKwY,sBAAsBX,uBAzBN,iBAyBgDY,GAAmBA,EAAkBH,IAC1GtY,KAAKwY,sBA3BuB,cAER,gBAyBiDC,GAAmBA,EAAkBH,IAG5GI,QACE1Y,KAAK2Y,wBAAwB3Y,KAAK0G,SAAU,YAC5C1G,KAAK2Y,wBAAwB3Y,KAAK0G,SA/Bb,iBAgCrB1G,KAAK2Y,wBAAwBd,uBAhCR,iBAiCrB7X,KAAK2Y,wBAlCuB,cAER,gBAmCtBC,gBACE,OAAO5Y,KAAKkY,WAAa,EAI3BK,mBACEvY,KAAK6Y,sBAAsB7Y,KAAK0G,SAAU,YAC1C1G,KAAK0G,SAASwM,MAAM4F,SAAW,SAGjCN,sBAAsB5f,EAAUmgB,EAAe3c,GAC7C,MAAM4c,EAAiBhZ,KAAKkY,WAW5BlY,KAAKiZ,2BAA2BrgB,GAVHD,IAC3B,GAAIA,IAAYqH,KAAK0G,UAAYjN,OAAO4e,WAAa1f,EAAQyf,YAAcY,EACzE,OAGFhZ,KAAK6Y,sBAAsBlgB,EAASogB,GACpC,MAAMN,EAAkBhf,OAAOC,iBAAiBf,GAAS+B,iBAAiBqe,GAC1EpgB,EAAQua,MAAMgG,YAAYH,EAAgB,GAAE3c,EAASxC,OAAOC,WAAW4e,YAM3EI,sBAAsBlgB,EAASogB,GAC7B,MAAMI,EAAcxgB,EAAQua,MAAMxY,iBAAiBqe,GAC/CI,GACF5U,YAAYC,iBAAiB7L,EAASogB,EAAeI,GAIzDR,wBAAwB/f,EAAUmgB,GAahC/Y,KAAKiZ,2BAA2BrgB,GAZHD,IAC3B,MAAMqL,EAAQO,YAAYY,iBAAiBxM,EAASogB,GAEtC,OAAV/U,GAKJO,YAAYG,oBAAoB/L,EAASogB,GACzCpgB,EAAQua,MAAMgG,YAAYH,EAAe/U,IALvCrL,EAAQua,MAAMkG,eAAeL,MAWnCE,2BAA2BrgB,EAAUygB,GACnC,GAAInf,UAAUtB,GACZygB,EAASzgB,QAIX,IAAK,MAAM0gB,KAAO1Q,eAAetI,KAAK1H,EAAUoH,KAAK0G,UACnD2S,EAASC,IC7Ff,MAAMxc,OAAO,WACP+K,kBAAkB,OAClBC,kBAAkB,OAClByR,gBAAmB,wBAEnBlU,UAAU,CACdmU,UAAW,iBACXjf,WAAW,EACX2M,YAAY,EACZuS,YAAa,OACbC,cAAe,MAGXpU,cAAc,CAClBkU,UAAW,SACXjf,UAAW,UACX2M,WAAY,UACZuS,YAAa,mBACbC,cAAe,mBAOjB,MAAMC,iBAAiBvU,OACrBU,YAAYL,GACVgB,QACAzG,KAAK2G,QAAU3G,KAAKwF,WAAWC,GAC/BzF,KAAK4Z,aAAc,EACnB5Z,KAAK0G,SAAW,KAIPrB,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT8V,KAAKxW,GACH,IAAK4D,KAAK2G,QAAQpM,UAEhB,YADA6C,QAAQhB,GAIV4D,KAAK6Z,UAEL,MAAMlhB,EAAUqH,KAAK8Z,cACjB9Z,KAAK2G,QAAQO,YACfrL,OAAOlD,GAGTA,EAAQuC,UAAUyQ,IA1DE,QA4DpB3L,KAAK+Z,mBAAkB,KACrB3c,QAAQhB,MAIZuW,KAAKvW,GACE4D,KAAK2G,QAAQpM,WAKlByF,KAAK8Z,cAAc5e,UAAU2I,OAvET,QAyEpB7D,KAAK+Z,mBAAkB,KACrB/Z,KAAK6G,UACLzJ,QAAQhB,OARRgB,QAAQhB,GAYZyK,UACO7G,KAAK4Z,cAIVna,aAAaC,IAAIM,KAAK0G,SAAU6S,iBAEhCvZ,KAAK0G,SAAS7C,SACd7D,KAAK4Z,aAAc,GAIrBE,cACE,IAAK9Z,KAAK0G,SAAU,CAClB,MAAMsT,EAAWxhB,SAASyhB,cAAc,OACxCD,EAASR,UAAYxZ,KAAK2G,QAAQ6S,UAC9BxZ,KAAK2G,QAAQO,YACf8S,EAAS9e,UAAUyQ,IAjGH,QAoGlB3L,KAAK0G,SAAWsT,EAGlB,OAAOha,KAAK0G,SAGdf,kBAAkBF,GAGhB,OADAA,EAAOgU,YAAcpf,WAAWoL,EAAOgU,aAChChU,EAGToU,UACE,GAAI7Z,KAAK4Z,YACP,OAGF,MAAMjhB,EAAUqH,KAAK8Z,cACrB9Z,KAAK2G,QAAQ8S,YAAYS,OAAOvhB,GAEhC8G,aAAamC,GAAGjJ,EAAS4gB,iBAAiB,KACxCnc,QAAQ4C,KAAK2G,QAAQ+S,kBAGvB1Z,KAAK4Z,aAAc,EAGrBG,kBAAkB3d,GAChBiB,uBAAuBjB,EAAU4D,KAAK8Z,cAAe9Z,KAAK2G,QAAQO,aCjItE,MAAMpK,OAAO,YACP8J,WAAW,eACXE,YAAa,gBACbqT,gBAAiB,uBACjBC,kBAAqB,2BAErB1G,QAAU,MACV2G,gBAAkB,UAClBC,iBAAmB,WAEnBjV,UAAU,CACdkV,YAAa,KACbC,WAAW,GAGPlV,cAAc,CAClBiV,YAAa,UACbC,UAAW,WAOb,MAAMC,kBAAkBrV,OACtBU,YAAYL,GACVgB,QACAzG,KAAK2G,QAAU3G,KAAKwF,WAAWC,GAC/BzF,KAAK0a,WAAY,EACjB1a,KAAK2a,qBAAuB,KAInBtV,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT8d,WACM5a,KAAK0a,YAIL1a,KAAK2G,QAAQ6T,WACfxa,KAAK2G,QAAQ4T,YAAYxE,QAG3BtW,aAAaC,IAAIlH,SAAUsO,aAC3BrH,aAAamC,GAAGpJ,SAAU2hB,iBAAe7a,GAASU,KAAK6a,eAAevb,KACtEG,aAAamC,GAAGpJ,SAAU4hB,mBAAmB9a,GAASU,KAAK8a,eAAexb,KAE1EU,KAAK0a,WAAY,GAGnBK,aACO/a,KAAK0a,YAIV1a,KAAK0a,WAAY,EACjBjb,aAAaC,IAAIlH,SAAUsO,cAI7B+T,eAAevb,GACb,MAAMib,YAAEA,GAAgBva,KAAK2G,QAE7B,GAAIrH,EAAM3B,SAAWnF,UAAY8G,EAAM3B,SAAW4c,GAAeA,EAAYpf,SAASmE,EAAM3B,QAC1F,OAGF,MAAMqd,EAAWpS,eAAec,kBAAkB6Q,GAE1B,IAApBS,EAAS1gB,OACXigB,EAAYxE,QA1EO,aA2EV/V,KAAK2a,qBACdK,EAASA,EAAS1gB,OAAS,GAAGyb,QAE9BiF,EAAS,GAAGjF,QAIhB+E,eAAexb,GApFD,QAqFRA,EAAMwD,MAIV9C,KAAK2a,qBAAuBrb,EAAM2b,SAvFb,WADD,YCFxB,MAAMne,OAAO,QACP8J,WAAW,WACXE,YAAa,YACbuB,eAAe,YACfoL,aAAa,SAEbnC,aAAc,gBACd4J,uBAAwB,yBACxB3J,eAAgB,kBAChBH,aAAc,gBACdC,cAAe,iBACf8J,eAAgB,kBAChBC,oBAAuB,yBACvBC,wBAAyB,2BACzB7S,uBAAwB,0BAExB8S,gBAAkB,aAClBzT,kBAAkB,OAClBC,kBAAkB,OAClByT,kBAAoB,eAEpBC,gBAAgB,cAChBC,gBAAkB,gBAClBC,oBAAsB,cACtBnT,uBAAuB,2BAEvBlD,UAAU,CACd2U,UAAU,EACVlM,UAAU,EACViI,OAAO,GAGHzQ,cAAc,CAClB0U,SAAU,mBACVlM,SAAU,UACViI,MAAO,WAOT,MAAM4F,cAAcnV,cAClBV,YAAYnN,EAAS8M,GACnBgB,MAAM9N,EAAS8M,GAEfzF,KAAK4b,QAAUhT,eAAeG,QAxBV,gBAwBmC/I,KAAK0G,UAC5D1G,KAAK6b,UAAY7b,KAAK8b,sBACtB9b,KAAK+b,WAAa/b,KAAKgc,uBACvBhc,KAAK0S,UAAW,EAChB1S,KAAKkS,kBAAmB,EACxBlS,KAAKic,WAAa,IAAIhE,gBAEtBjY,KAAK0O,qBAIIrJ,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT4L,OAAOzH,GACL,OAAOjB,KAAK0S,SAAW1S,KAAK2S,OAAS3S,KAAK4S,KAAK3R,GAGjD2R,KAAK3R,GACCjB,KAAK0S,UAAY1S,KAAKkS,kBAIRzS,aAAa0C,QAAQnC,KAAK0G,SAAU0K,aAAY,CAChEnQ,cAAAA,IAGYuB,mBAIdxC,KAAK0S,UAAW,EAChB1S,KAAKkS,kBAAmB,EAExBlS,KAAKic,WAAWtJ,OAEhBna,SAASyD,KAAKf,UAAUyQ,IA5EJ,cA8EpB3L,KAAKkc,gBAELlc,KAAK6b,UAAUjJ,MAAK,IAAM5S,KAAKmc,aAAalb,MAG9C0R,OACO3S,KAAK0S,WAAY1S,KAAKkS,mBAITzS,aAAa0C,QAAQnC,KAAK0G,SAAU4K,cAExC9O,mBAIdxC,KAAK0S,UAAW,EAChB1S,KAAKkS,kBAAmB,EACxBlS,KAAK+b,WAAWhB,aAEhB/a,KAAK0G,SAASxL,UAAU2I,OAhGJ,QAkGpB7D,KAAKiH,gBAAe,IAAMjH,KAAKoc,cAAcpc,KAAK0G,SAAU1G,KAAK+Q,iBAGnElK,UACE,IAAK,MAAMwV,IAAe,CAAC5iB,OAAQuG,KAAK4b,SACtCnc,aAAaC,IAAI2c,EAvHJ,aA0Hfrc,KAAK6b,UAAUhV,UACf7G,KAAK+b,WAAWhB,aAChBtU,MAAMI,UAGRyV,eACEtc,KAAKkc,gBAIPJ,sBACE,OAAO,IAAInC,SAAS,CAClBpf,UAAW+G,QAAQtB,KAAK2G,QAAQqT,UAChC9S,WAAYlH,KAAK+Q,gBAIrBiL,uBACE,OAAO,IAAIvB,UAAU,CACnBF,YAAava,KAAK0G,WAItByV,aAAalb,GAENzI,SAASyD,KAAKd,SAAS6E,KAAK0G,WAC/BlO,SAASyD,KAAKie,OAAOla,KAAK0G,UAG5B1G,KAAK0G,SAASwM,MAAMmC,QAAU,QAC9BrV,KAAK0G,SAAS/B,gBAAgB,eAC9B3E,KAAK0G,SAASjC,aAAa,cAAc,GACzCzE,KAAK0G,SAASjC,aAAa,OAAQ,UACnCzE,KAAK0G,SAAS6V,UAAY,EAE1B,MAAMC,EAAY5T,eAAeG,QAxIT,cAwIsC/I,KAAK4b,SAC/DY,IACFA,EAAUD,UAAY,GAGxB1gB,OAAOmE,KAAK0G,UAEZ1G,KAAK0G,SAASxL,UAAUyQ,IApJJ,QAiKpB3L,KAAKiH,gBAXsB,KACrBjH,KAAK2G,QAAQoP,OACf/V,KAAK+b,WAAWnB,WAGlB5a,KAAKkS,kBAAmB,EACxBzS,aAAa0C,QAAQnC,KAAK0G,SAAU2K,cAAa,CAC/CpQ,cAAAA,MAIoCjB,KAAK4b,QAAS5b,KAAK+Q,eAG7DrC,qBACEjP,aAAamC,GAAG5B,KAAK0G,SAAU2U,yBAAuB/b,IACpD,GApLa,WAoLTA,EAAMwD,IAIV,OAAI9C,KAAK2G,QAAQmH,UACfxO,EAAM2D,sBACNjD,KAAK2S,aAIP3S,KAAKyc,gCAGPhd,aAAamC,GAAGnI,OAAQ0hB,gBAAc,KAChCnb,KAAK0S,WAAa1S,KAAKkS,kBACzBlS,KAAKkc,mBAITzc,aAAamC,GAAG5B,KAAK0G,SAAU0U,qBAAqB9b,IAC9CA,EAAM3B,SAAW2B,EAAMod,gBAIG,WAA1B1c,KAAK2G,QAAQqT,SAKbha,KAAK2G,QAAQqT,UACfha,KAAK2S,OALL3S,KAAKyc,iCAUXL,aACEpc,KAAK0G,SAASwM,MAAMmC,QAAU,OAC9BrV,KAAK0G,SAASjC,aAAa,eAAe,GAC1CzE,KAAK0G,SAAS/B,gBAAgB,cAC9B3E,KAAK0G,SAAS/B,gBAAgB,QAC9B3E,KAAKkS,kBAAmB,EAExBlS,KAAK6b,UAAUlJ,MAAK,KAClBna,SAASyD,KAAKf,UAAU2I,OAnNN,cAoNlB7D,KAAK2c,oBACL3c,KAAKic,WAAWvD,QAChBjZ,aAAa0C,QAAQnC,KAAK0G,SAAU6K,mBAIxCR,cACE,OAAO/Q,KAAK0G,SAASxL,UAAUC,SA1NX,QA6NtBshB,6BAEE,GADkBhd,aAAa0C,QAAQnC,KAAK0G,SAAUwU,wBACxC1Y,iBACZ,OAGF,MAAMoa,EAAqB5c,KAAK0G,SAASmW,aAAerkB,SAAS+C,gBAAgBuhB,aAC3EC,EAAmB/c,KAAK0G,SAASwM,MAAM8J,UAEpB,WAArBD,GAAiC/c,KAAK0G,SAASxL,UAAUC,SApOvC,kBAwOjByhB,IACH5c,KAAK0G,SAASwM,MAAM8J,UAAY,UAGlChd,KAAK0G,SAASxL,UAAUyQ,IA5OF,gBA6OtB3L,KAAKiH,gBAAe,KAClBjH,KAAK0G,SAASxL,UAAU2I,OA9OJ,gBA+OpB7D,KAAKiH,gBAAe,KAClBjH,KAAK0G,SAASwM,MAAM8J,UAAYD,IAC/B/c,KAAK4b,WACP5b,KAAK4b,SAER5b,KAAK0G,SAASqP,SAOhBmG,gBACE,MAAMU,EAAqB5c,KAAK0G,SAASmW,aAAerkB,SAAS+C,gBAAgBuhB,aAC3E9D,EAAiBhZ,KAAKic,WAAW/D,WACjC+E,EAAoBjE,EAAiB,EAE3C,GAAIiE,IAAsBL,EAAoB,CAC5C,MAAM5W,EAAWxJ,QAAU,cAAgB,eAC3CwD,KAAK0G,SAASwM,MAAMlN,GAAa,GAAEgT,MAGrC,IAAKiE,GAAqBL,EAAoB,CAC5C,MAAM5W,EAAWxJ,QAAU,eAAiB,cAC5CwD,KAAK0G,SAASwM,MAAMlN,GAAa,GAAEgT,OAIvC2D,oBACE3c,KAAK0G,SAASwM,MAAMgK,YAAc,GAClCld,KAAK0G,SAASwM,MAAMiK,aAAe,GAIfhW,uBAAC1B,EAAQxE,GAC7B,OAAOjB,KAAKkI,MAAK,WACf,MAAMC,EAAOwT,MAAMjU,oBAAoB1H,KAAMyF,GAE7C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjB0C,EAAK1C,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,GAAQxE,QASnBxB,aAAamC,GAAGpJ,SAAUgQ,uBAAsBD,wBAAsB,SAAUjJ,GAC9E,MAAM3B,EAAStE,uBAAuB2G,MAElC,CAAC,IAAK,QAAQjH,SAASiH,KAAKyH,UAC9BnI,EAAM2D,iBAGRxD,aAAaoC,IAAIlE,EAAQyT,cAAYgM,IAC/BA,EAAU5a,kBAKd/C,aAAaoC,IAAIlE,EAAQ4T,gBAAc,KACjChX,UAAUyF,OACZA,KAAK+V,cAMX,MAAMsH,EAAczU,eAAeG,QAzTf,eA0ThBsU,GACF1B,MAAMvU,YAAYiW,GAAa1K,OAGpBgJ,MAAMjU,oBAAoB/J,GAElC+K,OAAO1I,SAGdqH,qBAAqBsU,OAMrBjf,mBAAmBif,OCzVnB,MAAM7e,OAAO,YACP8J,WAAW,eACXE,YAAa,gBACbuB,eAAe,YACfuE,sBAAuB,6BACvB6G,WAAa,SAEb3L,kBAAkB,OAClBwV,qBAAqB,UACrBC,kBAAoB,SACpBC,oBAAsB,qBACtBhC,cAAgB,kBAEhBpK,aAAc,oBACdC,cAAe,qBACfC,aAAc,oBACd4J,qBAAwB,6BACxB3J,eAAgB,sBAChB4J,aAAgB,sBAChB3S,uBAAwB,8BACxB6S,sBAAyB,+BAEzB9S,uBAAuB,+BAEvBlD,UAAU,CACd2U,UAAU,EACVlM,UAAU,EACV2P,QAAQ,GAGJnY,cAAc,CAClB0U,SAAU,mBACVlM,SAAU,UACV2P,OAAQ,WAOV,MAAMC,kBAAkBlX,cACtBV,YAAYnN,EAAS8M,GACnBgB,MAAM9N,EAAS8M,GAEfzF,KAAK0S,UAAW,EAChB1S,KAAK6b,UAAY7b,KAAK8b,sBACtB9b,KAAK+b,WAAa/b,KAAKgc,uBACvBhc,KAAK0O,qBAIIrJ,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT4L,OAAOzH,GACL,OAAOjB,KAAK0S,SAAW1S,KAAK2S,OAAS3S,KAAK4S,KAAK3R,GAGjD2R,KAAK3R,GACCjB,KAAK0S,UAISjT,aAAa0C,QAAQnC,KAAK0G,SAAU0K,aAAY,CAAEnQ,cAAAA,IAEtDuB,mBAIdxC,KAAK0S,UAAW,EAChB1S,KAAK6b,UAAUjJ,OAEV5S,KAAK2G,QAAQ8W,SAChB,IAAIxF,iBAAkBtF,OAGxB3S,KAAK0G,SAASjC,aAAa,cAAc,GACzCzE,KAAK0G,SAASjC,aAAa,OAAQ,UACnCzE,KAAK0G,SAASxL,UAAUyQ,IAhFD,WA4FvB3L,KAAKiH,gBAVoB,KAClBjH,KAAK2G,QAAQ8W,QAChBzd,KAAK+b,WAAWnB,WAGlB5a,KAAK0G,SAASxL,UAAUyQ,IAxFN,QAyFlB3L,KAAK0G,SAASxL,UAAU2I,OAxFH,WAyFrBpE,aAAa0C,QAAQnC,KAAK0G,SAAU2K,cAAa,CAAEpQ,cAAAA,MAGfjB,KAAK0G,UAAU,IAGvDiM,OACO3S,KAAK0S,WAIQjT,aAAa0C,QAAQnC,KAAK0G,SAAU4K,cAExC9O,mBAIdxC,KAAK+b,WAAWhB,aAChB/a,KAAK0G,SAASiX,OACd3d,KAAK0S,UAAW,EAChB1S,KAAK0G,SAASxL,UAAUyQ,IA5GF,UA6GtB3L,KAAK6b,UAAUlJ,OAcf3S,KAAKiH,gBAZoB,KACvBjH,KAAK0G,SAASxL,UAAU2I,OAlHN,OAEE,UAiHpB7D,KAAK0G,SAAS/B,gBAAgB,cAC9B3E,KAAK0G,SAAS/B,gBAAgB,QAEzB3E,KAAK2G,QAAQ8W,SAChB,IAAIxF,iBAAkBS,QAGxBjZ,aAAa0C,QAAQnC,KAAK0G,SAAU6K,kBAGAvR,KAAK0G,UAAU,KAGvDG,UACE7G,KAAK6b,UAAUhV,UACf7G,KAAK+b,WAAWhB,aAChBtU,MAAMI,UAIRiV,sBACE,MAUMvhB,EAAY+G,QAAQtB,KAAK2G,QAAQqT,UAEvC,OAAO,IAAIL,SAAS,CAClBH,UAAWgE,oBACXjjB,UAAAA,EACA2M,YAAY,EACZuS,YAAazZ,KAAK0G,SAAS5L,WAC3B4e,cAAenf,EAjBK,KACU,WAA1ByF,KAAK2G,QAAQqT,SAKjBha,KAAK2S,OAJHlT,aAAa0C,QAAQnC,KAAK0G,SAAUwU,uBAeK,OAI/Cc,uBACE,OAAO,IAAIvB,UAAU,CACnBF,YAAava,KAAK0G,WAItBgI,qBACEjP,aAAamC,GAAG5B,KAAK0G,SAAU2U,uBAAuB/b,IAtKvC,WAuKTA,EAAMwD,MAIL9C,KAAK2G,QAAQmH,SAKlB9N,KAAK2S,OAJHlT,aAAa0C,QAAQnC,KAAK0G,SAAUwU,0BASpB/T,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAOuV,UAAUhW,oBAAoB1H,KAAMyF,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqB2C,IAAjBD,EAAK1C,IAAyBA,EAAOzM,WAAW,MAAmB,gBAAXyM,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,GAAQzF,WASnBP,aAAamC,GAAGpJ,SAAUgQ,uBAAsBD,wBAAsB,SAAUjJ,GAC9E,MAAM3B,EAAStE,uBAAuB2G,MAMtC,GAJI,CAAC,IAAK,QAAQjH,SAASiH,KAAKyH,UAC9BnI,EAAM2D,iBAGJlI,WAAWiF,MACb,OAGFP,aAAaoC,IAAIlE,EAAQ4T,gBAAc,KAEjChX,UAAUyF,OACZA,KAAK+V,WAKT,MAAMsH,EAAczU,eAAeG,QAAQyS,eACvC6B,GAAeA,IAAgB1f,GACjC+f,UAAUtW,YAAYiW,GAAa1K,OAGxB+K,UAAUhW,oBAAoB/J,GACtC+K,OAAO1I,SAGdP,aAAamC,GAAGnI,OAAQmT,uBAAqB,KAC3C,IAAK,MAAMhU,KAAYgQ,eAAetI,KAAKkb,eACzCkC,UAAUhW,oBAAoB9O,GAAUga,UAI5CnT,aAAamC,GAAGnI,OAAQ0hB,cAAc,KACpC,IAAK,MAAMxiB,KAAWiQ,eAAetI,KAAK,gDACG,UAAvC5G,iBAAiBf,GAASilB,UAC5BF,UAAUhW,oBAAoB/O,GAASga,UAK7CtL,qBAAqBqW,WAMrBhhB,mBAAmBghB,WCjRnB,MAAMG,cAAgB,IAAI5e,IAAI,CAC5B,aACA,OACA,OACA,WACA,WACA,SACA,MACA,eAGI6e,uBAAyB,iBAOzBC,iBAAmB,iEAOnBC,iBAAmB,qIAEnBC,iBAAmB,CAACC,EAAWC,KACnC,MAAMC,EAAgBF,EAAUG,SAASnmB,cAEzC,OAAIimB,EAAqBplB,SAASqlB,IAC5BP,cAAc/c,IAAIsd,IACb9c,QAAQyc,iBAAiB3X,KAAK8X,EAAUI,YAAcN,iBAAiB5X,KAAK8X,EAAUI,YAO1FH,EAAqBnZ,QAAOuZ,GAAkBA,aAA0BpY,SAC5EqY,MAAKC,GAASA,EAAMrY,KAAKgY,MAGjBM,iBAAmB,CAE9B,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAAQZ,wBAC5Ca,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BC,KAAM,GACNC,EAAG,GACHC,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,EAAG,GACH7P,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChD8P,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,IAGC,SAASC,aAAaC,EAAYC,EAAWC,GAClD,IAAKF,EAAWlmB,OACd,OAAOkmB,EAGT,GAAIE,GAAgD,mBAArBA,EAC7B,OAAOA,EAAiBF,GAG1B,MACMG,GADY,IAAIlnB,OAAOmnB,WACKC,gBAAgBL,EAAY,aACxDxF,EAAW,GAAGnS,UAAU8X,EAAgB1kB,KAAK8D,iBAAiB,MAEpE,IAAK,MAAMpH,KAAWqiB,EAAU,CAC9B,MAAM8F,EAAcnoB,EAAQ0lB,SAASnmB,cAErC,IAAKL,OAAO8J,KAAK8e,GAAW1nB,SAAS+nB,GAAc,CACjDnoB,EAAQkL,SAER,SAGF,MAAMkd,EAAgB,GAAGlY,UAAUlQ,EAAQkM,YACrCmc,EAAoB,GAAGnY,OAAO4X,EAAU,MAAQ,GAAIA,EAAUK,IAAgB,IAEpF,IAAK,MAAM5C,KAAa6C,EACjB9C,iBAAiBC,EAAW8C,IAC/BroB,EAAQgM,gBAAgBuZ,EAAUG,UAKxC,OAAOsC,EAAgB1kB,KAAKglB,UCpG9B,MAAMnkB,OAAO,kBAEPuI,UAAU,CACd6b,WAAY,GACZC,SAAU,cACVC,QAAS,GACTC,MAAM,EACNC,UAAU,EACVC,WAAY,KACZd,UAAW/B,kBAGPpZ,cAAc,CAClB4b,WAAY,oBACZC,SAAU,SACVC,QAAS,SACTC,KAAM,UACNC,SAAU,UACVC,WAAY,kBACZd,UAAW,UAGPe,mBAAqB,CACzB5oB,SAAU,mBACV6oB,MAAO,kCAOT,MAAMC,wBAAwBtc,OAC5BU,YAAYL,GACVgB,QACAzG,KAAK2G,QAAU3G,KAAKwF,WAAWC,GAItBJ,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT6kB,aACE,OAAO9pB,OAAOwI,OAAOL,KAAK2G,QAAQya,SAC/BxX,KAAInE,GAAUzF,KAAK4hB,yBAAyBnc,KAC5CT,OAAO1D,SAGZugB,aACE,OAAO7hB,KAAK2hB,aAAarnB,OAAS,EAGpCwnB,cAAcV,GAGZ,OAFAphB,KAAK+hB,cAAcX,GACnBphB,KAAK2G,QAAQya,QAAU,IAAKphB,KAAK2G,QAAQya,WAAYA,GAC9CphB,KAGTgiB,SACE,MAAMC,EAAkBzpB,SAASyhB,cAAc,OAC/CgI,EAAgBhB,UAAYjhB,KAAKkiB,eAAeliB,KAAK2G,QAAQwa,UAE7D,IAAK,MAAOvoB,EAAUupB,KAAStqB,OAAOuqB,QAAQpiB,KAAK2G,QAAQya,SACzDphB,KAAKqiB,YAAYJ,EAAiBE,EAAMvpB,GAG1C,MAAMuoB,EAAWc,EAAgBjZ,SAAS,GACpCkY,EAAalhB,KAAK4hB,yBAAyB5hB,KAAK2G,QAAQua,YAM9D,OAJIA,GACFC,EAASjmB,UAAUyQ,OAAOuV,EAAWjoB,MAAM,MAGtCkoB,EAITvb,iBAAiBH,GACfgB,MAAMb,iBAAiBH,GACvBzF,KAAK+hB,cAActc,EAAO2b,SAG5BW,cAAcO,GACZ,IAAK,MAAO1pB,EAAUwoB,KAAYvpB,OAAOuqB,QAAQE,GAC/C7b,MAAMb,iBAAiB,CAAEhN,SAAAA,EAAU6oB,MAAOL,GAAWI,oBAIzDa,YAAYlB,EAAUC,EAASxoB,GAC7B,MAAM2pB,EAAkB3Z,eAAeG,QAAQnQ,EAAUuoB,GAEpDoB,KAILnB,EAAUphB,KAAK4hB,yBAAyBR,IAOpClnB,UAAUknB,GACZphB,KAAKwiB,sBAAsBnoB,WAAW+mB,GAAUmB,GAI9CviB,KAAK2G,QAAQ0a,KACfkB,EAAgBtB,UAAYjhB,KAAKkiB,eAAed,GAIlDmB,EAAgBE,YAAcrB,EAd5BmB,EAAgB1e,UAiBpBqe,eAAeI,GACb,OAAOtiB,KAAK2G,QAAQ2a,SAAWf,aAAa+B,EAAKtiB,KAAK2G,QAAQ8Z,UAAWzgB,KAAK2G,QAAQ4a,YAAce,EAGtGV,yBAAyBU,GACvB,MAAsB,mBAARA,EAAqBA,EAAItiB,MAAQsiB,EAGjDE,sBAAsB7pB,EAAS4pB,GAC7B,GAAIviB,KAAK2G,QAAQ0a,KAGf,OAFAkB,EAAgBtB,UAAY,QAC5BsB,EAAgBrI,OAAOvhB,GAIzB4pB,EAAgBE,YAAc9pB,EAAQ8pB,aCxI1C,MAAM3lB,OAAO,UACP4lB,sBAAwB,IAAIzjB,IAAI,CAAC,WAAY,YAAa,eAE1D4I,kBAAkB,OAClB8a,iBAAmB,QACnB7a,kBAAkB,OAElB8a,uBAAyB,iBACzBC,eAAkB,SAElBC,iBAAmB,gBAEnBC,cAAgB,QAChBC,cAAgB,QAChBC,cAAgB,QAChBC,eAAiB,SAEjB5R,aAAa,OACbC,eAAe,SACfH,aAAa,OACbC,cAAc,QACd8R,eAAiB,WACjBC,cAAc,QACdjJ,gBAAgB,UAChBkJ,iBAAiB,WACjB5W,iBAAmB,aACnBC,iBAAmB,aAEnB4W,cAAgB,CACpBC,KAAM,OACNC,IAAK,MACLC,MAAOjnB,QAAU,OAAS,QAC1BknB,OAAQ,SACRC,KAAMnnB,QAAU,QAAU,QAGtB6I,UAAU,CACdue,WAAW,EACXzC,SAAU,+GAIVhf,QAAS,cACT0hB,MAAO,GACPC,MAAO,EACPzC,MAAM,EACNzoB,UAAU,EACVie,UAAW,MACX3B,OAAQ,CAAC,EAAG,GACZ6O,WAAW,EACXC,mBAAoB,CAAC,MAAO,QAAS,SAAU,QAC/C7O,SAAU,kBACV8O,YAAa,GACb3C,UAAU,EACVC,WAAY,KACZd,UAAW/B,iBACXpJ,aAAc,MAGVhQ,cAAc,CAClBse,UAAW,UACXzC,SAAU,SACV0C,MAAO,4BACP1hB,QAAS,SACT2hB,MAAO,kBACPzC,KAAM,UACNzoB,SAAU,mBACVie,UAAW,oBACX3B,OAAQ,0BACR6O,UAAW,2BACXC,mBAAoB,QACpB7O,SAAU,mBACV8O,YAAa,oBACb3C,SAAU,UACVC,WAAY,kBACZd,UAAW,SACXnL,aAAc,0BAOhB,MAAM4O,gBAAgB1d,cACpBV,YAAYnN,EAAS8M,GACnB,QAAsB,IAAX0Q,OACT,MAAM,IAAI9P,UAAU,+DAGtBI,MAAM9N,EAAS8M,GAGfzF,KAAKmkB,YAAa,EAClBnkB,KAAKokB,SAAW,EAChBpkB,KAAKqkB,YAAa,EAClBrkB,KAAKskB,eAAiB,GACtBtkB,KAAKyV,QAAU,KACfzV,KAAKukB,iBAAmB,KAGxBvkB,KAAKwkB,IAAM,KAEXxkB,KAAKykB,gBAIIpf,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAIT4nB,SACE1kB,KAAKmkB,YAAa,EAGpBQ,UACE3kB,KAAKmkB,YAAa,EAGpBS,gBACE5kB,KAAKmkB,YAAcnkB,KAAKmkB,WAG1Bzb,OAAOpJ,GACL,GAAKU,KAAKmkB,WAAV,CAIA,GAAI7kB,EAAO,CACT,MAAM6X,EAAUnX,KAAK6kB,6BAA6BvlB,GAUlD,OARA6X,EAAQmN,eAAeQ,OAAS3N,EAAQmN,eAAeQ,WAEnD3N,EAAQ4N,uBACV5N,EAAQ6N,SAER7N,EAAQ8N,UAMRjlB,KAAK0S,WACP1S,KAAKilB,SAIPjlB,KAAKglB,UAGPne,UACEmJ,aAAahQ,KAAKokB,UAElB3kB,aAAaC,IAAIM,KAAK0G,SAAS9L,QAzJX,UAEC,gBAuJqDoF,KAAKklB,mBAE3EllB,KAAKwkB,KACPxkB,KAAKwkB,IAAI3gB,SAGX7D,KAAKmlB,iBACL1e,MAAMI,UAGR+L,OACE,GAAoC,SAAhC5S,KAAK0G,SAASwM,MAAMmC,QACtB,MAAM,IAAI9P,MAAM,uCAGlB,IAAMvF,KAAKolB,mBAAoBplB,KAAKmkB,WAClC,OAGF,MAAM/G,EAAY3d,aAAa0C,QAAQnC,KAAK0G,SAAU1G,KAAK8F,YAAY4K,UAjKxD,SAmKT2U,GADa/pB,eAAe0E,KAAK0G,WACL1G,KAAK0G,SAAS4e,cAAc/pB,iBAAiBJ,SAAS6E,KAAK0G,UAE7F,GAAI0W,EAAU5a,mBAAqB6iB,EACjC,OAGF,MAAMb,EAAMxkB,KAAKulB,iBAEjBvlB,KAAK0G,SAASjC,aAAa,mBAAoB+f,EAAI3rB,aAAa,OAEhE,MAAMkrB,UAAEA,GAAc/jB,KAAK2G,QAmB3B,GAjBK3G,KAAK0G,SAAS4e,cAAc/pB,gBAAgBJ,SAAS6E,KAAKwkB,OAC7DT,EAAU7J,OAAOsK,GACjB/kB,aAAa0C,QAAQnC,KAAK0G,SAAU1G,KAAK8F,YAAY4K,UA/KpC,cAkLf1Q,KAAKyV,QACPzV,KAAKyV,QAAQS,SAEblW,KAAK8V,cAAc0O,GAGrBA,EAAItpB,UAAUyQ,IAxMM,QA8MhB,iBAAkBnT,SAAS+C,gBAC7B,IAAK,MAAM5C,IAAW,GAAGkQ,UAAUrQ,SAASyD,KAAK+M,UAC/CvJ,aAAamC,GAAGjJ,EAAS,YAAaiD,MAe1CoE,KAAKiH,gBAXY,KACf,MAAMue,EAAqBxlB,KAAKqkB,WAEhCrkB,KAAKqkB,YAAa,EAClB5kB,aAAa0C,QAAQnC,KAAK0G,SAAU1G,KAAK8F,YAAY4K,UAzMvC,UA2MV8U,GACFxlB,KAAKilB,WAIqBjlB,KAAKwkB,IAAKxkB,KAAK+Q,eAG/C4B,OACE,IAAK3S,KAAK0S,WACR,OAIF,GADkBjT,aAAa0C,QAAQnC,KAAK0G,SAAU1G,KAAK8F,YAAY4K,UA3NxD,SA4NDlO,iBACZ,OAGF,MAAMgiB,EAAMxkB,KAAKulB,iBAKjB,GAJAf,EAAItpB,UAAU2I,OA7OM,QAiPhB,iBAAkBrL,SAAS+C,gBAC7B,IAAK,MAAM5C,IAAW,GAAGkQ,UAAUrQ,SAASyD,KAAK+M,UAC/CvJ,aAAaC,IAAI/G,EAAS,YAAaiD,MAI3CoE,KAAKskB,eAAL,OAAqC,EACrCtkB,KAAKskB,eAAL,OAAqC,EACrCtkB,KAAKskB,eAAL,OAAqC,EACrCtkB,KAAKqkB,YAAa,EAiBlBrkB,KAAKiH,gBAfY,KACXjH,KAAK+kB,yBAIJ/kB,KAAKqkB,YACRG,EAAI3gB,SAGN7D,KAAK0G,SAAS/B,gBAAgB,oBAC9BlF,aAAa0C,QAAQnC,KAAK0G,SAAU1G,KAAK8F,YAAY4K,UAzPtC,WA2Pf1Q,KAAKmlB,oBAGuBnlB,KAAKwkB,IAAKxkB,KAAK+Q,eAG/CmF,SACMlW,KAAKyV,SACPzV,KAAKyV,QAAQS,SAKjBkP,iBACE,OAAO9jB,QAAQtB,KAAKylB,aAGtBF,iBAKE,OAJKvlB,KAAKwkB,MACRxkB,KAAKwkB,IAAMxkB,KAAK0lB,kBAAkB1lB,KAAK2lB,2BAGlC3lB,KAAKwkB,IAGdkB,kBAAkBtE,GAChB,MAAMoD,EAAMxkB,KAAK4lB,oBAAoBxE,GAASY,SAG9C,IAAKwC,EACH,OAAO,KAGTA,EAAItpB,UAAU2I,OA3SM,OAEA,QA2SpB2gB,EAAItpB,UAAUyQ,IAAK,MAAK3L,KAAK8F,YAAYhJ,aAEzC,MAAM+oB,EAAQ1tB,OAAO6H,KAAK8F,YAAYhJ,MAAM/E,WAQ5C,OANAysB,EAAI/f,aAAa,KAAMohB,GAEnB7lB,KAAK+Q,eACPyT,EAAItpB,UAAUyQ,IApTI,QAuTb6Y,EAGTsB,WAAW1E,GACT,IAAI2E,GAAU,EACV/lB,KAAKwkB,MACPuB,EAAU/lB,KAAK0S,WACf1S,KAAKwkB,IAAI3gB,SACT7D,KAAKwkB,IAAM,MAGbxkB,KAAKmlB,iBACLnlB,KAAKwkB,IAAMxkB,KAAK0lB,kBAAkBtE,GAE9B2E,GACF/lB,KAAK4S,OAITgT,oBAAoBxE,GAalB,OAZIphB,KAAKukB,iBACPvkB,KAAKukB,iBAAiBzC,cAAcV,GAEpCphB,KAAKukB,iBAAmB,IAAI7C,gBAAgB,IACvC1hB,KAAK2G,QAGRya,QAAAA,EACAF,WAAYlhB,KAAK4hB,yBAAyB5hB,KAAK2G,QAAQsd,eAIpDjkB,KAAKukB,iBAGdoB,yBACE,MAAO,CACL,iBAA0B3lB,KAAKylB,aAInCA,YACE,OAAOzlB,KAAK2G,QAAQkd,MAItBgB,6BAA6BvlB,GAC3B,OAAOU,KAAK8F,YAAY4B,oBAAoBpI,EAAMC,eAAgBS,KAAKgmB,sBAGzEjV,cACE,OAAO/Q,KAAK2G,QAAQid,WAAc5jB,KAAKwkB,KAAOxkB,KAAKwkB,IAAItpB,UAAUC,SA1W7C,QA6WtBuX,WACE,OAAO1S,KAAKwkB,KAAOxkB,KAAKwkB,IAAItpB,UAAUC,SA5WlB,QA+WtB2a,cAAc0O,GACZ,MAAM3N,EAA8C,mBAA3B7W,KAAK2G,QAAQkQ,UACpC7W,KAAK2G,QAAQkQ,UAAU7e,KAAKgI,KAAMwkB,EAAKxkB,KAAK0G,UAC5C1G,KAAK2G,QAAQkQ,UACToP,EAAa3C,cAAczM,EAAUvQ,eAC3CtG,KAAKyV,QAAUU,OAAOG,aAAatW,KAAK0G,SAAU8d,EAAKxkB,KAAKqW,iBAAiB4P,IAG/EvP,aACE,MAAMxB,OAAEA,GAAWlV,KAAK2G,QAExB,MAAsB,iBAAXuO,EACFA,EAAOjc,MAAM,KAAK2Q,KAAI5F,GAASpK,OAAOyW,SAASrM,EAAO,MAGzC,mBAAXkR,EACFyB,GAAczB,EAAOyB,EAAY3W,KAAK0G,UAGxCwO,EAGT0M,yBAAyBU,GACvB,MAAsB,mBAARA,EAAqBA,EAAItqB,KAAKgI,KAAK0G,UAAY4b,EAG/DjM,iBAAiB4P,GACf,MAAMrP,EAAwB,CAC5BC,UAAWoP,EACXnP,UAAW,CACT,CACEja,KAAM,OACNka,QAAS,CACPiN,mBAAoBhkB,KAAK2G,QAAQqd,qBAGrC,CACEnnB,KAAM,SACNka,QAAS,CACP7B,OAAQlV,KAAK0W,eAGjB,CACE7Z,KAAM,kBACNka,QAAS,CACP5B,SAAUnV,KAAK2G,QAAQwO,WAG3B,CACEtY,KAAM,QACNka,QAAS,CACPpe,QAAU,IAAGqH,KAAK8F,YAAYhJ,eAGlC,CACED,KAAM,kBACNma,SAAS,EACTkP,MAAO,aACPlpB,GAAImL,IAGFnI,KAAKulB,iBAAiB9gB,aAAa,wBAAyB0D,EAAKge,MAAMtP,eAM/E,MAAO,IACFD,KACsC,mBAA9B5W,KAAK2G,QAAQ2O,aAA8BtV,KAAK2G,QAAQ2O,aAAasB,GAAyB5W,KAAK2G,QAAQ2O,cAI1HmP,gBACE,MAAM2B,EAAWpmB,KAAK2G,QAAQxE,QAAQlJ,MAAM,KAE5C,IAAK,MAAMkJ,KAAWikB,EACpB,GAAgB,UAAZjkB,EACF1C,aAAamC,GAAG5B,KAAK0G,SAAU1G,KAAK8F,YAAY4K,UA5apC,SA4a4D1Q,KAAK2G,QAAQ/N,UAAU0G,GAASU,KAAK0I,OAAOpJ,UAC/G,GApbU,WAobN6C,EAA4B,CACrC,MAAMkkB,EAxbQ,UAwbElkB,EACdnC,KAAK8F,YAAY4K,UA5aF,cA6af1Q,KAAK8F,YAAY4K,UA/aL,WAgbR4V,EA3bQ,UA2bGnkB,EACfnC,KAAK8F,YAAY4K,UA9aF,cA+af1Q,KAAK8F,YAAY4K,UAjbJ,YAmbfjR,aAAamC,GAAG5B,KAAK0G,SAAU2f,EAASrmB,KAAK2G,QAAQ/N,UAAU0G,IAC7D,MAAM6X,EAAUnX,KAAK6kB,6BAA6BvlB,GAClD6X,EAAQmN,eAA8B,YAAfhlB,EAAMK,KAhcjB,QADA,UAicuE,EACnFwX,EAAQ6N,YAEVvlB,aAAamC,GAAG5B,KAAK0G,SAAU4f,EAAUtmB,KAAK2G,QAAQ/N,UAAU0G,IAC9D,MAAM6X,EAAUnX,KAAK6kB,6BAA6BvlB,GAClD6X,EAAQmN,eAA8B,aAAfhlB,EAAMK,KArcjB,QADA,SAucVwX,EAAQzQ,SAASvL,SAASmE,EAAM2B,eAElCkW,EAAQ8N,YAKdjlB,KAAKklB,kBAAoB,KACnBllB,KAAK0G,UACP1G,KAAK2S,QAITlT,aAAamC,GAAG5B,KAAK0G,SAAS9L,QAxdV,UAEC,gBAsdoDoF,KAAKklB,mBAE1EllB,KAAK2G,QAAQ/N,SACfoH,KAAK2G,QAAU,IACV3G,KAAK2G,QACRxE,QAAS,SACTvJ,SAAU,IAGZoH,KAAKumB,YAITA,YACE,MAAM1C,EAAQ7jB,KAAK2G,QAAQ6f,cAEtB3C,IAIA7jB,KAAK0G,SAAS7N,aAAa,eAAkBmH,KAAK0G,SAAS+b,aAC9DziB,KAAK0G,SAASjC,aAAa,aAAcof,GAG3C7jB,KAAK0G,SAAS/B,gBAAgB,UAGhCqgB,SACMhlB,KAAK0S,YAAc1S,KAAKqkB,WAC1BrkB,KAAKqkB,YAAa,GAIpBrkB,KAAKqkB,YAAa,EAElBrkB,KAAKymB,aAAY,KACXzmB,KAAKqkB,YACPrkB,KAAK4S,SAEN5S,KAAK2G,QAAQmd,MAAMlR,OAGxBqS,SACMjlB,KAAK+kB,yBAIT/kB,KAAKqkB,YAAa,EAElBrkB,KAAKymB,aAAY,KACVzmB,KAAKqkB,YACRrkB,KAAK2S,SAEN3S,KAAK2G,QAAQmd,MAAMnR,OAGxB8T,YAAY/oB,EAASgpB,GACnB1W,aAAahQ,KAAKokB,UAClBpkB,KAAKokB,SAAWvmB,WAAWH,EAASgpB,GAGtC3B,uBACE,OAAOltB,OAAOwI,OAAOL,KAAKskB,gBAAgBvrB,UAAS,GAGrDyM,WAAWC,GACT,MAAMkhB,EAAiBpiB,YAAYK,kBAAkB5E,KAAK0G,UAE1D,IAAK,MAAMkgB,KAAiB/uB,OAAO8J,KAAKglB,GAClCjE,sBAAsB5hB,IAAI8lB,WACrBD,EAAeC,GAW1B,OAPAnhB,EAAS,IACJkhB,KACmB,iBAAXlhB,GAAuBA,EAASA,EAAS,IAEtDA,EAASzF,KAAK0F,gBAAgBD,GAC9BA,EAASzF,KAAK2F,kBAAkBF,GAChCzF,KAAK4F,iBAAiBH,GACfA,EAGTE,kBAAkBF,GAoBhB,OAnBAA,EAAOse,WAAiC,IAArBte,EAAOse,UAAsBvrB,SAASyD,KAAO5B,WAAWoL,EAAOse,WAEtD,iBAAjBte,EAAOqe,QAChBre,EAAOqe,MAAQ,CACblR,KAAMnN,EAAOqe,MACbnR,KAAMlN,EAAOqe,QAIjBre,EAAO+gB,cAAgBxmB,KAAK0G,SAAS7N,aAAa,UAAY,GAC9D4M,EAAOoe,MAAQ7jB,KAAK4hB,yBAAyBnc,EAAOoe,QAAUpe,EAAO+gB,cACzC,iBAAjB/gB,EAAOoe,QAChBpe,EAAOoe,MAAQpe,EAAOoe,MAAM9rB,YAGA,iBAAnB0N,EAAO2b,UAChB3b,EAAO2b,QAAU3b,EAAO2b,QAAQrpB,YAG3B0N,EAGTugB,qBACE,MAAMvgB,EAAS,GAEf,IAAK,MAAM3C,KAAO9C,KAAK2G,QACjB3G,KAAK8F,YAAYT,QAAQvC,KAAS9C,KAAK2G,QAAQ7D,KACjD2C,EAAO3C,GAAO9C,KAAK2G,QAAQ7D,IAO/B,OAAO2C,EAGT0f,iBACMnlB,KAAKyV,UACPzV,KAAKyV,QAAQQ,UACbjW,KAAKyV,QAAU,MAKGtO,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAO+b,QAAQxc,oBAAoB1H,KAAMyF,GAE/C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjB0C,EAAK1C,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,UASX/I,mBAAmBwnB,SC5nBnB,MAAMpnB,OAAO,UAEP+pB,eAAiB,kBACjBC,iBAAmB,gBAEnBzhB,UAAU,IACX6e,QAAQ7e,QACXwR,UAAW,QACX3B,OAAQ,CAAC,EAAG,GACZ/S,QAAS,QACTif,QAAS,GACTD,SAAU,+IAON7b,cAAc,IACf4e,QAAQ5e,YACX8b,QAAS,kCAOX,MAAM2F,gBAAgB7C,QAET7e,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAITsoB,iBACE,OAAOplB,KAAKylB,aAAezlB,KAAKgnB,cAIlCrB,yBACE,MAAO,CACLkB,CAACA,gBAAiB7mB,KAAKylB,YACvB,gBAAoBzlB,KAAKgnB,eAI7BA,cACE,OAAOhnB,KAAK4hB,yBAAyB5hB,KAAK2G,QAAQya,SAI9Bja,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAO4e,QAAQrf,oBAAoB1H,KAAMyF,GAE/C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjB0C,EAAK1C,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,UASX/I,mBAAmBqqB,SC9EnB,MAAMjqB,OAAO,YACP8J,WAAW,eACXE,YAAa,gBACbuB,aAAe,YAEf4e,eAAkB,wBAClB7D,YAAe,qBACfxW,sBAAuB,6BAEvBsa,yBAA2B,gBAC3B5e,oBAAoB,SAEpB6e,kBAAoB,yBACpBC,sBAAwB,SACxBC,wBAA0B,oBAC1BC,mBAAqB,YACrBC,mBAAqB,YACrBC,oBAAsB,mBACtBC,oBAAuB,qDACvBC,kBAAoB,YACpBC,2BAA2B,mBAE3BtiB,UAAU,CACd6P,OAAQ,KACR0S,WAAY,eACZC,cAAc,EACdlqB,OAAQ,MAGJ2H,cAAc,CAClB4P,OAAQ,gBACR0S,WAAY,SACZC,aAAc,UACdlqB,OAAQ,WAOV,MAAMmqB,kBAAkBthB,cACtBV,YAAYnN,EAAS8M,GACnBgB,MAAM9N,EAAS8M,GAGfzF,KAAK+nB,aAAe,IAAI5kB,IACxBnD,KAAKgoB,oBAAsB,IAAI7kB,IAC/BnD,KAAKioB,aAA6D,YAA9CvuB,iBAAiBsG,KAAK0G,UAAUsW,UAA0B,KAAOhd,KAAK0G,SAC1F1G,KAAKkoB,cAAgB,KACrBloB,KAAKmoB,UAAY,KACjBnoB,KAAKooB,oBAAsB,CACzBC,gBAAiB,EACjBC,gBAAiB,GAEnBtoB,KAAKuoB,UAIIljB,qBACT,OAAOA,UAGEC,yBACT,OAAOA,cAGExI,kBACT,OAAOA,OAITyrB,UACEvoB,KAAKwoB,mCACLxoB,KAAKyoB,2BAEDzoB,KAAKmoB,UACPnoB,KAAKmoB,UAAUO,aAEf1oB,KAAKmoB,UAAYnoB,KAAK2oB,kBAGxB,IAAK,MAAMC,KAAW5oB,KAAKgoB,oBAAoB3nB,SAC7CL,KAAKmoB,UAAUU,QAAQD,GAI3B/hB,UACE7G,KAAKmoB,UAAUO,aACfjiB,MAAMI,UAIRlB,kBAAkBF,GAIhB,OAFAA,EAAO9H,OAAStD,WAAWoL,EAAO9H,SAAWnF,SAASyD,KAE/CwJ,EAGTgjB,2BACOzoB,KAAK2G,QAAQkhB,eAKlBpoB,aAAaC,IAAIM,KAAK2G,QAAQhJ,OAAQylB,aAEtC3jB,aAAamC,GAAG5B,KAAK2G,QAAQhJ,OAAQylB,YA9FX,UA8F+C9jB,IACvE,MAAMwpB,EAAoB9oB,KAAKgoB,oBAAoBhlB,IAAI1D,EAAM3B,OAAOorB,MACpE,GAAID,EAAmB,CACrBxpB,EAAM2D,iBACN,MAAMvH,EAAOsE,KAAKioB,cAAgBxuB,OAC5BuvB,EAASF,EAAkBG,UAAYjpB,KAAK0G,SAASuiB,UAC3D,GAAIvtB,EAAKwtB,SAEP,YADAxtB,EAAKwtB,SAAS,CAAEC,IAAKH,IAKvBttB,EAAK6gB,UAAYyM,OAKvBL,kBACE,MAAM5R,EAAU,CACdrb,KAAMsE,KAAKioB,aACXmB,UAAW,CAAC,GAAK,GAAK,GACtBxB,WAAY5nB,KAAKqpB,kBAGnB,OAAO,IAAIC,sBAAqBlH,GAAWpiB,KAAKupB,kBAAkBnH,IAAUrL,GAI9EwS,kBAAkBnH,GAChB,MAAMoH,EAAgB/H,GAASzhB,KAAK+nB,aAAa/kB,IAAK,IAAGye,EAAM9jB,OAAO8rB,MAChE7O,EAAW6G,IACfzhB,KAAKooB,oBAAoBC,gBAAkB5G,EAAM9jB,OAAOsrB,UACxDjpB,KAAK0pB,SAASF,EAAc/H,KAGxB6G,GAAmBtoB,KAAKioB,cAAgBzvB,SAAS+C,iBAAiBghB,UAClEoN,EAAkBrB,GAAmBtoB,KAAKooB,oBAAoBE,gBACpEtoB,KAAKooB,oBAAoBE,gBAAkBA,EAE3C,IAAK,MAAM7G,KAASW,EAAS,CAC3B,IAAKX,EAAMmI,eAAgB,CACzB5pB,KAAKkoB,cAAgB,KACrBloB,KAAK6pB,kBAAkBL,EAAc/H,IAErC,SAGF,MAAMqI,EAA2BrI,EAAM9jB,OAAOsrB,WAAajpB,KAAKooB,oBAAoBC,gBAEpF,GAAIsB,GAAmBG,GAGrB,GAFAlP,EAAS6G,IAEJ6G,EACH,YAOCqB,GAAoBG,GACvBlP,EAAS6G,IAMf4H,iBACE,OAAOrpB,KAAK2G,QAAQuO,OAAU,GAAElV,KAAK2G,QAAQuO,oBAAsBlV,KAAK2G,QAAQihB,WAGlFY,mCACExoB,KAAK+nB,aAAe,IAAI5kB,IACxBnD,KAAKgoB,oBAAsB,IAAI7kB,IAE/B,MAAM4mB,EAAcnhB,eAAetI,KAzKT,SAyKqCN,KAAK2G,QAAQhJ,QAE5E,IAAK,MAAMqsB,KAAUD,EAAa,CAEhC,IAAKC,EAAOjB,MAAQhuB,WAAWivB,GAC7B,SAGF,MAAMlB,EAAoBlgB,eAAeG,QAAQihB,EAAOjB,KAAM/oB,KAAK0G,UAG/DnM,UAAUuuB,KACZ9oB,KAAK+nB,aAAa1kB,IAAI2mB,EAAOjB,KAAMiB,GACnChqB,KAAKgoB,oBAAoB3kB,IAAI2mB,EAAOjB,KAAMD,KAKhDY,SAAS/rB,GACHqC,KAAKkoB,gBAAkBvqB,IAI3BqC,KAAK6pB,kBAAkB7pB,KAAK2G,QAAQhJ,QACpCqC,KAAKkoB,cAAgBvqB,EACrBA,EAAOzC,UAAUyQ,IArMK,UAsMtB3L,KAAKiqB,iBAAiBtsB,GAEtB8B,aAAa0C,QAAQnC,KAAK0G,SAAUugB,eAAgB,CAAEhmB,cAAetD,KAGvEssB,iBAAiBtsB,GAEf,GAAIA,EAAOzC,UAAUC,SA9MQ,iBA+M3ByN,eAAeG,QApMY,mBAoMsBpL,EAAO/C,QArMpC,cAsMjBM,UAAUyQ,IA/MO,eAmNtB,IAAK,MAAMue,KAAathB,eAAeO,QAAQxL,EA/MnB,qBAkN1B,IAAK,MAAMwsB,KAAQvhB,eAAeS,KAAK6gB,EAAWzC,qBAChD0C,EAAKjvB,UAAUyQ,IAvNG,UA4NxBke,kBAAkB7X,GAChBA,EAAO9W,UAAU2I,OA7NK,UA+NtB,MAAMumB,EAAcxhB,eAAetI,KAAM,gBAAgD0R,GACzF,IAAK,MAAMqY,KAAQD,EACjBC,EAAKnvB,UAAU2I,OAjOK,UAsOFsD,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAO2f,UAAUpgB,oBAAoB1H,KAAMyF,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqB2C,IAAjBD,EAAK1C,IAAyBA,EAAOzM,WAAW,MAAmB,gBAAXyM,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,UASXhG,aAAamC,GAAGnI,OAAQmT,uBAAqB,KAC3C,IAAK,MAAM0d,KAAO1hB,eAAetI,KAAK6mB,mBACpCW,UAAUpgB,oBAAoB4iB,MAQlC5tB,mBAAmBorB,WC/QnB,MAAMhrB,OAAO,MACP8J,WAAW,SACXE,YAAa,UAEbwK,aAAc,cACdC,eAAgB,gBAChBH,aAAc,cACdC,cAAe,eACf7I,qBAAwB,eACxBgE,cAAiB,iBACjBI,oBAAuB,cAEvBb,eAAiB,YACjBC,gBAAkB,aAClB2H,aAAe,UACfC,eAAiB,YAEjBtL,kBAAoB,SACpBT,kBAAkB,OAClBC,kBAAkB,OAClByiB,eAAiB,WAEjB5C,yBAA2B,mBAC3B6C,uBAAyB,iBACzBC,uBAAyB,iBACzBC,6BAA+B,yBAE/BC,mBAAqB,sCACrBC,eAAiB,8BACjBC,eAAkB,8GAClBtiB,qBAAuB,2EACvBuiB,oBAAuB,GAAED,mBAAmBtiB,uBAE5CwiB,4BAA+B,gGAMrC,MAAMC,YAAYxkB,cAChBV,YAAYnN,GACV8N,MAAM9N,GACNqH,KAAK0V,QAAU1V,KAAK0G,SAAS9L,QAAQ+vB,oBAEhC3qB,KAAK0V,UAOV1V,KAAKirB,sBAAsBjrB,KAAK0V,QAAS1V,KAAKkrB,gBAE9CzrB,aAAamC,GAAG5B,KAAK0G,SAAU8F,eAAelN,GAASU,KAAK2P,SAASrQ,MAI5DxC,kBACT,MA1DS,MA8DX8V,OACE,MAAMuY,EAAYnrB,KAAK0G,SACvB,GAAI1G,KAAKorB,cAAcD,GACrB,OAIF,MAAME,EAASrrB,KAAKsrB,iBAEdC,EAAYF,EAChB5rB,aAAa0C,QAAQkpB,EAAQ/Z,aAAY,CAAErQ,cAAekqB,IAC1D,KAEgB1rB,aAAa0C,QAAQgpB,EAAW/Z,aAAY,CAAEnQ,cAAeoqB,IAEjE7oB,kBAAqB+oB,GAAaA,EAAU/oB,mBAI1DxC,KAAKwrB,YAAYH,EAAQF,GACzBnrB,KAAKyrB,UAAUN,EAAWE,IAI5BI,UAAU9yB,EAAS+yB,GACjB,IAAK/yB,EACH,OAGFA,EAAQuC,UAAUyQ,IA1EI,UA4EtB3L,KAAKyrB,UAAUpyB,uBAAuBV,IAEtC,MAAMuO,EAAavO,EAAQuC,UAAUC,SA7EjB,QAgGpB6E,KAAKiH,gBAlBY,KACXC,GACFvO,EAAQuC,UAAUyQ,IA/EF,QAkFmB,QAAjChT,EAAQE,aAAa,UAIzBF,EAAQod,QACRpd,EAAQgM,gBAAgB,YACxBhM,EAAQ8L,aAAa,iBAAiB,GACtCzE,KAAK2rB,gBAAgBhzB,GAAS,GAC9B8G,aAAa0C,QAAQxJ,EAAS0Y,cAAa,CACzCpQ,cAAeyqB,OAIW/yB,EAASuO,GAGzCskB,YAAY7yB,EAAS+yB,GACnB,IAAK/yB,EACH,OAGFA,EAAQuC,UAAU2I,OAzGI,UA0GtBlL,EAAQglB,OAER3d,KAAKwrB,YAAYnyB,uBAAuBV,IAExC,MAAMuO,EAAavO,EAAQuC,UAAUC,SA7GjB,QA6HpB6E,KAAKiH,gBAfY,KACXC,GACFvO,EAAQuC,UAAU2I,OA/GF,QAkHmB,QAAjClL,EAAQE,aAAa,UAIzBF,EAAQ8L,aAAa,iBAAiB,GACtC9L,EAAQ8L,aAAa,WAAY,MACjCzE,KAAK2rB,gBAAgBhzB,GAAS,GAC9B8G,aAAa0C,QAAQxJ,EAAS4Y,eAAc,CAAEtQ,cAAeyqB,OAGjC/yB,EAASuO,GAGzCyI,SAASrQ,GACP,IAAM,CAACyM,eAAgBC,gBAAiB2H,aAAcC,gBAAgB7a,SAASuG,EAAMwD,KACnF,OAGFxD,EAAMoY,kBACNpY,EAAM2D,iBACN,MAAMqN,EAAS,CAACtE,gBAAiB4H,gBAAgB7a,SAASuG,EAAMwD,KAC1D8oB,EAAoB9tB,qBAAqBkC,KAAKkrB,eAAelmB,QAAOrM,IAAYoC,WAAWpC,KAAW2G,EAAM3B,OAAQ2S,GAAQ,GAE9Hsb,GACFZ,IAAItjB,oBAAoBkkB,GAAmBhZ,OAI/CsY,eACE,OAAOtiB,eAAetI,KAAKwqB,oBAAqB9qB,KAAK0V,SAGvD4V,iBACE,OAAOtrB,KAAKkrB,eAAe5qB,MAAK2I,GAASjJ,KAAKorB,cAAcniB,MAAW,KAGzEgiB,sBAAsBjZ,EAAQhJ,GAC5BhJ,KAAK6rB,yBAAyB7Z,EAAQ,OAAQ,WAE9C,IAAK,MAAM/I,KAASD,EAClBhJ,KAAK8rB,6BAA6B7iB,GAItC6iB,6BAA6B7iB,GAC3BA,EAAQjJ,KAAK+rB,iBAAiB9iB,GAC9B,MAAM+iB,EAAWhsB,KAAKorB,cAAcniB,GAC9BgjB,EAAYjsB,KAAKksB,iBAAiBjjB,GACxCA,EAAMxE,aAAa,gBAAiBunB,GAEhCC,IAAchjB,GAChBjJ,KAAK6rB,yBAAyBI,EAAW,OAAQ,gBAG9CD,GACH/iB,EAAMxE,aAAa,WAAY,MAGjCzE,KAAK6rB,yBAAyB5iB,EAAO,OAAQ,OAG7CjJ,KAAKmsB,mCAAmCljB,GAG1CkjB,mCAAmCljB,GACjC,MAAMtL,EAAStE,uBAAuB4P,GAEjCtL,IAILqC,KAAK6rB,yBAAyBluB,EAAQ,OAAQ,YAE1CsL,EAAMwgB,IACRzpB,KAAK6rB,yBAAyBluB,EAAQ,kBAAoB,IAAGsL,EAAMwgB,OAIvEkC,gBAAgBhzB,EAASyzB,GACvB,MAAMH,EAAYjsB,KAAKksB,iBAAiBvzB,GACxC,IAAKszB,EAAU/wB,UAAUC,SAjMN,YAkMjB,OAGF,MAAMuN,EAAS,CAAC9P,EAAU4gB,KACxB,MAAM7gB,EAAUiQ,eAAeG,QAAQnQ,EAAUqzB,GAC7CtzB,GACFA,EAAQuC,UAAUwN,OAAO8Q,EAAW4S,IAIxC1jB,EA1M6B,mBALP,UAgNtBA,EA1M2B,iBAJP,QA+MpBA,EA1M2B,iBAPL,UAkNtBujB,EAAUxnB,aAAa,gBAAiB2nB,GAG1CP,yBAAyBlzB,EAASulB,EAAWla,GACtCrL,EAAQ0C,aAAa6iB,IACxBvlB,EAAQ8L,aAAayZ,EAAWla,GAIpConB,cAAc/Y,GACZ,OAAOA,EAAKnX,UAAUC,SA5NA,UAgOxB4wB,iBAAiB1Z,GACf,OAAOA,EAAKnJ,QAAQ4hB,qBAAuBzY,EAAOzJ,eAAeG,QAAQ+hB,oBAAqBzY,GAIhG6Z,iBAAiB7Z,GACf,OAAOA,EAAKzX,QAAQgwB,iBAAmBvY,EAInBlL,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAO6iB,IAAItjB,oBAAoB1H,MAErC,GAAsB,iBAAXyF,EAAX,CAIA,QAAqB2C,IAAjBD,EAAK1C,IAAyBA,EAAOzM,WAAW,MAAmB,gBAAXyM,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,UASXhG,aAAamC,GAAGpJ,SAxQc,eAwQkB+P,sBAAsB,SAAUjJ,GAC1E,CAAC,IAAK,QAAQvG,SAASiH,KAAKyH,UAC9BnI,EAAM2D,iBAGJlI,WAAWiF,OAIfgrB,IAAItjB,oBAAoB1H,MAAM4S,UAMhCnT,aAAamC,GAAGnI,OArRa,eAqRgB,KAC3C,IAAK,MAAMd,KAAWiQ,eAAetI,KAAKyqB,6BACxCC,IAAItjB,oBAAoB/O,MAO5B+D,mBAAmBsuB,KCxSnB,MAAMluB,KAAO,QACP8J,SAAW,WACXE,UAAa,YAEbulB,gBAAmB,qBACnBC,eAAkB,oBAClBnS,cAAiB,mBACjBkJ,eAAkB,oBAClB/R,WAAc,gBACdC,aAAgB,kBAChBH,WAAc,gBACdC,YAAe,iBAEfxJ,gBAAkB,OAClB0kB,gBAAkB,OAClBzkB,gBAAkB,OAClBwV,mBAAqB,UAErBhY,YAAc,CAClBse,UAAW,UACX4I,SAAU,UACV1I,MAAO,UAGHze,QAAU,CACdue,WAAW,EACX4I,UAAU,EACV1I,MAAO,KAOT,MAAM2I,cAAcjmB,cAClBV,YAAYnN,EAAS8M,GACnBgB,MAAM9N,EAAS8M,GAEfzF,KAAKokB,SAAW,KAChBpkB,KAAK0sB,sBAAuB,EAC5B1sB,KAAK2sB,yBAA0B,EAC/B3sB,KAAKykB,gBAIIpf,qBACT,OAAOA,QAGEC,yBACT,OAAOA,YAGExI,kBACT,OAAOA,KAIT8V,OACoBnT,aAAa0C,QAAQnC,KAAK0G,SAAU0K,YAExC5O,mBAIdxC,KAAK4sB,gBAED5sB,KAAK2G,QAAQid,WACf5jB,KAAK0G,SAASxL,UAAUyQ,IAvDN,QAiEpB3L,KAAK0G,SAASxL,UAAU2I,OAhEJ,QAiEpBhI,OAAOmE,KAAK0G,UACZ1G,KAAK0G,SAASxL,UAAUyQ,IAjEJ,OACG,WAkEvB3L,KAAKiH,gBAXY,KACfjH,KAAK0G,SAASxL,UAAU2I,OAxDH,WAyDrBpE,aAAa0C,QAAQnC,KAAK0G,SAAU2K,aAEpCrR,KAAK6sB,uBAOuB7sB,KAAK0G,SAAU1G,KAAK2G,QAAQid,YAG5DjR,OACO3S,KAAK+lB,YAIQtmB,aAAa0C,QAAQnC,KAAK0G,SAAU4K,YAExC9O,mBAUdxC,KAAK0G,SAASxL,UAAUyQ,IAtFD,WAuFvB3L,KAAKiH,gBAPY,KACfjH,KAAK0G,SAASxL,UAAUyQ,IAnFN,QAoFlB3L,KAAK0G,SAASxL,UAAU2I,OAlFH,UADH,QAoFlBpE,aAAa0C,QAAQnC,KAAK0G,SAAU6K,gBAIRvR,KAAK0G,SAAU1G,KAAK2G,QAAQid,aAG5D/c,UACE7G,KAAK4sB,gBAED5sB,KAAK+lB,WACP/lB,KAAK0G,SAASxL,UAAU2I,OA/FN,QAkGpB4C,MAAMI,UAGRkf,UACE,OAAO/lB,KAAK0G,SAASxL,UAAUC,SAtGX,QA2GtB0xB,qBACO7sB,KAAK2G,QAAQ6lB,WAIdxsB,KAAK0sB,sBAAwB1sB,KAAK2sB,0BAItC3sB,KAAKokB,SAAWvmB,YAAW,KACzBmC,KAAK2S,SACJ3S,KAAK2G,QAAQmd,SAGlBgJ,eAAextB,EAAOytB,GACpB,OAAQztB,EAAMK,MACZ,IAAK,YACL,IAAK,WACHK,KAAK0sB,qBAAuBK,EAC5B,MACF,IAAK,UACL,IAAK,WACH/sB,KAAK2sB,wBAA0BI,EAMnC,GAAIA,EAEF,YADA/sB,KAAK4sB,gBAIP,MAAMrc,EAAcjR,EAAM2B,cACtBjB,KAAK0G,WAAa6J,GAAevQ,KAAK0G,SAASvL,SAASoV,IAI5DvQ,KAAK6sB,qBAGPpI,gBACEhlB,aAAamC,GAAG5B,KAAK0G,SAAU2lB,iBAAiB/sB,GAASU,KAAK8sB,eAAextB,GAAO,KACpFG,aAAamC,GAAG5B,KAAK0G,SAAU4lB,gBAAgBhtB,GAASU,KAAK8sB,eAAextB,GAAO,KACnFG,aAAamC,GAAG5B,KAAK0G,SAAUyT,eAAe7a,GAASU,KAAK8sB,eAAextB,GAAO,KAClFG,aAAamC,GAAG5B,KAAK0G,SAAU2c,gBAAgB/jB,GAASU,KAAK8sB,eAAextB,GAAO,KAGrFstB,gBACE5c,aAAahQ,KAAKokB,UAClBpkB,KAAKokB,SAAW,KAIIjd,uBAAC1B,GACrB,OAAOzF,KAAKkI,MAAK,WACf,MAAMC,EAAOskB,MAAM/kB,oBAAoB1H,KAAMyF,GAE7C,GAAsB,iBAAXA,EAAqB,CAC9B,QAA4B,IAAjB0C,EAAK1C,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1C0C,EAAK1C,GAAQzF,WAUrBqH,qBAAqBolB,OAMrB/vB,mBAAmB+vB","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object)\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getElementFromSelector,\n getjQuery,\n getNextActiveElement,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.originalHandler === handler && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFunction : handler\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFunction\n delegationFunction = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFunction) {\n delegationFunction = wrapFunction(delegationFunction)\n } else {\n handler = wrapFunction(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFunction) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n const storeElementEvent = events[typeEvent] || {}\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = new Event(event, { bubbles, cancelable: true })\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n for (const key of Object.keys(args)) {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n }\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index'\nimport Manipulator from '../dom/manipulator'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport { executeAfterTransition, getElement } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Config from './util/config'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.2.0-beta1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config'\nimport EventHandler from '../dom/event-handler'\nimport { execute } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n leftCallback: null,\n rightCallback: null,\n endCallback: null\n}\n\nconst DefaultType = {\n leftCallback: '(function|null)',\n rightCallback: '(function|null)',\n endCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n ride: '(boolean|string)',\n pause: '(string|boolean)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getSelectorFromElement,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n toggle: true,\n parent: null\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(null|element)'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n defineJQueryPlugin,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n this._menu = SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n const getToggleButton = SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode)\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow } from './index'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n trapElement: null, // The element to trap focus inside of\n autofocus: true\n}\n\nconst DefaultType = {\n trapElement: 'element',\n autofocus: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, isRTL, isVisible, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY)\n }\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n event.preventDefault()\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (event.target !== event.currentTarget) { // click is inside modal-dialog\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer'\nimport { getElement, isElement } from '../util/index'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n extraClass: '',\n template: '<div></div>',\n content: {}, // { selector : text , selector2 : text2 , }\n html: false,\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist\n}\n\nconst DefaultType = {\n extraClass: '(string|function)',\n template: 'string',\n content: 'object',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object'\n}\n\nconst DefaultContentType = {\n selector: '(string|element)',\n entry: '(string|element|function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport { defineJQueryPlugin, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport TemplateFactory from './util/template-factory'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = false\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter()\n } else {\n context._leave()\n }\n\n return\n }\n\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._createPopper(tip)\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n const previousHoverState = this._isHovered\n\n this._isHovered = false\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (previousHoverState) {\n this._leave()\n }\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = false\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n tip.remove()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n\n this._disposePopper()\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // todo: remove this check on v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // todo: on v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n let isShown = false\n if (this.tip) {\n isShown = this._isShown()\n this.tip.remove()\n this.tip = null\n }\n\n this._disposePopper()\n this.tip = this._createTipElement(content)\n\n if (isShown) {\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._config.title\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n const attachment = AttachmentMap[placement.toUpperCase()]\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._config.originalTitle\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n config.originalTitle = this._element.getAttribute('title') || ''\n config.title = this._resolvePossibleFunction(config.title) || config.originalTitle\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: [0.1, 0.5, 1],\n rootMargin: this._getRootMargin()\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n _getRootMargin() {\n return this._config.offset ? `${this._config.offset}px 0px -30%` : this._config.rootMargin\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, getNextActiveElement, isDisabled } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst SELECTOR_DROPDOWN_ITEM = '.dropdown-item'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(getElementFromSelector(element)) // Search and activate/show the proper section\n\n const isAnimated = element.classList.contains(CLASS_NAME_FADE)\n const complete = () => {\n if (isAnimated) { // todo: maybe is redundant\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n if (element.getAttribute('role') !== 'tab') {\n return\n }\n\n element.focus()\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, isAnimated)\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const isAnimated = element.classList.contains(CLASS_NAME_FADE)\n const complete = () => {\n if (isAnimated) { // todo maybe is redundant\n element.classList.remove(CLASS_NAME_SHOW)\n }\n\n if (element.getAttribute('role') !== 'tab') {\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, isAnimated)\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true)\n\n if (nextActiveElement) {\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n toggle(SELECTOR_DROPDOWN_ITEM, CLASS_NAME_ACTIVE)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this.isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting\n break\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"]} |