From 72cada2e59402a42fe8e5a349fa2eef86c38243f Mon Sep 17 00:00:00 2001 From: Rohan Jha Date: Sat, 30 Mar 2024 14:20:56 -0700 Subject: [PATCH] smoll --- _build/.doctrees/README.doctree | Bin 3660 -> 6973 bytes _build/.doctrees/environment.pickle | Bin 224073 -> 226580 bytes _build/html/.buildinfo | 2 +- _build/html/README.html | 61 ++++--- _build/html/_site/README.html | 50 +++--- .../01-python_v_stata/differences.html | 49 +++--- .../content/01-python_v_stata/history.html | 49 +++--- .../content/01-python_v_stata/index.html | 50 +++--- .../content/01-python_v_stata/install.html | 49 +++--- .../content/01-python_v_stata/syntax.html | 49 +++--- .../html/_site/content/02-prereqs/index.html | 50 +++--- .../_site/content/02-prereqs/jupyter.html | 49 +++--- .../html/_site/content/02-prereqs/numpy.html | 49 +++--- .../html/_site/content/02-prereqs/python.html | 49 +++--- .../content/03-pandas/groupby_pivot.html | 49 +++--- .../html/_site/content/03-pandas/index.html | 50 +++--- .../content/03-pandas/loading-looking.html | 49 +++--- .../html/_site/content/03-pandas/merge.html | 49 +++--- .../_site/content/03-pandas/misc_funcs.html | 49 +++--- .../content/03-pandas/select_modify.html | 49 +++--- .../content/04-visualizations/advanced.html | 49 +++--- .../content/04-visualizations/choosing.html | 49 +++--- .../content/04-visualizations/index.html | 50 +++--- .../content/04-visualizations/types.html | 49 +++--- _build/html/_site/content/05-regex/index.html | 50 +++--- _build/html/_site/content/05-regex/regex.html | 49 +++--- _build/html/_site/content/06-api/api.html | 49 +++--- _build/html/_site/content/06-api/index.html | 49 +++--- _build/html/_site/content/07-sql/index.html | 50 +++--- _build/html/_site/content/07-sql/sql.html | 49 +++--- .../_site/content/08-regression/index.html | 49 +++--- .../content/08-regression/regressions.html | 50 +++--- .../09-teachers-perspective/index.html | 49 +++--- _build/html/_site/content/LICENSE.html | 50 +++--- _build/html/_site/content/intro.html | 49 +++--- _build/html/_site/content/references.html | 50 +++--- _build/html/_sources/README.md | 11 +- _build/html/_static/scripts/bootstrap.js | 2 +- _build/html/_static/scripts/bootstrap.js.map | 2 +- .../_static/scripts/pydata-sphinx-theme.js | 2 +- .../scripts/pydata-sphinx-theme.js.map | 2 +- .../_static/styles/pydata-sphinx-theme.css | 2 +- .../styles/pydata-sphinx-theme.css.map | 2 +- .../vendor/fontawesome/6.5.1/LICENSE.txt | 165 ++++++++++++++++++ .../vendor/fontawesome/6.5.1/css/all.min.css | 5 + .../vendor/fontawesome/6.5.1/js/all.min.js | 2 + .../6.5.1/js/all.min.js.LICENSE.txt | 5 + .../6.5.1/webfonts/fa-brands-400.ttf | Bin 0 -> 207972 bytes .../6.5.1/webfonts/fa-brands-400.woff2 | Bin 0 -> 117372 bytes .../6.5.1/webfonts/fa-regular-400.ttf | Bin 0 -> 68004 bytes .../6.5.1/webfonts/fa-regular-400.woff2 | Bin 0 -> 25452 bytes .../6.5.1/webfonts/fa-solid-900.ttf | Bin 0 -> 419720 bytes .../6.5.1/webfonts/fa-solid-900.woff2 | Bin 0 -> 156496 bytes .../6.5.1/webfonts/fa-v4compatibility.ttf | Bin 0 -> 10832 bytes .../6.5.1/webfonts/fa-v4compatibility.woff2 | Bin 0 -> 4792 bytes _build/html/_static/webpack-macros.html | 24 +-- .../01-python_v_stata/differences.html | 47 ++--- .../content/01-python_v_stata/history.html | 47 ++--- .../html/content/01-python_v_stata/index.html | 48 ++--- .../content/01-python_v_stata/install.html | 47 ++--- .../content/01-python_v_stata/pedagogy.html | 47 ++--- .../content/01-python_v_stata/syntax.html | 47 ++--- _build/html/content/02-prereqs/index.html | 48 ++--- _build/html/content/02-prereqs/jupyter.html | 47 ++--- _build/html/content/02-prereqs/numpy.html | 47 ++--- _build/html/content/02-prereqs/python.html | 47 ++--- .../html/content/03-pandas/groupby_pivot.html | 47 ++--- _build/html/content/03-pandas/index.html | 48 ++--- .../content/03-pandas/loading-looking.html | 47 ++--- _build/html/content/03-pandas/merge.html | 47 ++--- _build/html/content/03-pandas/misc_funcs.html | 47 ++--- .../html/content/03-pandas/select_modify.html | 47 ++--- .../content/04-visualizations/advanced.html | 47 ++--- .../content/04-visualizations/choosing.html | 47 ++--- .../html/content/04-visualizations/index.html | 48 ++--- .../html/content/04-visualizations/types.html | 47 ++--- _build/html/content/05-regex/index.html | 50 +++--- _build/html/content/05-regex/regex.html | 47 ++--- _build/html/content/06-api/api.html | 47 ++--- _build/html/content/06-api/index.html | 49 +++--- _build/html/content/07-sql/index.html | 50 +++--- _build/html/content/07-sql/sql.html | 47 ++--- _build/html/content/08-regression/index.html | 49 +++--- .../content/08-regression/regressions.html | 48 ++--- _build/html/content/LICENSE.html | 50 +++--- _build/html/content/intro.html | 49 +++--- _build/html/content/references.html | 50 +++--- _build/html/genindex.html | 50 +++--- _build/html/search.html | 48 +++-- _build/html/searchindex.js | 2 +- _build/html/update_reqs.html | 49 +++--- _config.yml | 2 +- 92 files changed, 2132 insertions(+), 1364 deletions(-) create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/LICENSE.txt create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/css/all.min.css create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/js/all.min.js create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/js/all.min.js.LICENSE.txt create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.ttf create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2 create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.ttf create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2 create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.ttf create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2 create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/webfonts/fa-v4compatibility.ttf create mode 100644 _build/html/_static/vendor/fontawesome/6.5.1/webfonts/fa-v4compatibility.woff2 diff --git a/_build/.doctrees/README.doctree b/_build/.doctrees/README.doctree index a62bb0ec237f40e5492a6921cfeb7ec2fc8fb833..9b6afc688d98eb00e0932dc75d7fa0d155d591d3 100644 GIT binary patch literal 6973 zcmc&(TW=g!9k=87vcAS{<5WuAP6Z*h$nMr5h&1AXHi zad}GrQ)_X^g@4qt9LEnF7N=^#3GBpUzDz$$cYc{ZNw-xavJT@QiENgtDV(smaGi+x z>El$b(s3!=xRu|ZkC`n+;Fs6=ET7}^kJD}5P_t4%{moR}z{w_Pia zv54nc-}17j1t$rsmyTr*BG#odiJF&IkG4|2#$UZZ&9~I|+waFLirZ1ZEx*sL_T5}& zar=it{wV3RnH~7e-J7@C1$*s>_ujhu;9kpfQhu2)^DBHN>44n^c(Qtt74o`N1|$TM ziqQ=s;~sz+0CwBBYe~y^&lb$LS-BN>B9^gXN#p%H#@j3!Fqa*-j60TZbeM4<*dcRh zcb|v?m{t(=O1k!2TJYO^Q$6}$AWd`Sf$26e&A0aWtI!WvpLd01k>%DIfB7^TGt<~q zr*BpW-mD|A_-oKQe;r2k4g9X+cMZQCXq11Oe-D~G$G7U4Jm)TmlgUu>1CH51xCh^cCEsLZWm0QxnI%p`Q)sT$Is=qRM65;OP$1ZnKWGl zUxb)neotE)Ikmw{3MvOAKaf~{wvQ~7}^2S89x)C^Kr zQF%eOnZHzC@>Lzg*#cB^0G&i4RX3iWbDg9A2JtWC+Shbz?O&ZtC>6a!ERVO40^?sM zwUFY%cnkUUyGhK+g(>%Eg(A{5<>~`rRe89_!=~`UAd*JYH=3c*>>8%FiZ)rrzJY2m zs~$Yh@*RUpUgLSKEKE9xMZB;x9VMv9mCEcd zjbJ<5{)#HEky%hlr#7O^(`EQ9w!SPJ|C!#=-L8api?;?lf=mU4$nQ{Y$R$fOOUCWZfZ7uQ;V=g8m;o+zaMdw%ta=r^4WsFz%5WA zKcv>n_%XMx#Rke&%ZT%?hzEWU;TC7Hh|vY1tJR$nc}#%+B7-~&4Qi|lZLFSs-Pjhs z?IsSD$8qWsMote0>?!4{h|R^fs-`qq&tdhjg_fmS_B^4bEU_Il`Et<_$Hk7H<}TkV-~ zNwpm1@aq)7r`4*RL^Sj<%Ms6Vv678?)I!Xpgok2wwO$UR&?r-D?WAh%XO^2_##2nQ z_}ZRoE9kpT8V%7d(9MFb=r~my-5`)u zme)4#PpcK0g!zeQ9$|>%rC3>wF_8*QxWDek0rGOTf-+yPn1=`uW-*`w#{5D)vD#D1 z6c{3O80>(#>HTwRky~#0I;+;%k$|ial#;kOG^=JE)=7Fmw|Zzr)a>I##4Hah4H;QB zBc{?%)vEBrM4BiE1B!X6Y9zATyw!{ap05mVnkcIFW^yXHG^BxP~5&UyfJcFT_7G}2#P~QE_h1Sii@d9f&vQ?ckq4=BTMyC zgb`EZm<|hJA3!5u9D8aGvzRW}ghYg6qT23?qm<97RV$H!SuLq^0!FpsBwlEih6lmw z1p%9je9I+(YkCFJ^i>qQ_nQV87?xfJ}cm_E2h=A0_bX7=n69zh|$e z8`xGZ+AXx^pa+W2{0&mpBE;=M5&{KH$o1Gej{{F(J%KI!E^MF(3>y?G;-oWjPIzRz zZeV5JNW<+x3Y+md%z+CZg9Of)1d@w3P7O@vS;93j%#WBJaeu1T^Km?k)$L|s?Wvk! z{s9fi)j}3d;J+|M;X9Zh!tl_B_L$U$vkszQS`s6En2kdtahj#C9m0id6gjdw3t2je}R+zVcgPH}{uxB@N%|1M1U&-65RLv@v)_(v5A_}Ac delta 428 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 yjPo$BhQ?h&!`albwRw!9kO`yRO`l?8*15H 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 diff --git a/_build/html/.buildinfo b/_build/html/.buildinfo index b8f3d63..445d443 100644 --- a/_build/html/.buildinfo +++ b/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 91948d69ed8dfabbd7a07fb11fa66182 +config: 647e3c12aec5a459d647e3df9f84399d tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/_build/html/README.html b/_build/html/README.html index e6301d7..8e50f47 100644 --- a/_build/html/README.html +++ b/_build/html/README.html @@ -3,7 +3,7 @@ - + @@ -19,15 +19,15 @@ - - - + + + - - - - + + + + @@ -39,9 +39,9 @@ - - - + + + @@ -77,10 +77,9 @@ - +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- 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 for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = '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';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\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)';\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';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\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 this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\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$5, 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 if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\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 const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\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 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\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 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 return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\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$1, !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 if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\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$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\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$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // 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$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\n\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\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$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\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$4);\n }\n this._element = backdrop;\n }\n return this._element;\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 _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\n\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\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$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\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 _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\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 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 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 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 _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 this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\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 Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\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 this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\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 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 const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\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 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$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\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 if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\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 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 if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\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 if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\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$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\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 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$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\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 const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\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 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 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 _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\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 const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\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});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst 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// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\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$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' + '
' + '
' + '
',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\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 super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\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 this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\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 const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\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 this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\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 _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\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 return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\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 return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\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] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\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 _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\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 _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' + '
' + '

' + '
' + '
',\n trigger: 'click'\n};\nconst DefaultType$2 = {\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$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\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 _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 if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\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$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\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$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\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 // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\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 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({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\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 const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\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 continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\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 const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n 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$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both