{"version":3,"file":"bootstrap-DSTygOmT.js","sources":["../../../node_modules/bootstrap/js/src/dom/data.js","../../../node_modules/bootstrap/js/src/util/index.js","../../../node_modules/bootstrap/js/src/dom/event-handler.js","../../../node_modules/bootstrap/js/src/dom/manipulator.js","../../../node_modules/bootstrap/js/src/util/config.js","../../../node_modules/bootstrap/js/src/base-component.js","../../../node_modules/bootstrap/js/src/dom/selector-engine.js","../../../node_modules/bootstrap/js/src/collapse.js","../../../node_modules/bootstrap/js/src/dropdown.js","../../../node_modules/bootstrap/js/src/scrollspy.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap 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 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/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (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 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(parseSelector(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 = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\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  getjQuery,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\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 makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(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    hydrateObj(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        hydrateObj(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, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  // TODO: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\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    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\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, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, 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 [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? 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    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, 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 = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\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\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap 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 util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\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, expectedTypes] of Object.entries(configTypes)) {\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 base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3'\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 dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\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 ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\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  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  reflow\n} from './util/index.js'\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  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\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 = SelectorEngine.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 = SelectorEngine.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 = SelectorEngine.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  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\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 dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\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  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n}\n\nconst DefaultType = {\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\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] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      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      ...execute(this._config.popperConfig, [defaultBsPopperConfig])\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    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\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 scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin, getElement, isDisabled, isVisible\n} from './util/index.js'\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  threshold: [0.1, 0.5, 1]\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  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\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    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\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, behavior: 'smooth' })\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: this._config.threshold,\n      rootMargin: this._config.rootMargin\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  _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(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\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"],"names":["elementMap","Data","element","key","instance","instanceMap","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","selector","match","id","toType","object","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","triggerTransitionEnd","isElement","getElement","isVisible","elementIsVisible","closedDetails","summary","isDisabled","noop","reflow","getjQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","isRTL","defineJQueryPlugin","plugin","$","name","JQUERY_NO_CONFLICT","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","target","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","nativeEvents","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","event","hydrateObj","EventHandler","bootstrapDelegationHandler","domElements","domElement","findHandler","events","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","handlers","previousFunction","removeHandler","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","obj","meta","value","normalizeData","normalizeDataKey","chr","Manipulator","attributes","bsKeys","pureKey","Config","config","jsonConfig","configTypes","property","expectedTypes","valueType","VERSION","BaseComponent","propertyName","isAnimated","getSelector","hrefAttribute","sel","SelectorEngine","child","parents","ancestor","previous","next","focusables","el","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","Default","DefaultType","Collapse","toggleList","elem","filterElement","foundElement","activeChildren","activeInstance","dimension","complete","scrollSize","trigger","children","selected","triggerArray","isOpen","_config","data","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","Dropdown","relatedTarget","Popper","referenceElement","popperConfig","Popper.createPopper","parentDropdown","isEnd","offset","popperData","defaultBsPopperConfig","items","openToggles","toggle","context","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE","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","ScrollSpy","section","observableSection","root","height","options","entries","targetElement","entry","activate","parentScrollTop","userScrollsDown","entryIsLowerThanPrevious","targetLinks","anchor","listGroup","item","parent","activeNodes","node","spy"],"mappings":"qDAWA,MAAMA,EAAa,IAAI,IAERC,EAAA,CACb,IAAIC,EAASC,EAAKC,EAAU,CACrBJ,EAAW,IAAIE,CAAO,GACzBF,EAAW,IAAIE,EAAS,IAAI,GAAK,EAGnC,MAAMG,EAAcL,EAAW,IAAIE,CAAO,EAI1C,GAAI,CAACG,EAAY,IAAIF,CAAG,GAAKE,EAAY,OAAS,EAAG,CAEnD,QAAQ,MAAM,+EAA+E,MAAM,KAAKA,EAAY,MAAM,EAAE,CAAC,CAAC,GAAG,EACjI,MACD,CAEDA,EAAY,IAAIF,EAAKC,CAAQ,CAC9B,EAED,IAAIF,EAASC,EAAK,CAChB,OAAIH,EAAW,IAAIE,CAAO,GACjBF,EAAW,IAAIE,CAAO,EAAE,IAAIC,CAAG,GAAK,IAI9C,EAED,OAAOD,EAASC,EAAK,CACnB,GAAI,CAACH,EAAW,IAAIE,CAAO,EACzB,OAGF,MAAMG,EAAcL,EAAW,IAAIE,CAAO,EAE1CG,EAAY,OAAOF,CAAG,EAGlBE,EAAY,OAAS,GACvBL,EAAW,OAAOE,CAAO,CAE5B,CACH,EC9CMI,GAA0B,IAC1BC,EAAiB,gBAOjBC,GAAgBC,IAChBA,GAAY,OAAO,KAAO,OAAO,IAAI,SAEvCA,EAAWA,EAAS,QAAQ,gBAAiB,CAACC,EAAOC,IAAO,IAAI,IAAI,OAAOA,CAAE,CAAC,EAAE,GAG3EF,GAIHG,GAASC,GACTA,GAAW,KACN,GAAGA,CAAM,GAGX,OAAO,UAAU,SAAS,KAAKA,CAAM,EAAE,MAAM,aAAa,EAAE,CAAC,EAAE,YAAa,EAe/EC,GAAmCZ,GAAW,CAClD,GAAI,CAACA,EACH,MAAO,GAIT,GAAI,CAAE,mBAAAa,EAAoB,gBAAAC,CAAe,EAAK,OAAO,iBAAiBd,CAAO,EAE7E,MAAMe,EAA0B,OAAO,WAAWF,CAAkB,EAC9DG,EAAuB,OAAO,WAAWF,CAAe,EAG9D,MAAI,CAACC,GAA2B,CAACC,EACxB,GAITH,EAAqBA,EAAmB,MAAM,GAAG,EAAE,CAAC,EACpDC,EAAkBA,EAAgB,MAAM,GAAG,EAAE,CAAC,GAEtC,OAAO,WAAWD,CAAkB,EAAI,OAAO,WAAWC,CAAe,GAAKV,GACxF,EAEMa,GAAuBjB,GAAW,CACtCA,EAAQ,cAAc,IAAI,MAAMK,CAAc,CAAC,CACjD,EAEMa,EAAYP,GACZ,CAACA,GAAU,OAAOA,GAAW,SACxB,IAGL,OAAOA,EAAO,OAAW,MAC3BA,EAASA,EAAO,CAAC,GAGZ,OAAOA,EAAO,SAAa,KAG9BQ,EAAaR,GAEbO,EAAUP,CAAM,EACXA,EAAO,OAASA,EAAO,CAAC,EAAIA,EAGjC,OAAOA,GAAW,UAAYA,EAAO,OAAS,EACzC,SAAS,cAAcL,GAAcK,CAAM,CAAC,EAG9C,KAGHS,EAAYpB,GAAW,CAC3B,GAAI,CAACkB,EAAUlB,CAAO,GAAKA,EAAQ,eAAgB,EAAC,SAAW,EAC7D,MAAO,GAGT,MAAMqB,EAAmB,iBAAiBrB,CAAO,EAAE,iBAAiB,YAAY,IAAM,UAEhFsB,EAAgBtB,EAAQ,QAAQ,qBAAqB,EAE3D,GAAI,CAACsB,EACH,OAAOD,EAGT,GAAIC,IAAkBtB,EAAS,CAC7B,MAAMuB,EAAUvB,EAAQ,QAAQ,SAAS,EAKzC,GAJIuB,GAAWA,EAAQ,aAAeD,GAIlCC,IAAY,KACd,MAAO,EAEV,CAED,OAAOF,CACT,EAEMG,EAAaxB,GACb,CAACA,GAAWA,EAAQ,WAAa,KAAK,cAItCA,EAAQ,UAAU,SAAS,UAAU,EAChC,GAGL,OAAOA,EAAQ,SAAa,IACvBA,EAAQ,SAGVA,EAAQ,aAAa,UAAU,GAAKA,EAAQ,aAAa,UAAU,IAAM,QA0B5EyB,EAAO,IAAM,CAAE,EAUfC,GAAS1B,GAAW,CACxBA,EAAQ,YACV,EAEM2B,GAAY,IACZ,OAAO,QAAU,CAAC,SAAS,KAAK,aAAa,mBAAmB,EAC3D,OAAO,OAGT,KAGHC,EAA4B,CAAE,EAE9BC,GAAqBC,GAAY,CACjC,SAAS,aAAe,WAErBF,EAA0B,QAC7B,SAAS,iBAAiB,mBAAoB,IAAM,CAClD,UAAWE,KAAYF,EACrBE,EAAU,CAEpB,CAAO,EAGHF,EAA0B,KAAKE,CAAQ,GAEvCA,EAAU,CAEd,EAEMC,EAAQ,IAAM,SAAS,gBAAgB,MAAQ,MAE/CC,EAAqBC,GAAU,CACnCJ,GAAmB,IAAM,CACvB,MAAMK,EAAIP,GAAW,EAErB,GAAIO,EAAG,CACL,MAAMC,EAAOF,EAAO,KACdG,EAAqBF,EAAE,GAAGC,CAAI,EACpCD,EAAE,GAAGC,CAAI,EAAIF,EAAO,gBACpBC,EAAE,GAAGC,CAAI,EAAE,YAAcF,EACzBC,EAAE,GAAGC,CAAI,EAAE,WAAa,KACtBD,EAAE,GAAGC,CAAI,EAAIC,EACNH,EAAO,gBAEjB,CACL,CAAG,CACH,EAEMI,EAAU,CAACC,EAAkBC,EAAO,CAAA,EAAIC,EAAeF,IACpD,OAAOA,GAAqB,WAAaA,EAAiB,GAAGC,CAAI,EAAIC,EAGxEC,GAAyB,CAACX,EAAUY,EAAmBC,EAAoB,KAAS,CACxF,GAAI,CAACA,EAAmB,CACtBN,EAAQP,CAAQ,EAChB,MACD,CAGD,MAAMc,EAAmBhC,GAAiC8B,CAAiB,EADnD,EAGxB,IAAIG,EAAS,GAEb,MAAMC,EAAU,CAAC,CAAE,OAAAC,KAAa,CAC1BA,IAAWL,IAIfG,EAAS,GACTH,EAAkB,oBAAoBrC,EAAgByC,CAAO,EAC7DT,EAAQP,CAAQ,EACjB,EAEDY,EAAkB,iBAAiBrC,EAAgByC,CAAO,EAC1D,WAAW,IAAM,CACVD,GACH5B,GAAqByB,CAAiB,CAEzC,EAAEE,CAAgB,CACrB,EAWMI,GAAuB,CAACC,EAAMC,EAAeC,EAAeC,IAAmB,CACnF,MAAMC,EAAaJ,EAAK,OACxB,IAAIK,EAAQL,EAAK,QAAQC,CAAa,EAItC,OAAII,IAAU,GACL,CAACH,GAAiBC,EAAiBH,EAAKI,EAAa,CAAC,EAAIJ,EAAK,CAAC,GAGzEK,GAASH,EAAgB,EAAI,GAEzBC,IACFE,GAASA,EAAQD,GAAcA,GAG1BJ,EAAK,KAAK,IAAI,EAAG,KAAK,IAAIK,EAAOD,EAAa,CAAC,CAAC,CAAC,EAC1D,EC9QME,GAAiB,qBACjBC,GAAiB,OACjBC,GAAgB,SAChBC,EAAgB,CAAE,EACxB,IAAIC,EAAW,EACf,MAAMC,GAAe,CACnB,WAAY,YACZ,WAAY,UACd,EAEMC,GAAe,IAAI,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,QACF,CAAC,EAMD,SAASC,GAAa9D,EAAS+D,EAAK,CAClC,OAAQA,GAAO,GAAGA,CAAG,KAAKJ,GAAU,IAAO3D,EAAQ,UAAY2D,GACjE,CAEA,SAASK,GAAiBhE,EAAS,CACjC,MAAM+D,EAAMD,GAAa9D,CAAO,EAEhC,OAAAA,EAAQ,SAAW+D,EACnBL,EAAcK,CAAG,EAAIL,EAAcK,CAAG,GAAK,CAAE,EAEtCL,EAAcK,CAAG,CAC1B,CAEA,SAASE,GAAiBjE,EAASkE,EAAI,CACrC,OAAO,SAASpB,EAAQqB,EAAO,CAC7B,OAAAC,EAAWD,EAAO,CAAE,eAAgBnE,CAAO,CAAE,EAEzC8C,EAAQ,QACVuB,EAAa,IAAIrE,EAASmE,EAAM,KAAMD,CAAE,EAGnCA,EAAG,MAAMlE,EAAS,CAACmE,CAAK,CAAC,CACjC,CACH,CAEA,SAASG,GAA2BtE,EAASO,EAAU2D,EAAI,CACzD,OAAO,SAASpB,EAAQqB,EAAO,CAC7B,MAAMI,EAAcvE,EAAQ,iBAAiBO,CAAQ,EAErD,OAAS,CAAE,OAAAwC,CAAQ,EAAGoB,EAAOpB,GAAUA,IAAW,KAAMA,EAASA,EAAO,WACtE,UAAWyB,KAAcD,EACvB,GAAIC,IAAezB,EAInB,OAAAqB,EAAWD,EAAO,CAAE,eAAgBpB,CAAM,CAAE,EAExCD,EAAQ,QACVuB,EAAa,IAAIrE,EAASmE,EAAM,KAAM5D,EAAU2D,CAAE,EAG7CA,EAAG,MAAMnB,EAAQ,CAACoB,CAAK,CAAC,CAGpC,CACH,CAEA,SAASM,GAAYC,EAAQC,EAAUC,EAAqB,KAAM,CAChE,OAAO,OAAO,OAAOF,CAAM,EACxB,KAAKP,GAASA,EAAM,WAAaQ,GAAYR,EAAM,qBAAuBS,CAAkB,CACjG,CAEA,SAASC,GAAoBC,EAAmBhC,EAASiC,EAAoB,CAC3E,MAAMC,EAAc,OAAOlC,GAAY,SAEjC6B,EAAWK,EAAcD,EAAsBjC,GAAWiC,EAChE,IAAIE,EAAYC,GAAaJ,CAAiB,EAE9C,OAAKjB,GAAa,IAAIoB,CAAS,IAC7BA,EAAYH,GAGP,CAACE,EAAaL,EAAUM,CAAS,CAC1C,CAEA,SAASE,EAAWnF,EAAS8E,EAAmBhC,EAASiC,EAAoBK,EAAQ,CACnF,GAAI,OAAON,GAAsB,UAAY,CAAC9E,EAC5C,OAGF,GAAI,CAACgF,EAAaL,EAAUM,CAAS,EAAIJ,GAAoBC,EAAmBhC,EAASiC,CAAkB,EAIvGD,KAAqBlB,KASvBe,GARqBT,IACZ,SAAUC,EAAO,CACtB,GAAI,CAACA,EAAM,eAAkBA,EAAM,gBAAkBA,EAAM,gBAAkB,CAACA,EAAM,eAAe,SAASA,EAAM,aAAa,EAC7H,OAAOD,GAAG,KAAK,KAAMC,CAAK,CAE7B,GAGqBQ,CAAQ,GAGlC,MAAMD,EAASV,GAAiBhE,CAAO,EACjCqF,EAAWX,EAAOO,CAAS,IAAMP,EAAOO,CAAS,EAAI,IACrDK,EAAmBb,GAAYY,EAAUV,EAAUK,EAAclC,EAAU,IAAI,EAErF,GAAIwC,EAAkB,CACpBA,EAAiB,OAASA,EAAiB,QAAUF,EAErD,MACD,CAED,MAAMrB,EAAMD,GAAaa,EAAUG,EAAkB,QAAQvB,GAAgB,EAAE,CAAC,EAC1EW,EAAKc,EACTV,GAA2BtE,EAAS8C,EAAS6B,CAAQ,EACrDV,GAAiBjE,EAAS2E,CAAQ,EAEpCT,EAAG,mBAAqBc,EAAclC,EAAU,KAChDoB,EAAG,SAAWS,EACdT,EAAG,OAASkB,EACZlB,EAAG,SAAWH,EACdsB,EAAStB,CAAG,EAAIG,EAEhBlE,EAAQ,iBAAiBiF,EAAWf,EAAIc,CAAW,CACrD,CAEA,SAASO,EAAcvF,EAAS0E,EAAQO,EAAWnC,EAAS8B,EAAoB,CAC9E,MAAMV,EAAKO,GAAYC,EAAOO,CAAS,EAAGnC,EAAS8B,CAAkB,EAEhEV,IAILlE,EAAQ,oBAAoBiF,EAAWf,EAAI,EAAQU,CAAmB,EACtE,OAAOF,EAAOO,CAAS,EAAEf,EAAG,QAAQ,EACtC,CAEA,SAASsB,GAAyBxF,EAAS0E,EAAQO,EAAWQ,EAAW,CACvE,MAAMC,EAAoBhB,EAAOO,CAAS,GAAK,CAAE,EAEjD,SAAW,CAACU,EAAYxB,CAAK,IAAK,OAAO,QAAQuB,CAAiB,EAC5DC,EAAW,SAASF,CAAS,GAC/BF,EAAcvF,EAAS0E,EAAQO,EAAWd,EAAM,SAAUA,EAAM,kBAAkB,CAGxF,CAEA,SAASe,GAAaf,EAAO,CAE3B,OAAAA,EAAQA,EAAM,QAAQX,GAAgB,EAAE,EACjCI,GAAaO,CAAK,GAAKA,CAChC,CAEA,MAAME,EAAe,CACnB,GAAGrE,EAASmE,EAAOrB,EAASiC,EAAoB,CAC9CI,EAAWnF,EAASmE,EAAOrB,EAASiC,EAAoB,EAAK,CAC9D,EAED,IAAI/E,EAASmE,EAAOrB,EAASiC,EAAoB,CAC/CI,EAAWnF,EAASmE,EAAOrB,EAASiC,EAAoB,EAAI,CAC7D,EAED,IAAI/E,EAAS8E,EAAmBhC,EAASiC,EAAoB,CAC3D,GAAI,OAAOD,GAAsB,UAAY,CAAC9E,EAC5C,OAGF,KAAM,CAACgF,EAAaL,EAAUM,CAAS,EAAIJ,GAAoBC,EAAmBhC,EAASiC,CAAkB,EACvGa,EAAcX,IAAcH,EAC5BJ,EAASV,GAAiBhE,CAAO,EACjC0F,EAAoBhB,EAAOO,CAAS,GAAK,CAAE,EAC3CY,EAAcf,EAAkB,WAAW,GAAG,EAEpD,GAAI,OAAOH,EAAa,IAAa,CAEnC,GAAI,CAAC,OAAO,KAAKe,CAAiB,EAAE,OAClC,OAGFH,EAAcvF,EAAS0E,EAAQO,EAAWN,EAAUK,EAAclC,EAAU,IAAI,EAChF,MACD,CAED,GAAI+C,EACF,UAAWC,KAAgB,OAAO,KAAKpB,CAAM,EAC3Cc,GAAyBxF,EAAS0E,EAAQoB,EAAchB,EAAkB,MAAM,CAAC,CAAC,EAItF,SAAW,CAACiB,EAAa5B,CAAK,IAAK,OAAO,QAAQuB,CAAiB,EAAG,CACpE,MAAMC,EAAaI,EAAY,QAAQtC,GAAe,EAAE,GAEpD,CAACmC,GAAed,EAAkB,SAASa,CAAU,IACvDJ,EAAcvF,EAAS0E,EAAQO,EAAWd,EAAM,SAAUA,EAAM,kBAAkB,CAErF,CACF,EAED,QAAQnE,EAASmE,EAAO5B,EAAM,CAC5B,GAAI,OAAO4B,GAAU,UAAY,CAACnE,EAChC,OAAO,KAGT,MAAMkC,EAAIP,GAAW,EACfsD,EAAYC,GAAaf,CAAK,EAC9ByB,EAAczB,IAAUc,EAE9B,IAAIe,EAAc,KACdC,EAAU,GACVC,EAAiB,GACjBC,EAAmB,GAEnBP,GAAe1D,IACjB8D,EAAc9D,EAAE,MAAMiC,EAAO5B,CAAI,EAEjCL,EAAElC,CAAO,EAAE,QAAQgG,CAAW,EAC9BC,EAAU,CAACD,EAAY,qBAAsB,EAC7CE,EAAiB,CAACF,EAAY,8BAA+B,EAC7DG,EAAmBH,EAAY,mBAAoB,GAGrD,MAAMI,EAAMhC,EAAW,IAAI,MAAMD,EAAO,CAAE,QAAA8B,EAAS,WAAY,GAAM,EAAG1D,CAAI,EAE5E,OAAI4D,GACFC,EAAI,eAAgB,EAGlBF,GACFlG,EAAQ,cAAcoG,CAAG,EAGvBA,EAAI,kBAAoBJ,GAC1BA,EAAY,eAAgB,EAGvBI,CACR,CACH,EAEA,SAAShC,EAAWiC,EAAKC,EAAO,GAAI,CAClC,SAAW,CAACrG,EAAKsG,CAAK,IAAK,OAAO,QAAQD,CAAI,EAC5C,GAAI,CACFD,EAAIpG,CAAG,EAAIsG,CACjB,MAAY,CACN,OAAO,eAAeF,EAAKpG,EAAK,CAC9B,aAAc,GACd,KAAM,CACJ,OAAOsG,CACR,CACT,CAAO,CACF,CAGH,OAAOF,CACT,CCnTA,SAASG,GAAcD,EAAO,CAC5B,GAAIA,IAAU,OACZ,MAAO,GAGT,GAAIA,IAAU,QACZ,MAAO,GAGT,GAAIA,IAAU,OAAOA,CAAK,EAAE,SAAQ,EAClC,OAAO,OAAOA,CAAK,EAGrB,GAAIA,IAAU,IAAMA,IAAU,OAC5B,OAAO,KAGT,GAAI,OAAOA,GAAU,SACnB,OAAOA,EAGT,GAAI,CACF,OAAO,KAAK,MAAM,mBAAmBA,CAAK,CAAC,CAC/C,MAAU,CACN,OAAOA,CACR,CACH,CAEA,SAASE,EAAiBxG,EAAK,CAC7B,OAAOA,EAAI,QAAQ,SAAUyG,GAAO,IAAIA,EAAI,YAAa,CAAA,EAAE,CAC7D,CAEA,MAAMC,EAAc,CAClB,iBAAiB3G,EAASC,EAAKsG,EAAO,CACpCvG,EAAQ,aAAa,WAAWyG,EAAiBxG,CAAG,CAAC,GAAIsG,CAAK,CAC/D,EAED,oBAAoBvG,EAASC,EAAK,CAChCD,EAAQ,gBAAgB,WAAWyG,EAAiBxG,CAAG,CAAC,EAAE,CAC3D,EAED,kBAAkBD,EAAS,CACzB,GAAI,CAACA,EACH,MAAO,CAAE,EAGX,MAAM4G,EAAa,CAAE,EACfC,EAAS,OAAO,KAAK7G,EAAQ,OAAO,EAAE,OAAOC,GAAOA,EAAI,WAAW,IAAI,GAAK,CAACA,EAAI,WAAW,UAAU,CAAC,EAE7G,UAAWA,KAAO4G,EAAQ,CACxB,IAAIC,EAAU7G,EAAI,QAAQ,MAAO,EAAE,EACnC6G,EAAUA,EAAQ,OAAO,CAAC,EAAE,cAAgBA,EAAQ,MAAM,EAAGA,EAAQ,MAAM,EAC3EF,EAAWE,CAAO,EAAIN,GAAcxG,EAAQ,QAAQC,CAAG,CAAC,CACzD,CAED,OAAO2G,CACR,EAED,iBAAiB5G,EAASC,EAAK,CAC7B,OAAOuG,GAAcxG,EAAQ,aAAa,WAAWyG,EAAiBxG,CAAG,CAAC,EAAE,CAAC,CAC9E,CACH,ECtDA,MAAM8G,EAAO,CAEX,WAAW,SAAU,CACnB,MAAO,CAAE,CACV,CAED,WAAW,aAAc,CACvB,MAAO,CAAE,CACV,CAED,WAAW,MAAO,CAChB,MAAM,IAAI,MAAM,qEAAqE,CACtF,CAED,WAAWC,EAAQ,CACjB,OAAAA,EAAS,KAAK,gBAAgBA,CAAM,EACpCA,EAAS,KAAK,kBAAkBA,CAAM,EACtC,KAAK,iBAAiBA,CAAM,EACrBA,CACR,CAED,kBAAkBA,EAAQ,CACxB,OAAOA,CACR,CAED,gBAAgBA,EAAQhH,EAAS,CAC/B,MAAMiH,EAAa/F,EAAUlB,CAAO,EAAI2G,EAAY,iBAAiB3G,EAAS,QAAQ,EAAI,CAAE,EAE5F,MAAO,CACL,GAAG,KAAK,YAAY,QACpB,GAAI,OAAOiH,GAAe,SAAWA,EAAa,CAAE,EACpD,GAAI/F,EAAUlB,CAAO,EAAI2G,EAAY,kBAAkB3G,CAAO,EAAI,CAAE,EACpE,GAAI,OAAOgH,GAAW,SAAWA,EAAS,CAAE,CAC7C,CACF,CAED,iBAAiBA,EAAQE,EAAc,KAAK,YAAY,YAAa,CACnE,SAAW,CAACC,EAAUC,CAAa,IAAK,OAAO,QAAQF,CAAW,EAAG,CACnE,MAAMX,EAAQS,EAAOG,CAAQ,EACvBE,EAAYnG,EAAUqF,CAAK,EAAI,UAAY7F,GAAO6F,CAAK,EAE7D,GAAI,CAAC,IAAI,OAAOa,CAAa,EAAE,KAAKC,CAAS,EAC3C,MAAM,IAAI,UACR,GAAG,KAAK,YAAY,KAAK,YAAW,CAAE,aAAaF,CAAQ,oBAAoBE,CAAS,wBAAwBD,CAAa,IAC9H,CAEJ,CACF,CACH,CC9CA,MAAME,GAAU,QAMhB,MAAMC,UAAsBR,EAAO,CACjC,YAAY/G,EAASgH,EAAQ,CAC3B,MAAO,EAEPhH,EAAUmB,EAAWnB,CAAO,EACvBA,IAIL,KAAK,SAAWA,EAChB,KAAK,QAAU,KAAK,WAAWgH,CAAM,EAErCjH,EAAK,IAAI,KAAK,SAAU,KAAK,YAAY,SAAU,IAAI,EACxD,CAGD,SAAU,CACRA,EAAK,OAAO,KAAK,SAAU,KAAK,YAAY,QAAQ,EACpDsE,EAAa,IAAI,KAAK,SAAU,KAAK,YAAY,SAAS,EAE1D,UAAWmD,KAAgB,OAAO,oBAAoB,IAAI,EACxD,KAAKA,CAAY,EAAI,IAExB,CAED,eAAe1F,EAAU9B,EAASyH,EAAa,GAAM,CACnDhF,GAAuBX,EAAU9B,EAASyH,CAAU,CACrD,CAED,WAAWT,EAAQ,CACjB,OAAAA,EAAS,KAAK,gBAAgBA,EAAQ,KAAK,QAAQ,EACnDA,EAAS,KAAK,kBAAkBA,CAAM,EACtC,KAAK,iBAAiBA,CAAM,EACrBA,CACR,CAGD,OAAO,YAAYhH,EAAS,CAC1B,OAAOD,EAAK,IAAIoB,EAAWnB,CAAO,EAAG,KAAK,QAAQ,CACnD,CAED,OAAO,oBAAoBA,EAASgH,EAAS,GAAI,CAC/C,OAAO,KAAK,YAAYhH,CAAO,GAAK,IAAI,KAAKA,EAAS,OAAOgH,GAAW,SAAWA,EAAS,IAAI,CACjG,CAED,WAAW,SAAU,CACnB,OAAOM,EACR,CAED,WAAW,UAAW,CACpB,MAAO,MAAM,KAAK,IAAI,EACvB,CAED,WAAW,WAAY,CACrB,MAAO,IAAI,KAAK,QAAQ,EACzB,CAED,OAAO,UAAUnF,EAAM,CACrB,MAAO,GAAGA,CAAI,GAAG,KAAK,SAAS,EAChC,CACH,CCzEA,MAAMuF,EAAc1H,GAAW,CAC7B,IAAIO,EAAWP,EAAQ,aAAa,gBAAgB,EAEpD,GAAI,CAACO,GAAYA,IAAa,IAAK,CACjC,IAAIoH,EAAgB3H,EAAQ,aAAa,MAAM,EAM/C,GAAI,CAAC2H,GAAkB,CAACA,EAAc,SAAS,GAAG,GAAK,CAACA,EAAc,WAAW,GAAG,EAClF,OAAO,KAILA,EAAc,SAAS,GAAG,GAAK,CAACA,EAAc,WAAW,GAAG,IAC9DA,EAAgB,IAAIA,EAAc,MAAM,GAAG,EAAE,CAAC,CAAC,IAGjDpH,EAAWoH,GAAiBA,IAAkB,IAAMA,EAAc,KAAI,EAAK,IAC5E,CAED,OAAOpH,EAAWA,EAAS,MAAM,GAAG,EAAE,IAAIqH,GAAOtH,GAAcsH,CAAG,CAAC,EAAE,KAAK,GAAG,EAAI,IACnF,EAEMC,EAAiB,CACrB,KAAKtH,EAAUP,EAAU,SAAS,gBAAiB,CACjD,MAAO,CAAE,EAAC,OAAO,GAAG,QAAQ,UAAU,iBAAiB,KAAKA,EAASO,CAAQ,CAAC,CAC/E,EAED,QAAQA,EAAUP,EAAU,SAAS,gBAAiB,CACpD,OAAO,QAAQ,UAAU,cAAc,KAAKA,EAASO,CAAQ,CAC9D,EAED,SAASP,EAASO,EAAU,CAC1B,MAAO,GAAG,OAAO,GAAGP,EAAQ,QAAQ,EAAE,OAAO8H,GAASA,EAAM,QAAQvH,CAAQ,CAAC,CAC9E,EAED,QAAQP,EAASO,EAAU,CACzB,MAAMwH,EAAU,CAAE,EAClB,IAAIC,EAAWhI,EAAQ,WAAW,QAAQO,CAAQ,EAElD,KAAOyH,GACLD,EAAQ,KAAKC,CAAQ,EACrBA,EAAWA,EAAS,WAAW,QAAQzH,CAAQ,EAGjD,OAAOwH,CACR,EAED,KAAK/H,EAASO,EAAU,CACtB,IAAI0H,EAAWjI,EAAQ,uBAEvB,KAAOiI,GAAU,CACf,GAAIA,EAAS,QAAQ1H,CAAQ,EAC3B,MAAO,CAAC0H,CAAQ,EAGlBA,EAAWA,EAAS,sBACrB,CAED,MAAO,CAAE,CACV,EAED,KAAKjI,EAASO,EAAU,CACtB,IAAI2H,EAAOlI,EAAQ,mBAEnB,KAAOkI,GAAM,CACX,GAAIA,EAAK,QAAQ3H,CAAQ,EACvB,MAAO,CAAC2H,CAAI,EAGdA,EAAOA,EAAK,kBACb,CAED,MAAO,CAAE,CACV,EAED,kBAAkBlI,EAAS,CACzB,MAAMmI,EAAa,CACjB,IACA,SACA,QACA,WACA,SACA,UACA,aACA,0BACN,EAAM,IAAI5H,GAAY,GAAGA,CAAQ,uBAAuB,EAAE,KAAK,GAAG,EAE9D,OAAO,KAAK,KAAK4H,EAAYnI,CAAO,EAAE,OAAOoI,GAAM,CAAC5G,EAAW4G,CAAE,GAAKhH,EAAUgH,CAAE,CAAC,CACpF,EAED,uBAAuBpI,EAAS,CAC9B,MAAMO,EAAWmH,EAAY1H,CAAO,EAEpC,OAAIO,GACKsH,EAAe,QAAQtH,CAAQ,EAAIA,EAGrC,IACR,EAED,uBAAuBP,EAAS,CAC9B,MAAMO,EAAWmH,EAAY1H,CAAO,EAEpC,OAAOO,EAAWsH,EAAe,QAAQtH,CAAQ,EAAI,IACtD,EAED,gCAAgCP,EAAS,CACvC,MAAMO,EAAWmH,EAAY1H,CAAO,EAEpC,OAAOO,EAAWsH,EAAe,KAAKtH,CAAQ,EAAI,CAAE,CACrD,CACH,ECvGM8H,GAAO,WACPC,GAAW,cACXC,EAAY,IAAID,EAAQ,GACxBE,GAAe,YAEfC,GAAa,OAAOF,CAAS,GAC7BG,GAAc,QAAQH,CAAS,GAC/BI,GAAa,OAAOJ,CAAS,GAC7BK,GAAe,SAASL,CAAS,GACjCM,GAAuB,QAAQN,CAAS,GAAGC,EAAY,GAEvDM,EAAkB,OAClBC,EAAsB,WACtBC,EAAwB,aACxBC,GAAuB,YACvBC,GAA6B,WAAWH,CAAmB,KAAKA,CAAmB,GACnFI,GAAwB,sBAExBC,GAAQ,QACRC,GAAS,SAETC,GAAmB,uCACnBC,EAAuB,8BAEvBC,GAAU,CACd,OAAQ,KACR,OAAQ,EACV,EAEMC,GAAc,CAClB,OAAQ,iBACR,OAAQ,SACV,EAMA,MAAMC,UAAiBnC,CAAc,CACnC,YAAYvH,EAASgH,EAAQ,CAC3B,MAAMhH,EAASgH,CAAM,EAErB,KAAK,iBAAmB,GACxB,KAAK,cAAgB,CAAE,EAEvB,MAAM2C,EAAa9B,EAAe,KAAK0B,CAAoB,EAE3D,UAAWK,KAAQD,EAAY,CAC7B,MAAMpJ,EAAWsH,EAAe,uBAAuB+B,CAAI,EACrDC,EAAgBhC,EAAe,KAAKtH,CAAQ,EAC/C,OAAOuJ,GAAgBA,IAAiB,KAAK,QAAQ,EAEpDvJ,IAAa,MAAQsJ,EAAc,QACrC,KAAK,cAAc,KAAKD,CAAI,CAE/B,CAED,KAAK,oBAAqB,EAErB,KAAK,QAAQ,QAChB,KAAK,0BAA0B,KAAK,cAAe,KAAK,SAAQ,CAAE,EAGhE,KAAK,QAAQ,QACf,KAAK,OAAQ,CAEhB,CAGD,WAAW,SAAU,CACnB,OAAOJ,EACR,CAED,WAAW,aAAc,CACvB,OAAOC,EACR,CAED,WAAW,MAAO,CAChB,OAAOpB,EACR,CAGD,QAAS,CACH,KAAK,WACP,KAAK,KAAM,EAEX,KAAK,KAAM,CAEd,CAED,MAAO,CACL,GAAI,KAAK,kBAAoB,KAAK,SAAQ,EACxC,OAGF,IAAI0B,EAAiB,CAAE,EAcvB,GAXI,KAAK,QAAQ,SACfA,EAAiB,KAAK,uBAAuBT,EAAgB,EAC1D,OAAOtJ,GAAWA,IAAY,KAAK,QAAQ,EAC3C,IAAIA,GAAW0J,EAAS,oBAAoB1J,EAAS,CAAE,OAAQ,EAAK,CAAE,CAAC,GAGxE+J,EAAe,QAAUA,EAAe,CAAC,EAAE,kBAI5B1F,EAAa,QAAQ,KAAK,SAAUoE,EAAU,EAClD,iBACb,OAGF,UAAWuB,KAAkBD,EAC3BC,EAAe,KAAM,EAGvB,MAAMC,EAAY,KAAK,cAAe,EAEtC,KAAK,SAAS,UAAU,OAAOlB,CAAmB,EAClD,KAAK,SAAS,UAAU,IAAIC,CAAqB,EAEjD,KAAK,SAAS,MAAMiB,CAAS,EAAI,EAEjC,KAAK,0BAA0B,KAAK,cAAe,EAAI,EACvD,KAAK,iBAAmB,GAExB,MAAMC,EAAW,IAAM,CACrB,KAAK,iBAAmB,GAExB,KAAK,SAAS,UAAU,OAAOlB,CAAqB,EACpD,KAAK,SAAS,UAAU,IAAID,EAAqBD,CAAe,EAEhE,KAAK,SAAS,MAAMmB,CAAS,EAAI,GAEjC5F,EAAa,QAAQ,KAAK,SAAUqE,EAAW,CAChD,EAGKyB,EAAa,SADUF,EAAU,CAAC,EAAE,YAAW,EAAKA,EAAU,MAAM,CAAC,CAC3B,GAEhD,KAAK,eAAeC,EAAU,KAAK,SAAU,EAAI,EACjD,KAAK,SAAS,MAAMD,CAAS,EAAI,GAAG,KAAK,SAASE,CAAU,CAAC,IAC9D,CAED,MAAO,CAML,GALI,KAAK,kBAAoB,CAAC,KAAK,SAAQ,GAIxB9F,EAAa,QAAQ,KAAK,SAAUsE,EAAU,EAClD,iBACb,OAGF,MAAMsB,EAAY,KAAK,cAAe,EAEtC,KAAK,SAAS,MAAMA,CAAS,EAAI,GAAG,KAAK,SAAS,sBAAqB,EAAGA,CAAS,CAAC,KAEpFvI,GAAO,KAAK,QAAQ,EAEpB,KAAK,SAAS,UAAU,IAAIsH,CAAqB,EACjD,KAAK,SAAS,UAAU,OAAOD,EAAqBD,CAAe,EAEnE,UAAWsB,KAAW,KAAK,cAAe,CACxC,MAAMpK,EAAU6H,EAAe,uBAAuBuC,CAAO,EAEzDpK,GAAW,CAAC,KAAK,SAASA,CAAO,GACnC,KAAK,0BAA0B,CAACoK,CAAO,EAAG,EAAK,CAElD,CAED,KAAK,iBAAmB,GAExB,MAAMF,EAAW,IAAM,CACrB,KAAK,iBAAmB,GACxB,KAAK,SAAS,UAAU,OAAOlB,CAAqB,EACpD,KAAK,SAAS,UAAU,IAAID,CAAmB,EAC/C1E,EAAa,QAAQ,KAAK,SAAUuE,EAAY,CACjD,EAED,KAAK,SAAS,MAAMqB,CAAS,EAAI,GAEjC,KAAK,eAAeC,EAAU,KAAK,SAAU,EAAI,CAClD,CAED,SAASlK,EAAU,KAAK,SAAU,CAChC,OAAOA,EAAQ,UAAU,SAAS8I,CAAe,CAClD,CAGD,kBAAkB9B,EAAQ,CACxB,OAAAA,EAAO,OAAS,EAAQA,EAAO,OAC/BA,EAAO,OAAS7F,EAAW6F,EAAO,MAAM,EACjCA,CACR,CAED,eAAgB,CACd,OAAO,KAAK,SAAS,UAAU,SAASmC,EAAqB,EAAIC,GAAQC,EAC1E,CAED,qBAAsB,CACpB,GAAI,CAAC,KAAK,QAAQ,OAChB,OAGF,MAAMgB,EAAW,KAAK,uBAAuBd,CAAoB,EAEjE,UAAWvJ,KAAWqK,EAAU,CAC9B,MAAMC,EAAWzC,EAAe,uBAAuB7H,CAAO,EAE1DsK,GACF,KAAK,0BAA0B,CAACtK,CAAO,EAAG,KAAK,SAASsK,CAAQ,CAAC,CAEpE,CACF,CAED,uBAAuB/J,EAAU,CAC/B,MAAM8J,EAAWxC,EAAe,KAAKqB,GAA4B,KAAK,QAAQ,MAAM,EAEpF,OAAOrB,EAAe,KAAKtH,EAAU,KAAK,QAAQ,MAAM,EAAE,OAAOP,GAAW,CAACqK,EAAS,SAASrK,CAAO,CAAC,CACxG,CAED,0BAA0BuK,EAAcC,EAAQ,CAC9C,GAAKD,EAAa,OAIlB,UAAWvK,KAAWuK,EACpBvK,EAAQ,UAAU,OAAOiJ,GAAsB,CAACuB,CAAM,EACtDxK,EAAQ,aAAa,gBAAiBwK,CAAM,CAE/C,CAGD,OAAO,gBAAgBxD,EAAQ,CAC7B,MAAMyD,EAAU,CAAE,EAClB,OAAI,OAAOzD,GAAW,UAAY,YAAY,KAAKA,CAAM,IACvDyD,EAAQ,OAAS,IAGZ,KAAK,KAAK,UAAY,CAC3B,MAAMC,EAAOhB,EAAS,oBAAoB,KAAMe,CAAO,EAEvD,GAAI,OAAOzD,GAAW,SAAU,CAC9B,GAAI,OAAO0D,EAAK1D,CAAM,EAAM,IAC1B,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAGnD0D,EAAK1D,CAAM,EAAG,CACf,CACP,CAAK,CACF,CACH,CAMA3C,EAAa,GAAG,SAAUwE,GAAsBU,EAAsB,SAAUpF,EAAO,EAEjFA,EAAM,OAAO,UAAY,KAAQA,EAAM,gBAAkBA,EAAM,eAAe,UAAY,MAC5FA,EAAM,eAAgB,EAGxB,UAAWnE,KAAW6H,EAAe,gCAAgC,IAAI,EACvE6B,EAAS,oBAAoB1J,EAAS,CAAE,OAAQ,EAAK,CAAE,EAAE,OAAQ,CAErE,CAAC,EAMDgC,EAAmB0H,CAAQ,EC1Q3B,MAAMrB,GAAO,WACPC,GAAW,cACXC,EAAY,IAAID,EAAQ,GACxBE,EAAe,YAEfmC,GAAa,SACbC,GAAU,MACVC,GAAe,UACfC,GAAiB,YACjBC,GAAqB,EAErBpC,GAAa,OAAOJ,CAAS,GAC7BK,GAAe,SAASL,CAAS,GACjCE,GAAa,OAAOF,CAAS,GAC7BG,GAAc,QAAQH,CAAS,GAC/BM,GAAuB,QAAQN,CAAS,GAAGC,CAAY,GACvDwC,GAAyB,UAAUzC,CAAS,GAAGC,CAAY,GAC3DyC,GAAuB,QAAQ1C,CAAS,GAAGC,CAAY,GAEvDM,EAAkB,OAClBoC,GAAoB,SACpBC,GAAqB,UACrBC,GAAuB,YACvBC,GAA2B,gBAC3BC,GAA6B,kBAE7B/B,EAAuB,4DACvBgC,GAA6B,GAAGhC,CAAoB,IAAIT,CAAe,GACvE0C,EAAgB,iBAChBC,GAAkB,UAClBC,GAAsB,cACtBC,GAAyB,8DAEzBC,GAAgB7J,IAAU,UAAY,YACtC8J,GAAmB9J,IAAU,YAAc,UAC3C+J,GAAmB/J,IAAU,aAAe,eAC5CgK,GAAsBhK,IAAU,eAAiB,aACjDiK,GAAkBjK,IAAU,aAAe,cAC3CkK,GAAiBlK,IAAU,cAAgB,aAC3CmK,GAAsB,MACtBC,GAAyB,SAEzB3C,GAAU,CACd,UAAW,GACX,SAAU,kBACV,QAAS,UACT,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc,KACd,UAAW,QACb,EAEMC,GAAc,CAClB,UAAW,mBACX,SAAU,mBACV,QAAS,SACT,OAAQ,0BACR,aAAc,yBACd,UAAW,yBACb,EAMA,MAAM2C,UAAiB7E,CAAc,CACnC,YAAYvH,EAASgH,EAAQ,CAC3B,MAAMhH,EAASgH,CAAM,EAErB,KAAK,QAAU,KACf,KAAK,QAAU,KAAK,SAAS,WAE7B,KAAK,MAAQa,EAAe,KAAK,KAAK,SAAU2D,CAAa,EAAE,CAAC,GAC9D3D,EAAe,KAAK,KAAK,SAAU2D,CAAa,EAAE,CAAC,GACnD3D,EAAe,QAAQ2D,EAAe,KAAK,OAAO,EACpD,KAAK,UAAY,KAAK,cAAe,CACtC,CAGD,WAAW,SAAU,CACnB,OAAOhC,EACR,CAED,WAAW,aAAc,CACvB,OAAOC,EACR,CAED,WAAW,MAAO,CAChB,OAAOpB,EACR,CAGD,QAAS,CACP,OAAO,KAAK,WAAa,KAAK,KAAM,EAAG,KAAK,KAAM,CACnD,CAED,MAAO,CACL,GAAI7G,EAAW,KAAK,QAAQ,GAAK,KAAK,SAAQ,EAC5C,OAGF,MAAM6K,EAAgB,CACpB,cAAe,KAAK,QACrB,EAID,GAAI,CAFchI,EAAa,QAAQ,KAAK,SAAUoE,GAAY4D,CAAa,EAEjE,iBAUd,IANA,KAAK,cAAe,EAMhB,iBAAkB,SAAS,iBAAmB,CAAC,KAAK,QAAQ,QAAQX,EAAmB,EACzF,UAAW1L,IAAW,GAAG,OAAO,GAAG,SAAS,KAAK,QAAQ,EACvDqE,EAAa,GAAGrE,EAAS,YAAayB,CAAI,EAI9C,KAAK,SAAS,MAAO,EACrB,KAAK,SAAS,aAAa,gBAAiB,EAAI,EAEhD,KAAK,MAAM,UAAU,IAAIqH,CAAe,EACxC,KAAK,SAAS,UAAU,IAAIA,CAAe,EAC3CzE,EAAa,QAAQ,KAAK,SAAUqE,GAAa2D,CAAa,EAC/D,CAED,MAAO,CACL,GAAI7K,EAAW,KAAK,QAAQ,GAAK,CAAC,KAAK,WACrC,OAGF,MAAM6K,EAAgB,CACpB,cAAe,KAAK,QACrB,EAED,KAAK,cAAcA,CAAa,CACjC,CAED,SAAU,CACJ,KAAK,SACP,KAAK,QAAQ,QAAS,EAGxB,MAAM,QAAS,CAChB,CAED,QAAS,CACP,KAAK,UAAY,KAAK,cAAe,EACjC,KAAK,SACP,KAAK,QAAQ,OAAQ,CAExB,CAGD,cAAcA,EAAe,CAE3B,GAAI,CADchI,EAAa,QAAQ,KAAK,SAAUsE,GAAY0D,CAAa,EACjE,iBAMd,IAAI,iBAAkB,SAAS,gBAC7B,UAAWrM,IAAW,GAAG,OAAO,GAAG,SAAS,KAAK,QAAQ,EACvDqE,EAAa,IAAIrE,EAAS,YAAayB,CAAI,EAI3C,KAAK,SACP,KAAK,QAAQ,QAAS,EAGxB,KAAK,MAAM,UAAU,OAAOqH,CAAe,EAC3C,KAAK,SAAS,UAAU,OAAOA,CAAe,EAC9C,KAAK,SAAS,aAAa,gBAAiB,OAAO,EACnDnC,EAAY,oBAAoB,KAAK,MAAO,QAAQ,EACpDtC,EAAa,QAAQ,KAAK,SAAUuE,GAAcyD,CAAa,EAChE,CAED,WAAWrF,EAAQ,CAGjB,GAFAA,EAAS,MAAM,WAAWA,CAAM,EAE5B,OAAOA,EAAO,WAAc,UAAY,CAAC9F,EAAU8F,EAAO,SAAS,GACrE,OAAOA,EAAO,UAAU,uBAA0B,WAGlD,MAAM,IAAI,UAAU,GAAGqB,GAAK,YAAW,CAAE,gGAAgG,EAG3I,OAAOrB,CACR,CAED,eAAgB,CACd,GAAI,OAAOsF,GAAW,IACpB,MAAM,IAAI,UAAU,8DAA+D,EAGrF,IAAIC,EAAmB,KAAK,SAExB,KAAK,QAAQ,YAAc,SAC7BA,EAAmB,KAAK,QACfrL,EAAU,KAAK,QAAQ,SAAS,EACzCqL,EAAmBpL,EAAW,KAAK,QAAQ,SAAS,EAC3C,OAAO,KAAK,QAAQ,WAAc,WAC3CoL,EAAmB,KAAK,QAAQ,WAGlC,MAAMC,EAAe,KAAK,iBAAkB,EAC5C,KAAK,QAAUC,GAAoBF,EAAkB,KAAK,MAAOC,CAAY,CAC9E,CAED,UAAW,CACT,OAAO,KAAK,MAAM,UAAU,SAAS1D,CAAe,CACrD,CAED,eAAgB,CACd,MAAM4D,EAAiB,KAAK,QAE5B,GAAIA,EAAe,UAAU,SAASvB,EAAkB,EACtD,OAAOa,GAGT,GAAIU,EAAe,UAAU,SAAStB,EAAoB,EACxD,OAAOa,GAGT,GAAIS,EAAe,UAAU,SAASrB,EAAwB,EAC5D,OAAOa,GAGT,GAAIQ,EAAe,UAAU,SAASpB,EAA0B,EAC9D,OAAOa,GAIT,MAAMQ,EAAQ,iBAAiB,KAAK,KAAK,EAAE,iBAAiB,eAAe,EAAE,KAAI,IAAO,MAExF,OAAID,EAAe,UAAU,SAASxB,EAAiB,EAC9CyB,EAAQd,GAAmBD,GAG7Be,EAAQZ,GAAsBD,EACtC,CAED,eAAgB,CACd,OAAO,KAAK,SAAS,QAAQL,EAAe,IAAM,IACnD,CAED,YAAa,CACX,KAAM,CAAE,OAAAmB,GAAW,KAAK,QAExB,OAAI,OAAOA,GAAW,SACbA,EAAO,MAAM,GAAG,EAAE,IAAIrG,GAAS,OAAO,SAASA,EAAO,EAAE,CAAC,EAG9D,OAAOqG,GAAW,WACbC,GAAcD,EAAOC,EAAY,KAAK,QAAQ,EAGhDD,CACR,CAED,kBAAmB,CACjB,MAAME,EAAwB,CAC5B,UAAW,KAAK,cAAe,EAC/B,UAAW,CAAC,CACV,KAAM,kBACN,QAAS,CACP,SAAU,KAAK,QAAQ,QACxB,CACF,EACD,CACE,KAAM,SACN,QAAS,CACP,OAAQ,KAAK,WAAY,CAC1B,CACT,CAAO,CACF,EAGD,OAAI,KAAK,WAAa,KAAK,QAAQ,UAAY,YAC7CnG,EAAY,iBAAiB,KAAK,MAAO,SAAU,QAAQ,EAC3DmG,EAAsB,UAAY,CAAC,CACjC,KAAM,cACN,QAAS,EACjB,CAAO,GAGI,CACL,GAAGA,EACH,GAAGzK,EAAQ,KAAK,QAAQ,aAAc,CAACyK,CAAqB,CAAC,CAC9D,CACF,CAED,gBAAgB,CAAE,IAAA7M,EAAK,OAAA8C,GAAU,CAC/B,MAAMgK,EAAQlF,EAAe,KAAK8D,GAAwB,KAAK,KAAK,EAAE,OAAO3L,GAAWoB,EAAUpB,CAAO,CAAC,EAErG+M,EAAM,QAMX/J,GAAqB+J,EAAOhK,EAAQ9C,IAAQ6K,GAAgB,CAACiC,EAAM,SAAShK,CAAM,CAAC,EAAE,MAAO,CAC7F,CAGD,OAAO,gBAAgBiE,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM0D,EAAO0B,EAAS,oBAAoB,KAAMpF,CAAM,EAEtD,GAAI,OAAOA,GAAW,SAItB,IAAI,OAAO0D,EAAK1D,CAAM,EAAM,IAC1B,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAGnD0D,EAAK1D,CAAM,EAAG,EACpB,CAAK,CACF,CAED,OAAO,WAAW7C,EAAO,CACvB,GAAIA,EAAM,SAAW4G,IAAuB5G,EAAM,OAAS,SAAWA,EAAM,MAAQyG,GAClF,OAGF,MAAMoC,EAAcnF,EAAe,KAAK0D,EAA0B,EAElE,UAAW0B,KAAUD,EAAa,CAChC,MAAME,EAAUd,EAAS,YAAYa,CAAM,EAC3C,GAAI,CAACC,GAAWA,EAAQ,QAAQ,YAAc,GAC5C,SAGF,MAAMC,EAAehJ,EAAM,aAAc,EACnCiJ,EAAeD,EAAa,SAASD,EAAQ,KAAK,EAUxD,GAREC,EAAa,SAASD,EAAQ,QAAQ,GACrCA,EAAQ,QAAQ,YAAc,UAAY,CAACE,GAC3CF,EAAQ,QAAQ,YAAc,WAAaE,GAM1CF,EAAQ,MAAM,SAAS/I,EAAM,MAAM,IAAOA,EAAM,OAAS,SAAWA,EAAM,MAAQyG,IAAY,qCAAqC,KAAKzG,EAAM,OAAO,OAAO,GAC9J,SAGF,MAAMkI,EAAgB,CAAE,cAAea,EAAQ,QAAU,EAErD/I,EAAM,OAAS,UACjBkI,EAAc,WAAalI,GAG7B+I,EAAQ,cAAcb,CAAa,CACpC,CACF,CAED,OAAO,sBAAsBlI,EAAO,CAIlC,MAAMkJ,EAAU,kBAAkB,KAAKlJ,EAAM,OAAO,OAAO,EACrDmJ,EAAgBnJ,EAAM,MAAQwG,GAC9B4C,EAAkB,CAAC1C,GAAcC,EAAc,EAAE,SAAS3G,EAAM,GAAG,EAMzE,GAJI,CAACoJ,GAAmB,CAACD,GAIrBD,GAAW,CAACC,EACd,OAGFnJ,EAAM,eAAgB,EAGtB,MAAMqJ,EAAkB,KAAK,QAAQjE,CAAoB,EACvD,KACC1B,EAAe,KAAK,KAAM0B,CAAoB,EAAE,CAAC,GAChD1B,EAAe,KAAK,KAAM0B,CAAoB,EAAE,CAAC,GACjD1B,EAAe,QAAQ0B,EAAsBpF,EAAM,eAAe,UAAU,EAE1EjE,EAAWkM,EAAS,oBAAoBoB,CAAe,EAE7D,GAAID,EAAiB,CACnBpJ,EAAM,gBAAiB,EACvBjE,EAAS,KAAM,EACfA,EAAS,gBAAgBiE,CAAK,EAC9B,MACD,CAEGjE,EAAS,aACXiE,EAAM,gBAAiB,EACvBjE,EAAS,KAAM,EACfsN,EAAgB,MAAO,EAE1B,CACH,CAMAnJ,EAAa,GAAG,SAAU2G,GAAwBzB,EAAsB6C,EAAS,qBAAqB,EACtG/H,EAAa,GAAG,SAAU2G,GAAwBQ,EAAeY,EAAS,qBAAqB,EAC/F/H,EAAa,GAAG,SAAUwE,GAAsBuD,EAAS,UAAU,EACnE/H,EAAa,GAAG,SAAU4G,GAAsBmB,EAAS,UAAU,EACnE/H,EAAa,GAAG,SAAUwE,GAAsBU,EAAsB,SAAUpF,EAAO,CACrFA,EAAM,eAAgB,EACtBiI,EAAS,oBAAoB,IAAI,EAAE,OAAQ,CAC7C,CAAC,EAMDpK,EAAmBoK,CAAQ,EClb3B,MAAM/D,GAAO,YACPC,GAAW,eACXC,EAAY,IAAID,EAAQ,GACxBE,GAAe,YAEfiF,GAAiB,WAAWlF,CAAS,GACrCmF,GAAc,QAAQnF,CAAS,GAC/BoF,GAAsB,OAAOpF,CAAS,GAAGC,EAAY,GAErDoF,GAA2B,gBAC3BC,EAAoB,SAEpBC,GAAoB,yBACpBC,EAAwB,SACxBC,GAA0B,oBAC1BC,GAAqB,YACrBC,GAAqB,YACrBC,GAAsB,mBACtBC,GAAsB,GAAGH,EAAkB,KAAKC,EAAkB,MAAMD,EAAkB,KAAKE,EAAmB,GAClHE,GAAoB,YACpBC,GAA2B,mBAE3B9E,GAAU,CACd,OAAQ,KACR,WAAY,eACZ,aAAc,GACd,OAAQ,KACR,UAAW,CAAC,GAAK,GAAK,CAAC,CACzB,EAEMC,GAAc,CAClB,OAAQ,gBACR,WAAY,SACZ,aAAc,UACd,OAAQ,UACR,UAAW,OACb,EAMA,MAAM8E,UAAkBhH,CAAc,CACpC,YAAYvH,EAASgH,EAAQ,CAC3B,MAAMhH,EAASgH,CAAM,EAGrB,KAAK,aAAe,IAAI,IACxB,KAAK,oBAAsB,IAAI,IAC/B,KAAK,aAAe,iBAAiB,KAAK,QAAQ,EAAE,YAAc,UAAY,KAAO,KAAK,SAC1F,KAAK,cAAgB,KACrB,KAAK,UAAY,KACjB,KAAK,oBAAsB,CACzB,gBAAiB,EACjB,gBAAiB,CAClB,EACD,KAAK,QAAS,CACf,CAGD,WAAW,SAAU,CACnB,OAAOwC,EACR,CAED,WAAW,aAAc,CACvB,OAAOC,EACR,CAED,WAAW,MAAO,CAChB,OAAOpB,EACR,CAGD,SAAU,CACR,KAAK,iCAAkC,EACvC,KAAK,yBAA0B,EAE3B,KAAK,UACP,KAAK,UAAU,WAAY,EAE3B,KAAK,UAAY,KAAK,gBAAiB,EAGzC,UAAWmG,KAAW,KAAK,oBAAoB,OAAM,EACnD,KAAK,UAAU,QAAQA,CAAO,CAEjC,CAED,SAAU,CACR,KAAK,UAAU,WAAY,EAC3B,MAAM,QAAS,CAChB,CAGD,kBAAkBxH,EAAQ,CAExB,OAAAA,EAAO,OAAS7F,EAAW6F,EAAO,MAAM,GAAK,SAAS,KAGtDA,EAAO,WAAaA,EAAO,OAAS,GAAGA,EAAO,MAAM,cAAgBA,EAAO,WAEvE,OAAOA,EAAO,WAAc,WAC9BA,EAAO,UAAYA,EAAO,UAAU,MAAM,GAAG,EAAE,IAAIT,GAAS,OAAO,WAAWA,CAAK,CAAC,GAG/ES,CACR,CAED,0BAA2B,CACpB,KAAK,QAAQ,eAKlB3C,EAAa,IAAI,KAAK,QAAQ,OAAQqJ,EAAW,EAEjDrJ,EAAa,GAAG,KAAK,QAAQ,OAAQqJ,GAAaK,EAAuB5J,GAAS,CAChF,MAAMsK,EAAoB,KAAK,oBAAoB,IAAItK,EAAM,OAAO,IAAI,EACxE,GAAIsK,EAAmB,CACrBtK,EAAM,eAAgB,EACtB,MAAMuK,EAAO,KAAK,cAAgB,OAC5BC,EAASF,EAAkB,UAAY,KAAK,SAAS,UAC3D,GAAIC,EAAK,SAAU,CACjBA,EAAK,SAAS,CAAE,IAAKC,EAAQ,SAAU,SAAU,EACjD,MACD,CAGDD,EAAK,UAAYC,CAClB,CACP,CAAK,EACF,CAED,iBAAkB,CAChB,MAAMC,EAAU,CACd,KAAM,KAAK,aACX,UAAW,KAAK,QAAQ,UACxB,WAAY,KAAK,QAAQ,UAC1B,EAED,OAAO,IAAI,qBAAqBC,GAAW,KAAK,kBAAkBA,CAAO,EAAGD,CAAO,CACpF,CAGD,kBAAkBC,EAAS,CACzB,MAAMC,EAAgBC,GAAS,KAAK,aAAa,IAAI,IAAIA,EAAM,OAAO,EAAE,EAAE,EACpEC,EAAWD,GAAS,CACxB,KAAK,oBAAoB,gBAAkBA,EAAM,OAAO,UACxD,KAAK,SAASD,EAAcC,CAAK,CAAC,CACnC,EAEKE,GAAmB,KAAK,cAAgB,SAAS,iBAAiB,UAClEC,EAAkBD,GAAmB,KAAK,oBAAoB,gBACpE,KAAK,oBAAoB,gBAAkBA,EAE3C,UAAWF,KAASF,EAAS,CAC3B,GAAI,CAACE,EAAM,eAAgB,CACzB,KAAK,cAAgB,KACrB,KAAK,kBAAkBD,EAAcC,CAAK,CAAC,EAE3C,QACD,CAED,MAAMI,EAA2BJ,EAAM,OAAO,WAAa,KAAK,oBAAoB,gBAEpF,GAAIG,GAAmBC,EAA0B,CAG/C,GAFAH,EAASD,CAAK,EAEV,CAACE,EACH,OAGF,QACD,CAGG,CAACC,GAAmB,CAACC,GACvBH,EAASD,CAAK,CAEjB,CACF,CAED,kCAAmC,CACjC,KAAK,aAAe,IAAI,IACxB,KAAK,oBAAsB,IAAI,IAE/B,MAAMK,EAAcvH,EAAe,KAAKkG,EAAuB,KAAK,QAAQ,MAAM,EAElF,UAAWsB,KAAUD,EAAa,CAEhC,GAAI,CAACC,EAAO,MAAQ7N,EAAW6N,CAAM,EACnC,SAGF,MAAMZ,EAAoB5G,EAAe,QAAQ,UAAUwH,EAAO,IAAI,EAAG,KAAK,QAAQ,EAGlFjO,EAAUqN,CAAiB,IAC7B,KAAK,aAAa,IAAI,UAAUY,EAAO,IAAI,EAAGA,CAAM,EACpD,KAAK,oBAAoB,IAAIA,EAAO,KAAMZ,CAAiB,EAE9D,CACF,CAED,SAAS1L,EAAQ,CACX,KAAK,gBAAkBA,IAI3B,KAAK,kBAAkB,KAAK,QAAQ,MAAM,EAC1C,KAAK,cAAgBA,EACrBA,EAAO,UAAU,IAAI8K,CAAiB,EACtC,KAAK,iBAAiB9K,CAAM,EAE5BsB,EAAa,QAAQ,KAAK,SAAUoJ,GAAgB,CAAE,cAAe1K,EAAQ,EAC9E,CAED,iBAAiBA,EAAQ,CAEvB,GAAIA,EAAO,UAAU,SAAS6K,EAAwB,EAAG,CACvD/F,EAAe,QAAQyG,GAA0BvL,EAAO,QAAQsL,EAAiB,CAAC,EAC/E,UAAU,IAAIR,CAAiB,EAClC,MACD,CAED,UAAWyB,KAAazH,EAAe,QAAQ9E,EAAQiL,EAAuB,EAG5E,UAAWuB,KAAQ1H,EAAe,KAAKyH,EAAWlB,EAAmB,EACnEmB,EAAK,UAAU,IAAI1B,CAAiB,CAGzC,CAED,kBAAkB2B,EAAQ,CACxBA,EAAO,UAAU,OAAO3B,CAAiB,EAEzC,MAAM4B,EAAc5H,EAAe,KAAK,GAAGkG,CAAqB,IAAIF,CAAiB,GAAI2B,CAAM,EAC/F,UAAWE,KAAQD,EACjBC,EAAK,UAAU,OAAO7B,CAAiB,CAE1C,CAGD,OAAO,gBAAgB7G,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM0D,EAAO6D,EAAU,oBAAoB,KAAMvH,CAAM,EAEvD,GAAI,OAAOA,GAAW,SAItB,IAAI0D,EAAK1D,CAAM,IAAM,QAAaA,EAAO,WAAW,GAAG,GAAKA,IAAW,cACrE,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAGnD0D,EAAK1D,CAAM,EAAG,EACpB,CAAK,CACF,CACH,CAMA3C,EAAa,GAAG,OAAQsJ,GAAqB,IAAM,CACjD,UAAWgC,KAAO9H,EAAe,KAAKiG,EAAiB,EACrDS,EAAU,oBAAoBoB,CAAG,CAErC,CAAC,EAMD3N,EAAmBuM,CAAS","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}