{"version":3,"file":"index-HEii3ZrW.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/ChevronDown-C6gc637b.mjs","../node_modules/@nextcloud/vue/dist/chunks/Close-CuhcJnX2.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@nextcloud/vue-select/dist/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcEllipsisedOption-D6Amb91K.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelect-DK4ZWMha.mjs"],"sourcesContent":["import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n  name: \"ChevronDownIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon chevron-down-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2))\n  ], 16, _hoisted_1);\n}\nconst ChevronDown = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n  ChevronDown as C\n};\n//# sourceMappingURL=ChevronDown-C6gc637b.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n  name: \"CloseIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon close-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2))\n  ], 16, _hoisted_1);\n}\nconst IconClose = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n  IconClose as I\n};\n//# sourceMappingURL=Close-CuhcJnX2.mjs.map\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    if (floating) {\n      resizeObserver.observe(floating);\n    }\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import './assets/index-DuYzGG0a.css';\nimport { openBlock, createElementBlock, createElementVNode, resolveDirective, normalizeClass, renderSlot, normalizeProps, guardReactiveProps, Fragment, renderList, mergeProps, createTextVNode, toDisplayString, withKeys, withModifiers, createBlock, resolveDynamicComponent, createCommentVNode, toHandlers, withDirectives, vShow, createVNode, Transition, withCtx, warn } from \"vue\";\nconst appendToBody = {\n  mounted(el, { instance }) {\n    if (instance.appendToBody) {\n      document.body.appendChild(el);\n      const { height, top, left, width } = instance.$refs.toggle.getBoundingClientRect();\n      const scrollX = window.scrollX || window.pageXOffset;\n      const scrollY = window.scrollY || window.pageYOffset;\n      el.unbindPosition = instance.calculatePosition(el, instance, {\n        width: width + \"px\",\n        left: scrollX + left + \"px\",\n        top: scrollY + top + height + \"px\"\n      });\n    }\n  },\n  unmounted(el, { instance }) {\n    if (instance.appendToBody) {\n      if (el.unbindPosition && typeof el.unbindPosition === \"function\") {\n        el.unbindPosition();\n      }\n      if (el.parentNode) {\n        el.parentNode.removeChild(el);\n      }\n    }\n  }\n};\nconst ajax = {\n  props: {\n    /**\n     * Toggles the adding of a 'loading' class to the main\n     * .v-select wrapper. Useful to control UI state when\n     * results are being processed through AJAX.\n     */\n    loading: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      mutableLoading: false\n    };\n  },\n  watch: {\n    /**\n     * Anytime the search string changes, emit the\n     * 'search' event. The event is passed with two\n     * parameters: the search string, and a function\n     * that accepts a boolean parameter to toggle the\n     * loading state.\n     *\n     * @fires 'search'\n     */\n    search() {\n      this.$emit(\"search\", this.search, this.toggleLoading);\n    },\n    /**\n     * Sync the loading prop with the internal\n     * mutable loading value.\n     *\n     * @param val Incoming loading state.\n     */\n    loading(val) {\n      this.mutableLoading = val;\n    }\n  },\n  methods: {\n    /**\n     * Toggle this.loading. Optionally pass a boolean\n     * value. If no value is provided, this.loading\n     * will be set to the opposite of it's current value.\n     *\n     * @param toggle Boolean\n     * @return {*}\n     */\n    toggleLoading(toggle = null) {\n      if (toggle === null || toggle === void 0) {\n        return this.mutableLoading = !this.mutableLoading;\n      }\n      return this.mutableLoading = toggle;\n    }\n  }\n};\nconst pointerScroll = {\n  props: {\n    autoscroll: {\n      type: Boolean,\n      default: true\n    }\n  },\n  watch: {\n    typeAheadPointer() {\n      if (this.autoscroll) {\n        this.maybeAdjustScroll();\n      }\n    },\n    open(open) {\n      if (this.autoscroll && open) {\n        this.$nextTick(() => this.maybeAdjustScroll());\n      }\n    }\n  },\n  methods: {\n    /**\n     * Adjust the scroll position of the dropdown list\n     * if the current pointer is outside of the\n     * overflow bounds.\n     *\n     * @return {*}\n     */\n    maybeAdjustScroll() {\n      const optionEl = this.$refs.dropdownMenu?.children[this.typeAheadPointer] || false;\n      if (optionEl) {\n        const bounds = this.getDropdownViewport();\n        const { top, bottom, height } = optionEl.getBoundingClientRect();\n        if (top < bounds.top) {\n          return this.$refs.dropdownMenu.scrollTop = optionEl.offsetTop;\n        } else if (bottom > bounds.bottom) {\n          return this.$refs.dropdownMenu.scrollTop = optionEl.offsetTop - (bounds.height - height);\n        }\n      }\n    },\n    /**\n     * The currently viewable portion of the dropdownMenu.\n     *\n     * @return {{top: (string|*|number), bottom: *}}\n     */\n    getDropdownViewport() {\n      return this.$refs.dropdownMenu ? this.$refs.dropdownMenu.getBoundingClientRect() : {\n        height: 0,\n        top: 0,\n        bottom: 0\n      };\n    }\n  }\n};\nconst pointer = {\n  data() {\n    return {\n      typeAheadPointer: -1\n    };\n  },\n  watch: {\n    filteredOptions() {\n      if (!this.resetFocusOnOptionsChange) {\n        return;\n      }\n      for (let i = 0; i < this.filteredOptions.length; i++) {\n        if (this.selectable(this.filteredOptions[i])) {\n          this.typeAheadPointer = i;\n          break;\n        }\n      }\n    },\n    open(open) {\n      if (open) {\n        this.typeAheadToLastSelected();\n      }\n    },\n    selectedValue() {\n      if (this.open) {\n        this.typeAheadToLastSelected();\n      }\n    }\n  },\n  methods: {\n    /**\n     * Move the typeAheadPointer visually up the list by\n     * setting it to the previous selectable option.\n     *\n     * @return {void}\n     */\n    typeAheadUp() {\n      for (let i = this.typeAheadPointer - 1; i >= 0; i--) {\n        if (this.selectable(this.filteredOptions[i])) {\n          this.typeAheadPointer = i;\n          break;\n        }\n      }\n    },\n    /**\n     * Move the typeAheadPointer visually down the list by\n     * setting it to the next selectable option.\n     *\n     * @return {void}\n     */\n    typeAheadDown() {\n      for (let i = this.typeAheadPointer + 1; i < this.filteredOptions.length; i++) {\n        if (this.selectable(this.filteredOptions[i])) {\n          this.typeAheadPointer = i;\n          break;\n        }\n      }\n    },\n    /**\n     * Select the option at the current typeAheadPointer position.\n     * Optionally clear the search input on selection.\n     *\n     * @return {void}\n     */\n    typeAheadSelect() {\n      const typeAheadOption = this.filteredOptions[this.typeAheadPointer];\n      if (typeAheadOption && this.selectable(typeAheadOption)) {\n        this.select(typeAheadOption);\n      }\n    },\n    /**\n     * Moves the pointer to the last selected option.\n     */\n    typeAheadToLastSelected() {\n      const indexOfLastSelected = this.selectedValue.length !== 0 ? this.filteredOptions.indexOf(this.selectedValue[this.selectedValue.length - 1]) : -1;\n      if (indexOfLastSelected !== -1) {\n        this.typeAheadPointer = indexOfLastSelected;\n      }\n    }\n  }\n};\nfunction sortAndStringify(sortable) {\n  const ordered = {};\n  Object.keys(sortable).sort().forEach((key) => {\n    ordered[key] = sortable[key];\n  });\n  return JSON.stringify(ordered);\n}\nlet idCount = 0;\nfunction uniqueId() {\n  return ++idCount;\n}\nconst _export_sfc = (sfc, props) => {\n  const target = sfc.__vccOpts || sfc;\n  for (const [key, val] of props) {\n    target[key] = val;\n  }\n  return target;\n};\nconst _sfc_main$2 = {};\nconst _hoisted_1$2 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: \"10\",\n  height: \"10\"\n};\nfunction _sfc_render$2(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$2, [..._cache[0] || (_cache[0] = [\n    createElementVNode(\"path\", { d: \"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z\" }, null, -1)\n  ])]);\n}\nconst Deselect = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$1 = {};\nconst _hoisted_1$1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: \"14\",\n  height: \"10\"\n};\nfunction _sfc_render$1(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$1, [..._cache[0] || (_cache[0] = [\n    createElementVNode(\"path\", { d: \"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z\" }, null, -1)\n  ])]);\n}\nconst OpenIndicator = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst childComponents = {\n  Deselect,\n  OpenIndicator\n};\nconst _sfc_main = {\n  components: { ...childComponents },\n  directives: { appendToBody },\n  mixins: [pointerScroll, pointer, ajax],\n  props: {\n    /**\n     * Contains the currently selected value. Very similar to a\n     * `value` attribute on an <input>. You can listen for changes\n     * with the 'input' event.\n     *\n     * @type {object | string | Array | null}\n     */\n    modelValue: {},\n    /**\n     * An object with any custom components that you'd like to overwrite\n     * the default implementation of in your app. The keys in this object\n     * will be merged with the defaults.\n     *\n     * @see https://vue-select.org/guide/components.html\n     * @type {Function}\n     */\n    components: {\n      type: Object,\n      default: () => ({})\n    },\n    /**\n     * An array of strings or objects to be used as dropdown choices.\n     * If you are using an array of objects, vue-select will look for\n     * a `label` key (ex. [{label: 'This is Foo', value: 'foo'}]). A\n     * custom label key can be set with the `label` prop.\n     *\n     * @type {Array}\n     */\n    options: {\n      type: Array,\n      default() {\n        return [];\n      }\n    },\n    /**\n     * Sets the maximum number of options to display in the dropdown list\n     *\n     * @type {number}\n     */\n    limit: {\n      type: Number,\n      default: null\n    },\n    /**\n     * Disable the entire component.\n     *\n     * @type {boolean}\n     */\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Can the user clear the selected property.\n     *\n     * @type {boolean}\n     */\n    clearable: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Can the user deselect an option by clicking it from\n     * within the dropdown.\n     *\n     * @type {boolean}\n     */\n    deselectFromDropdown: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Enable/disable filtering the options.\n     *\n     * @type {boolean}\n     */\n    searchable: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Equivalent to the `multiple` attribute on a `<select>` input.\n     *\n     * @type {boolean}\n     */\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Equivalent to the `placeholder` attribute on an `<input>`.\n     *\n     * @type {string}\n     */\n    placeholder: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Sets a Vue transition property on the `.vs__dropdown-menu`.\n     *\n     * @type {string}\n     */\n    transition: {\n      type: String,\n      default: \"vs__fade\"\n    },\n    /**\n     * Enables/disables clearing the search text when an option is selected.\n     *\n     * @type {boolean}\n     */\n    clearSearchOnSelect: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Close a dropdown when an option is chosen. Set to false to keep the dropdown\n     * open (useful when combined with multi-select, for example)\n     *\n     * @type {boolean}\n     */\n    closeOnSelect: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Tells vue-select what key to use when generating option\n     * labels when each `option` is an object.\n     *\n     * @type {string}\n     */\n    label: {\n      type: String,\n      default: \"label\"\n    },\n    /**\n     * Allows to customize the `aria-label` set on the comobobox for searching options.\n     *\n     * @type {string}\n     * @default 'Search for options'\n     */\n    ariaLabelCombobox: {\n      type: String,\n      default: \"Search for options\"\n    },\n    /**\n     * Allows to customize the `aria-label` set on the listbox element.\n     *\n     * @type {string}\n     * @default 'Options'\n     */\n    ariaLabelListbox: {\n      type: String,\n      default: \"Options\"\n    },\n    /**\n     * Allows to customize the `aria-label` set on the clear-selected button\n     *\n     * @type {string}\n     * @default 'Clear selected'\n     */\n    ariaLabelClearSelected: {\n      type: String,\n      default: \"Clear selected\"\n    },\n    /**\n     * Allows to customize the `aria-label` for the deselect-option button\n     * The default is \"Deselect \" + optionLabel\n     *\n     * @type {(optionLabel: string) => string}\n     */\n    ariaLabelDeselectOption: {\n      type: Function,\n      default: (optionLabel) => `Deselect ${optionLabel}`\n    },\n    /**\n     * Value of the 'autocomplete' field of the input\n     * element.\n     *\n     * @type {string}\n     */\n    autocomplete: {\n      type: String,\n      default: \"off\"\n    },\n    /**\n     * When working with objects, the reduce\n     * prop allows you to transform a given\n     * object to only the information you\n     * want passed to a v-model binding\n     * or \\@input event.\n     */\n    reduce: {\n      type: Function,\n      default: (option) => option\n    },\n    /**\n     * Decides whether an option is selectable or not. Not selectable options\n     * are displayed but disabled and cannot be selected.\n     *\n     * @type {Function}\n     * @since 3.3.0\n     * @param {object | string} option\n     * @return {boolean}\n     */\n    selectable: {\n      type: Function,\n      default: () => true\n    },\n    /**\n     * Callback to generate the label text. If {option}\n     * is an object, returns option[this.label] by default.\n     *\n     * Label text is used for filtering comparison and\n     * displaying. If you only need to adjust the\n     * display, you should use the `option` and\n     * `selected-option` slots.\n     *\n     * @type {Function}\n     * @param  {object | string} option\n     * @return {string}\n     */\n    getOptionLabel: {\n      type: Function,\n      default(option) {\n        if (typeof option === \"object\") {\n          if (!Object.hasOwn(option, this.label)) {\n            return warn(`[vue-select warn]: Label key \"option.${this.label}\" does not exist in options object ${JSON.stringify(option)}.\nhttps://vue-select.org/api/props.html#getoptionlabel`);\n          }\n          return option[this.label];\n        }\n        return option;\n      }\n    },\n    /**\n     * Generate a unique identifier for each option. If `option`\n     * is an object and `option.hasOwnProperty('id')` exists,\n     * `option.id` is used by default, otherwise the option\n     * will be serialized to JSON.\n     *\n     * If you are supplying a lot of options, you should\n     * provide your own keys, as JSON.stringify can be\n     * slow with lots of objects.\n     *\n     * The result of this function *must* be unique.\n     *\n     * @type {Function}\n     * @param  {object | string} option\n     * @return {string}\n     */\n    getOptionKey: {\n      type: Function,\n      default(option) {\n        if (typeof option !== \"object\") {\n          return option;\n        }\n        try {\n          return Object.hasOwn(option, \"id\") ? option.id : sortAndStringify(option);\n        } catch (e) {\n          const warning = \"[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option.\\nhttps://vue-select.org/api/props.html#getoptionkey\";\n          return warn(warning, option, e);\n        }\n      }\n    },\n    /**\n     * Select the current value if selectOnTab is enabled\n     *\n     * @deprecated since 3.3\n     */\n    onTab: {\n      type: Function,\n      default() {\n        if (this.selectOnTab && !this.isComposing) {\n          this.typeAheadSelect();\n        }\n      }\n    },\n    /**\n     * Enable/disable creating options from searchEl.\n     *\n     * @type {boolean}\n     */\n    taggable: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Set the tabindex for the input field.\n     *\n     * @type {number}\n     */\n    tabindex: {\n      type: Number,\n      default: null\n    },\n    /**\n     * When true, newly created tags will be added to\n     * the options list.\n     *\n     * @type {boolean}\n     */\n    pushTags: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * When true, existing options will be filtered\n     * by the search text. Should not be used in conjunction\n     * with taggable.\n     *\n     * @type {boolean}\n     */\n    filterable: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Callback to determine if the provided option should\n     * match the current search text. Used to determine\n     * if the option should be displayed.\n     *\n     * @type {Function}\n     * @param  {object | string} option\n     * @param  {string} label\n     * @param  {string} search\n     * @return {boolean}\n     */\n    filterBy: {\n      type: Function,\n      default(option, label, search) {\n        return (label || \"\").toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n      }\n    },\n    /**\n     * Callback to filter results when search text\n     * is provided. Default implementation loops\n     * each option, and returns the result of\n     * this.filterBy.\n     *\n     * @type {Function}\n     * @param  {Array} list of options\n     * @param  {string} search text\n     * @param  {object} vSelect instance\n     * @return {boolean}\n     */\n    filter: {\n      type: Function,\n      default(options, search) {\n        return options.filter((option) => {\n          let label = this.getOptionLabel(option);\n          if (typeof label === \"number\") {\n            label = label.toString();\n          }\n          return this.filterBy(option, label, search);\n        });\n      }\n    },\n    /**\n     * User defined function for adding Options\n     *\n     * @type {Function}\n     */\n    createOption: {\n      type: Function,\n      default(option) {\n        return typeof this.optionList[0] === \"object\" ? { [this.label]: option } : option;\n      }\n    },\n    /**\n     * If false, the focused dropdown option will not be reset when filtered\n     * options change.\n     *\n     * @type {boolean}\n     */\n    resetFocusOnOptionsChange: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * When false, updating the options will not reset the selected value. Accepts\n     * a `boolean` or `function` that returns a `boolean`. If defined as a function,\n     * it will receive the params listed below.\n     *\n     * @since 3.4 - Type changed to {boolean | Function}\n     *\n     * @type {boolean | Function}\n     * @param {Array} newOptions\n     * @param {Array} oldOptions\n     * @param {Array} selectedValue\n     */\n    resetOnOptionsChange: {\n      default: false,\n      validator: (value) => [\"function\", \"boolean\"].includes(typeof value)\n    },\n    /**\n     * If search text should clear on blur\n     *\n     * @return {boolean} True when single and clearSearchOnSelect\n     */\n    clearSearchOnBlur: {\n      type: Function,\n      default({ clearSearchOnSelect, multiple }) {\n        return clearSearchOnSelect && !multiple;\n      }\n    },\n    /**\n     * Disable the dropdown entirely.\n     *\n     * @type {boolean}\n     */\n    noDrop: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Sets the id of the input element.\n     *\n     * @type {string}\n     * @default {null}\n     */\n    inputId: {\n      type: String\n    },\n    /**\n     * Sets RTL support. Accepts 'ltr', 'rtl', 'auto'.\n     *\n     * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir\n     * @type {string}\n     * @default 'auto'\n     */\n    dir: {\n      type: String,\n      default: \"auto\"\n    },\n    /**\n     * When true, hitting the 'tab' key will select the current select value\n     *\n     * @type {boolean}\n     * @deprecated since 3.3 - use selectOnKeyCodes instead\n     */\n    selectOnTab: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Keycodes that will select the current option.\n     *\n     * @type Array\n     */\n    selectOnKeyCodes: {\n      type: Array,\n      default: () => [\n        // enter\n        13\n      ]\n    },\n    /**\n     * Query Selector used to find the search input\n     * when the 'search' scoped slot is used.\n     *\n     * Must be a valid CSS selector string.\n     *\n     * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n     * @type {string}\n     */\n    searchInputQuerySelector: {\n      type: String,\n      default: \"[type=search]\"\n    },\n    /**\n     * Used to modify the default keydown events map\n     * for the search input. Can be used to implement\n     * custom behaviour for key presses.\n     */\n    mapKeydown: {\n      type: Function,\n      /**\n       * @param {object} map Existing keydown handlers map.\n       * @param {VueSelect} vm Component instance.\n       * @return {object}\n       */\n      default: (map) => map\n    },\n    /**\n     * Append the dropdown element to the end of the body\n     * and size/position it dynamically. Use it if you have\n     * overflow or z-index issues.\n     *\n     * @type {boolean}\n     */\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * When `appendToBody` is true, this function is responsible for\n     * positioning the drop down list.\n     *\n     * If a function is returned from `calculatePosition`, it will\n     * be called when the drop down list is removed from the DOM.\n     * This allows for any garbage collection you may need to do.\n     *\n     * @since v3.7.0\n     * @see http://vue-select.org/guide/positioning.html\n     */\n    calculatePosition: {\n      type: Function,\n      /**\n       * @param {HTMLUListElement} dropdownList Dropdown list element.\n       * @param {Vue} component Component instance.\n       * @param {object} width Computed dropdown coordinates.\n       * @param {string} width.width Computed width value.\n       * @param {string} width.top Computed top position.\n       * @param {string} width.left Computed left position.\n       * @return {Function | void}\n       */\n      default(dropdownList, component, { width, top, left }) {\n        dropdownList.style.top = top;\n        dropdownList.style.left = left;\n        dropdownList.style.width = width;\n      }\n    },\n    /**\n     * Determines whether the dropdown should be open.\n     * Receives the component instance as the only argument.\n     *\n     * @since v3.12.0\n     * @return {boolean}\n     */\n    dropdownShouldOpen: {\n      type: Function,\n      default({ noDrop, open, mutableLoading }) {\n        return noDrop ? false : open && !mutableLoading;\n      }\n    },\n    /**\n     * Display a visible border around dropdown options\n     * which have keyboard focus.\n     */\n    keyboardFocusBorder: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * A unique identifier used to generate IDs in HTML.\n     * Must be unique for every instance of the component.\n     */\n    uid: {\n      type: [String, Number],\n      default: () => uniqueId()\n    }\n  },\n  emits: [\n    \"open\",\n    \"close\",\n    \"update:modelValue\",\n    \"search\",\n    \"search:compositionstart\",\n    \"search:compositionend\",\n    \"search:keydown\",\n    \"search:blur\",\n    \"search:focus\",\n    \"search:input\",\n    \"option:created\",\n    \"option:selecting\",\n    \"option:selected\",\n    \"option:deselecting\",\n    \"option:deselected\"\n  ],\n  data() {\n    return {\n      search: \"\",\n      open: false,\n      isComposing: false,\n      isKeyboardNavigation: false,\n      pushedTags: [],\n      // eslint-disable-next-line vue/no-reserved-keys\n      _value: [],\n      // Internal value managed by Vue Select if no `modelValue` prop is passed\n      deselectButtons: []\n    };\n  },\n  computed: {\n    isReducingValues() {\n      return this.$props.reduce !== this.$options.props.reduce.default;\n    },\n    /**\n     * Determine if the component needs to\n     * track the state of values internally.\n     *\n     * @return {boolean}\n     */\n    isTrackingValues() {\n      return typeof this.modelValue === \"undefined\" || this.isReducingValues;\n    },\n    /**\n     * The options that are currently selected.\n     *\n     * @return {Array}\n     */\n    selectedValue() {\n      let value = this.modelValue;\n      if (this.isTrackingValues) {\n        value = this.$data._value;\n      }\n      if (value !== void 0 && value !== null && value !== \"\") {\n        return [].concat(value);\n      }\n      return [];\n    },\n    /**\n     * The options available to be chosen\n     * from the dropdown, including any\n     * tags that have been pushed.\n     *\n     * @return {Array}\n     */\n    optionList() {\n      return this.options.concat(this.pushTags ? this.pushedTags : []);\n    },\n    /**\n     * Find the search input DOM element.\n     *\n     * @return {HTMLInputElement}\n     */\n    searchEl() {\n      return this.$slots.search ? this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector) : this.$refs.search;\n    },\n    /**\n     * The object to be bound to the $slots.search slot.\n     *\n     * @return {object}\n     */\n    scope() {\n      const listSlot = {\n        search: this.search,\n        loading: this.loading,\n        searching: this.searching,\n        filteredOptions: this.filteredOptions\n      };\n      return {\n        search: {\n          attributes: {\n            id: this.inputId,\n            disabled: this.disabled,\n            placeholder: this.searchPlaceholder,\n            tabindex: this.tabindex,\n            readonly: !this.searchable,\n            role: \"combobox\",\n            \"aria-autocomplete\": \"list\",\n            \"aria-label\": this.ariaLabelCombobox,\n            \"aria-controls\": `vs-${this.uid}__listbox`,\n            \"aria-owns\": `vs-${this.uid}__listbox`,\n            \"aria-expanded\": this.dropdownOpen.toString(),\n            ref: \"search\",\n            type: \"search\",\n            autocomplete: this.autocomplete,\n            value: this.search,\n            ...this.dropdownOpen && this.filteredOptions[this.typeAheadPointer] ? {\n              \"aria-activedescendant\": `vs-${this.uid}__option-${this.typeAheadPointer}`\n            } : {}\n          },\n          events: {\n            compositionstart: () => this.isComposing = true,\n            compositionend: () => this.isComposing = false,\n            keydown: this.onSearchKeyDown,\n            keypress: this.onSearchKeyPress,\n            blur: this.onSearchBlur,\n            focus: this.onSearchFocus,\n            input: (e) => this.search = e.target.value\n          }\n        },\n        spinner: {\n          loading: this.mutableLoading\n        },\n        noOptions: {\n          search: this.search,\n          loading: this.mutableLoading,\n          searching: this.searching\n        },\n        openIndicator: {\n          attributes: {\n            ref: \"openIndicator\",\n            role: \"presentation\",\n            class: \"vs__open-indicator\"\n          }\n        },\n        listHeader: listSlot,\n        listFooter: listSlot,\n        header: { ...listSlot, deselect: this.deselect },\n        footer: { ...listSlot, deselect: this.deselect }\n      };\n    },\n    /**\n     * Returns an object containing the child components\n     * that will be used throughout the component. The\n     * `component` prop can be used to overwrite the defaults.\n     *\n     * @return {object}\n     */\n    childComponents() {\n      return {\n        ...childComponents,\n        ...this.components\n      };\n    },\n    /**\n     * Holds the current state of the component.\n     *\n     * @return {object}\n     */\n    stateClasses() {\n      return {\n        \"vs--open\": this.dropdownOpen,\n        \"vs--single\": !this.multiple,\n        \"vs--multiple\": this.multiple,\n        \"vs--searching\": this.searching && !this.noDrop,\n        \"vs--searchable\": this.searchable && !this.noDrop,\n        \"vs--unsearchable\": !this.searchable,\n        \"vs--loading\": this.mutableLoading,\n        \"vs--disabled\": this.disabled\n      };\n    },\n    /**\n     * Return the current state of the\n     * search input\n     *\n     * @return {boolean} True if non empty value\n     */\n    searching() {\n      return !!this.search;\n    },\n    /**\n     * Return the current state of the\n     * dropdown menu.\n     *\n     * @return {boolean} True if open\n     */\n    dropdownOpen() {\n      return this.dropdownShouldOpen(this);\n    },\n    /**\n     * Return the placeholder string if it's set\n     * & there is no value selected.\n     *\n     * @return {string} Placeholder text\n     */\n    searchPlaceholder() {\n      return this.isValueEmpty && this.placeholder ? this.placeholder : void 0;\n    },\n    /**\n     * The currently displayed options, filtered\n     * by the search elements value. If tagging\n     * true, the search text will be prepended\n     * if it doesn't already exist.\n     *\n     * @return {Array}\n     */\n    filteredOptions() {\n      const limitOptions = (options2) => {\n        if (this.limit !== null) {\n          return options2.slice(0, this.limit);\n        }\n        return options2;\n      };\n      const optionList = [].concat(this.optionList);\n      if (!this.filterable && !this.taggable) {\n        return limitOptions(optionList);\n      }\n      const options = this.search.length ? this.filter(optionList, this.search, this) : optionList;\n      if (this.taggable && this.search.length) {\n        try {\n          const createdOption = this.createOption(this.search);\n          if (!this.optionExists(createdOption)) {\n            options.unshift(createdOption);\n          }\n        } catch {\n        }\n      }\n      return limitOptions(options);\n    },\n    /**\n     * Check if there aren't any options selected.\n     *\n     * @return {boolean}\n     */\n    isValueEmpty() {\n      return this.selectedValue.length === 0;\n    },\n    /**\n     * Determines if the clear button should be displayed.\n     *\n     * @return {boolean}\n     */\n    showClearButton() {\n      return !this.multiple && this.clearable && !this.open && !this.isValueEmpty;\n    }\n  },\n  watch: {\n    /**\n     * Maybe reset the value\n     * when options change.\n     * Make sure selected option\n     * is correct.\n     *\n     * @param {Array} newOptions Updated options list.\n     * @param {Array} oldOptions Previous options list.\n     * @return {boolean} [description]\n     */\n    options(newOptions, oldOptions) {\n      const shouldReset = () => typeof this.resetOnOptionsChange === \"function\" ? this.resetOnOptionsChange(\n        newOptions,\n        oldOptions,\n        this.selectedValue\n      ) : this.resetOnOptionsChange;\n      if (!this.taggable && shouldReset()) {\n        this.clearSelection();\n      }\n      if (this.modelValue && this.isTrackingValues) {\n        this.setInternalValueFromOptions(this.modelValue);\n      }\n    },\n    /**\n     * Make sure to update internal\n     * value if prop changes outside\n     */\n    modelValue: {\n      immediate: true,\n      handler(val) {\n        if (this.isTrackingValues) {\n          this.setInternalValueFromOptions(val);\n        }\n      }\n    },\n    /**\n     * Always reset the value when\n     * the multiple prop changes.\n     *\n     * @return {void}\n     */\n    multiple() {\n      this.clearSelection();\n    },\n    open(isOpen) {\n      this.$emit(isOpen ? \"open\" : \"close\");\n    },\n    search(search) {\n      if (search.length) {\n        this.open = true;\n      }\n    }\n  },\n  created() {\n    this.mutableLoading = this.loading;\n  },\n  methods: {\n    /**\n     * Make sure tracked value is\n     * one option if possible.\n     *\n     * @param  {object | string} value Reduced value to resolve.\n     * @return {void}\n     */\n    setInternalValueFromOptions(value) {\n      if (Array.isArray(value)) {\n        this.$data._value = value.map((val) => this.findOptionFromReducedValue(val));\n      } else {\n        this.$data._value = this.findOptionFromReducedValue(value);\n      }\n    },\n    /**\n     * Select or deselect a given option.\n     * Allow deselect if clearable or if not the only selected option.\n     *\n     * @param  {object | string} option Option to select or deselect.\n     * @return {void}\n     */\n    select(option) {\n      this.$emit(\"option:selecting\", option);\n      if (!this.isOptionSelected(option)) {\n        if (this.taggable && !this.optionExists(option)) {\n          this.$emit(\"option:created\", option);\n          this.pushTag(option);\n        }\n        if (this.multiple) {\n          option = this.selectedValue.concat(option);\n        }\n        this.updateValue(option);\n        this.$emit(\"option:selected\", option);\n      } else if (this.deselectFromDropdown && (this.clearable || this.multiple && this.selectedValue.length > 1)) {\n        this.deselect(option);\n      }\n      this.onAfterSelect(option);\n    },\n    /**\n     * De-select a given option.\n     *\n     * @param  {object | string} option Option to remove.\n     * @return {void}\n     */\n    deselect(option) {\n      this.$emit(\"option:deselecting\", option);\n      this.updateValue(this.selectedValue.filter((val) => {\n        return !this.optionComparator(val, option);\n      }));\n      this.$emit(\"option:deselected\", option);\n    },\n    /**\n     * De-select a given option on keyboard input.\n     *\n     * @param  {object | string} option Option to remove.\n     * @param  {number} index Index of the deselect button.\n     * @return {void}\n     */\n    keyboardDeselect(option, index2) {\n      this.deselect(option);\n      const nextDeselect = this.deselectButtons?.[index2 + 1];\n      const prevDeselect = this.deselectButtons?.[index2 - 1];\n      const deselectToFocus = nextDeselect ?? prevDeselect;\n      if (deselectToFocus) {\n        deselectToFocus.focus();\n      } else {\n        this.searchEl.focus();\n      }\n    },\n    /**\n     * Clears the currently selected value(s)\n     *\n     * @return {void}\n     */\n    clearSelection() {\n      this.updateValue(this.multiple ? [] : null);\n      this.searchEl.focus();\n    },\n    /**\n     * Called from this.select after each selection.\n     *\n     * @param  {object | string} option Option that was handled.\n     * @return {void}\n     */\n    onAfterSelect() {\n      if (this.closeOnSelect) {\n        this.open = !this.open;\n      }\n      if (this.clearSearchOnSelect) {\n        this.search = \"\";\n      }\n      if (this.noDrop && this.multiple) {\n        this.$nextTick(() => this.$refs.search.focus());\n      }\n    },\n    /**\n     * Accepts a selected value, updates local\n     * state when required, and triggers the\n     * input event.\n     *\n     * @fires input\n     * @param {object | string} value Selected value payload.\n     */\n    updateValue(value) {\n      if (typeof this.modelValue === \"undefined\") {\n        this.$data._value = value;\n      }\n      if (value !== null) {\n        if (Array.isArray(value)) {\n          value = value.map((val) => this.reduce(val));\n        } else {\n          value = this.reduce(value);\n        }\n      }\n      this.$emit(\"update:modelValue\", value);\n    },\n    /**\n     * Toggle the visibility of the dropdown menu.\n     *\n     * @param  {Event} event Toggle trigger event.\n     * @return {void}\n     */\n    toggleDropdown(event) {\n      const targetIsNotSearch = event.target !== this.searchEl;\n      if (targetIsNotSearch) {\n        event.preventDefault();\n      }\n      const ignoredButtons = [\n        ...this.deselectButtons || [],\n        ...this.$refs.clearButton ? [this.$refs.clearButton] : []\n      ];\n      if (this.searchEl === void 0 || ignoredButtons.filter(Boolean).some((ref) => ref.contains(event.target) || ref === event.target)) {\n        event.preventDefault();\n        return;\n      }\n      if (this.open && targetIsNotSearch) {\n        this.open = false;\n        this.searchEl.blur();\n      } else if (!this.disabled) {\n        this.open = true;\n        this.searchEl.focus();\n      }\n    },\n    /**\n     * Check if the given option is currently selected.\n     *\n     * @param  {object | string}  option Option to evaluate.\n     * @return {boolean} True when selected | False otherwise\n     */\n    isOptionSelected(option) {\n      return this.selectedValue.some((value) => this.optionComparator(value, option));\n    },\n    /**\n     *  Can the current option be removed via the dropdown?\n     *\n     * @param {object | string} option Option to evaluate.\n     * @return {boolean}\n     */\n    isOptionDeselectable(option) {\n      return this.isOptionSelected(option) && this.deselectFromDropdown;\n    },\n    /**\n     * Check if the option at the given index should display a\n     * keyboard focus border.\n     *\n     * @param  {number} index Option index.\n     * @return {boolean}\n     */\n    hasKeyboardFocusBorder(index2) {\n      if (this.keyboardFocusBorder && this.isKeyboardNavigation) {\n        return index2 === this.typeAheadPointer;\n      }\n      return false;\n    },\n    /**\n     * Determine if two option objects are matching.\n     *\n     * @param {object} a First option.\n     * @param {object} b Second option.\n     * @return {boolean}\n     */\n    optionComparator(a, b) {\n      return this.getOptionKey(a) === this.getOptionKey(b);\n    },\n    /**\n     * Finds an option from the options\n     * where a reduced value matches\n     * the passed in value.\n     *\n     * @param {object} value Reduced value to match.\n     * @return {*}\n     */\n    findOptionFromReducedValue(value) {\n      const predicate = (option) => JSON.stringify(this.reduce(option)) === JSON.stringify(value);\n      const matches = [...this.options, ...this.pushedTags].filter(predicate);\n      if (matches.length === 1) {\n        return matches[0];\n      }\n      return matches.find((match) => this.optionComparator(match, this.$data._value)) || value;\n    },\n    /**\n     * 'Private' function to close the search options\n     *\n     * @fires  {search:blur}\n     * @return {void}\n     */\n    closeSearchOptions() {\n      this.open = false;\n      this.$emit(\"search:blur\");\n    },\n    /**\n     * Delete the value on Delete keypress when there is no\n     * text in the search input, & there's tags to delete\n     *\n     * @return {this.value}\n     */\n    maybeDeleteValue() {\n      if (!this.searchEl.value.length && this.selectedValue && this.selectedValue.length && this.clearable) {\n        let value = null;\n        if (this.multiple) {\n          value = [\n            ...this.selectedValue.slice(0, this.selectedValue.length - 1)\n          ];\n        }\n        this.updateValue(value);\n      }\n    },\n    /**\n     * Determine if an option exists\n     * within this.optionList array.\n     *\n     * @param  {Object || String} option Option to find.\n     * @return {boolean}\n     */\n    optionExists(option) {\n      return this.optionList.some((_option) => this.optionComparator(_option, option));\n    },\n    /**\n     * Determine the `aria-selected` value\n     * of an option\n     *\n     * @param  {object | string} option Option to evaluate.\n     * @return {null|string}\n     */\n    optionAriaSelected(option) {\n      if (!this.selectable(option)) {\n        return null;\n      }\n      return String(this.isOptionSelected(option));\n    },\n    /**\n     * Ensures that options are always\n     * passed as objects to scoped slots.\n     *\n     * @param {object | string} option Option to normalize.\n     * @return {object}\n     */\n    normalizeOptionForSlot(option) {\n      return typeof option === \"object\" ? option : { [this.label]: option };\n    },\n    /**\n     * If push-tags is true, push the\n     * given option to `this.pushedTags`.\n     *\n     * @param  {Object || String} option Option to append.\n     * @return {void}\n     */\n    pushTag(option) {\n      this.pushedTags.push(option);\n    },\n    /**\n     * If there is any text in the search input, remove it.\n     * Otherwise, blur the search input to close the dropdown.\n     *\n     * @return {void}\n     */\n    onEscape() {\n      if (!this.search.length) {\n        this.open = false;\n      } else {\n        this.search = \"\";\n      }\n    },\n    /**\n     * Close the dropdown on blur.\n     *\n     * @fires  {search:blur}\n     * @return {void}\n     */\n    onSearchBlur() {\n      if (this.mousedown && !this.searching) {\n        this.mousedown = false;\n      } else {\n        const { clearSearchOnSelect, multiple } = this;\n        if (this.clearSearchOnBlur({ clearSearchOnSelect, multiple })) {\n          this.search = \"\";\n        }\n        this.closeSearchOptions();\n        return;\n      }\n      if (this.search.length === 0 && this.options.length === 0) {\n        this.closeSearchOptions();\n      }\n    },\n    /**\n     * Do NOT open the dropdown here: auto-opening on focus violates\n     * WCAG 3.2.1 (On Focus). Keyboard users open via\n     * Space/Enter/ArrowDown/ArrowUp; mouse users click.\n     *\n     * @fires  {search:focus}\n     * @return {void}\n     */\n    onSearchFocus() {\n      this.$emit(\"search:focus\");\n    },\n    /**\n     * Event-Handler to help workaround IE11 (probably fixes 10 as well)\n     * firing a `blur` event when clicking\n     * the dropdown's scrollbar, causing it\n     * to collapse abruptly.\n     *\n     * @see https://github.com/sagalbot/vue-select/issues/106\n     * @return {void}\n     */\n    onMousedown() {\n      this.mousedown = true;\n    },\n    /**\n     * Event-Handler to help workaround IE11 (probably fixes 10 as well)\n     *\n     * @see https://github.com/sagalbot/vue-select/issues/106\n     * @return {void}\n     */\n    onMouseUp() {\n      this.mousedown = false;\n    },\n    /**\n     * Event-Handler for option mousemove\n     *\n     * @param {object | string} option Hovered option.\n     * @param {number} index Hovered option index.\n     * @return {void}\n     */\n    onMouseMove(option, index2) {\n      this.isKeyboardNavigation = false;\n      if (!this.selectable(option)) {\n        return;\n      }\n      this.typeAheadPointer = index2;\n    },\n    /**\n     * Search <input> KeyBoardEvent handler.\n     *\n     * @param {KeyboardEvent} e Keyboard event.\n     * @return {Function}\n     */\n    onSearchKeyDown(e) {\n      const preventAndSelect = (e2) => {\n        e2.preventDefault();\n        if (!this.open) {\n          this.open = true;\n          return;\n        }\n        return !this.isComposing && this.typeAheadSelect();\n      };\n      const defaults = {\n        //  backspace\n        8: () => this.maybeDeleteValue(),\n        //  tab\n        9: () => this.onTab(),\n        //  esc\n        27: () => this.onEscape(),\n        //  up.prevent\n        38: (e2) => {\n          e2.preventDefault();\n          this.isKeyboardNavigation = true;\n          if (!this.open) {\n            this.open = true;\n            return;\n          }\n          return this.typeAheadUp();\n        },\n        //  down.prevent\n        40: (e2) => {\n          e2.preventDefault();\n          this.isKeyboardNavigation = true;\n          if (!this.open) {\n            this.open = true;\n            return;\n          }\n          return this.typeAheadDown();\n        }\n      };\n      this.selectOnKeyCodes.forEach((keyCode) => defaults[keyCode] = preventAndSelect);\n      const handlers = this.mapKeydown(defaults, this);\n      if (typeof handlers[e.keyCode] === \"function\") {\n        return handlers[e.keyCode](e);\n      }\n    },\n    /**\n     * TODO: Probably want to add a mapKeyPress method just like we have for keydown.\n     *\n     * @param {KeyboardEvent} e Keyboard event.\n     */\n    onSearchKeyPress(e) {\n      if (!this.open && e.keyCode === 32) {\n        e.preventDefault();\n        this.open = true;\n      }\n    }\n  }\n};\nconst _hoisted_1 = [\"id\", \"dir\"];\nconst _hoisted_2 = {\n  ref: \"toggle\",\n  class: \"vs__dropdown-toggle\"\n};\nconst _hoisted_3 = [\"disabled\", \"title\", \"aria-label\", \"onMousedown\", \"onKeydown\"];\nconst _hoisted_4 = {\n  ref: \"actions\",\n  class: \"vs__actions\"\n};\nconst _hoisted_5 = [\"disabled\", \"title\", \"aria-label\"];\nconst _hoisted_6 = { class: \"vs__spinner\" };\nconst _hoisted_7 = [\"id\", \"aria-label\", \"aria-multiselectable\"];\nconst _hoisted_8 = [\"id\", \"aria-selected\", \"onMousemove\", \"onClick\"];\nconst _hoisted_9 = {\n  key: 0,\n  class: \"vs__no-options\"\n};\nconst _hoisted_10 = [\"id\", \"aria-label\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _directive_append_to_body = resolveDirective(\"append-to-body\");\n  return openBlock(), createElementBlock(\"div\", {\n    id: `v-select-${$props.uid}`,\n    dir: $props.dir,\n    class: normalizeClass([\"v-select\", $options.stateClasses])\n  }, [\n    renderSlot(_ctx.$slots, \"header\", normalizeProps(guardReactiveProps($options.scope.header))),\n    createElementVNode(\"div\", _hoisted_2, [\n      createElementVNode(\"div\", {\n        ref: \"selectedOptions\",\n        class: \"vs__selected-options\",\n        onMousedown: _cache[0] || (_cache[0] = (...args) => $options.toggleDropdown && $options.toggleDropdown(...args))\n      }, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList($options.selectedValue, (option, index2) => {\n          return renderSlot(_ctx.$slots, \"selected-option-container\", {\n            option: $options.normalizeOptionForSlot(option),\n            deselect: $options.deselect,\n            multiple: $props.multiple,\n            disabled: $props.disabled\n          }, () => [\n            (openBlock(), createElementBlock(\"span\", {\n              key: $props.getOptionKey(option),\n              class: \"vs__selected\"\n            }, [\n              renderSlot(_ctx.$slots, \"selected-option\", mergeProps({ ref_for: true }, $options.normalizeOptionForSlot(option)), () => [\n                createTextVNode(toDisplayString($props.getOptionLabel(option)), 1)\n              ]),\n              $props.multiple ? (openBlock(), createElementBlock(\"button\", {\n                key: 0,\n                ref_for: true,\n                ref: (el) => $data.deselectButtons[index2] = el,\n                disabled: $props.disabled,\n                type: \"button\",\n                class: \"vs__deselect\",\n                title: $props.ariaLabelDeselectOption($props.getOptionLabel(option)),\n                \"aria-label\": $props.ariaLabelDeselectOption($props.getOptionLabel(option)),\n                onMousedown: withModifiers(($event) => $options.deselect(option), [\"stop\"]),\n                onKeydown: withKeys(($event) => $options.keyboardDeselect(option, index2), [\"enter\"])\n              }, [\n                (openBlock(), createBlock(resolveDynamicComponent($options.childComponents.Deselect)))\n              ], 40, _hoisted_3)) : createCommentVNode(\"\", true)\n            ]))\n          ]);\n        }), 256)),\n        renderSlot(_ctx.$slots, \"search\", normalizeProps(guardReactiveProps($options.scope.search)), () => [\n          createElementVNode(\"input\", mergeProps({ class: \"vs__search\" }, $options.scope.search.attributes, toHandlers($options.scope.search.events, true)), null, 16)\n        ])\n      ], 544),\n      createElementVNode(\"div\", _hoisted_4, [\n        withDirectives(createElementVNode(\"button\", {\n          ref: \"clearButton\",\n          disabled: $props.disabled,\n          type: \"button\",\n          class: \"vs__clear\",\n          title: $props.ariaLabelClearSelected,\n          \"aria-label\": $props.ariaLabelClearSelected,\n          onClick: _cache[1] || (_cache[1] = (...args) => $options.clearSelection && $options.clearSelection(...args))\n        }, [\n          (openBlock(), createBlock(resolveDynamicComponent($options.childComponents.Deselect)))\n        ], 8, _hoisted_5), [\n          [vShow, $options.showClearButton]\n        ]),\n        !$props.noDrop ? (openBlock(), createElementBlock(\"button\", {\n          key: 0,\n          ref: \"openIndicatorButton\",\n          class: \"vs__open-indicator-button\",\n          type: \"button\",\n          tabindex: \"-1\",\n          \"aria-hidden\": \"true\",\n          onMousedown: _cache[2] || (_cache[2] = (...args) => $options.toggleDropdown && $options.toggleDropdown(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"open-indicator\", normalizeProps(guardReactiveProps($options.scope.openIndicator)), () => [\n            (openBlock(), createBlock(resolveDynamicComponent($options.childComponents.OpenIndicator), normalizeProps(guardReactiveProps($options.scope.openIndicator.attributes)), null, 16))\n          ])\n        ], 544)) : createCommentVNode(\"\", true),\n        renderSlot(_ctx.$slots, \"spinner\", normalizeProps(guardReactiveProps($options.scope.spinner)), () => [\n          withDirectives(createElementVNode(\"div\", _hoisted_6, \" Loading... \", 512), [\n            [vShow, _ctx.mutableLoading]\n          ])\n        ])\n      ], 512)\n    ], 512),\n    createVNode(Transition, { name: $props.transition }, {\n      default: withCtx(() => [\n        $options.dropdownOpen ? withDirectives((openBlock(), createElementBlock(\"ul\", {\n          id: `vs-${$props.uid}__listbox`,\n          ref: \"dropdownMenu\",\n          key: `vs-${$props.uid}__listbox`,\n          class: \"vs__dropdown-menu\",\n          role: \"listbox\",\n          \"aria-label\": $props.ariaLabelListbox,\n          \"aria-multiselectable\": $props.multiple ? \"true\" : null,\n          tabindex: \"-1\",\n          onMousedown: _cache[3] || (_cache[3] = withModifiers((...args) => $options.onMousedown && $options.onMousedown(...args), [\"prevent\"])),\n          onMouseup: _cache[4] || (_cache[4] = (...args) => $options.onMouseUp && $options.onMouseUp(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"list-header\", normalizeProps(guardReactiveProps($options.scope.listHeader))),\n          (openBlock(true), createElementBlock(Fragment, null, renderList($options.filteredOptions, (option, index2) => {\n            return openBlock(), createElementBlock(\"li\", {\n              id: `vs-${$props.uid}__option-${index2}`,\n              key: $props.getOptionKey(option),\n              role: \"option\",\n              class: normalizeClass([\"vs__dropdown-option\", {\n                \"vs__dropdown-option--deselect\": $options.isOptionDeselectable(option) && index2 === _ctx.typeAheadPointer,\n                \"vs__dropdown-option--selected\": $options.isOptionSelected(option),\n                \"vs__dropdown-option--highlight\": index2 === _ctx.typeAheadPointer,\n                \"vs__dropdown-option--kb-focus\": $options.hasKeyboardFocusBorder(index2),\n                \"vs__dropdown-option--disabled\": !$props.selectable(option)\n              }]),\n              \"aria-selected\": $options.optionAriaSelected(option),\n              onMousemove: ($event) => $options.onMouseMove(option, index2),\n              onClick: withModifiers(($event) => $props.selectable(option) ? $options.select(option) : null, [\"prevent\", \"stop\"])\n            }, [\n              renderSlot(_ctx.$slots, \"option\", mergeProps({ ref_for: true }, $options.normalizeOptionForSlot(option)), () => [\n                createTextVNode(toDisplayString($props.getOptionLabel(option)), 1)\n              ])\n            ], 42, _hoisted_8);\n          }), 128)),\n          $options.filteredOptions.length === 0 ? (openBlock(), createElementBlock(\"li\", _hoisted_9, [\n            renderSlot(_ctx.$slots, \"no-options\", normalizeProps(guardReactiveProps($options.scope.noOptions)), () => [\n              _cache[5] || (_cache[5] = createTextVNode(\" Sorry, no matching options. \", -1))\n            ])\n          ])) : createCommentVNode(\"\", true),\n          renderSlot(_ctx.$slots, \"list-footer\", normalizeProps(guardReactiveProps($options.scope.listFooter)))\n        ], 40, _hoisted_7)), [\n          [_directive_append_to_body]\n        ]) : (openBlock(), createElementBlock(\"ul\", {\n          key: 1,\n          id: `vs-${$props.uid}__listbox`,\n          role: \"listbox\",\n          \"aria-label\": $props.ariaLabelListbox,\n          style: { \"display\": \"none\", \"visibility\": \"hidden\" }\n        }, null, 8, _hoisted_10))\n      ]),\n      _: 3\n    }, 8, [\"name\"]),\n    renderSlot(_ctx.$slots, \"footer\", normalizeProps(guardReactiveProps($options.scope.footer)))\n  ], 10, _hoisted_1);\n}\nconst Select = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nconst index = { ajax, pointer, pointerScroll };\nexport {\n  Select as VueSelect,\n  index as mixins\n};\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, h } from \"vue\";\n/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction findRanges(text, search) {\n  const ranges = [];\n  let currentIndex = 0;\n  let index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);\n  let i = 0;\n  while (index > -1 && i++ < text.length) {\n    currentIndex = index + search.length;\n    ranges.push({ start: index, end: currentIndex });\n    index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);\n  }\n  return ranges;\n}\nconst _sfc_main = defineComponent({\n  name: \"NcHighlight\",\n  props: {\n    /**\n     * The string to display\n     */\n    text: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * The string to match and highlight\n     */\n    search: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * The ranges to highlight, takes precedence over the search prop.\n     */\n    highlight: {\n      type: Array,\n      default: () => []\n    }\n  },\n  computed: {\n    /**\n     * The indice ranges which should be highlighted.\n     * If an array with ranges is provided, we use it. Otherwise\n     * we calculate it based on the provided substring to highlight.\n     *\n     * @return The array of ranges to highlight\n     */\n    ranges() {\n      let ranges = [];\n      if (!this.search && this.highlight.length === 0) {\n        return ranges;\n      }\n      if (this.highlight.length > 0) {\n        ranges = this.highlight;\n      } else {\n        ranges = findRanges(this.text, this.search);\n      }\n      ranges.forEach((range, i) => {\n        if (range.end < range.start) {\n          ranges[i] = {\n            start: range.end,\n            end: range.start\n          };\n        }\n      });\n      ranges = ranges.reduce((validRanges, range) => {\n        if (range.start < this.text.length && range.end > 0) {\n          validRanges.push({\n            start: range.start < 0 ? 0 : range.start,\n            end: range.end > this.text.length ? this.text.length : range.end\n          });\n        }\n        return validRanges;\n      }, []);\n      ranges.sort((a, b) => {\n        return a.start - b.start;\n      });\n      ranges = ranges.reduce((mergedRanges, range) => {\n        if (!mergedRanges.length) {\n          mergedRanges.push(range);\n        } else {\n          const idx = mergedRanges.length - 1;\n          if (mergedRanges[idx].end >= range.start) {\n            mergedRanges[idx] = {\n              start: mergedRanges[idx].start,\n              end: Math.max(mergedRanges[idx].end, range.end)\n            };\n          } else {\n            mergedRanges.push(range);\n          }\n        }\n        return mergedRanges;\n      }, []);\n      return ranges;\n    },\n    /**\n     * Calculate the different chunks to show based on the ranges to highlight.\n     */\n    chunks() {\n      if (this.ranges.length === 0) {\n        return [{\n          start: 0,\n          end: this.text.length,\n          highlight: false,\n          text: this.text\n        }];\n      }\n      const chunks = [];\n      let currentIndex = 0;\n      let currentRange = 0;\n      while (currentIndex < this.text.length) {\n        const range = this.ranges[currentRange];\n        if (range.start === currentIndex) {\n          chunks.push({\n            ...range,\n            highlight: true,\n            text: this.text.slice(range.start, range.end)\n          });\n          currentRange++;\n          currentIndex = range.end;\n          if (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n            chunks.push({\n              start: currentIndex,\n              end: this.text.length,\n              highlight: false,\n              text: this.text.slice(currentIndex)\n            });\n            currentIndex = this.text.length;\n          }\n          continue;\n        }\n        chunks.push({\n          start: currentIndex,\n          end: range.start,\n          highlight: false,\n          text: this.text.slice(currentIndex, range.start)\n        });\n        currentIndex = range.start;\n      }\n      return chunks;\n    }\n  },\n  /**\n   * The render function to display the component\n   */\n  render() {\n    if (!this.ranges.length) {\n      return h(\"span\", {}, this.text);\n    }\n    return h(\"span\", {}, this.chunks.map((chunk) => {\n      return chunk.highlight ? h(\"strong\", {}, chunk.text) : chunk.text;\n    }));\n  }\n});\nexport {\n  _sfc_main as _,\n  findRanges as f\n};\n//# sourceMappingURL=NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs.map\n","import '../assets/NcEllipsisedOption-CPWbbgBy.css';\nimport { _ as _sfc_main$1, f as findRanges } from \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, createBlock, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n  name: \"NcEllipsisedOption\",\n  components: {\n    NcHighlight: _sfc_main$1\n  },\n  props: {\n    /**\n     * The text to be display in one line. If it is longer than 10 characters, it is be truncated with ellipsis in the end but keeping up to 10 last characters to fit the parent container.\n     */\n    name: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * The search value to highlight in the text\n     */\n    search: {\n      type: String,\n      default: \"\"\n    }\n  },\n  computed: {\n    needsTruncate() {\n      return this.name && this.name.length >= 10;\n    },\n    /**\n     * Index at which to split the name if it is longer than 10 characters.\n     *\n     * @return {number} The position at which to split\n     */\n    split() {\n      return this.name.length - Math.min(Math.floor(this.name.length / 2), 10);\n    },\n    part1() {\n      if (this.needsTruncate) {\n        return this.name.slice(0, this.split);\n      }\n      return this.name;\n    },\n    part2() {\n      if (this.needsTruncate) {\n        return this.name.slice(this.split);\n      }\n      return \"\";\n    },\n    /**\n     * The ranges to highlight. Since we split the string for ellipsising,\n     * the Highlight component cannot figure this out itself and needs the ranges provided.\n     *\n     * @return {Array} The array with the ranges to highlight\n     */\n    highlight1() {\n      if (!this.search) {\n        return [];\n      }\n      return findRanges(this.name, this.search);\n    },\n    /**\n     * We shift the ranges for the second part by the position of the split.\n     * Ranges out of the string length are discarded by the Highlight component,\n     * so we don't need to take care of this here.\n     *\n     * @return {Array} The array with the ranges to highlight\n     */\n    highlight2() {\n      return this.highlight1.map((range) => {\n        return {\n          start: range.start - this.split,\n          end: range.end - this.split\n        };\n      });\n    }\n  }\n};\nconst _hoisted_1 = [\"title\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcHighlight = resolveComponent(\"NcHighlight\");\n  return openBlock(), createElementBlock(\"span\", {\n    dir: \"auto\",\n    class: \"name-parts\",\n    title: $props.name\n  }, [\n    createVNode(_component_NcHighlight, {\n      class: \"name-parts__first\",\n      text: $options.part1,\n      search: $props.search,\n      highlight: $options.highlight1\n    }, null, 8, [\"text\", \"search\", \"highlight\"]),\n    $options.part2 ? (openBlock(), createBlock(_component_NcHighlight, {\n      key: 0,\n      class: \"name-parts__last\",\n      text: $options.part2,\n      search: $props.search,\n      highlight: $options.highlight2\n    }, null, 8, [\"text\", \"search\", \"highlight\"])) : createCommentVNode(\"\", true)\n  ], 8, _hoisted_1);\n}\nconst NcEllipsisedOption = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-a612f185\"]]);\nexport {\n  NcEllipsisedOption as N\n};\n//# sourceMappingURL=NcEllipsisedOption-D6Amb91K.mjs.map\n","import '../assets/NcSelect-CvDEQAjD.css';\nimport { autoUpdate, computePosition, offset, flip, shift, limitShift } from \"@floating-ui/dom\";\nimport { VueSelect } from \"@nextcloud/vue-select\";\nimport { resolveComponent, openBlock, createBlock, mergeProps, createSlots, withCtx, createTextVNode, toDisplayString, createCommentVNode, renderSlot, normalizeProps, guardReactiveProps, createVNode, createElementVNode, toHandlers, renderList, warn, h } from \"vue\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { N as NcEllipsisedOption } from \"./NcEllipsisedOption-D6Amb91K.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport { r as register, g as t17, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t17);\nconst _sfc_main = {\n  name: \"NcSelect\",\n  components: {\n    ChevronDown,\n    NcEllipsisedOption,\n    NcLoadingIcon,\n    VueSelect\n  },\n  props: {\n    // Add VueSelect props to $props\n    ...VueSelect.props,\n    ...VueSelect.mixins.reduce((allProps, mixin) => ({ ...allProps, ...mixin.props }), {}),\n    /**\n     * `aria-label` for the clear input button\n     */\n    ariaLabelClearSelected: {\n      type: String,\n      default: t(\"Clear selected\")\n    },\n    /**\n     * `aria-label` for the search input\n     *\n     * A descriptive `inputLabel` is preferred as this is not visible.\n     */\n    ariaLabelCombobox: {\n      type: String,\n      default: null\n    },\n    /**\n     * `aria-label` for the listbox element\n     */\n    ariaLabelListbox: {\n      type: String,\n      default: t(\"Options\")\n    },\n    /**\n     * Allows to customize the `aria-label` for the deselect-option button\n     * The default is \"Deselect \" + optionLabel\n     *\n     * @type {(optionLabel: string) => string}\n     */\n    ariaLabelDeselectOption: {\n      type: Function,\n      default: (optionLabel) => t(\"Deselect {option}\", { option: optionLabel })\n    },\n    /**\n     * Append the dropdown element to the end of the body\n     * and size/position it dynamically.\n     *\n     * @see https://vue-select.org/api/props.html#appendtobody\n     */\n    appendToBody: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * When `appendToBody` is true, this function is responsible for\n     * positioning the drop down list.\n     *\n     * If a function is returned from `calculatePosition`, it will\n     * be called when the drop down list is removed from the DOM.\n     * This allows for any garbage collection you may need to do.\n     *\n     * @see https://vue-select.org/api/props.html#calculateposition\n     */\n    calculatePosition: {\n      type: Function,\n      default: null\n    },\n    /**\n     * Keep the dropdown open after selecting an option.\n     *\n     * @default false\n     * @since 8.25.0\n     */\n    keepOpen: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Replace default vue-select components\n     *\n     * @see https://vue-select.org/api/props.html#components\n     */\n    components: {\n      type: Object,\n      default: () => ({\n        Deselect: {\n          render: () => h(IconClose, {\n            size: 20,\n            fillColor: \"var(--vs-controls-color)\",\n            style: [\n              { cursor: \"pointer\" }\n            ]\n          })\n        }\n      })\n    },\n    /**\n     * Sets the maximum number of options to display in the dropdown list\n     */\n    limit: {\n      type: Number,\n      default: null\n    },\n    /**\n     * Disable the component\n     *\n     * @see https://vue-select.org/api/props.html#disabled\n     */\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Determines whether the dropdown should be open.\n     * Receives the component instance as the only argument.\n     *\n     * @see https://vue-select.org/api/props.html#dropdownshouldopen\n     */\n    dropdownShouldOpen: {\n      type: Function,\n      default: ({ noDrop, open }) => {\n        return noDrop ? false : open;\n      }\n    },\n    /**\n     * Callback to determine if the provided option should\n     * match the current search text. Used to determine\n     * if the option should be displayed.\n     *\n     * Defaults to the internal vue-select function documented at the link\n     * below\n     *\n     * @see https://vue-select.org/api/props.html#filterby\n     */\n    filterBy: {\n      type: Function,\n      default: null\n    },\n    /**\n     * Class for the `input`\n     *\n     * Necessary for use in NcActionInput\n     */\n    inputClass: {\n      type: [String, Object],\n      default: null\n    },\n    /**\n     * Input element id\n     */\n    inputId: {\n      type: String,\n      default: () => createElementId()\n    },\n    /**\n     * Visible label for the input element\n     */\n    inputLabel: {\n      type: String,\n      default: null\n    },\n    /**\n     * Pass true if you are using an external label\n     */\n    labelOutside: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Display a visible border around dropdown options\n     * which have keyboard focus\n     */\n    keyboardFocusBorder: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Key of the displayed label for object options\n     *\n     * Defaults to the internal vue-select string documented at the link\n     * below\n     *\n     * @see https://vue-select.org/api/props.html#label\n     */\n    label: {\n      type: String,\n      default: null\n    },\n    /**\n     * Show the loading icon\n     *\n     * @see https://vue-select.org/api/props.html#loading\n     */\n    loading: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Allow selection of multiple options\n     *\n     * @see https://vue-select.org/api/props.html#multiple\n     */\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Disable automatic wrapping when selected options overflow the width\n     */\n    noWrap: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Array of options\n     *\n     * @type {Array<string | number | Record<string | number, any>>}\n     *\n     * @see https://vue-select.org/api/props.html#options\n     */\n    options: {\n      type: Array,\n      default: () => []\n    },\n    /**\n     * Placeholder text\n     *\n     * @see https://vue-select.org/api/props.html#placeholder\n     */\n    placeholder: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Customized component's response to keydown events while the search input has focus\n     *\n     * @see https://vue-select.org/guide/keydown.html#mapkeydown\n     */\n    mapKeydown: {\n      type: Function,\n      /**\n       * Patched Vue-Select keydown events handlers map to stop Escape propagation in open select\n       *\n       * @param {Record<number, Function>} map - Mapped keyCode to handlers { <keyCode>:<callback> }\n       * @param {import('@nextcloud/vue-select').VueSelect} vm - VueSelect instance\n       * @return {Record<number, Function>} patched keydown event handlers\n       */\n      default(map, vm) {\n        return {\n          ...map,\n          /**\n           * Patched Escape handler to stop propagation from open select\n           *\n           * @param {KeyboardEvent} event - default keydown event handler\n           */\n          27: (event) => {\n            if (vm.open) {\n              event.stopPropagation();\n            }\n            map[27](event);\n          }\n        };\n      }\n    },\n    /**\n     * A unique identifier used to generate IDs and DOM attributes. Must be unique for every instance of the component.\n     *\n     * @see https://vue-select.org/api/props.html#uid\n     */\n    uid: {\n      type: String,\n      default: () => createElementId()\n    },\n    /**\n     * When `appendToBody` is true, this sets the placement of the dropdown\n     *\n     * @type {'bottom' | 'top'}\n     */\n    placement: {\n      type: String,\n      default: \"bottom\"\n    },\n    /**\n     * If false, the focused dropdown option will not be reset when filtered\n     * options change\n     */\n    resetFocusOnOptionsChange: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Currently selected value\n     *\n     * The `v-model` directive may be used for two-way data binding\n     *\n     * @type {string | number | Record<string | number, any> | Array<any>}\n     *\n     * @see https://vue-select.org/api/props.html#value\n     */\n    modelValue: {\n      type: [String, Number, Object, Array],\n      default: null\n    },\n    /**\n     * Enable if a value is required for native form validation\n     */\n    required: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Any available prop\n     *\n     * @see https://vue-select.org/api/props.html\n     */\n    // Not an actual prop but needed to show in vue-styleguidist docs\n    // eslint-disable-next-line\n    \" \": {}\n  },\n  emits: [\n    /**\n     * All events from https://vue-select.org/api/events.html\n     */\n    // Not an actual event but needed to show in vue-styleguidist docs\n    \" \",\n    \"update:modelValue\"\n  ],\n  setup() {\n    const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n    const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n    const avatarSize = clickableArea - 2 * gridBaseLine;\n    return {\n      avatarSize,\n      isLegacy\n    };\n  },\n  data() {\n    return {\n      search: \"\"\n    };\n  },\n  computed: {\n    inputRequired() {\n      if (!this.required) {\n        return null;\n      }\n      return this.modelValue === null || Array.isArray(this.modelValue) && this.modelValue.length === 0;\n    },\n    localCalculatePosition() {\n      if (this.calculatePosition !== null) {\n        return this.calculatePosition;\n      }\n      return (dropdownMenu, component, { width }) => {\n        dropdownMenu.style.width = width;\n        const addClass = {\n          name: \"addClass\",\n          fn() {\n            dropdownMenu.classList.add(\"vs__dropdown-menu--floating\");\n            return {};\n          }\n        };\n        const togglePlacementClass = {\n          name: \"togglePlacementClass\",\n          fn({ placement }) {\n            component.$el.classList.toggle(\n              \"select--drop-up\",\n              placement === \"top\"\n            );\n            dropdownMenu.classList.toggle(\n              \"vs__dropdown-menu--floating-placement-top\",\n              placement === \"top\"\n            );\n            return {};\n          }\n        };\n        const updatePosition = () => {\n          computePosition(component.$refs.toggle, dropdownMenu, {\n            placement: this.placement,\n            middleware: [\n              offset(-1),\n              addClass,\n              togglePlacementClass,\n              // Match popperjs default collision prevention behavior by appending the following middleware in order\n              flip(),\n              shift({ limiter: limitShift() })\n            ]\n          }).then(({ x, y }) => {\n            Object.assign(dropdownMenu.style, {\n              left: `${x}px`,\n              top: `${y}px`,\n              width: `${component.$refs.toggle.getBoundingClientRect().width}px`\n            });\n          });\n        };\n        const cleanup = autoUpdate(\n          component.$refs.toggle,\n          dropdownMenu,\n          updatePosition\n        );\n        return cleanup;\n      };\n    },\n    localFilterBy() {\n      return this.filterBy ?? VueSelect.props.filterBy.default;\n    },\n    localLabel() {\n      return this.label ?? VueSelect.props.label.default;\n    },\n    propsToForward() {\n      const vueSelectKeys = [\n        ...Object.keys(VueSelect.props),\n        ...VueSelect.mixins.flatMap((mixin) => Object.keys(mixin.props ?? {}))\n      ];\n      const initialPropsToForward = Object.fromEntries(Object.entries(this.$props).filter(([key, _value]) => vueSelectKeys.includes(key)));\n      const propsToForward = {\n        ...initialPropsToForward,\n        // Custom overrides of vue-select props\n        calculatePosition: this.localCalculatePosition,\n        closeOnSelect: !this.keepOpen,\n        filterBy: this.localFilterBy,\n        label: this.localLabel\n      };\n      return propsToForward;\n    }\n  },\n  mounted() {\n    if (!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox) {\n      warn(\"[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`.\");\n    }\n    if (this.inputLabel && this.ariaLabelCombobox) {\n      warn(\"[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.\");\n    }\n  },\n  methods: {\n    t\n  }\n};\nconst _hoisted_1 = [\"for\"];\nconst _hoisted_2 = [\"required\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n  const _component_NcEllipsisedOption = resolveComponent(\"NcEllipsisedOption\");\n  const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n  const _component_VueSelect = resolveComponent(\"VueSelect\");\n  return openBlock(), createBlock(_component_VueSelect, mergeProps({\n    class: [\"select\", {\n      \"select--legacy\": $setup.isLegacy,\n      \"select--no-wrap\": $props.noWrap\n    }]\n  }, $options.propsToForward, {\n    onSearch: _cache[0] || (_cache[0] = ($event) => $data.search = $event),\n    \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"update:modelValue\", $event))\n  }), createSlots({\n    search: withCtx(({ attributes, events }) => [\n      createElementVNode(\"input\", mergeProps({\n        class: [\"vs__search\", [$props.inputClass]]\n      }, attributes, {\n        required: $options.inputRequired,\n        dir: \"auto\"\n      }, toHandlers(events, true)), null, 16, _hoisted_2)\n    ]),\n    \"open-indicator\": withCtx(({ attributes }) => [\n      createVNode(_component_ChevronDown, mergeProps(attributes, {\n        fillColor: \"var(--vs-controls-color)\",\n        style: {\n          cursor: !$props.disabled ? \"pointer\" : null\n        },\n        size: 26\n      }), null, 16, [\"style\"])\n    ]),\n    option: withCtx((option) => [\n      renderSlot(_ctx.$slots, \"option\", normalizeProps(guardReactiveProps(option)), () => [\n        createVNode(_component_NcEllipsisedOption, {\n          name: String(option[$options.localLabel]),\n          search: $data.search\n        }, null, 8, [\"name\", \"search\"])\n      ])\n    ]),\n    \"selected-option\": withCtx((selectedOption) => [\n      renderSlot(_ctx.$slots, \"selected-option\", normalizeProps(guardReactiveProps(selectedOption)), () => [\n        createVNode(_component_NcEllipsisedOption, {\n          name: String(selectedOption[$options.localLabel]),\n          search: $data.search\n        }, null, 8, [\"name\", \"search\"])\n      ])\n    ]),\n    spinner: withCtx((spinner) => [\n      spinner.loading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : createCommentVNode(\"\", true)\n    ]),\n    \"no-options\": withCtx(() => [\n      createTextVNode(toDisplayString($options.t(\"No results\")), 1)\n    ]),\n    _: 2\n  }, [\n    !$props.labelOutside && $props.inputLabel ? {\n      name: \"header\",\n      fn: withCtx(() => [\n        createElementVNode(\"label\", {\n          for: $props.inputId,\n          class: \"select__label\"\n        }, toDisplayString($props.inputLabel), 9, _hoisted_1)\n      ]),\n      key: \"0\"\n    } : void 0,\n    renderList(_ctx.$slots, (_, name) => {\n      return {\n        name,\n        fn: withCtx((data) => [\n          renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n        ])\n      };\n    })\n  ]), 1040, [\"class\"]);\n}\nconst NcSelect = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n  NcSelect as N\n};\n//# sourceMappingURL=NcSelect-DK4ZWMha.mjs.map\n"],"names":["_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","ChevronDown","_export_sfc","IconClose","hasWindow","getNodeName","node","isNode","getWindow","_node$ownerDocument","getDocumentElement","_ref","value","isElement","isHTMLElement","isShadowRoot","isOverflowElement","element","overflow","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","css","isWebKit","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","result","getNearestOverflowAncestor","parentNode","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","getComputedStyle$1","width","height","hasOffset","offsetWidth","offsetHeight","shouldFallback","round","unwrapElement","getScale","domElement","createCoords","rect","$","x","y","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","offsetParent","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","rectToClientRect","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","elements","strategy","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","max","SCROLLBAR_MAX","getViewportRect","visualViewport","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","clippingStableScrollbarWidth","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","boundary","rootBoundary","clippingAncestors","firstRect","right","bottom","i","min","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","data","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","platform","rectsAreEqual","a","b","observeMove","onMove","io","timeoutId","root","cleanup","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","floor","insetRight","insetBottom","insetLeft","options","isFirstUpdate","handleObserve","entries","ratio","autoUpdate","reference","floating","update","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset","offset$1","shift","shift$1","flip","flip$1","limitShift","limitShift$1","computePosition","mergedOptions","platformWithCache","computePosition$1","appendToBody","instance","scrollX","scrollY","ajax","val","toggle","pointerScroll","open","optionEl","bounds","pointer","typeAheadOption","indexOfLastSelected","sortAndStringify","sortable","ordered","key","idCount","uniqueId","sfc","props","target","_sfc_main$2","_hoisted_1$2","_sfc_render$2","Deselect","_sfc_main$1","_hoisted_1$1","_sfc_render$1","OpenIndicator","childComponents","optionLabel","option","warn","label","search","clearSearchOnSelect","multiple","map","dropdownList","component","noDrop","mutableLoading","listSlot","e","limitOptions","options2","optionList","createdOption","newOptions","oldOptions","shouldReset","isOpen","index2","nextDeselect","prevDeselect","deselectToFocus","event","targetIsNotSearch","ignoredButtons","ref","predicate","matches","match","_option","preventAndSelect","e2","defaults","keyCode","handlers","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_directive_append_to_body","resolveDirective","normalizeClass","renderSlot","normalizeProps","guardReactiveProps","args","Fragment","renderList","createTextVNode","withModifiers","withKeys","createBlock","resolveDynamicComponent","toHandlers","withDirectives","vShow","createVNode","Transition","withCtx","Select","findRanges","text","ranges","currentIndex","index","defineComponent","range","validRanges","mergedRanges","idx","chunks","currentRange","h","chunk","_component_NcHighlight","resolveComponent","NcEllipsisedOption","register","t17","NcLoadingIcon","VueSelect","allProps","mixin","t","createElementId","vm","clickableArea","gridBaseLine","isLegacy","dropdownMenu","addClass","togglePlacementClass","placement","updatePosition","vueSelectKeys","_value","_component_ChevronDown","_component_NcEllipsisedOption","_component_NcLoadingIcon","_component_VueSelect","createSlots","attributes","events","selectedOption","spinner","_","name","NcSelect"],"mappings":"00GAEMA,GAAY,CAChB,KAAM,kBACN,MAAO,CAAC,OAAO,EACf,MAAO,CACL,MAAO,CACL,KAAM,MACZ,EACI,UAAW,CACT,KAAM,OACN,QAAS,cACf,EACI,KAAM,CACJ,KAAM,OACN,QAAS,EACf,CACA,CACA,EACMC,GAAa,CAAC,cAAe,YAAY,EACzCC,GAAa,CAAC,OAAQ,QAAS,QAAQ,EACvCC,GAAa,CAAE,EAAG,4DAA4D,EAC9EC,GAAa,CAAE,IAAK,CAAC,EAC3B,SAASC,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAS,EAAIC,EAAmB,OAAQC,EAAWR,EAAK,OAAQ,CACrE,cAAeE,EAAO,MAAQ,KAAO,OACrC,aAAcA,EAAO,MACrB,MAAO,yCACP,KAAM,MACN,QAASD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKQ,GAAWT,EAAK,MAAM,QAASS,CAAM,EAC7E,CAAG,EAAG,EACDH,EAAS,EAAIC,EAAmB,MAAO,CACtC,KAAML,EAAO,UACb,MAAO,4BACP,MAAOA,EAAO,KACd,OAAQA,EAAO,KACf,QAAS,WACf,EAAO,CACDQ,EAAmB,OAAQb,GAAY,CACrCK,EAAO,OAASI,EAAS,EAAIC,EAAmB,QAAST,GAAYa,EAAgBT,EAAO,KAAK,EAAG,CAAC,GAAKU,EAAmB,GAAI,EAAI,CAC7I,CAAO,CACP,EAAO,EAAGhB,EAAU,EACpB,EAAK,GAAID,EAAU,CACnB,CACK,MAACkB,GAA8BC,GAAYpB,GAAW,CAAC,CAAC,SAAUK,EAAW,CAAC,CAAC,EC1C9EL,GAAY,CAChB,KAAM,YACN,MAAO,CAAC,OAAO,EACf,MAAO,CACL,MAAO,CACL,KAAM,MACZ,EACI,UAAW,CACT,KAAM,OACN,QAAS,cACf,EACI,KAAM,CACJ,KAAM,OACN,QAAS,EACf,CACA,CACA,EACMC,GAAa,CAAC,cAAe,YAAY,EACzCC,GAAa,CAAC,OAAQ,QAAS,QAAQ,EACvCC,GAAa,CAAE,EAAG,+GAA+G,EACjIC,GAAa,CAAE,IAAK,CAAC,EAC3B,SAASC,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAS,EAAIC,EAAmB,OAAQC,EAAWR,EAAK,OAAQ,CACrE,cAAeE,EAAO,MAAQ,KAAO,OACrC,aAAcA,EAAO,MACrB,MAAO,kCACP,KAAM,MACN,QAASD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKQ,GAAWT,EAAK,MAAM,QAASS,CAAM,EAC7E,CAAG,EAAG,EACDH,EAAS,EAAIC,EAAmB,MAAO,CACtC,KAAML,EAAO,UACb,MAAO,4BACP,MAAOA,EAAO,KACd,OAAQA,EAAO,KACf,QAAS,WACf,EAAO,CACDQ,EAAmB,OAAQb,GAAY,CACrCK,EAAO,OAASI,EAAS,EAAIC,EAAmB,QAAST,GAAYa,EAAgBT,EAAO,KAAK,EAAG,CAAC,GAAKU,EAAmB,GAAI,EAAI,CAC7I,CAAO,CACP,EAAO,EAAGhB,EAAU,EACpB,EAAK,GAAID,EAAU,CACnB,CACK,MAACoB,GAA4BD,GAAYpB,GAAW,CAAC,CAAC,SAAUK,EAAW,CAAC,CAAC,EC5ClF,SAASiB,IAAY,CACnB,OAAO,OAAO,OAAW,GAC3B,CACA,SAASC,EAAYC,EAAM,CACzB,OAAIC,GAAOD,CAAI,GACLA,EAAK,UAAY,IAAI,YAAW,EAKnC,WACT,CACA,SAASE,EAAUF,EAAM,CACvB,IAAIG,EACJ,OAAQH,GAAQ,OAASG,EAAsBH,EAAK,gBAAkB,KAAO,OAASG,EAAoB,cAAgB,MAC5H,CACA,SAASC,EAAmBJ,EAAM,CAChC,IAAIK,EACJ,OAAQA,GAAQJ,GAAOD,CAAI,EAAIA,EAAK,cAAgBA,EAAK,WAAa,OAAO,WAAa,KAAO,OAASK,EAAK,eACjH,CACA,SAASJ,GAAOK,EAAO,CACrB,OAAKR,GAAS,EAGPQ,aAAiB,MAAQA,aAAiBJ,EAAUI,CAAK,EAAE,KAFzD,EAGX,CACA,SAASC,EAAUD,EAAO,CACxB,OAAKR,GAAS,EAGPQ,aAAiB,SAAWA,aAAiBJ,EAAUI,CAAK,EAAE,QAF5D,EAGX,CACA,SAASE,EAAcF,EAAO,CAC5B,OAAKR,GAAS,EAGPQ,aAAiB,aAAeA,aAAiBJ,EAAUI,CAAK,EAAE,YAFhE,EAGX,CACA,SAASG,GAAaH,EAAO,CAC3B,MAAI,CAACR,GAAS,GAAM,OAAO,WAAe,IACjC,GAEFQ,aAAiB,YAAcA,aAAiBJ,EAAUI,CAAK,EAAE,UAC1E,CACA,SAASI,EAAkBC,EAAS,CAClC,KAAM,CACJ,SAAAC,EACA,UAAAC,EACA,UAAAC,EACA,QAAAC,CACJ,EAAMC,EAAiBL,CAAO,EAC5B,MAAO,kCAAkC,KAAKC,EAAWE,EAAYD,CAAS,GAAKE,IAAY,UAAYA,IAAY,UACzH,CACA,SAASE,GAAeN,EAAS,CAC/B,MAAO,kBAAkB,KAAKZ,EAAYY,CAAO,CAAC,CACpD,CACA,SAASO,GAAWP,EAAS,CAC3B,GAAI,CACF,GAAIA,EAAQ,QAAQ,eAAe,EACjC,MAAO,EAEX,MAAa,CAEb,CACA,GAAI,CACF,OAAOA,EAAQ,QAAQ,QAAQ,CACjC,MAAa,CACX,MAAO,EACT,CACF,CACA,MAAMQ,GAAe,sDACfC,GAAY,8BACZC,EAAYf,GAAS,CAAC,CAACA,GAASA,IAAU,OAChD,IAAIgB,GACJ,SAASC,GAAkBC,EAAc,CACvC,MAAMC,EAAMlB,EAAUiB,CAAY,EAAIR,EAAiBQ,CAAY,EAAIA,EAIvE,OAAOH,EAAUI,EAAI,SAAS,GAAKJ,EAAUI,EAAI,SAAS,GAAKJ,EAAUI,EAAI,KAAK,GAAKJ,EAAUI,EAAI,MAAM,GAAKJ,EAAUI,EAAI,WAAW,GAAK,CAACC,GAAQ,IAAOL,EAAUI,EAAI,cAAc,GAAKJ,EAAUI,EAAI,MAAM,IAAMN,GAAa,KAAKM,EAAI,YAAc,EAAE,GAAKL,GAAU,KAAKK,EAAI,SAAW,EAAE,CACtS,CACA,SAASE,GAAmBhB,EAAS,CACnC,IAAIiB,EAAcC,EAAclB,CAAO,EACvC,KAAOH,EAAcoB,CAAW,GAAK,CAACE,EAAsBF,CAAW,GAAG,CACxE,GAAIL,GAAkBK,CAAW,EAC/B,OAAOA,EACF,GAAIV,GAAWU,CAAW,EAC/B,OAAO,KAETA,EAAcC,EAAcD,CAAW,CACzC,CACA,OAAO,IACT,CACA,SAASF,IAAW,CAClB,OAAIJ,IAAiB,OACnBA,GAAgB,OAAO,IAAQ,KAAe,IAAI,UAAY,IAAI,SAAS,0BAA2B,MAAM,GAEvGA,EACT,CACA,SAASQ,EAAsB9B,EAAM,CACnC,MAAO,0BAA0B,KAAKD,EAAYC,CAAI,CAAC,CACzD,CACA,SAASgB,EAAiBL,EAAS,CACjC,OAAOT,EAAUS,CAAO,EAAE,iBAAiBA,CAAO,CACpD,CACA,SAASoB,GAAcpB,EAAS,CAC9B,OAAIJ,EAAUI,CAAO,EACZ,CACL,WAAYA,EAAQ,WACpB,UAAWA,EAAQ,SACzB,EAES,CACL,WAAYA,EAAQ,QACpB,UAAWA,EAAQ,OACvB,CACA,CACA,SAASkB,EAAc7B,EAAM,CAC3B,GAAID,EAAYC,CAAI,IAAM,OACxB,OAAOA,EAET,MAAMgC,EAENhC,EAAK,cAELA,EAAK,YAELS,GAAaT,CAAI,GAAKA,EAAK,MAE3BI,EAAmBJ,CAAI,EACvB,OAAOS,GAAauB,CAAM,EAAIA,EAAO,KAAOA,CAC9C,CACA,SAASC,GAA2BjC,EAAM,CACxC,MAAMkC,EAAaL,EAAc7B,CAAI,EACrC,OAAI8B,EAAsBI,CAAU,EAC3BlC,EAAK,cAAgBA,EAAK,cAAc,KAAOA,EAAK,KAEzDQ,EAAc0B,CAAU,GAAKxB,EAAkBwB,CAAU,EACpDA,EAEFD,GAA2BC,CAAU,CAC9C,CACA,SAASC,EAAqBnC,EAAMoC,EAAMC,EAAiB,CACzD,IAAIC,EACAF,IAAS,SACXA,EAAO,CAAA,GAELC,IAAoB,SACtBA,EAAkB,IAEpB,MAAME,EAAqBN,GAA2BjC,CAAI,EACpDwC,EAASD,MAAyBD,EAAuBtC,EAAK,gBAAkB,KAAO,OAASsC,EAAqB,MACrHG,EAAMvC,EAAUqC,CAAkB,EACxC,GAAIC,EAAQ,CACV,MAAME,EAAeC,GAAgBF,CAAG,EACxC,OAAOL,EAAK,OAAOK,EAAKA,EAAI,gBAAkB,CAAA,EAAI/B,EAAkB6B,CAAkB,EAAIA,EAAqB,CAAA,EAAIG,GAAgBL,EAAkBF,EAAqBO,CAAY,EAAI,EAAE,CAC9L,KACE,QAAON,EAAK,OAAOG,EAAoBJ,EAAqBI,EAAoB,CAAA,EAAIF,CAAe,CAAC,CAExG,CACA,SAASM,GAAgBF,EAAK,CAC5B,OAAOA,EAAI,QAAU,OAAO,eAAeA,EAAI,MAAM,EAAIA,EAAI,aAAe,IAC9E,CC7JA,SAASG,GAAiBjC,EAAS,CACjC,MAAMc,EAAMoB,EAAmBlC,CAAO,EAGtC,IAAImC,EAAQ,WAAWrB,EAAI,KAAK,GAAK,EACjCsB,EAAS,WAAWtB,EAAI,MAAM,GAAK,EACvC,MAAMuB,EAAYxC,EAAcG,CAAO,EACjCsC,EAAcD,EAAYrC,EAAQ,YAAcmC,EAChDI,EAAeF,EAAYrC,EAAQ,aAAeoC,EAClDI,EAAiBC,GAAMN,CAAK,IAAMG,GAAeG,GAAML,CAAM,IAAMG,EACzE,OAAIC,IACFL,EAAQG,EACRF,EAASG,GAEJ,CACL,MAAAJ,EACA,OAAAC,EACA,EAAGI,CACP,CACA,CAEA,SAASE,GAAc1C,EAAS,CAC9B,OAAQJ,EAAUI,CAAO,EAA6BA,EAAzBA,EAAQ,cACvC,CAEA,SAAS2C,EAAS3C,EAAS,CACzB,MAAM4C,EAAaF,GAAc1C,CAAO,EACxC,GAAI,CAACH,EAAc+C,CAAU,EAC3B,OAAOC,EAAa,CAAC,EAEvB,MAAMC,EAAOF,EAAW,sBAAqB,EACvC,CACJ,MAAAT,EACA,OAAAC,EACA,EAAAW,CACJ,EAAMd,GAAiBW,CAAU,EAC/B,IAAII,GAAKD,EAAIN,GAAMK,EAAK,KAAK,EAAIA,EAAK,OAASX,EAC3Cc,GAAKF,EAAIN,GAAMK,EAAK,MAAM,EAAIA,EAAK,QAAUV,EAIjD,OAAI,CAACY,GAAK,CAAC,OAAO,SAASA,CAAC,KAC1BA,EAAI,IAEF,CAACC,GAAK,CAAC,OAAO,SAASA,CAAC,KAC1BA,EAAI,GAEC,CACL,EAAAD,EACA,EAAAC,CACJ,CACA,CAEA,MAAMC,GAAyBL,EAAa,CAAC,EAC7C,SAASM,GAAiBnD,EAAS,CACjC,MAAM8B,EAAMvC,EAAUS,CAAO,EAC7B,MAAI,CAACe,GAAQ,GAAM,CAACe,EAAI,eACfoB,GAEF,CACL,EAAGpB,EAAI,eAAe,WACtB,EAAGA,EAAI,eAAe,SAC1B,CACA,CACA,SAASsB,GAAuBpD,EAASqD,EAASC,EAAsB,CAItE,OAHID,IAAY,SACdA,EAAU,IAER,CAACC,GAAwBD,GAAWC,IAAyB/D,EAAUS,CAAO,EACzE,GAEFqD,CACT,CAEA,SAASE,EAAsBvD,EAASwD,EAAcC,EAAiBC,EAAc,CAC/EF,IAAiB,SACnBA,EAAe,IAEbC,IAAoB,SACtBA,EAAkB,IAEpB,MAAME,EAAa3D,EAAQ,sBAAqB,EAC1C4C,EAAaF,GAAc1C,CAAO,EACxC,IAAI4D,EAAQf,EAAa,CAAC,EACtBW,IACEE,EACE9D,EAAU8D,CAAY,IACxBE,EAAQjB,EAASe,CAAY,GAG/BE,EAAQjB,EAAS3C,CAAO,GAG5B,MAAM6D,EAAgBT,GAAuBR,EAAYa,EAAiBC,CAAY,EAAIP,GAAiBP,CAAU,EAAIC,EAAa,CAAC,EACvI,IAAIG,GAAKW,EAAW,KAAOE,EAAc,GAAKD,EAAM,EAChDX,GAAKU,EAAW,IAAME,EAAc,GAAKD,EAAM,EAC/CzB,EAAQwB,EAAW,MAAQC,EAAM,EACjCxB,EAASuB,EAAW,OAASC,EAAM,EACvC,GAAIhB,EAAY,CACd,MAAMd,EAAMvC,EAAUqD,CAAU,EAC1BkB,EAAYJ,GAAgB9D,EAAU8D,CAAY,EAAInE,EAAUmE,CAAY,EAAIA,EACtF,IAAIK,EAAajC,EACbkC,EAAgBhC,GAAgB+B,CAAU,EAC9C,KAAOC,GAAiBN,GAAgBI,IAAcC,GAAY,CAChE,MAAME,EAActB,EAASqB,CAAa,EACpCE,EAAaF,EAAc,sBAAqB,EAChDlD,EAAMoB,EAAmB8B,CAAa,EACtCG,EAAOD,EAAW,MAAQF,EAAc,WAAa,WAAWlD,EAAI,WAAW,GAAKmD,EAAY,EAChGG,EAAMF,EAAW,KAAOF,EAAc,UAAY,WAAWlD,EAAI,UAAU,GAAKmD,EAAY,EAClGjB,GAAKiB,EAAY,EACjBhB,GAAKgB,EAAY,EACjB9B,GAAS8B,EAAY,EACrB7B,GAAU6B,EAAY,EACtBjB,GAAKmB,EACLlB,GAAKmB,EACLL,EAAaxE,EAAUyE,CAAa,EACpCA,EAAgBhC,GAAgB+B,CAAU,CAC5C,CACF,CACA,OAAOM,GAAiB,CACtB,MAAAlC,EACA,OAAAC,EACA,EAAAY,EACA,EAAAC,CACJ,CAAG,CACH,CAIA,SAASqB,GAAoBtE,EAAS8C,EAAM,CAC1C,MAAMyB,EAAanD,GAAcpB,CAAO,EAAE,WAC1C,OAAK8C,EAGEA,EAAK,KAAOyB,EAFVhB,EAAsB9D,EAAmBO,CAAO,CAAC,EAAE,KAAOuE,CAGrE,CAEA,SAASC,GAAcC,EAAiBC,EAAQ,CAC9C,MAAMC,EAAWF,EAAgB,sBAAqB,EAChDzB,EAAI2B,EAAS,KAAOD,EAAO,WAAaJ,GAAoBG,EAAiBE,CAAQ,EACrF1B,EAAI0B,EAAS,IAAMD,EAAO,UAChC,MAAO,CACL,EAAA1B,EACA,EAAAC,CACJ,CACA,CAEA,SAAS2B,GAAsDlF,EAAM,CACnE,GAAI,CACF,SAAAmF,EACA,KAAA/B,EACA,aAAAY,EACA,SAAAoB,CACJ,EAAMpF,EACJ,MAAM2D,EAAUyB,IAAa,QACvBL,EAAkBhF,EAAmBiE,CAAY,EACjDqB,EAAWF,EAAWtE,GAAWsE,EAAS,QAAQ,EAAI,GAC5D,GAAInB,IAAiBe,GAAmBM,GAAY1B,EAClD,OAAOP,EAET,IAAI4B,EAAS,CACX,WAAY,EACZ,UAAW,CACf,EACMd,EAAQf,EAAa,CAAC,EAC1B,MAAMmC,EAAUnC,EAAa,CAAC,EACxBoC,EAA0BpF,EAAc6D,CAAY,EAC1D,IAAIuB,GAA2B,CAACA,GAA2B,CAAC5B,MACtDjE,EAAYsE,CAAY,IAAM,QAAU3D,EAAkB0E,CAAe,KAC3EC,EAAStD,GAAcsC,CAAY,GAEjCuB,GAAyB,CAC3B,MAAMC,EAAa3B,EAAsBG,CAAY,EACrDE,EAAQjB,EAASe,CAAY,EAC7BsB,EAAQ,EAAIE,EAAW,EAAIxB,EAAa,WACxCsB,EAAQ,EAAIE,EAAW,EAAIxB,EAAa,SAC1C,CAEF,MAAMyB,EAAaV,GAAmB,CAACQ,GAA2B,CAAC5B,EAAUmB,GAAcC,EAAiBC,CAAM,EAAI7B,EAAa,CAAC,EACpI,MAAO,CACL,MAAOC,EAAK,MAAQc,EAAM,EAC1B,OAAQd,EAAK,OAASc,EAAM,EAC5B,EAAGd,EAAK,EAAIc,EAAM,EAAIc,EAAO,WAAad,EAAM,EAAIoB,EAAQ,EAAIG,EAAW,EAC3E,EAAGrC,EAAK,EAAIc,EAAM,EAAIc,EAAO,UAAYd,EAAM,EAAIoB,EAAQ,EAAIG,EAAW,CAC9E,CACA,CAEA,SAASC,GAAepF,EAAS,CAC/B,OAAO,MAAM,KAAKA,EAAQ,eAAc,CAAE,CAC5C,CAIA,SAASqF,GAAgBrF,EAAS,CAChC,MAAMsF,EAAO7F,EAAmBO,CAAO,EACjC0E,EAAStD,GAAcpB,CAAO,EAC9BuF,EAAOvF,EAAQ,cAAc,KAC7BmC,EAAQqD,EAAIF,EAAK,YAAaA,EAAK,YAAaC,EAAK,YAAaA,EAAK,WAAW,EAClFnD,EAASoD,EAAIF,EAAK,aAAcA,EAAK,aAAcC,EAAK,aAAcA,EAAK,YAAY,EAC7F,IAAIvC,EAAI,CAAC0B,EAAO,WAAaJ,GAAoBtE,CAAO,EACxD,MAAMiD,EAAI,CAACyB,EAAO,UAClB,OAAIxC,EAAmBqD,CAAI,EAAE,YAAc,QACzCvC,GAAKwC,EAAIF,EAAK,YAAaC,EAAK,WAAW,EAAIpD,GAE1C,CACL,MAAAA,EACA,OAAAC,EACA,EAAAY,EACA,EAAAC,CACJ,CACA,CAKA,MAAMwC,GAAgB,GACtB,SAASC,GAAgB1F,EAAS8E,EAAU,CAC1C,MAAMhD,EAAMvC,EAAUS,CAAO,EACvBsF,EAAO7F,EAAmBO,CAAO,EACjC2F,EAAiB7D,EAAI,eAC3B,IAAIK,EAAQmD,EAAK,YACblD,EAASkD,EAAK,aACdtC,EAAI,EACJC,EAAI,EACR,GAAI0C,EAAgB,CAClBxD,EAAQwD,EAAe,MACvBvD,EAASuD,EAAe,OACxB,MAAMC,EAAsB7E,GAAQ,GAChC,CAAC6E,GAAuBA,GAAuBd,IAAa,WAC9D9B,EAAI2C,EAAe,WACnB1C,EAAI0C,EAAe,UAEvB,CACA,MAAME,EAAmBvB,GAAoBgB,CAAI,EAIjD,GAAIO,GAAoB,EAAG,CACzB,MAAMC,EAAMR,EAAK,cACXC,EAAOO,EAAI,KACXC,EAAa,iBAAiBR,CAAI,EAClCS,EAAmBF,EAAI,aAAe,cAAe,WAAWC,EAAW,UAAU,EAAI,WAAWA,EAAW,WAAW,GAAK,EAC/HE,EAA+B,KAAK,IAAIX,EAAK,YAAcC,EAAK,YAAcS,CAAgB,EAChGC,GAAgCR,KAClCtD,GAAS8D,EAEb,MAAWJ,GAAoBJ,KAG7BtD,GAAS0D,GAEX,MAAO,CACL,MAAA1D,EACA,OAAAC,EACA,EAAAY,EACA,EAAAC,CACJ,CACA,CAGA,SAASiD,GAA2BlG,EAAS8E,EAAU,CACrD,MAAMnB,EAAaJ,EAAsBvD,EAAS,GAAM8E,IAAa,OAAO,EACtEV,EAAMT,EAAW,IAAM3D,EAAQ,UAC/BmE,EAAOR,EAAW,KAAO3D,EAAQ,WACjC4D,EAAQ/D,EAAcG,CAAO,EAAI2C,EAAS3C,CAAO,EAAI6C,EAAa,CAAC,EACnEV,EAAQnC,EAAQ,YAAc4D,EAAM,EACpCxB,EAASpC,EAAQ,aAAe4D,EAAM,EACtCZ,EAAImB,EAAOP,EAAM,EACjBX,EAAImB,EAAMR,EAAM,EACtB,MAAO,CACL,MAAAzB,EACA,OAAAC,EACA,EAAAY,EACA,EAAAC,CACJ,CACA,CACA,SAASkD,GAAkCnG,EAASoG,EAAkBtB,EAAU,CAC9E,IAAIhC,EACJ,GAAIsD,IAAqB,WACvBtD,EAAO4C,GAAgB1F,EAAS8E,CAAQ,UAC/BsB,IAAqB,WAC9BtD,EAAOuC,GAAgB5F,EAAmBO,CAAO,CAAC,UACzCJ,EAAUwG,CAAgB,EACnCtD,EAAOoD,GAA2BE,EAAkBtB,CAAQ,MACvD,CACL,MAAMjB,EAAgBV,GAAiBnD,CAAO,EAC9C8C,EAAO,CACL,EAAGsD,EAAiB,EAAIvC,EAAc,EACtC,EAAGuC,EAAiB,EAAIvC,EAAc,EACtC,MAAOuC,EAAiB,MACxB,OAAQA,EAAiB,MAC/B,CACE,CACA,OAAO/B,GAAiBvB,CAAI,CAC9B,CACA,SAASuD,GAAyBrG,EAASsG,EAAU,CACnD,MAAM/E,EAAaL,EAAclB,CAAO,EACxC,OAAIuB,IAAe+E,GAAY,CAAC1G,EAAU2B,CAAU,GAAKJ,EAAsBI,CAAU,EAChF,GAEFW,EAAmBX,CAAU,EAAE,WAAa,SAAW8E,GAAyB9E,EAAY+E,CAAQ,CAC7G,CAKA,SAASC,GAA4BvG,EAASwG,EAAO,CACnD,MAAMC,EAAeD,EAAM,IAAIxG,CAAO,EACtC,GAAIyG,EACF,OAAOA,EAET,IAAIpF,EAASG,EAAqBxB,EAAS,CAAA,EAAI,EAAK,EAAE,OAAO0G,GAAM9G,EAAU8G,CAAE,GAAKtH,EAAYsH,CAAE,IAAM,MAAM,EAC1GC,EAAsC,KAC1C,MAAMC,EAAiB1E,EAAmBlC,CAAO,EAAE,WAAa,QAChE,IAAIiB,EAAc2F,EAAiB1F,EAAclB,CAAO,EAAIA,EAG5D,KAAOJ,EAAUqB,CAAW,GAAK,CAACE,EAAsBF,CAAW,GAAG,CACpE,MAAM4F,EAAgB3E,EAAmBjB,CAAW,EAC9C6F,EAA0BlG,GAAkBK,CAAW,EACzD,CAAC6F,GAA2BD,EAAc,WAAa,UACzDF,EAAsC,OAEVC,EAAiB,CAACE,GAA2B,CAACH,EAAsC,CAACG,GAA2BD,EAAc,WAAa,UAAcF,IAAwCA,EAAoC,WAAa,YAAcA,EAAoC,WAAa,UAAY5G,EAAkBkB,CAAW,GAAK,CAAC6F,GAA2BT,GAAyBrG,EAASiB,CAAW,GAGpcI,EAASA,EAAO,OAAO0F,GAAYA,IAAa9F,CAAW,EAG3D0F,EAAsCE,EAExC5F,EAAcC,EAAcD,CAAW,CACzC,CACA,OAAAuF,EAAM,IAAIxG,EAASqB,CAAM,EAClBA,CACT,CAIA,SAAS2F,GAAgBtH,EAAM,CAC7B,GAAI,CACF,QAAAM,EACA,SAAAiH,EACA,aAAAC,EACA,SAAApC,CACJ,EAAMpF,EAEJ,MAAMyH,EAAoB,CAAC,GADMF,IAAa,oBAAsB1G,GAAWP,CAAO,EAAI,CAAA,EAAKuG,GAA4BvG,EAAS,KAAK,EAAE,EAAI,CAAA,EAAG,OAAOiH,CAAQ,EACzGC,CAAY,EAC9DE,EAAYjB,GAAkCnG,EAASmH,EAAkB,CAAC,EAAGrC,CAAQ,EAC3F,IAAIV,EAAMgD,EAAU,IAChBC,EAAQD,EAAU,MAClBE,EAASF,EAAU,OACnBjD,EAAOiD,EAAU,KACrB,QAASG,EAAI,EAAGA,EAAIJ,EAAkB,OAAQI,IAAK,CACjD,MAAMzE,EAAOqD,GAAkCnG,EAASmH,EAAkBI,CAAC,EAAGzC,CAAQ,EACtFV,EAAMoB,EAAI1C,EAAK,IAAKsB,CAAG,EACvBiD,EAAQG,GAAI1E,EAAK,MAAOuE,CAAK,EAC7BC,EAASE,GAAI1E,EAAK,OAAQwE,CAAM,EAChCnD,EAAOqB,EAAI1C,EAAK,KAAMqB,CAAI,CAC5B,CACA,MAAO,CACL,MAAOkD,EAAQlD,EACf,OAAQmD,EAASlD,EACjB,EAAGD,EACH,EAAGC,CACP,CACA,CAEA,SAASqD,GAAczH,EAAS,CAC9B,KAAM,CACJ,MAAAmC,EACA,OAAAC,CACJ,EAAMH,GAAiBjC,CAAO,EAC5B,MAAO,CACL,MAAAmC,EACA,OAAAC,CACJ,CACA,CAEA,SAASsF,GAA8B1H,EAAS0D,EAAcoB,EAAU,CACtE,MAAMG,EAA0BpF,EAAc6D,CAAY,EACpDe,EAAkBhF,EAAmBiE,CAAY,EACjDL,EAAUyB,IAAa,QACvBhC,EAAOS,EAAsBvD,EAAS,GAAMqD,EAASK,CAAY,EACvE,IAAIgB,EAAS,CACX,WAAY,EACZ,UAAW,CACf,EACE,MAAMM,EAAUnC,EAAa,CAAC,EAI9B,SAAS8E,GAA4B,CACnC3C,EAAQ,EAAIV,GAAoBG,CAAe,CACjD,CACA,GAAIQ,GAA2B,CAACA,GAA2B,CAAC5B,EAI1D,IAHIjE,EAAYsE,CAAY,IAAM,QAAU3D,EAAkB0E,CAAe,KAC3EC,EAAStD,GAAcsC,CAAY,GAEjCuB,EAAyB,CAC3B,MAAMC,EAAa3B,EAAsBG,EAAc,GAAML,EAASK,CAAY,EAClFsB,EAAQ,EAAIE,EAAW,EAAIxB,EAAa,WACxCsB,EAAQ,EAAIE,EAAW,EAAIxB,EAAa,SAC1C,MAAWe,GACTkD,EAAyB,EAGzBtE,GAAW,CAAC4B,GAA2BR,GACzCkD,EAAyB,EAE3B,MAAMxC,EAAaV,GAAmB,CAACQ,GAA2B,CAAC5B,EAAUmB,GAAcC,EAAiBC,CAAM,EAAI7B,EAAa,CAAC,EAC9HG,EAAIF,EAAK,KAAO4B,EAAO,WAAaM,EAAQ,EAAIG,EAAW,EAC3DlC,EAAIH,EAAK,IAAM4B,EAAO,UAAYM,EAAQ,EAAIG,EAAW,EAC/D,MAAO,CACL,EAAAnC,EACA,EAAAC,EACA,MAAOH,EAAK,MACZ,OAAQA,EAAK,MACjB,CACA,CAEA,SAAS8E,GAAmB5H,EAAS,CACnC,OAAOkC,EAAmBlC,CAAO,EAAE,WAAa,QAClD,CAEA,SAAS6H,GAAoB7H,EAAS8H,EAAU,CAC9C,GAAI,CAACjI,EAAcG,CAAO,GAAKkC,EAAmBlC,CAAO,EAAE,WAAa,QACtE,OAAO,KAET,GAAI8H,EACF,OAAOA,EAAS9H,CAAO,EAEzB,IAAI+H,EAAkB/H,EAAQ,aAM9B,OAAIP,EAAmBO,CAAO,IAAM+H,IAClCA,EAAkBA,EAAgB,cAAc,MAE3CA,CACT,CAIA,SAASC,GAAgBhI,EAAS8H,EAAU,CAC1C,MAAMhG,EAAMvC,EAAUS,CAAO,EAC7B,GAAIO,GAAWP,CAAO,EACpB,OAAO8B,EAET,GAAI,CAACjC,EAAcG,CAAO,EAAG,CAC3B,IAAIiI,EAAkB/G,EAAclB,CAAO,EAC3C,KAAOiI,GAAmB,CAAC9G,EAAsB8G,CAAe,GAAG,CACjE,GAAIrI,EAAUqI,CAAe,GAAK,CAACL,GAAmBK,CAAe,EACnE,OAAOA,EAETA,EAAkB/G,EAAc+G,CAAe,CACjD,CACA,OAAOnG,CACT,CACA,IAAI4B,EAAemE,GAAoB7H,EAAS8H,CAAQ,EACxD,KAAOpE,GAAgBpD,GAAeoD,CAAY,GAAKkE,GAAmBlE,CAAY,GACpFA,EAAemE,GAAoBnE,EAAcoE,CAAQ,EAE3D,OAAIpE,GAAgBvC,EAAsBuC,CAAY,GAAKkE,GAAmBlE,CAAY,GAAK,CAAC9C,GAAkB8C,CAAY,EACrH5B,EAEF4B,GAAgB1C,GAAmBhB,CAAO,GAAK8B,CACxD,CAEA,MAAMoG,GAAkB,eAAgBC,EAAM,CAC5C,MAAMC,EAAoB,KAAK,iBAAmBJ,GAC5CK,EAAkB,KAAK,cACvBC,EAAqB,MAAMD,EAAgBF,EAAK,QAAQ,EAC9D,MAAO,CACL,UAAWT,GAA8BS,EAAK,UAAW,MAAMC,EAAkBD,EAAK,QAAQ,EAAGA,EAAK,QAAQ,EAC9G,SAAU,CACR,EAAG,EACH,EAAG,EACH,MAAOG,EAAmB,MAC1B,OAAQA,EAAmB,MACjC,CACA,CACA,EAEA,SAASC,GAAMvI,EAAS,CACtB,OAAOkC,EAAmBlC,CAAO,EAAE,YAAc,KACnD,CAEA,MAAMwI,GAAW,CACf,sDAAA5D,GACA,mBAAAnF,EACA,gBAAAuH,GACA,gBAAAgB,GACA,gBAAAE,GACA,eAAA9C,GACA,cAAAqC,GACA,SAAA9E,EACA,UAAA/C,EACA,MAAA2I,EACF,EAEA,SAASE,GAAcC,EAAGC,EAAG,CAC3B,OAAOD,EAAE,IAAMC,EAAE,GAAKD,EAAE,IAAMC,EAAE,GAAKD,EAAE,QAAUC,EAAE,OAASD,EAAE,SAAWC,EAAE,MAC7E,CAGA,SAASC,GAAY5I,EAAS6I,EAAQ,CACpC,IAAIC,EAAK,KACLC,EACJ,MAAMC,EAAOvJ,EAAmBO,CAAO,EACvC,SAASiJ,GAAU,CACjB,IAAIC,EACJ,aAAaH,CAAS,GACrBG,EAAMJ,IAAO,MAAQI,EAAI,WAAU,EACpCJ,EAAK,IACP,CACA,SAASK,EAAQC,EAAMC,EAAW,CAC5BD,IAAS,SACXA,EAAO,IAELC,IAAc,SAChBA,EAAY,GAEdJ,EAAO,EACP,MAAMK,EAA2BtJ,EAAQ,sBAAqB,EACxD,CACJ,KAAAmE,EACA,IAAAC,EACA,MAAAjC,EACA,OAAAC,CACN,EAAQkH,EAIJ,GAHKF,GACHP,EAAM,EAEJ,CAAC1G,GAAS,CAACC,EACb,OAEF,MAAMmH,EAAWC,EAAMpF,CAAG,EACpBqF,EAAaD,EAAMR,EAAK,aAAe7E,EAAOhC,EAAM,EACpDuH,EAAcF,EAAMR,EAAK,cAAgB5E,EAAMhC,EAAO,EACtDuH,EAAYH,EAAMrF,CAAI,EAEtByF,EAAU,CACd,WAFiB,CAACL,EAAW,MAAQ,CAACE,EAAa,MAAQ,CAACC,EAAc,MAAQ,CAACC,EAAY,KAG/F,UAAWnE,EAAI,EAAGgC,GAAI,EAAG6B,CAAS,CAAC,GAAK,CAC9C,EACI,IAAIQ,EAAgB,GACpB,SAASC,EAAcC,GAAS,CAC9B,MAAMC,EAAQD,GAAQ,CAAC,EAAE,kBACzB,GAAIC,IAAUX,EAAW,CACvB,GAAI,CAACQ,EACH,OAAOV,EAAO,EAEXa,EAOHb,EAAQ,GAAOa,CAAK,EAJpBjB,EAAY,WAAW,IAAM,CAC3BI,EAAQ,GAAO,IAAI,CACrB,EAAG,GAAI,CAIX,CACIa,IAAU,GAAK,CAACvB,GAAca,EAA0BtJ,EAAQ,sBAAqB,CAAE,GAQzFmJ,EAAO,EAETU,EAAgB,EAClB,CAIA,GAAI,CACFf,EAAK,IAAI,qBAAqBgB,EAAe,CAC3C,GAAGF,EAEH,KAAMZ,EAAK,aACnB,CAAO,CACH,MAAa,CACXF,EAAK,IAAI,qBAAqBgB,EAAeF,CAAO,CACtD,CACAd,EAAG,QAAQ9I,CAAO,CACpB,CACA,OAAAmJ,EAAQ,EAAI,EACLF,CACT,CAUA,SAASgB,GAAWC,EAAWC,EAAUC,EAAQR,EAAS,CACpDA,IAAY,SACdA,EAAU,CAAA,GAEZ,KAAM,CACJ,eAAAS,EAAiB,GACjB,eAAAC,EAAiB,GACjB,cAAAC,EAAgB,OAAO,gBAAmB,WAC1C,YAAAC,EAAc,OAAO,sBAAyB,WAC9C,eAAAC,EAAiB,EACrB,EAAMb,EACEc,EAAchI,GAAcwH,CAAS,EACrCS,EAAYN,GAAkBC,EAAiB,CAAC,GAAII,EAAclJ,EAAqBkJ,CAAW,EAAI,CAAA,EAAK,GAAIP,EAAW3I,EAAqB2I,CAAQ,EAAI,CAAA,CAAG,EAAI,CAAA,EACxKQ,EAAU,QAAQ5D,GAAY,CAC5BsD,GAAkBtD,EAAS,iBAAiB,SAAUqD,EAAQ,CAC5D,QAAS,EACf,CAAK,EACDE,GAAkBvD,EAAS,iBAAiB,SAAUqD,CAAM,CAC9D,CAAC,EACD,MAAMQ,EAAYF,GAAeF,EAAc5B,GAAY8B,EAAaN,CAAM,EAAI,KAClF,IAAIS,EAAiB,GACjBC,EAAiB,KACjBP,IACFO,EAAiB,IAAI,eAAepL,GAAQ,CAC1C,GAAI,CAACqL,CAAU,EAAIrL,EACfqL,GAAcA,EAAW,SAAWL,GAAeI,GAAkBX,IAGvEW,EAAe,UAAUX,CAAQ,EACjC,qBAAqBU,CAAc,EACnCA,EAAiB,sBAAsB,IAAM,CAC3C,IAAIG,GACHA,EAAkBF,IAAmB,MAAQE,EAAgB,QAAQb,CAAQ,CAChF,CAAC,GAEHC,EAAM,CACR,CAAC,EACGM,GAAe,CAACD,GAClBK,EAAe,QAAQJ,CAAW,EAEhCP,GACFW,EAAe,QAAQX,CAAQ,GAGnC,IAAIc,EACAC,EAAcT,EAAiBlH,EAAsB2G,CAAS,EAAI,KAClEO,GACFU,EAAS,EAEX,SAASA,GAAY,CACnB,MAAMC,EAAc7H,EAAsB2G,CAAS,EAC/CgB,GAAe,CAACzC,GAAcyC,EAAaE,CAAW,GACxDhB,EAAM,EAERc,EAAcE,EACdH,EAAU,sBAAsBE,CAAS,CAC3C,CACA,OAAAf,EAAM,EACC,IAAM,CACX,IAAIiB,EACJV,EAAU,QAAQ5D,GAAY,CAC5BsD,GAAkBtD,EAAS,oBAAoB,SAAUqD,CAAM,EAC/DE,GAAkBvD,EAAS,oBAAoB,SAAUqD,CAAM,CACjE,CAAC,EACoBQ,IAAS,GAC7BS,EAAmBP,IAAmB,MAAQO,EAAiB,WAAU,EAC1EP,EAAiB,KACbL,GACF,qBAAqBQ,CAAO,CAEhC,CACF,CAmBA,MAAMK,GAASC,GAeTC,GAAQC,GAQRC,GAAOC,GAkCPC,GAAaC,GAMbC,GAAkB,CAAC5B,EAAWC,EAAUP,IAAY,CAIxD,MAAMpD,EAAQ,IAAI,IACZuF,EAAgB,CACpB,SAAAvD,GACA,GAAGoB,CACP,EACQoC,EAAoB,CACxB,GAAGD,EAAc,SACjB,GAAIvF,CACR,EACE,OAAOyF,GAAkB/B,EAAWC,EAAU,CAC5C,GAAG4B,EACH,SAAUC,CACd,CAAG,CACH,ECxwBME,GAAe,CACnB,QAAQxF,EAAI,CAAE,SAAAyF,GAAY,CACxB,GAAIA,EAAS,aAAc,CACzB,SAAS,KAAK,YAAYzF,CAAE,EAC5B,KAAM,CAAE,OAAAtE,EAAQ,IAAAgC,EAAK,KAAAD,EAAM,MAAAhC,CAAK,EAAKgK,EAAS,MAAM,OAAO,sBAAqB,EAC1EC,EAAU,OAAO,SAAW,OAAO,YACnCC,EAAU,OAAO,SAAW,OAAO,YACzC3F,EAAG,eAAiByF,EAAS,kBAAkBzF,EAAIyF,EAAU,CAC3D,MAAOhK,EAAQ,KACf,KAAMiK,EAAUjI,EAAO,KACvB,IAAKkI,EAAUjI,EAAMhC,EAAS,IACtC,CAAO,CACH,CACF,EACA,UAAUsE,EAAI,CAAE,SAAAyF,GAAY,CACtBA,EAAS,eACPzF,EAAG,gBAAkB,OAAOA,EAAG,gBAAmB,YACpDA,EAAG,eAAc,EAEfA,EAAG,YACLA,EAAG,WAAW,YAAYA,CAAE,EAGlC,CACF,EACM4F,GAAO,CACX,MAAO,CAML,QAAS,CACP,KAAM,QACN,QAAS,EACf,CACA,EACE,MAAO,CACL,MAAO,CACL,eAAgB,EACtB,CACE,EACA,MAAO,CAUL,QAAS,CACP,KAAK,MAAM,SAAU,KAAK,OAAQ,KAAK,aAAa,CACtD,EAOA,QAAQC,EAAK,CACX,KAAK,eAAiBA,CACxB,CACJ,EACE,QAAS,CASP,cAAcC,EAAS,KAAM,CAC3B,OAAIA,GAAW,KACN,KAAK,eAAiB,CAAC,KAAK,eAE9B,KAAK,eAAiBA,CAC/B,CACJ,CACA,EACMC,GAAgB,CACpB,MAAO,CACL,WAAY,CACV,KAAM,QACN,QAAS,EACf,CACA,EACE,MAAO,CACL,kBAAmB,CACb,KAAK,YACP,KAAK,kBAAiB,CAE1B,EACA,KAAKC,EAAM,CACL,KAAK,YAAcA,GACrB,KAAK,UAAU,IAAM,KAAK,kBAAiB,CAAE,CAEjD,CACJ,EACE,QAAS,CAQP,mBAAoB,CAClB,MAAMC,EAAW,KAAK,MAAM,cAAc,SAAS,KAAK,gBAAgB,GAAK,GAC7E,GAAIA,EAAU,CACZ,MAAMC,EAAS,KAAK,oBAAmB,EACjC,CAAE,IAAAxI,EAAK,OAAAkD,EAAQ,OAAAlF,CAAM,EAAKuK,EAAS,sBAAqB,EAC9D,GAAIvI,EAAMwI,EAAO,IACf,OAAO,KAAK,MAAM,aAAa,UAAYD,EAAS,UAC/C,GAAIrF,EAASsF,EAAO,OACzB,OAAO,KAAK,MAAM,aAAa,UAAYD,EAAS,WAAaC,EAAO,OAASxK,EAErF,CACF,EAMA,qBAAsB,CACpB,OAAO,KAAK,MAAM,aAAe,KAAK,MAAM,aAAa,wBAA0B,CACjF,OAAQ,EACR,IAAK,EACL,OAAQ,CAChB,CACI,CACJ,CACA,EACMyK,GAAU,CACd,MAAO,CACL,MAAO,CACL,iBAAkB,EACxB,CACE,EACA,MAAO,CACL,iBAAkB,CAChB,GAAK,KAAK,2BAGV,QAAStF,EAAI,EAAGA,EAAI,KAAK,gBAAgB,OAAQA,IAC/C,GAAI,KAAK,WAAW,KAAK,gBAAgBA,CAAC,CAAC,EAAG,CAC5C,KAAK,iBAAmBA,EACxB,KACF,EAEJ,EACA,KAAKmF,EAAM,CACLA,GACF,KAAK,wBAAuB,CAEhC,EACA,eAAgB,CACV,KAAK,MACP,KAAK,wBAAuB,CAEhC,CACJ,EACE,QAAS,CAOP,aAAc,CACZ,QAASnF,EAAI,KAAK,iBAAmB,EAAGA,GAAK,EAAGA,IAC9C,GAAI,KAAK,WAAW,KAAK,gBAAgBA,CAAC,CAAC,EAAG,CAC5C,KAAK,iBAAmBA,EACxB,KACF,CAEJ,EAOA,eAAgB,CACd,QAASA,EAAI,KAAK,iBAAmB,EAAGA,EAAI,KAAK,gBAAgB,OAAQA,IACvE,GAAI,KAAK,WAAW,KAAK,gBAAgBA,CAAC,CAAC,EAAG,CAC5C,KAAK,iBAAmBA,EACxB,KACF,CAEJ,EAOA,iBAAkB,CAChB,MAAMuF,EAAkB,KAAK,gBAAgB,KAAK,gBAAgB,EAC9DA,GAAmB,KAAK,WAAWA,CAAe,GACpD,KAAK,OAAOA,CAAe,CAE/B,EAIA,yBAA0B,CACxB,MAAMC,EAAsB,KAAK,cAAc,SAAW,EAAI,KAAK,gBAAgB,QAAQ,KAAK,cAAc,KAAK,cAAc,OAAS,CAAC,CAAC,EAAI,GAC5IA,IAAwB,KAC1B,KAAK,iBAAmBA,EAE5B,CACJ,CACA,EACA,SAASC,GAAiBC,EAAU,CAClC,MAAMC,EAAU,CAAA,EAChB,OAAA,OAAO,KAAKD,CAAQ,EAAE,KAAI,EAAG,QAASE,GAAQ,CAC5CD,EAAQC,CAAG,EAAIF,EAASE,CAAG,CAC7B,CAAC,EACM,KAAK,UAAUD,CAAO,CAC/B,CACA,IAAIE,GAAU,EACd,SAASC,IAAW,CAClB,MAAO,EAAED,EACX,CACA,MAAMnO,GAAc,CAACqO,EAAKC,IAAU,CAClC,MAAMC,EAASF,EAAI,WAAaA,EAChC,SAAW,CAACH,EAAKZ,CAAG,IAAKgB,EACvBC,EAAOL,CAAG,EAAIZ,EAEhB,OAAOiB,CACT,EACMC,GAAc,CAAA,EACdC,GAAe,CACnB,MAAO,6BACP,MAAO,KACP,OAAQ,IACV,EACA,SAASC,GAAcxP,EAAMC,EAAQ,CACnC,OAAOK,EAAS,EAAIC,EAAmB,MAAOgP,GAAc,CAAC,GAAGtP,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,CACxFS,EAAmB,OAAQ,CAAE,EAAG,6gBAA6gB,EAAI,KAAM,EAAE,CAC7jB,EAAI,CAAC,CACL,CACA,MAAM+O,GAA2B3O,GAAYwO,GAAa,CAAC,CAAC,SAAUE,EAAa,CAAC,CAAC,EAC/EE,GAAc,CAAA,EACdC,GAAe,CACnB,MAAO,6BACP,MAAO,KACP,OAAQ,IACV,EACA,SAASC,GAAc5P,EAAMC,EAAQ,CACnC,OAAOK,EAAS,EAAIC,EAAmB,MAAOoP,GAAc,CAAC,GAAG1P,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,CACxFS,EAAmB,OAAQ,CAAE,EAAG,mTAAmT,EAAI,KAAM,EAAE,CACnW,EAAI,CAAC,CACL,CACA,MAAMmP,GAAgC/O,GAAY4O,GAAa,CAAC,CAAC,SAAUE,EAAa,CAAC,CAAC,EACpFE,GAAkB,CACtB,SAAAL,GACA,cAAAI,EACF,EACMnQ,GAAY,CAChB,WAAY,CAAE,GAAGoQ,EAAe,EAChC,WAAY,CAAE,aAAA/B,EAAY,EAC1B,OAAQ,CAACO,GAAeI,GAASP,EAAI,EACrC,MAAO,CAQL,WAAY,CAAA,EASZ,WAAY,CACV,KAAM,OACN,QAAS,KAAO,CAAA,EACtB,EASI,QAAS,CACP,KAAM,MACN,SAAU,CACR,MAAO,CAAA,CACT,CACN,EAMI,MAAO,CACL,KAAM,OACN,QAAS,IACf,EAMI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAMI,UAAW,CACT,KAAM,QACN,QAAS,EACf,EAOI,qBAAsB,CACpB,KAAM,QACN,QAAS,EACf,EAMI,WAAY,CACV,KAAM,QACN,QAAS,EACf,EAMI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAMI,YAAa,CACX,KAAM,OACN,QAAS,EACf,EAMI,WAAY,CACV,KAAM,OACN,QAAS,UACf,EAMI,oBAAqB,CACnB,KAAM,QACN,QAAS,EACf,EAOI,cAAe,CACb,KAAM,QACN,QAAS,EACf,EAOI,MAAO,CACL,KAAM,OACN,QAAS,OACf,EAOI,kBAAmB,CACjB,KAAM,OACN,QAAS,oBACf,EAOI,iBAAkB,CAChB,KAAM,OACN,QAAS,SACf,EAOI,uBAAwB,CACtB,KAAM,OACN,QAAS,gBACf,EAOI,wBAAyB,CACvB,KAAM,SACN,QAAU4B,GAAgB,YAAYA,CAAW,EACvD,EAOI,aAAc,CACZ,KAAM,OACN,QAAS,KACf,EAQI,OAAQ,CACN,KAAM,SACN,QAAUC,GAAWA,CAC3B,EAUI,WAAY,CACV,KAAM,SACN,QAAS,IAAM,EACrB,EAcI,eAAgB,CACd,KAAM,SACN,QAAQA,EAAQ,CACd,OAAI,OAAOA,GAAW,SACf,OAAO,OAAOA,EAAQ,KAAK,KAAK,EAI9BA,EAAO,KAAK,KAAK,EAHfC,GAAK,wCAAwC,KAAK,KAAK,sCAAsC,KAAK,UAAUD,CAAM,CAAC;AAAA,qDACjF,EAItCA,CACT,CACN,EAiBI,aAAc,CACZ,KAAM,SACN,QAAQA,EAAQ,CACd,GAAI,OAAOA,GAAW,SACpB,OAAOA,EAET,GAAI,CACF,OAAO,OAAO,OAAOA,EAAQ,IAAI,EAAIA,EAAO,GAAKnB,GAAiBmB,CAAM,CAC1E,MAAY,CAEV,OAAOC,GAAuB,CAChC,CACF,CACN,EAMI,MAAO,CACL,KAAM,SACN,SAAU,CACJ,KAAK,aAAe,CAAC,KAAK,aAC5B,KAAK,gBAAe,CAExB,CACN,EAMI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAMI,SAAU,CACR,KAAM,OACN,QAAS,IACf,EAOI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAQI,WAAY,CACV,KAAM,QACN,QAAS,EACf,EAYI,SAAU,CACR,KAAM,SACN,QAAQD,EAAQE,EAAOC,EAAQ,CAC7B,OAAQD,GAAS,IAAI,kBAAiB,EAAG,QAAQC,EAAO,kBAAiB,CAAE,EAAI,EACjF,CACN,EAaI,OAAQ,CACN,KAAM,SACN,QAAQ1E,EAAS0E,EAAQ,CACvB,OAAO1E,EAAQ,OAAQuE,GAAW,CAChC,IAAIE,EAAQ,KAAK,eAAeF,CAAM,EACtC,OAAI,OAAOE,GAAU,WACnBA,EAAQA,EAAM,SAAQ,GAEjB,KAAK,SAASF,EAAQE,EAAOC,CAAM,CAC5C,CAAC,CACH,CACN,EAMI,aAAc,CACZ,KAAM,SACN,QAAQH,EAAQ,CACd,OAAO,OAAO,KAAK,WAAW,CAAC,GAAM,SAAW,CAAE,CAAC,KAAK,KAAK,EAAGA,CAAM,EAAKA,CAC7E,CACN,EAOI,0BAA2B,CACzB,KAAM,QACN,QAAS,EACf,EAaI,qBAAsB,CACpB,QAAS,GACT,UAAYxO,GAAU,CAAC,WAAY,SAAS,EAAE,SAAS,OAAOA,CAAK,CACzE,EAMI,kBAAmB,CACjB,KAAM,SACN,QAAQ,CAAE,oBAAA4O,EAAqB,SAAAC,GAAY,CACzC,OAAOD,GAAuB,CAACC,CACjC,CACN,EAMI,OAAQ,CACN,KAAM,QACN,QAAS,EACf,EAOI,QAAS,CACP,KAAM,MACZ,EAQI,IAAK,CACH,KAAM,OACN,QAAS,MACf,EAOI,YAAa,CACX,KAAM,QACN,QAAS,EACf,EAMI,iBAAkB,CAChB,KAAM,MACN,QAAS,IAAM,CAEb,EACR,CACA,EAUI,yBAA0B,CACxB,KAAM,OACN,QAAS,eACf,EAMI,WAAY,CACV,KAAM,SAMN,QAAUC,GAAQA,CACxB,EAQI,aAAc,CACZ,KAAM,QACN,QAAS,EACf,EAYI,kBAAmB,CACjB,KAAM,SAUN,QAAQC,EAAcC,EAAW,CAAE,MAAAxM,EAAO,IAAAiC,EAAK,KAAAD,GAAQ,CACrDuK,EAAa,MAAM,IAAMtK,EACzBsK,EAAa,MAAM,KAAOvK,EAC1BuK,EAAa,MAAM,MAAQvM,CAC7B,CACN,EAQI,mBAAoB,CAClB,KAAM,SACN,QAAQ,CAAE,OAAAyM,EAAQ,KAAAlC,EAAM,eAAAmC,CAAc,EAAI,CACxC,OAAOD,EAAS,GAAQlC,GAAQ,CAACmC,CACnC,CACN,EAKI,oBAAqB,CACnB,KAAM,QACN,QAAS,EACf,EAKI,IAAK,CACH,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,IAAMxB,GAAQ,CAC7B,CACA,EACE,MAAO,CACL,OACA,QACA,oBACA,SACA,0BACA,wBACA,iBACA,cACA,eACA,eACA,iBACA,mBACA,kBACA,qBACA,mBACJ,EACE,MAAO,CACL,MAAO,CACL,OAAQ,GACR,KAAM,GACN,YAAa,GACb,qBAAsB,GACtB,WAAY,CAAA,EAEZ,OAAQ,CAAA,EAER,gBAAiB,CAAA,CACvB,CACE,EACA,SAAU,CACR,kBAAmB,CACjB,OAAO,KAAK,OAAO,SAAW,KAAK,SAAS,MAAM,OAAO,OAC3D,EAOA,kBAAmB,CACjB,OAAO,OAAO,KAAK,WAAe,KAAe,KAAK,gBACxD,EAMA,eAAgB,CACd,IAAI1N,EAAQ,KAAK,WAIjB,OAHI,KAAK,mBACPA,EAAQ,KAAK,MAAM,QAEGA,GAAU,MAAQA,IAAU,GAC3C,CAAA,EAAG,OAAOA,CAAK,EAEjB,CAAA,CACT,EAQA,YAAa,CACX,OAAO,KAAK,QAAQ,OAAO,KAAK,SAAW,KAAK,WAAa,EAAE,CACjE,EAMA,UAAW,CACT,OAAO,KAAK,OAAO,OAAS,KAAK,MAAM,gBAAgB,cAAc,KAAK,wBAAwB,EAAI,KAAK,MAAM,MACnH,EAMA,OAAQ,CACN,MAAMmP,EAAW,CACf,OAAQ,KAAK,OACb,QAAS,KAAK,QACd,UAAW,KAAK,UAChB,gBAAiB,KAAK,eAC9B,EACM,MAAO,CACL,OAAQ,CACN,WAAY,CACV,GAAI,KAAK,QACT,SAAU,KAAK,SACf,YAAa,KAAK,kBAClB,SAAU,KAAK,SACf,SAAU,CAAC,KAAK,WAChB,KAAM,WACN,oBAAqB,OACrB,aAAc,KAAK,kBACnB,gBAAiB,MAAM,KAAK,GAAG,YAC/B,YAAa,MAAM,KAAK,GAAG,YAC3B,gBAAiB,KAAK,aAAa,SAAQ,EAC3C,IAAK,SACL,KAAM,SACN,aAAc,KAAK,aACnB,MAAO,KAAK,OACZ,GAAG,KAAK,cAAgB,KAAK,gBAAgB,KAAK,gBAAgB,EAAI,CACpE,wBAAyB,MAAM,KAAK,GAAG,YAAY,KAAK,gBAAgB,EACtF,EAAgB,CAAA,CAChB,EACU,OAAQ,CACN,iBAAkB,IAAM,KAAK,YAAc,GAC3C,eAAgB,IAAM,KAAK,YAAc,GACzC,QAAS,KAAK,gBACd,SAAU,KAAK,iBACf,KAAM,KAAK,aACX,MAAO,KAAK,cACZ,MAAQC,GAAM,KAAK,OAASA,EAAE,OAAO,KACjD,CACA,EACQ,QAAS,CACP,QAAS,KAAK,cACxB,EACQ,UAAW,CACT,OAAQ,KAAK,OACb,QAAS,KAAK,eACd,UAAW,KAAK,SAC1B,EACQ,cAAe,CACb,WAAY,CACV,IAAK,gBACL,KAAM,eACN,MAAO,oBACnB,CACA,EACQ,WAAYD,EACZ,WAAYA,EACZ,OAAQ,CAAE,GAAGA,EAAU,SAAU,KAAK,QAAQ,EAC9C,OAAQ,CAAE,GAAGA,EAAU,SAAU,KAAK,QAAQ,CACtD,CACI,EAQA,iBAAkB,CAChB,MAAO,CACL,GAAGb,GACH,GAAG,KAAK,UAChB,CACI,EAMA,cAAe,CACb,MAAO,CACL,WAAY,KAAK,aACjB,aAAc,CAAC,KAAK,SACpB,eAAgB,KAAK,SACrB,gBAAiB,KAAK,WAAa,CAAC,KAAK,OACzC,iBAAkB,KAAK,YAAc,CAAC,KAAK,OAC3C,mBAAoB,CAAC,KAAK,WAC1B,cAAe,KAAK,eACpB,eAAgB,KAAK,QAC7B,CACI,EAOA,WAAY,CACV,MAAO,CAAC,CAAC,KAAK,MAChB,EAOA,cAAe,CACb,OAAO,KAAK,mBAAmB,IAAI,CACrC,EAOA,mBAAoB,CAClB,OAAO,KAAK,cAAgB,KAAK,YAAc,KAAK,YAAc,MACpE,EASA,iBAAkB,CAChB,MAAMe,EAAgBC,GAChB,KAAK,QAAU,KACVA,EAAS,MAAM,EAAG,KAAK,KAAK,EAE9BA,EAEHC,EAAa,CAAA,EAAG,OAAO,KAAK,UAAU,EAC5C,GAAI,CAAC,KAAK,YAAc,CAAC,KAAK,SAC5B,OAAOF,EAAaE,CAAU,EAEhC,MAAMtF,EAAU,KAAK,OAAO,OAAS,KAAK,OAAOsF,EAAY,KAAK,OAAQ,IAAI,EAAIA,EAClF,GAAI,KAAK,UAAY,KAAK,OAAO,OAC/B,GAAI,CACF,MAAMC,EAAgB,KAAK,aAAa,KAAK,MAAM,EAC9C,KAAK,aAAaA,CAAa,GAClCvF,EAAQ,QAAQuF,CAAa,CAEjC,MAAQ,CACR,CAEF,OAAOH,EAAapF,CAAO,CAC7B,EAMA,cAAe,CACb,OAAO,KAAK,cAAc,SAAW,CACvC,EAMA,iBAAkB,CAChB,MAAO,CAAC,KAAK,UAAY,KAAK,WAAa,CAAC,KAAK,MAAQ,CAAC,KAAK,YACjE,CACJ,EACE,MAAO,CAWL,QAAQwF,EAAYC,EAAY,CAC9B,MAAMC,EAAc,IAAM,OAAO,KAAK,sBAAyB,WAAa,KAAK,qBAC/EF,EACAC,EACA,KAAK,aACb,EAAU,KAAK,qBACL,CAAC,KAAK,UAAYC,KACpB,KAAK,eAAc,EAEjB,KAAK,YAAc,KAAK,kBAC1B,KAAK,4BAA4B,KAAK,UAAU,CAEpD,EAKA,WAAY,CACV,UAAW,GACX,QAAQ/C,EAAK,CACP,KAAK,kBACP,KAAK,4BAA4BA,CAAG,CAExC,CACN,EAOI,UAAW,CACT,KAAK,eAAc,CACrB,EACA,KAAKgD,EAAQ,CACX,KAAK,MAAMA,EAAS,OAAS,OAAO,CACtC,EACA,OAAOjB,EAAQ,CACTA,EAAO,SACT,KAAK,KAAO,GAEhB,CACJ,EACE,SAAU,CACR,KAAK,eAAiB,KAAK,OAC7B,EACA,QAAS,CAQP,4BAA4B3O,EAAO,CAC7B,MAAM,QAAQA,CAAK,EACrB,KAAK,MAAM,OAASA,EAAM,IAAK4M,GAAQ,KAAK,2BAA2BA,CAAG,CAAC,EAE3E,KAAK,MAAM,OAAS,KAAK,2BAA2B5M,CAAK,CAE7D,EAQA,OAAOwO,EAAQ,CACb,KAAK,MAAM,mBAAoBA,CAAM,EAChC,KAAK,iBAAiBA,CAAM,EAUtB,KAAK,uBAAyB,KAAK,WAAa,KAAK,UAAY,KAAK,cAAc,OAAS,IACtG,KAAK,SAASA,CAAM,GAVhB,KAAK,UAAY,CAAC,KAAK,aAAaA,CAAM,IAC5C,KAAK,MAAM,iBAAkBA,CAAM,EACnC,KAAK,QAAQA,CAAM,GAEjB,KAAK,WACPA,EAAS,KAAK,cAAc,OAAOA,CAAM,GAE3C,KAAK,YAAYA,CAAM,EACvB,KAAK,MAAM,kBAAmBA,CAAM,GAItC,KAAK,cAAcA,CAAM,CAC3B,EAOA,SAASA,EAAQ,CACf,KAAK,MAAM,qBAAsBA,CAAM,EACvC,KAAK,YAAY,KAAK,cAAc,OAAQ5B,GACnC,CAAC,KAAK,iBAAiBA,EAAK4B,CAAM,CAC1C,CAAC,EACF,KAAK,MAAM,oBAAqBA,CAAM,CACxC,EAQA,iBAAiBA,EAAQqB,EAAQ,CAC/B,KAAK,SAASrB,CAAM,EACpB,MAAMsB,EAAe,KAAK,kBAAkBD,EAAS,CAAC,EAChDE,EAAe,KAAK,kBAAkBF,EAAS,CAAC,EAChDG,EAAkBF,GAAgBC,EACpCC,EACFA,EAAgB,MAAK,EAErB,KAAK,SAAS,MAAK,CAEvB,EAMA,gBAAiB,CACf,KAAK,YAAY,KAAK,SAAW,CAAA,EAAK,IAAI,EAC1C,KAAK,SAAS,MAAK,CACrB,EAOA,eAAgB,CACV,KAAK,gBACP,KAAK,KAAO,CAAC,KAAK,MAEhB,KAAK,sBACP,KAAK,OAAS,IAEZ,KAAK,QAAU,KAAK,UACtB,KAAK,UAAU,IAAM,KAAK,MAAM,OAAO,OAAO,CAElD,EASA,YAAYhQ,EAAO,CACb,OAAO,KAAK,WAAe,MAC7B,KAAK,MAAM,OAASA,GAElBA,IAAU,OACR,MAAM,QAAQA,CAAK,EACrBA,EAAQA,EAAM,IAAK4M,GAAQ,KAAK,OAAOA,CAAG,CAAC,EAE3C5M,EAAQ,KAAK,OAAOA,CAAK,GAG7B,KAAK,MAAM,oBAAqBA,CAAK,CACvC,EAOA,eAAeiQ,EAAO,CACpB,MAAMC,EAAoBD,EAAM,SAAW,KAAK,SAC5CC,GACFD,EAAM,eAAc,EAEtB,MAAME,EAAiB,CACrB,GAAG,KAAK,iBAAmB,CAAA,EAC3B,GAAG,KAAK,MAAM,YAAc,CAAC,KAAK,MAAM,WAAW,EAAI,CAAA,CAC/D,EACM,GAAI,KAAK,WAAa,QAAUA,EAAe,OAAO,OAAO,EAAE,KAAMC,GAAQA,EAAI,SAASH,EAAM,MAAM,GAAKG,IAAQH,EAAM,MAAM,EAAG,CAChIA,EAAM,eAAc,EACpB,MACF,CACI,KAAK,MAAQC,GACf,KAAK,KAAO,GACZ,KAAK,SAAS,KAAI,GACR,KAAK,WACf,KAAK,KAAO,GACZ,KAAK,SAAS,MAAK,EAEvB,EAOA,iBAAiB1B,EAAQ,CACvB,OAAO,KAAK,cAAc,KAAMxO,GAAU,KAAK,iBAAiBA,EAAOwO,CAAM,CAAC,CAChF,EAOA,qBAAqBA,EAAQ,CAC3B,OAAO,KAAK,iBAAiBA,CAAM,GAAK,KAAK,oBAC/C,EAQA,uBAAuBqB,EAAQ,CAC7B,OAAI,KAAK,qBAAuB,KAAK,qBAC5BA,IAAW,KAAK,iBAElB,EACT,EAQA,iBAAiB9G,EAAGC,EAAG,CACrB,OAAO,KAAK,aAAaD,CAAC,IAAM,KAAK,aAAaC,CAAC,CACrD,EASA,2BAA2BhJ,EAAO,CAChC,MAAMqQ,EAAa7B,GAAW,KAAK,UAAU,KAAK,OAAOA,CAAM,CAAC,IAAM,KAAK,UAAUxO,CAAK,EACpFsQ,EAAU,CAAC,GAAG,KAAK,QAAS,GAAG,KAAK,UAAU,EAAE,OAAOD,CAAS,EACtE,OAAIC,EAAQ,SAAW,EACdA,EAAQ,CAAC,EAEXA,EAAQ,KAAMC,GAAU,KAAK,iBAAiBA,EAAO,KAAK,MAAM,MAAM,CAAC,GAAKvQ,CACrF,EAOA,oBAAqB,CACnB,KAAK,KAAO,GACZ,KAAK,MAAM,aAAa,CAC1B,EAOA,kBAAmB,CACjB,GAAI,CAAC,KAAK,SAAS,MAAM,QAAU,KAAK,eAAiB,KAAK,cAAc,QAAU,KAAK,UAAW,CACpG,IAAIA,EAAQ,KACR,KAAK,WACPA,EAAQ,CACN,GAAG,KAAK,cAAc,MAAM,EAAG,KAAK,cAAc,OAAS,CAAC,CACxE,GAEQ,KAAK,YAAYA,CAAK,CACxB,CACF,EAQA,aAAawO,EAAQ,CACnB,OAAO,KAAK,WAAW,KAAMgC,GAAY,KAAK,iBAAiBA,EAAShC,CAAM,CAAC,CACjF,EAQA,mBAAmBA,EAAQ,CACzB,OAAK,KAAK,WAAWA,CAAM,EAGpB,OAAO,KAAK,iBAAiBA,CAAM,CAAC,EAFlC,IAGX,EAQA,uBAAuBA,EAAQ,CAC7B,OAAO,OAAOA,GAAW,SAAWA,EAAS,CAAE,CAAC,KAAK,KAAK,EAAGA,CAAM,CACrE,EAQA,QAAQA,EAAQ,CACd,KAAK,WAAW,KAAKA,CAAM,CAC7B,EAOA,UAAW,CACJ,KAAK,OAAO,OAGf,KAAK,OAAS,GAFd,KAAK,KAAO,EAIhB,EAOA,cAAe,CACb,GAAI,KAAK,WAAa,CAAC,KAAK,UAC1B,KAAK,UAAY,OACZ,CACL,KAAM,CAAE,oBAAAI,EAAqB,SAAAC,CAAQ,EAAK,KACtC,KAAK,kBAAkB,CAAE,oBAAAD,EAAqB,SAAAC,CAAQ,CAAE,IAC1D,KAAK,OAAS,IAEhB,KAAK,mBAAkB,EACvB,MACF,CACI,KAAK,OAAO,SAAW,GAAK,KAAK,QAAQ,SAAW,GACtD,KAAK,mBAAkB,CAE3B,EASA,eAAgB,CACd,KAAK,MAAM,cAAc,CAC3B,EAUA,aAAc,CACZ,KAAK,UAAY,EACnB,EAOA,WAAY,CACV,KAAK,UAAY,EACnB,EAQA,YAAYL,EAAQqB,EAAQ,CAC1B,KAAK,qBAAuB,GACvB,KAAK,WAAWrB,CAAM,IAG3B,KAAK,iBAAmBqB,EAC1B,EAOA,gBAAgB,EAAG,CACjB,MAAMY,EAAoBC,GAAO,CAE/B,GADAA,EAAG,eAAc,EACb,CAAC,KAAK,KAAM,CACd,KAAK,KAAO,GACZ,MACF,CACA,MAAO,CAAC,KAAK,aAAe,KAAK,gBAAe,CAClD,EACMC,EAAW,CAEf,EAAG,IAAM,KAAK,iBAAgB,EAE9B,EAAG,IAAM,KAAK,MAAK,EAEnB,GAAI,IAAM,KAAK,SAAQ,EAEvB,GAAKD,GAAO,CAGV,GAFAA,EAAG,eAAc,EACjB,KAAK,qBAAuB,GACxB,CAAC,KAAK,KAAM,CACd,KAAK,KAAO,GACZ,MACF,CACA,OAAO,KAAK,YAAW,CACzB,EAEA,GAAKA,GAAO,CAGV,GAFAA,EAAG,eAAc,EACjB,KAAK,qBAAuB,GACxB,CAAC,KAAK,KAAM,CACd,KAAK,KAAO,GACZ,MACF,CACA,OAAO,KAAK,cAAa,CAC3B,CACR,EACM,KAAK,iBAAiB,QAASE,GAAYD,EAASC,CAAO,EAAIH,CAAgB,EAC/E,MAAMI,EAAW,KAAK,WAAWF,EAAU,IAAI,EAC/C,GAAI,OAAOE,EAAS,EAAE,OAAO,GAAM,WACjC,OAAOA,EAAS,EAAE,OAAO,EAAE,CAAC,CAEhC,EAMA,iBAAiB,EAAG,CACd,CAAC,KAAK,MAAQ,EAAE,UAAY,KAC9B,EAAE,eAAc,EAChB,KAAK,KAAO,GAEhB,CACJ,CACA,EACM1S,GAAa,CAAC,KAAM,KAAK,EACzBC,GAAa,CACjB,IAAK,SACL,MAAO,qBACT,EACMC,GAAa,CAAC,WAAY,QAAS,aAAc,cAAe,WAAW,EAC3EC,GAAa,CACjB,IAAK,UACL,MAAO,aACT,EACMwS,GAAa,CAAC,WAAY,QAAS,YAAY,EAC/CC,GAAa,CAAE,MAAO,aAAa,EACnCC,GAAa,CAAC,KAAM,aAAc,sBAAsB,EACxDC,GAAa,CAAC,KAAM,gBAAiB,cAAe,SAAS,EAC7DC,GAAa,CACjB,IAAK,EACL,MAAO,gBACT,EACMC,GAAc,CAAC,KAAM,YAAY,EACvC,SAAS5S,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,MAAMuS,EAA4BC,GAAiB,gBAAgB,EACnE,OAAOvS,EAAS,EAAIC,EAAmB,MAAO,CAC5C,GAAI,YAAYL,EAAO,GAAG,GAC1B,IAAKA,EAAO,IACZ,MAAO4S,GAAe,CAAC,WAAYzS,EAAS,YAAY,CAAC,CAC7D,EAAK,CACD0S,EAAW/S,EAAK,OAAQ,SAAUgT,EAAeC,EAAmB5S,EAAS,MAAM,MAAM,CAAC,CAAC,EAC3FK,EAAmB,MAAOd,GAAY,CACpCc,EAAmB,MAAO,CACxB,IAAK,kBACL,MAAO,uBACP,YAAaT,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIiT,IAAS7S,EAAS,gBAAkBA,EAAS,eAAe,GAAG6S,CAAI,EACtH,EAAS,EACA5S,EAAU,EAAI,EAAGC,EAAmB4S,GAAU,KAAMC,GAAW/S,EAAS,cAAe,CAAC2P,EAAQqB,IACxF0B,EAAW/S,EAAK,OAAQ,4BAA6B,CAC1D,OAAQK,EAAS,uBAAuB2P,CAAM,EAC9C,SAAU3P,EAAS,SACnB,SAAUH,EAAO,SACjB,SAAUA,EAAO,QAC7B,EAAa,IAAM,EACNI,EAAS,EAAIC,EAAmB,OAAQ,CACvC,IAAKL,EAAO,aAAa8P,CAAM,EAC/B,MAAO,cACrB,EAAe,CACD+C,EAAW/S,EAAK,OAAQ,kBAAmBQ,EAAW,CAAE,QAAS,EAAI,EAAIH,EAAS,uBAAuB2P,CAAM,CAAC,EAAG,IAAM,CACvHqD,EAAgB1S,EAAgBT,EAAO,eAAe8P,CAAM,CAAC,EAAG,CAAC,CACjF,CAAe,EACD9P,EAAO,UAAYI,IAAaC,EAAmB,SAAU,CAC3D,IAAK,EACL,QAAS,GACT,IAAMgI,GAAOnI,EAAM,gBAAgBiR,CAAM,EAAI9I,EAC7C,SAAUrI,EAAO,SACjB,KAAM,SACN,MAAO,eACP,MAAOA,EAAO,wBAAwBA,EAAO,eAAe8P,CAAM,CAAC,EACnE,aAAc9P,EAAO,wBAAwBA,EAAO,eAAe8P,CAAM,CAAC,EAC1E,YAAasD,GAAe7S,GAAWJ,EAAS,SAAS2P,CAAM,EAAG,CAAC,MAAM,CAAC,EAC1E,UAAWuD,GAAU9S,GAAWJ,EAAS,iBAAiB2P,EAAQqB,CAAM,EAAG,CAAC,OAAO,CAAC,CACpG,EAAiB,EACA/Q,EAAS,EAAIkT,EAAYC,GAAwBpT,EAAS,gBAAgB,QAAQ,CAAC,EACpG,EAAiB,GAAIR,EAAU,GAAKe,EAAmB,GAAI,EAAI,CAC/D,CAAa,EACb,CAAW,CACF,EAAG,GAAG,GACPmS,EAAW/S,EAAK,OAAQ,SAAUgT,EAAeC,EAAmB5S,EAAS,MAAM,MAAM,CAAC,EAAG,IAAM,CACjGK,EAAmB,QAASF,EAAW,CAAE,MAAO,cAAgBH,EAAS,MAAM,OAAO,WAAYqT,GAAWrT,EAAS,MAAM,OAAO,OAAQ,EAAI,CAAC,EAAG,KAAM,EAAE,CACrK,CAAS,CACT,EAAS,GAAG,EACNK,EAAmB,MAAOZ,GAAY,CACpC6T,GAAejT,EAAmB,SAAU,CAC1C,IAAK,cACL,SAAUR,EAAO,SACjB,KAAM,SACN,MAAO,YACP,MAAOA,EAAO,uBACd,aAAcA,EAAO,uBACrB,QAASD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIiT,IAAS7S,EAAS,gBAAkBA,EAAS,eAAe,GAAG6S,CAAI,EACpH,EAAW,EACA5S,EAAS,EAAIkT,EAAYC,GAAwBpT,EAAS,gBAAgB,QAAQ,CAAC,EAC9F,EAAW,EAAGiS,EAAU,EAAG,CACjB,CAACsB,GAAOvT,EAAS,eAAe,CAC1C,CAAS,EACAH,EAAO,OAYGU,EAAmB,GAAI,EAAI,GAZpBN,EAAS,EAAIC,EAAmB,SAAU,CAC1D,IAAK,EACL,IAAK,sBACL,MAAO,4BACP,KAAM,SACN,SAAU,KACV,cAAe,OACf,YAAaN,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIiT,IAAS7S,EAAS,gBAAkBA,EAAS,eAAe,GAAG6S,CAAI,EACxH,EAAW,CACDH,EAAW/S,EAAK,OAAQ,iBAAkBgT,EAAeC,EAAmB5S,EAAS,MAAM,aAAa,CAAC,EAAG,IAAM,EAC/GC,EAAS,EAAIkT,EAAYC,GAAwBpT,EAAS,gBAAgB,aAAa,EAAG2S,EAAeC,EAAmB5S,EAAS,MAAM,cAAc,UAAU,CAAC,EAAG,KAAM,EAAE,EAC5L,CAAW,CACX,EAAW,GAAG,GACN0S,EAAW/S,EAAK,OAAQ,UAAWgT,EAAeC,EAAmB5S,EAAS,MAAM,OAAO,CAAC,EAAG,IAAM,CACnGsT,GAAejT,EAAmB,MAAO6R,GAAY,eAAgB,GAAG,EAAG,CACzE,CAACqB,GAAO5T,EAAK,cAAc,CACvC,CAAW,CACX,CAAS,CACT,EAAS,GAAG,CACZ,EAAO,GAAG,EACN6T,EAAYC,GAAY,CAAE,KAAM5T,EAAO,UAAU,EAAI,CACnD,QAAS6T,EAAQ,IAAM,CACrB1T,EAAS,aAAesT,IAAgBrT,EAAS,EAAIC,EAAmB,KAAM,CAC5E,GAAI,MAAML,EAAO,GAAG,YACpB,IAAK,eACL,IAAK,MAAMA,EAAO,GAAG,YACrB,MAAO,oBACP,KAAM,UACN,aAAcA,EAAO,iBACrB,uBAAwBA,EAAO,SAAW,OAAS,KACnD,SAAU,KACV,YAAaD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIqT,GAAc,IAAIJ,IAAS7S,EAAS,aAAeA,EAAS,YAAY,GAAG6S,CAAI,EAAG,CAAC,SAAS,CAAC,GACpI,UAAWjT,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIiT,IAAS7S,EAAS,WAAaA,EAAS,UAAU,GAAG6S,CAAI,EAC5G,EAAW,CACDH,EAAW/S,EAAK,OAAQ,cAAegT,EAAeC,EAAmB5S,EAAS,MAAM,UAAU,CAAC,CAAC,GACnGC,EAAU,EAAI,EAAGC,EAAmB4S,GAAU,KAAMC,GAAW/S,EAAS,gBAAiB,CAAC2P,EAAQqB,KAC1F/Q,EAAS,EAAIC,EAAmB,KAAM,CAC3C,GAAI,MAAML,EAAO,GAAG,YAAYmR,CAAM,GACtC,IAAKnR,EAAO,aAAa8P,CAAM,EAC/B,KAAM,SACN,MAAO8C,GAAe,CAAC,sBAAuB,CAC5C,gCAAiCzS,EAAS,qBAAqB2P,CAAM,GAAKqB,IAAWrR,EAAK,iBAC1F,gCAAiCK,EAAS,iBAAiB2P,CAAM,EACjE,iCAAkCqB,IAAWrR,EAAK,iBAClD,gCAAiCK,EAAS,uBAAuBgR,CAAM,EACvE,gCAAiC,CAACnR,EAAO,WAAW8P,CAAM,CAC1E,CAAe,CAAC,EACF,gBAAiB3P,EAAS,mBAAmB2P,CAAM,EACnD,YAAcvP,GAAWJ,EAAS,YAAY2P,EAAQqB,CAAM,EAC5D,QAASiC,GAAe7S,GAAWP,EAAO,WAAW8P,CAAM,EAAI3P,EAAS,OAAO2P,CAAM,EAAI,KAAM,CAAC,UAAW,MAAM,CAAC,CAChI,EAAe,CACD+C,EAAW/S,EAAK,OAAQ,SAAUQ,EAAW,CAAE,QAAS,EAAI,EAAIH,EAAS,uBAAuB2P,CAAM,CAAC,EAAG,IAAM,CAC9GqD,EAAgB1S,EAAgBT,EAAO,eAAe8P,CAAM,CAAC,EAAG,CAAC,CACjF,CAAe,CACf,EAAe,GAAIyC,EAAU,EAClB,EAAG,GAAG,GACPpS,EAAS,gBAAgB,SAAW,GAAKC,EAAS,EAAIC,EAAmB,KAAMmS,GAAY,CACzFK,EAAW/S,EAAK,OAAQ,aAAcgT,EAAeC,EAAmB5S,EAAS,MAAM,SAAS,CAAC,EAAG,IAAM,CACxGJ,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIoT,EAAgB,gCAAiC,EAAE,EAC3F,CAAa,CACb,CAAW,GAAKzS,EAAmB,GAAI,EAAI,EACjCmS,EAAW/S,EAAK,OAAQ,cAAegT,EAAeC,EAAmB5S,EAAS,MAAM,UAAU,CAAC,CAAC,CAC9G,EAAW,GAAImS,EAAU,GAAI,CACnB,CAACI,CAAyB,CACpC,CAAS,GAAKtS,EAAS,EAAIC,EAAmB,KAAM,CAC1C,IAAK,EACL,GAAI,MAAML,EAAO,GAAG,YACpB,KAAM,UACN,aAAcA,EAAO,iBACrB,MAAO,CAAE,QAAW,OAAQ,WAAc,QAAQ,CAC5D,EAAW,KAAM,EAAGyS,EAAW,EAC/B,CAAO,EACD,EAAG,CACT,EAAO,EAAG,CAAC,MAAM,CAAC,EACdI,EAAW/S,EAAK,OAAQ,SAAUgT,EAAeC,EAAmB5S,EAAS,MAAM,MAAM,CAAC,CAAC,CAC/F,EAAK,GAAIV,EAAU,CACnB,CACA,MAAMqU,EAAyBlT,GAAYpB,GAAW,CAAC,CAAC,SAAUK,EAAW,CAAC,CAAC,EC7pD/E,SAASkU,GAAWC,EAAM/D,EAAQ,CAChC,MAAMgE,EAAS,CAAA,EACf,IAAIC,EAAe,EACfC,EAAQH,EAAK,YAAW,EAAG,QAAQ/D,EAAO,YAAW,EAAIiE,CAAY,EACrEhL,EAAI,EACR,KAAOiL,EAAQ,IAAMjL,IAAM8K,EAAK,QAC9BE,EAAeC,EAAQlE,EAAO,OAC9BgE,EAAO,KAAK,CAAE,MAAOE,EAAO,IAAKD,EAAc,EAC/CC,EAAQH,EAAK,YAAW,EAAG,QAAQ/D,EAAO,YAAW,EAAIiE,CAAY,EAEvE,OAAOD,CACT,CACK,MAACzU,GAAY4U,GAAgB,CAChC,KAAM,cACN,MAAO,CAIL,KAAM,CACJ,KAAM,OACN,QAAS,EACf,EAII,OAAQ,CACN,KAAM,OACN,QAAS,EACf,EAII,UAAW,CACT,KAAM,MACN,QAAS,IAAM,CAAA,CACrB,CACA,EACE,SAAU,CAQR,QAAS,CACP,IAAIH,EAAS,CAAA,EACb,MAAI,CAAC,KAAK,QAAU,KAAK,UAAU,SAAW,IAG1C,KAAK,UAAU,OAAS,EAC1BA,EAAS,KAAK,UAEdA,EAASF,GAAW,KAAK,KAAM,KAAK,MAAM,EAE5CE,EAAO,QAAQ,CAACI,EAAOnL,IAAM,CACvBmL,EAAM,IAAMA,EAAM,QACpBJ,EAAO/K,CAAC,EAAI,CACV,MAAOmL,EAAM,IACb,IAAKA,EAAM,KACvB,EAEM,CAAC,EACDJ,EAASA,EAAO,OAAO,CAACK,EAAaD,KAC/BA,EAAM,MAAQ,KAAK,KAAK,QAAUA,EAAM,IAAM,GAChDC,EAAY,KAAK,CACf,MAAOD,EAAM,MAAQ,EAAI,EAAIA,EAAM,MACnC,IAAKA,EAAM,IAAM,KAAK,KAAK,OAAS,KAAK,KAAK,OAASA,EAAM,GACzE,CAAW,EAEIC,GACN,CAAA,CAAE,EACLL,EAAO,KAAK,CAAC5J,EAAGC,IACPD,EAAE,MAAQC,EAAE,KACpB,EACD2J,EAASA,EAAO,OAAO,CAACM,EAAcF,IAAU,CAC9C,GAAI,CAACE,EAAa,OAChBA,EAAa,KAAKF,CAAK,MAClB,CACL,MAAMG,EAAMD,EAAa,OAAS,EAC9BA,EAAaC,CAAG,EAAE,KAAOH,EAAM,MACjCE,EAAaC,CAAG,EAAI,CAClB,MAAOD,EAAaC,CAAG,EAAE,MACzB,IAAK,KAAK,IAAID,EAAaC,CAAG,EAAE,IAAKH,EAAM,GAAG,CAC5D,EAEYE,EAAa,KAAKF,CAAK,CAE3B,CACA,OAAOE,CACT,EAAG,CAAA,CAAE,GACEN,CACT,EAIA,QAAS,CACP,GAAI,KAAK,OAAO,SAAW,EACzB,MAAO,CAAC,CACN,MAAO,EACP,IAAK,KAAK,KAAK,OACf,UAAW,GACX,KAAM,KAAK,IACrB,CAAS,EAEH,MAAMQ,EAAS,CAAA,EACf,IAAIP,EAAe,EACfQ,EAAe,EACnB,KAAOR,EAAe,KAAK,KAAK,QAAQ,CACtC,MAAMG,EAAQ,KAAK,OAAOK,CAAY,EACtC,GAAIL,EAAM,QAAUH,EAAc,CAChCO,EAAO,KAAK,CACV,GAAGJ,EACH,UAAW,GACX,KAAM,KAAK,KAAK,MAAMA,EAAM,MAAOA,EAAM,GAAG,CACxD,CAAW,EACDK,IACAR,EAAeG,EAAM,IACjBK,GAAgB,KAAK,OAAO,QAAUR,EAAe,KAAK,KAAK,SACjEO,EAAO,KAAK,CACV,MAAOP,EACP,IAAK,KAAK,KAAK,OACf,UAAW,GACX,KAAM,KAAK,KAAK,MAAMA,CAAY,CAChD,CAAa,EACDA,EAAe,KAAK,KAAK,QAE3B,QACF,CACAO,EAAO,KAAK,CACV,MAAOP,EACP,IAAKG,EAAM,MACX,UAAW,GACX,KAAM,KAAK,KAAK,MAAMH,EAAcG,EAAM,KAAK,CACzD,CAAS,EACDH,EAAeG,EAAM,KACvB,CACA,OAAOI,CACT,CACJ,EAIE,QAAS,CACP,OAAK,KAAK,OAAO,OAGVE,EAAE,OAAQ,CAAA,EAAI,KAAK,OAAO,IAAKC,GAC7BA,EAAM,UAAYD,EAAE,SAAU,CAAA,EAAIC,EAAM,IAAI,EAAIA,EAAM,IAC9D,CAAC,EAJOD,EAAE,OAAQ,GAAI,KAAK,IAAI,CAKlC,CACF,CAAC,ECxJKnV,GAAY,CAChB,KAAM,qBACN,WAAY,CACV,YAAagQ,EACjB,EACE,MAAO,CAIL,KAAM,CACJ,KAAM,OACN,QAAS,EACf,EAII,OAAQ,CACN,KAAM,OACN,QAAS,EACf,CACA,EACE,SAAU,CACR,eAAgB,CACd,OAAO,KAAK,MAAQ,KAAK,KAAK,QAAU,EAC1C,EAMA,OAAQ,CACN,OAAO,KAAK,KAAK,OAAS,KAAK,IAAI,KAAK,MAAM,KAAK,KAAK,OAAS,CAAC,EAAG,EAAE,CACzE,EACA,OAAQ,CACN,OAAI,KAAK,cACA,KAAK,KAAK,MAAM,EAAG,KAAK,KAAK,EAE/B,KAAK,IACd,EACA,OAAQ,CACN,OAAI,KAAK,cACA,KAAK,KAAK,MAAM,KAAK,KAAK,EAE5B,EACT,EAOA,YAAa,CACX,OAAK,KAAK,OAGHuE,GAAW,KAAK,KAAM,KAAK,MAAM,EAF/B,CAAA,CAGX,EAQA,YAAa,CACX,OAAO,KAAK,WAAW,IAAKM,IACnB,CACL,MAAOA,EAAM,MAAQ,KAAK,MAC1B,IAAKA,EAAM,IAAM,KAAK,KAChC,EACO,CACH,CACJ,CACA,EACM5U,GAAa,CAAC,OAAO,EAC3B,SAASI,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,MAAM0U,EAAyBC,EAAiB,aAAa,EAC7D,OAAO1U,EAAS,EAAIC,EAAmB,OAAQ,CAC7C,IAAK,OACL,MAAO,aACP,MAAOL,EAAO,IAClB,EAAK,CACD2T,EAAYkB,EAAwB,CAClC,MAAO,oBACP,KAAM1U,EAAS,MACf,OAAQH,EAAO,OACf,UAAWG,EAAS,UAC1B,EAAO,KAAM,EAAG,CAAC,OAAQ,SAAU,WAAW,CAAC,EAC3CA,EAAS,OAASC,IAAakT,EAAYuB,EAAwB,CACjE,IAAK,EACL,MAAO,mBACP,KAAM1U,EAAS,MACf,OAAQH,EAAO,OACf,UAAWG,EAAS,UAC1B,EAAO,KAAM,EAAG,CAAC,OAAQ,SAAU,WAAW,CAAC,GAAKO,EAAmB,GAAI,EAAI,CAC/E,EAAK,EAAGjB,EAAU,CAClB,CACK,MAACsV,GAAqCnU,GAAYpB,GAAW,CAAC,CAAC,SAAUK,EAAW,EAAG,CAAC,YAAa,iBAAiB,CAAC,CAAC,ECzF7HmV,GAASC,EAAG,EACZ,MAAMzV,GAAY,CAChB,KAAM,WACN,WAAY,CACV,YAAAmB,GACA,mBAAAoU,GACA,cAAAG,GACJ,UAAIC,CACJ,EACE,MAAO,CAEL,GAAGA,EAAU,MACb,GAAGA,EAAU,OAAO,OAAO,CAACC,EAAUC,KAAW,CAAE,GAAGD,EAAU,GAAGC,EAAM,KAAK,GAAK,CAAA,CAAE,EAIrF,uBAAwB,CACtB,KAAM,OACN,QAASC,GAAE,gBAAgB,CACjC,EAMI,kBAAmB,CACjB,KAAM,OACN,QAAS,IACf,EAII,iBAAkB,CAChB,KAAM,OACN,QAASA,GAAE,SAAS,CAC1B,EAOI,wBAAyB,CACvB,KAAM,SACN,QAAUzF,GAAgByF,GAAE,oBAAqB,CAAE,OAAQzF,CAAW,CAAE,CAC9E,EAOI,aAAc,CACZ,KAAM,QACN,QAAS,EACf,EAWI,kBAAmB,CACjB,KAAM,SACN,QAAS,IACf,EAOI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAMI,WAAY,CACV,KAAM,OACN,QAAS,KAAO,CACd,SAAU,CACR,OAAQ,IAAM8E,EAAE9T,GAAW,CACzB,KAAM,GACN,UAAW,2BACX,MAAO,CACL,CAAE,OAAQ,SAAS,CACjC,CACA,CAAW,CACX,CACA,EACA,EAII,MAAO,CACL,KAAM,OACN,QAAS,IACf,EAMI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAOI,mBAAoB,CAClB,KAAM,SACN,QAAS,CAAC,CAAE,OAAA0P,EAAQ,KAAAlC,KACXkC,EAAS,GAAQlC,CAEhC,EAWI,SAAU,CACR,KAAM,SACN,QAAS,IACf,EAMI,WAAY,CACV,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,IACf,EAII,QAAS,CACP,KAAM,OACN,QAAS,IAAMkH,GAAe,CACpC,EAII,WAAY,CACV,KAAM,OACN,QAAS,IACf,EAII,aAAc,CACZ,KAAM,QACN,QAAS,EACf,EAKI,oBAAqB,CACnB,KAAM,QACN,QAAS,EACf,EASI,MAAO,CACL,KAAM,OACN,QAAS,IACf,EAMI,QAAS,CACP,KAAM,QACN,QAAS,EACf,EAMI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAII,OAAQ,CACN,KAAM,QACN,QAAS,EACf,EAQI,QAAS,CACP,KAAM,MACN,QAAS,IAAM,CAAA,CACrB,EAMI,YAAa,CACX,KAAM,OACN,QAAS,EACf,EAMI,WAAY,CACV,KAAM,SAQN,QAAQnF,EAAKoF,EAAI,CACf,MAAO,CACL,GAAGpF,EAMH,GAAKmB,GAAU,CACTiE,EAAG,MACLjE,EAAM,gBAAe,EAEvBnB,EAAI,EAAE,EAAEmB,CAAK,CACf,CACV,CACM,CACN,EAMI,IAAK,CACH,KAAM,OACN,QAAS,IAAMgE,GAAe,CACpC,EAMI,UAAW,CACT,KAAM,OACN,QAAS,QACf,EAKI,0BAA2B,CACzB,KAAM,QACN,QAAS,EACf,EAUI,WAAY,CACV,KAAM,CAAC,OAAQ,OAAQ,OAAQ,KAAK,EACpC,QAAS,IACf,EAII,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAQI,IAAK,CAAA,CACT,EACE,MAAO,CAKL,IACA,mBACJ,EACE,OAAQ,CACN,MAAME,EAAgB,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,0BAA0B,CAAC,EACnHC,EAAe,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,yBAAyB,CAAC,EAEvH,MAAO,CACL,WAFiBD,EAAgB,EAAIC,EAGrC,SAAAC,EACN,CACE,EACA,MAAO,CACL,MAAO,CACL,OAAQ,EACd,CACE,EACA,SAAU,CACR,eAAgB,CACd,OAAK,KAAK,SAGH,KAAK,aAAe,MAAQ,MAAM,QAAQ,KAAK,UAAU,GAAK,KAAK,WAAW,SAAW,EAFvF,IAGX,EACA,wBAAyB,CACvB,OAAI,KAAK,oBAAsB,KACtB,KAAK,kBAEP,CAACC,EAActF,EAAW,CAAE,MAAAxM,CAAK,IAAO,CAC7C8R,EAAa,MAAM,MAAQ9R,EAC3B,MAAM+R,EAAW,CACf,KAAM,WACN,IAAK,CACH,OAAAD,EAAa,UAAU,IAAI,6BAA6B,EACjD,CAAA,CACT,CACV,EACcE,EAAuB,CAC3B,KAAM,uBACN,GAAG,CAAE,UAAAC,GAAa,CAChB,OAAAzF,EAAU,IAAI,UAAU,OACtB,kBACAyF,IAAc,KAC5B,EACYH,EAAa,UAAU,OACrB,4CACAG,IAAc,KAC5B,EACmB,CAAA,CACT,CACV,EACcC,EAAiB,IAAM,CAC3BvI,GAAgB6C,EAAU,MAAM,OAAQsF,EAAc,CACpD,UAAW,KAAK,UAChB,WAAY,CACV3I,GAAO,EAAE,EACT4I,EACAC,EAEAzI,GAAI,EACJF,GAAM,CAAE,QAASI,IAAY,CAAE,CAC7C,CACA,CAAW,EAAE,KAAK,CAAC,CAAE,EAAA5I,EAAG,EAAAC,CAAC,IAAO,CACpB,OAAO,OAAOgR,EAAa,MAAO,CAChC,KAAM,GAAGjR,CAAC,KACV,IAAK,GAAGC,CAAC,KACT,MAAO,GAAG0L,EAAU,MAAM,OAAO,sBAAqB,EAAG,KAAK,IAC5E,CAAa,CACH,CAAC,CACH,EAMA,OALgB1E,GACd0E,EAAU,MAAM,OAChBsF,EACAI,CACV,CAEM,CACF,EACA,eAAgB,CACd,OAAO,KAAK,UAAYb,EAAU,MAAM,SAAS,OACnD,EACA,YAAa,CACX,OAAO,KAAK,OAASA,EAAU,MAAM,MAAM,OAC7C,EACA,gBAAiB,CACf,MAAMc,EAAgB,CACpB,GAAG,OAAO,KAAKd,EAAU,KAAK,EAC9B,GAAGA,EAAU,OAAO,QAASE,GAAU,OAAO,KAAKA,EAAM,OAAS,EAAE,CAAC,CAC7E,EAUM,MARuB,CACrB,GAF4B,OAAO,YAAY,OAAO,QAAQ,KAAK,MAAM,EAAE,OAAO,CAAC,CAACvG,EAAKoH,CAAM,IAAMD,EAAc,SAASnH,CAAG,CAAC,CAAC,EAIjI,kBAAmB,KAAK,uBACxB,cAAe,CAAC,KAAK,SACrB,SAAU,KAAK,cACf,MAAO,KAAK,UACpB,CAEI,CACJ,EACE,SAAU,CACJ,CAAC,KAAK,cAAgB,CAAC,KAAK,YAAe,KAAK,kBAGhD,KAAK,YAAc,KAAK,iBAG9B,EACA,QAAS,CACP,EAAAwG,EACJ,CACA,EACM7V,GAAa,CAAC,KAAK,EACnBC,GAAa,CAAC,UAAU,EAC9B,SAASG,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,MAAMgW,EAAyBrB,EAAiB,aAAa,EACvDsB,EAAgCtB,EAAiB,oBAAoB,EACrEuB,EAA2BvB,EAAiB,eAAe,EAC3DwB,EAAuBxB,EAAiB,WAAW,EACzD,OAAO1U,EAAS,EAAIkT,EAAYgD,EAAsBhW,EAAW,CAC/D,MAAO,CAAC,SAAU,CAChB,iBAAkBL,EAAO,SACzB,kBAAmBD,EAAO,MAChC,CAAK,CACL,EAAKG,EAAS,eAAgB,CAC1B,SAAUJ,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKQ,GAAWL,EAAM,OAASK,GAC/D,sBAAuBR,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKQ,GAAWT,EAAK,MAAM,oBAAqBS,CAAM,EACvG,CAAG,EAAGgW,GAAY,CACd,OAAQ1C,EAAQ,CAAC,CAAE,WAAA2C,EAAY,OAAAC,CAAM,IAAO,CAC1CjW,EAAmB,QAASF,EAAW,CACrC,MAAO,CAAC,aAAc,CAACN,EAAO,UAAU,CAAC,CACjD,EAASwW,EAAY,CACb,SAAUrW,EAAS,cACnB,IAAK,MACb,EAASqT,GAAWiD,EAAQ,EAAI,CAAC,EAAG,KAAM,GAAI/W,EAAU,CACxD,CAAK,EACD,iBAAkBmU,EAAQ,CAAC,CAAE,WAAA2C,KAAiB,CAC5C7C,EAAYwC,EAAwB7V,EAAWkW,EAAY,CACzD,UAAW,2BACX,MAAO,CACL,OAASxW,EAAO,SAAuB,KAAZ,SACrC,EACQ,KAAM,EACd,CAAO,EAAG,KAAM,GAAI,CAAC,OAAO,CAAC,CAC7B,CAAK,EACD,OAAQ6T,EAAS/D,GAAW,CAC1B+C,EAAW/S,EAAK,OAAQ,SAAUgT,EAAeC,EAAmBjD,CAAM,CAAC,EAAG,IAAM,CAClF6D,EAAYyC,EAA+B,CACzC,KAAM,OAAOtG,EAAO3P,EAAS,UAAU,CAAC,EACxC,OAAQD,EAAM,MACxB,EAAW,KAAM,EAAG,CAAC,OAAQ,QAAQ,CAAC,CACtC,CAAO,CACP,CAAK,EACD,kBAAmB2T,EAAS6C,GAAmB,CAC7C7D,EAAW/S,EAAK,OAAQ,kBAAmBgT,EAAeC,EAAmB2D,CAAc,CAAC,EAAG,IAAM,CACnG/C,EAAYyC,EAA+B,CACzC,KAAM,OAAOM,EAAevW,EAAS,UAAU,CAAC,EAChD,OAAQD,EAAM,MACxB,EAAW,KAAM,EAAG,CAAC,OAAQ,QAAQ,CAAC,CACtC,CAAO,CACP,CAAK,EACD,QAAS2T,EAAS8C,GAAY,CAC5BA,EAAQ,SAAWvW,EAAS,EAAIkT,EAAY+C,EAA0B,CAAE,IAAK,CAAC,CAAE,GAAK3V,EAAmB,GAAI,EAAI,CACtH,CAAK,EACD,aAAcmT,EAAQ,IAAM,CAC1BV,EAAgB1S,EAAgBN,EAAS,EAAE,YAAY,CAAC,EAAG,CAAC,CAClE,CAAK,EACD,EAAG,CACP,EAAK,CACD,CAACH,EAAO,cAAgBA,EAAO,WAAa,CAC1C,KAAM,SACN,GAAI6T,EAAQ,IAAM,CAChBrT,EAAmB,QAAS,CAC1B,IAAKR,EAAO,QACZ,MAAO,eACjB,EAAWS,EAAgBT,EAAO,UAAU,EAAG,EAAGP,EAAU,CAC5D,CAAO,EACD,IAAK,GACX,EAAQ,OACJyT,GAAWpT,EAAK,OAAQ,CAAC8W,EAAGC,KACnB,CACL,KAAAA,EACA,GAAIhD,EAAS/J,GAAS,CACpB+I,EAAW/S,EAAK,OAAQ+W,EAAM/D,EAAeC,EAAmBjJ,CAAI,CAAC,CAAC,CAChF,CAAS,CACT,EACK,CACL,CAAG,EAAG,KAAM,CAAC,OAAO,CAAC,CACrB,CACK,MAACgN,GAA2BlW,GAAYpB,GAAW,CAAC,CAAC,SAAUK,EAAW,CAAC,CAAC","x_google_ignoreList":[0,1,2,3,4,5,6,7]}