{"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { r as registerInstance, h, f as Host, i as getElement, d as createEvent, e as readTask, j as forceUpdate, w as writeTask } from './index-28849c61.js';\nimport { shouldUseCloseWatcher } from './hardware-back-button-06ef3c3e.js';\nimport { p as printIonWarning } from './index-9b0d46f4.js';\nimport { b as getIonMode, c as config, a as isPlatform } from './ionic-global-c81d82ab.js';\nimport { i as inheritAriaAttributes, k as hasLazyBuild, c as componentOnReady, j as clamp, s as shallowEqualStringMap } from './helpers-da915de8.js';\nimport { i as isRTL } from './dir-babeabeb.js';\nimport { c as createColorClasses, h as hostContext } from './theme-01f3f29c.js';\nimport { a as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-5cc724f3.js';\nimport { c as createKeyboardController } from './keyboard-controller-ec5c2bfa.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';\nimport { a as attachComponent, d as detachComponent } from './framework-delegate-63d1a679.js';\nimport { c as createLockController } from './lock-controller-316928be.js';\nimport { t as transition } from './index-3ad7f18b.js';\nimport './index-a5d50daf.js';\nimport './keyboard-73175e24.js';\nimport './capacitor-59395cbd.js';\nconst appCss = \"html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}\";\nconst IonAppStyle0 = appCss;\nconst App = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n componentDidLoad() {\n var _this = this;\n {\n rIC( /*#__PURE__*/_asyncToGenerator(function* () {\n const isHybrid = isPlatform(window, 'hybrid');\n if (!config.getBoolean('_testing')) {\n import('./index-79b30591.js').then(module => module.startTapClick(config));\n }\n if (config.getBoolean('statusTap', isHybrid)) {\n import('./status-tap-f472b09f.js').then(module => module.startStatusTap());\n }\n if (config.getBoolean('inputShims', needInputShims())) {\n /**\n * needInputShims() ensures that only iOS and Android\n * platforms proceed into this block.\n */\n const platform = isPlatform(window, 'ios') ? 'ios' : 'android';\n import('./input-shims-0314bbe5.js').then(module => module.startInputShims(config, platform));\n }\n const hardwareBackButtonModule = yield import('./hardware-back-button-06ef3c3e.js');\n const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();\n if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {\n hardwareBackButtonModule.startHardwareBackButton();\n } else {\n /**\n * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true\n * then the close watcher will not be used.\n */\n if (shouldUseCloseWatcher()) {\n printIonWarning('experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');\n }\n hardwareBackButtonModule.blockHardwareBackButton();\n }\n if (typeof window !== 'undefined') {\n import('./keyboard-52278bd7.js').then(module => module.startKeyboardAssist(window));\n }\n import('./focus-visible-dd40d69f.js').then(module => _this.focusVisible = module.startFocusVisible());\n }));\n }\n }\n /**\n * Used to set focus on an element that uses `ion-focusable`.\n * Do not use this if focusing the element as a result of a keyboard\n * event as the focus utility should handle this for us. This method\n * should be used when we want to programmatically focus an element as\n * a result of another user action. (Ex: We focus the first element\n * inside of a popover when the user presents it, but the popover is not always\n * presented as a result of keyboard action.)\n */\n setFocus(elements) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n if (_this2.focusVisible) {\n _this2.focusVisible.setFocus(elements);\n }\n })();\n }\n render() {\n const mode = getIonMode(this);\n return h(Host, {\n key: '96715520fd05d6f0e6fa26a8ba78792cfccd4c0a',\n class: {\n [mode]: true,\n 'ion-page': true,\n 'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding')\n }\n });\n }\n get el() {\n return getElement(this);\n }\n};\nconst needInputShims = () => {\n /**\n * iOS always needs input shims\n */\n const needsShimsIOS = isPlatform(window, 'ios') && isPlatform(window, 'mobile');\n if (needsShimsIOS) {\n return true;\n }\n /**\n * Android only needs input shims when running\n * in the browser and only if the browser is using the\n * new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/\n */\n const isAndroidMobileWeb = isPlatform(window, 'android') && isPlatform(window, 'mobileweb');\n if (isAndroidMobileWeb) {\n return true;\n }\n return false;\n};\nconst rIC = callback => {\n if ('requestIdleCallback' in window) {\n window.requestIdleCallback(callback);\n } else {\n setTimeout(callback, 32);\n }\n};\nApp.style = IonAppStyle0;\nconst buttonsIosCss = \".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}\";\nconst IonButtonsIosStyle0 = buttonsIosCss;\nconst buttonsMdCss = \".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}\";\nconst IonButtonsMdStyle0 = buttonsMdCss;\nconst Buttons = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.collapse = false;\n }\n render() {\n const mode = getIonMode(this);\n return h(Host, {\n key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b',\n class: {\n [mode]: true,\n ['buttons-collapse']: this.collapse\n }\n }, h(\"slot\", {\n key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8'\n }));\n }\n};\nButtons.style = {\n ios: IonButtonsIosStyle0,\n md: IonButtonsMdStyle0\n};\nconst contentCss = \":host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:\\\"\\\"}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}\";\nconst IonContentStyle0 = contentCss;\nconst Content = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionScrollStart = createEvent(this, \"ionScrollStart\", 7);\n this.ionScroll = createEvent(this, \"ionScroll\", 7);\n this.ionScrollEnd = createEvent(this, \"ionScrollEnd\", 7);\n this.watchDog = null;\n this.isScrolling = false;\n this.lastScroll = 0;\n this.queued = false;\n this.cTop = -1;\n this.cBottom = -1;\n this.isMainContent = true;\n this.resizeTimeout = null;\n this.inheritedAttributes = {};\n this.tabsElement = null;\n // Detail is used in a hot loop in the scroll event, by allocating it here\n // V8 will be able to inline any read/write to it since it's a monomorphic class.\n // https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html\n this.detail = {\n scrollTop: 0,\n scrollLeft: 0,\n type: 'scroll',\n event: undefined,\n startX: 0,\n startY: 0,\n startTime: 0,\n currentX: 0,\n currentY: 0,\n velocityX: 0,\n velocityY: 0,\n deltaX: 0,\n deltaY: 0,\n currentTime: 0,\n data: undefined,\n isScrolling: true\n };\n this.color = undefined;\n this.fullscreen = false;\n this.fixedSlotPlacement = 'after';\n this.forceOverscroll = undefined;\n this.scrollX = false;\n this.scrollY = true;\n this.scrollEvents = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n connectedCallback() {\n this.isMainContent = this.el.closest('ion-menu, ion-popover, ion-modal') === null;\n /**\n * The fullscreen content offsets need to be\n * computed after the tab bar has loaded. Since\n * lazy evaluation means components are not hydrated\n * at the same time, we need to wait for the ionTabBarLoaded\n * event to fire. This does not impact dist-custom-elements\n * because there is no hydration there.\n */\n if (hasLazyBuild(this.el)) {\n /**\n * We need to cache the reference to the tabs.\n * If just the content is unmounted then we won't\n * be able to query for the closest tabs on disconnectedCallback\n * since the content has been removed from the DOM tree.\n */\n const closestTabs = this.tabsElement = this.el.closest('ion-tabs');\n if (closestTabs !== null) {\n /**\n * When adding and removing the event listener\n * we need to make sure we pass the same function reference\n * otherwise the event listener will not be removed properly.\n * We can't only pass `this.resize` because \"this\" in the function\n * context becomes a reference to IonTabs instead of IonContent.\n *\n * Additionally, we listen for ionTabBarLoaded on the IonTabs\n * instance rather than the IonTabBar instance. It's possible for\n * a tab bar to be conditionally rendered/mounted. Since ionTabBarLoaded\n * bubbles, we can catch any instances of child tab bars loading by listening\n * on IonTabs.\n */\n this.tabsLoadCallback = () => this.resize();\n closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);\n }\n }\n }\n disconnectedCallback() {\n this.onScrollEnd();\n if (hasLazyBuild(this.el)) {\n /**\n * The event listener and tabs caches need to\n * be cleared otherwise this will create a memory\n * leak where the IonTabs instance can never be\n * garbage collected.\n */\n const {\n tabsElement,\n tabsLoadCallback\n } = this;\n if (tabsElement !== null && tabsLoadCallback !== undefined) {\n tabsElement.removeEventListener('ionTabBarLoaded', tabsLoadCallback);\n }\n this.tabsElement = null;\n this.tabsLoadCallback = undefined;\n }\n }\n /**\n * Rotating certain devices can update\n * the safe area insets. As a result,\n * the fullscreen feature on ion-content\n * needs to be recalculated.\n *\n * We listen for \"resize\" because we\n * do not care what the orientation of\n * the device is. Other APIs\n * such as ScreenOrientation or\n * the deviceorientation event must have\n * permission from the user first whereas\n * the \"resize\" event does not.\n *\n * We also throttle the callback to minimize\n * thrashing when quickly resizing a window.\n */\n onResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = null;\n }\n this.resizeTimeout = setTimeout(() => {\n /**\n * Resize should only happen\n * if the content is visible.\n * When the content is hidden\n * then offsetParent will be null.\n */\n if (this.el.offsetParent === null) {\n return;\n }\n this.resize();\n }, 100);\n }\n shouldForceOverscroll() {\n const {\n forceOverscroll\n } = this;\n const mode = getIonMode(this);\n return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;\n }\n resize() {\n /**\n * Only force update if the component is rendered in a browser context.\n * Using `forceUpdate` in a server context with pre-rendering can lead to an infinite loop.\n * The `hydrateDocument` function in `@stencil/core` will render the `ion-content`, but\n * `forceUpdate` will trigger another render, locking up the server.\n *\n * TODO: Remove if STENCIL-834 determines Stencil will account for this.\n */\n {\n if (this.fullscreen) {\n readTask(() => this.readDimensions());\n } else if (this.cTop !== 0 || this.cBottom !== 0) {\n this.cTop = this.cBottom = 0;\n forceUpdate(this);\n }\n }\n }\n readDimensions() {\n const page = getPageElement(this.el);\n const top = Math.max(this.el.offsetTop, 0);\n const bottom = Math.max(page.offsetHeight - top - this.el.offsetHeight, 0);\n const dirty = top !== this.cTop || bottom !== this.cBottom;\n if (dirty) {\n this.cTop = top;\n this.cBottom = bottom;\n forceUpdate(this);\n }\n }\n onScroll(ev) {\n const timeStamp = Date.now();\n const shouldStart = !this.isScrolling;\n this.lastScroll = timeStamp;\n if (shouldStart) {\n this.onScrollStart();\n }\n if (!this.queued && this.scrollEvents) {\n this.queued = true;\n readTask(ts => {\n this.queued = false;\n this.detail.event = ev;\n updateScrollDetail(this.detail, this.scrollEl, ts, shouldStart);\n this.ionScroll.emit(this.detail);\n });\n }\n }\n /**\n * Get the element where the actual scrolling takes place.\n * This element can be used to subscribe to `scroll` events or manually modify\n * `scrollTop`. However, it's recommended to use the API provided by `ion-content`:\n *\n * i.e. Using `ionScroll`, `ionScrollStart`, `ionScrollEnd` for scrolling events\n * and `scrollToPoint()` to scroll the content into a certain point.\n */\n getScrollElement() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n /**\n * If this gets called in certain early lifecycle hooks (ex: Vue onMounted),\n * scrollEl won't be defined yet with the custom elements build, so wait for it to load in.\n */\n if (!_this3.scrollEl) {\n yield new Promise(resolve => componentOnReady(_this3.el, resolve));\n }\n return Promise.resolve(_this3.scrollEl);\n })();\n }\n /**\n * Returns the background content element.\n * @internal\n */\n getBackgroundElement() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n if (!_this4.backgroundContentEl) {\n yield new Promise(resolve => componentOnReady(_this4.el, resolve));\n }\n return Promise.resolve(_this4.backgroundContentEl);\n })();\n }\n /**\n * Scroll to the top of the component.\n *\n * @param duration The amount of time to take scrolling to the top. Defaults to `0`.\n */\n scrollToTop(duration = 0) {\n return this.scrollToPoint(undefined, 0, duration);\n }\n /**\n * Scroll to the bottom of the component.\n *\n * @param duration The amount of time to take scrolling to the bottom. Defaults to `0`.\n */\n scrollToBottom(duration = 0) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n const scrollEl = yield _this5.getScrollElement();\n const y = scrollEl.scrollHeight - scrollEl.clientHeight;\n return _this5.scrollToPoint(undefined, y, duration);\n })();\n }\n /**\n * Scroll by a specified X/Y distance in the component.\n *\n * @param x The amount to scroll by on the horizontal axis.\n * @param y The amount to scroll by on the vertical axis.\n * @param duration The amount of time to take scrolling by that amount.\n */\n scrollByPoint(x, y, duration) {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n const scrollEl = yield _this6.getScrollElement();\n return _this6.scrollToPoint(x + scrollEl.scrollLeft, y + scrollEl.scrollTop, duration);\n })();\n }\n /**\n * Scroll to a specified X/Y location in the component.\n *\n * @param x The point to scroll to on the horizontal axis.\n * @param y The point to scroll to on the vertical axis.\n * @param duration The amount of time to take scrolling to that point. Defaults to `0`.\n */\n scrollToPoint(x, y, duration = 0) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n const el = yield _this7.getScrollElement();\n if (duration < 32) {\n if (y != null) {\n el.scrollTop = y;\n }\n if (x != null) {\n el.scrollLeft = x;\n }\n return;\n }\n let resolve;\n let startTime = 0;\n const promise = new Promise(r => resolve = r);\n const fromY = el.scrollTop;\n const fromX = el.scrollLeft;\n const deltaY = y != null ? y - fromY : 0;\n const deltaX = x != null ? x - fromX : 0;\n // scroll loop\n const step = timeStamp => {\n const linearTime = Math.min(1, (timeStamp - startTime) / duration) - 1;\n const easedT = Math.pow(linearTime, 3) + 1;\n if (deltaY !== 0) {\n el.scrollTop = Math.floor(easedT * deltaY + fromY);\n }\n if (deltaX !== 0) {\n el.scrollLeft = Math.floor(easedT * deltaX + fromX);\n }\n if (easedT < 1) {\n // do not use DomController here\n // must use nativeRaf in order to fire in the next frame\n requestAnimationFrame(step);\n } else {\n resolve();\n }\n };\n // chill out for a frame first\n requestAnimationFrame(ts => {\n startTime = ts;\n step(ts);\n });\n return promise;\n })();\n }\n onScrollStart() {\n this.isScrolling = true;\n this.ionScrollStart.emit({\n isScrolling: true\n });\n if (this.watchDog) {\n clearInterval(this.watchDog);\n }\n // watchdog\n this.watchDog = setInterval(() => {\n if (this.lastScroll < Date.now() - 120) {\n this.onScrollEnd();\n }\n }, 100);\n }\n onScrollEnd() {\n if (this.watchDog) clearInterval(this.watchDog);\n this.watchDog = null;\n if (this.isScrolling) {\n this.isScrolling = false;\n this.ionScrollEnd.emit({\n isScrolling: false\n });\n }\n }\n render() {\n const {\n fixedSlotPlacement,\n inheritedAttributes,\n isMainContent,\n scrollX,\n scrollY,\n el\n } = this;\n const rtl = isRTL(el) ? 'rtl' : 'ltr';\n const mode = getIonMode(this);\n const forceOverscroll = this.shouldForceOverscroll();\n const transitionShadow = mode === 'ios';\n this.resize();\n return h(Host, Object.assign({\n key: 'f2a24aa66dbf5c76f9d4b06f708eb73cadc239df',\n role: isMainContent ? 'main' : undefined,\n class: createColorClasses(this.color, {\n [mode]: true,\n 'content-sizing': hostContext('ion-popover', this.el),\n overscroll: forceOverscroll,\n [`content-${rtl}`]: true\n }),\n style: {\n '--offset-top': `${this.cTop}px`,\n '--offset-bottom': `${this.cBottom}px`\n }\n }, inheritedAttributes), h(\"div\", {\n key: '6480ca7648b278abb36477b3838bccbcd4995e2a',\n ref: el => this.backgroundContentEl = el,\n id: \"background-content\",\n part: \"background\"\n }), fixedSlotPlacement === 'before' ? h(\"slot\", {\n name: \"fixed\"\n }) : null, h(\"div\", {\n key: '29a23b663f5f0215bb000820c01e1814c0d55985',\n class: {\n 'inner-scroll': true,\n 'scroll-x': scrollX,\n 'scroll-y': scrollY,\n overscroll: (scrollX || scrollY) && forceOverscroll\n },\n ref: scrollEl => this.scrollEl = scrollEl,\n onScroll: this.scrollEvents ? ev => this.onScroll(ev) : undefined,\n part: \"scroll\"\n }, h(\"slot\", {\n key: '0fe1bd05609a4b88ae2ce9addf5d5dc5dc1806f0'\n })), transitionShadow ? h(\"div\", {\n class: \"transition-effect\"\n }, h(\"div\", {\n class: \"transition-cover\"\n }), h(\"div\", {\n class: \"transition-shadow\"\n })) : null, fixedSlotPlacement === 'after' ? h(\"slot\", {\n name: \"fixed\"\n }) : null);\n }\n get el() {\n return getElement(this);\n }\n};\nconst getParentElement = el => {\n var _a;\n if (el.parentElement) {\n // normal element with a parent element\n return el.parentElement;\n }\n if ((_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.host) {\n // shadow dom's document fragment\n return el.parentNode.host;\n }\n return null;\n};\nconst getPageElement = el => {\n const tabs = el.closest('ion-tabs');\n if (tabs) {\n return tabs;\n }\n /**\n * If we're in a popover, we need to use its wrapper so we can account for space\n * between the popover and the edges of the screen. But if the popover contains\n * its own page element, we should use that instead.\n */\n const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');\n if (page) {\n return page;\n }\n return getParentElement(el);\n};\n// ******** DOM READ ****************\nconst updateScrollDetail = (detail, el, timestamp, shouldStart) => {\n const prevX = detail.currentX;\n const prevY = detail.currentY;\n const prevT = detail.currentTime;\n const currentX = el.scrollLeft;\n const currentY = el.scrollTop;\n const timeDelta = timestamp - prevT;\n if (shouldStart) {\n // remember the start positions\n detail.startTime = timestamp;\n detail.startX = currentX;\n detail.startY = currentY;\n detail.velocityX = detail.velocityY = 0;\n }\n detail.currentTime = timestamp;\n detail.currentX = detail.scrollLeft = currentX;\n detail.currentY = detail.scrollTop = currentY;\n detail.deltaX = currentX - detail.startX;\n detail.deltaY = currentY - detail.startY;\n if (timeDelta > 0 && timeDelta < 100) {\n const velocityX = (currentX - prevX) / timeDelta;\n const velocityY = (currentY - prevY) / timeDelta;\n detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;\n detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;\n }\n};\nContent.style = IonContentStyle0;\nconst handleFooterFade = (scrollEl, baseEl) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const maxScroll = scrollEl.scrollHeight - scrollEl.clientHeight;\n /**\n * Toolbar background will fade\n * out over fadeDuration in pixels.\n */\n const fadeDuration = 10;\n /**\n * Begin fading out maxScroll - 30px\n * from the bottom of the content.\n * Also determine how close we are\n * to starting the fade. If we are\n * before the starting point, the\n * scale value will get clamped to 0.\n * If we are after the maxScroll (rubber\n * band scrolling), the scale value will\n * get clamped to 1.\n */\n const fadeStart = maxScroll - fadeDuration;\n const distanceToStart = scrollTop - fadeStart;\n const scale = clamp(0, 1 - distanceToStart / fadeDuration, 1);\n writeTask(() => {\n baseEl.style.setProperty('--opacity-scale', scale.toString());\n });\n });\n};\nconst footerIosCss = \"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}\";\nconst IonFooterIosStyle0 = footerIosCss;\nconst footerMdCss = \"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}\";\nconst IonFooterMdStyle0 = footerMdCss;\nconst Footer = class {\n constructor(hostRef) {\n var _this8 = this;\n registerInstance(this, hostRef);\n this.keyboardCtrl = null;\n this.checkCollapsibleFooter = () => {\n const mode = getIonMode(this);\n if (mode !== 'ios') {\n return;\n }\n const {\n collapse\n } = this;\n const hasFade = collapse === 'fade';\n this.destroyCollapsibleFooter();\n if (hasFade) {\n const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n if (!contentEl) {\n printIonContentErrorMsg(this.el);\n return;\n }\n this.setupFadeFooter(contentEl);\n }\n };\n this.setupFadeFooter = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(function* (contentEl) {\n const scrollEl = _this8.scrollEl = yield getScrollElement(contentEl);\n /**\n * Handle fading of toolbars on scroll\n */\n _this8.contentScrollCallback = () => {\n handleFooterFade(scrollEl, _this8.el);\n };\n scrollEl.addEventListener('scroll', _this8.contentScrollCallback);\n handleFooterFade(scrollEl, _this8.el);\n });\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n this.keyboardVisible = false;\n this.collapse = undefined;\n this.translucent = false;\n }\n componentDidLoad() {\n this.checkCollapsibleFooter();\n }\n componentDidUpdate() {\n this.checkCollapsibleFooter();\n }\n connectedCallback() {\n var _this9 = this;\n return _asyncToGenerator(function* () {\n _this9.keyboardCtrl = yield createKeyboardController( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(function* (keyboardOpen, waitForResize) {\n /**\n * If the keyboard is hiding, then we need to wait\n * for the webview to resize. Otherwise, the footer\n * will flicker before the webview resizes.\n */\n if (keyboardOpen === false && waitForResize !== undefined) {\n yield waitForResize;\n }\n _this9.keyboardVisible = keyboardOpen; // trigger re-render by updating state\n });\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n }());\n })();\n }\n disconnectedCallback() {\n if (this.keyboardCtrl) {\n this.keyboardCtrl.destroy();\n }\n }\n destroyCollapsibleFooter() {\n if (this.scrollEl && this.contentScrollCallback) {\n this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);\n this.contentScrollCallback = undefined;\n }\n }\n render() {\n const {\n translucent,\n collapse\n } = this;\n const mode = getIonMode(this);\n const tabs = this.el.closest('ion-tabs');\n const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');\n return h(Host, {\n key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137',\n role: \"contentinfo\",\n class: {\n [mode]: true,\n // Used internally for styling\n [`footer-${mode}`]: true,\n [`footer-translucent`]: translucent,\n [`footer-translucent-${mode}`]: translucent,\n ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),\n [`footer-collapse-${collapse}`]: collapse !== undefined\n }\n }, mode === 'ios' && translucent && h(\"div\", {\n key: 'e16ed4963ff94e06de77eb8038201820af73937c',\n class: \"footer-background\"\n }), h(\"slot\", {\n key: 'f186934febf85d37133d9351a96c1a64b0a4b203'\n }));\n }\n get el() {\n return getElement(this);\n }\n};\nFooter.style = {\n ios: IonFooterIosStyle0,\n md: IonFooterMdStyle0\n};\nconst TRANSITION = 'all 0.2s ease-in-out';\nconst cloneElement = tagName => {\n const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);\n if (getCachedEl !== null) {\n return getCachedEl;\n }\n const clonedEl = document.createElement(tagName);\n clonedEl.classList.add('ion-cloned-element');\n clonedEl.style.setProperty('display', 'none');\n document.body.appendChild(clonedEl);\n return clonedEl;\n};\nconst createHeaderIndex = headerEl => {\n if (!headerEl) {\n return;\n }\n const toolbars = headerEl.querySelectorAll('ion-toolbar');\n return {\n el: headerEl,\n toolbars: Array.from(toolbars).map(toolbar => {\n const ionTitleEl = toolbar.querySelector('ion-title');\n return {\n el: toolbar,\n background: toolbar.shadowRoot.querySelector('.toolbar-background'),\n ionTitleEl,\n innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,\n ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons'))\n };\n })\n };\n};\nconst handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const scale = clamp(1, 1 + -scrollTop / 500, 1.1);\n // Native refresher should not cause titles to scale\n const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');\n if (nativeRefresher === null) {\n writeTask(() => {\n scaleLargeTitles(scrollHeaderIndex.toolbars, scale);\n });\n }\n });\n};\nconst setToolbarBackgroundOpacity = (headerEl, opacity) => {\n /**\n * Fading in the backdrop opacity\n * should happen after the large title\n * has collapsed, so it is handled\n * by handleHeaderFade()\n */\n if (headerEl.collapse === 'fade') {\n return;\n }\n if (opacity === undefined) {\n headerEl.style.removeProperty('--opacity-scale');\n } else {\n headerEl.style.setProperty('--opacity-scale', opacity.toString());\n }\n};\nconst handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {\n if (!ev[0].isIntersecting) {\n return;\n }\n /**\n * There is a bug in Safari where overflow scrolling on a non-body element\n * does not always reset the scrollTop position to 0 when letting go. It will\n * set to 1 once the rubber band effect has ended. This causes the background to\n * appear slightly on certain app setups.\n *\n * Additionally, we check if user is rubber banding (scrolling is negative)\n * as this can mean they are using pull to refresh. Once the refresher starts,\n * the content is transformed which can cause the intersection observer to erroneously\n * fire here as well.\n */\n const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : (1 - ev[0].intersectionRatio) * 100 / 75;\n setToolbarBackgroundOpacity(mainHeaderIndex.el, scale === 1 ? undefined : scale);\n};\n/**\n * If toolbars are intersecting, hide the scrollable toolbar content\n * and show the primary toolbar content. If the toolbars are not intersecting,\n * hide the primary toolbar content and show the scrollable toolbar content\n */\nconst handleToolbarIntersection = (ev,\n// TODO(FW-2832): type (IntersectionObserverEntry[] triggers errors which should be sorted)\nmainHeaderIndex, scrollHeaderIndex, scrollEl) => {\n writeTask(() => {\n const scrollTop = scrollEl.scrollTop;\n handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);\n const event = ev[0];\n const intersection = event.intersectionRect;\n const intersectionArea = intersection.width * intersection.height;\n const rootArea = event.rootBounds.width * event.rootBounds.height;\n const isPageHidden = intersectionArea === 0 && rootArea === 0;\n const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);\n const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);\n const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);\n if (isPageHidden || isPageTransitioning) {\n return;\n }\n if (event.isIntersecting) {\n setHeaderActive(mainHeaderIndex, false);\n setHeaderActive(scrollHeaderIndex);\n } else {\n /**\n * There is a bug with IntersectionObserver on Safari\n * where `event.isIntersecting === false` when cancelling\n * a swipe to go back gesture. Checking the intersection\n * x, y, width, and height provides a workaround. This bug\n * does not happen when using Safari + Web Animations,\n * only Safari + CSS Animations.\n */\n const hasValidIntersection = intersection.x === 0 && intersection.y === 0 || intersection.width !== 0 && intersection.height !== 0;\n if (hasValidIntersection && scrollTop > 0) {\n setHeaderActive(mainHeaderIndex);\n setHeaderActive(scrollHeaderIndex, false);\n setToolbarBackgroundOpacity(mainHeaderIndex.el);\n }\n }\n });\n};\nconst setHeaderActive = (headerIndex, active = true) => {\n const headerEl = headerIndex.el;\n if (active) {\n headerEl.classList.remove('header-collapse-condense-inactive');\n headerEl.removeAttribute('aria-hidden');\n } else {\n headerEl.classList.add('header-collapse-condense-inactive');\n headerEl.setAttribute('aria-hidden', 'true');\n }\n};\nconst scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {\n toolbars.forEach(toolbar => {\n const ionTitle = toolbar.ionTitleEl;\n const titleDiv = toolbar.innerTitleEl;\n if (!ionTitle || ionTitle.size !== 'large') {\n return;\n }\n titleDiv.style.transition = transition ? TRANSITION : '';\n titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;\n });\n};\nconst handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const baseElHeight = baseEl.clientHeight;\n const fadeStart = condenseHeader ? condenseHeader.clientHeight : 0;\n /**\n * If we are using fade header with a condense\n * header, then the toolbar backgrounds should\n * not begin to fade in until the condense\n * header has fully collapsed.\n *\n * Additionally, the main content should not\n * overflow out of the container until the\n * condense header has fully collapsed. When\n * using just the condense header the content\n * should overflow out of the container.\n */\n if (condenseHeader !== null && scrollTop < fadeStart) {\n baseEl.style.setProperty('--opacity-scale', '0');\n scrollEl.style.setProperty('clip-path', `inset(${baseElHeight}px 0px 0px 0px)`);\n return;\n }\n const distanceToStart = scrollTop - fadeStart;\n const fadeDuration = 10;\n const scale = clamp(0, distanceToStart / fadeDuration, 1);\n writeTask(() => {\n scrollEl.style.removeProperty('clip-path');\n baseEl.style.setProperty('--opacity-scale', scale.toString());\n });\n });\n};\nconst headerIosCss = \"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}\";\nconst IonHeaderIosStyle0 = headerIosCss;\nconst headerMdCss = \"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}\";\nconst IonHeaderMdStyle0 = headerMdCss;\nconst Header = class {\n constructor(hostRef) {\n var _this10 = this;\n registerInstance(this, hostRef);\n this.inheritedAttributes = {};\n this.setupFadeHeader = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(function* (contentEl, condenseHeader) {\n const scrollEl = _this10.scrollEl = yield getScrollElement(contentEl);\n /**\n * Handle fading of toolbars on scroll\n */\n _this10.contentScrollCallback = () => {\n handleHeaderFade(_this10.scrollEl, _this10.el, condenseHeader);\n };\n scrollEl.addEventListener('scroll', _this10.contentScrollCallback);\n handleHeaderFade(_this10.scrollEl, _this10.el, condenseHeader);\n });\n return function (_x4, _x5) {\n return _ref4.apply(this, arguments);\n };\n }();\n this.collapse = undefined;\n this.translucent = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n componentDidLoad() {\n this.checkCollapsibleHeader();\n }\n componentDidUpdate() {\n this.checkCollapsibleHeader();\n }\n disconnectedCallback() {\n this.destroyCollapsibleHeader();\n }\n checkCollapsibleHeader() {\n var _this11 = this;\n return _asyncToGenerator(function* () {\n const mode = getIonMode(_this11);\n if (mode !== 'ios') {\n return;\n }\n const {\n collapse\n } = _this11;\n const hasCondense = collapse === 'condense';\n const hasFade = collapse === 'fade';\n _this11.destroyCollapsibleHeader();\n if (hasCondense) {\n const pageEl = _this11.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n // Cloned elements are always needed in iOS transition\n writeTask(() => {\n const title = cloneElement('ion-title');\n title.size = 'large';\n cloneElement('ion-back-button');\n });\n yield _this11.setupCondenseHeader(contentEl, pageEl);\n } else if (hasFade) {\n const pageEl = _this11.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n if (!contentEl) {\n printIonContentErrorMsg(_this11.el);\n return;\n }\n const condenseHeader = contentEl.querySelector('ion-header[collapse=\"condense\"]');\n yield _this11.setupFadeHeader(contentEl, condenseHeader);\n }\n })();\n }\n destroyCollapsibleHeader() {\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n this.intersectionObserver = undefined;\n }\n if (this.scrollEl && this.contentScrollCallback) {\n this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);\n this.contentScrollCallback = undefined;\n }\n if (this.collapsibleMainHeader) {\n this.collapsibleMainHeader.classList.remove('header-collapse-main');\n this.collapsibleMainHeader = undefined;\n }\n }\n setupCondenseHeader(contentEl, pageEl) {\n var _this12 = this;\n return _asyncToGenerator(function* () {\n if (!contentEl || !pageEl) {\n printIonContentErrorMsg(_this12.el);\n return;\n }\n if (typeof IntersectionObserver === 'undefined') {\n return;\n }\n _this12.scrollEl = yield getScrollElement(contentEl);\n const headers = pageEl.querySelectorAll('ion-header');\n _this12.collapsibleMainHeader = Array.from(headers).find(header => header.collapse !== 'condense');\n if (!_this12.collapsibleMainHeader) {\n return;\n }\n const mainHeaderIndex = createHeaderIndex(_this12.collapsibleMainHeader);\n const scrollHeaderIndex = createHeaderIndex(_this12.el);\n if (!mainHeaderIndex || !scrollHeaderIndex) {\n return;\n }\n setHeaderActive(mainHeaderIndex, false);\n setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);\n /**\n * Handle interaction between toolbar collapse and\n * showing/hiding content in the primary ion-header\n * as well as progressively showing/hiding the main header\n * border as the top-most toolbar collapses or expands.\n */\n const toolbarIntersection = ev => {\n handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, _this12.scrollEl);\n };\n _this12.intersectionObserver = new IntersectionObserver(toolbarIntersection, {\n root: contentEl,\n threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]\n });\n _this12.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);\n /**\n * Handle scaling of large iOS titles and\n * showing/hiding border on last toolbar\n * in primary header\n */\n _this12.contentScrollCallback = () => {\n handleContentScroll(_this12.scrollEl, scrollHeaderIndex, contentEl);\n };\n _this12.scrollEl.addEventListener('scroll', _this12.contentScrollCallback);\n writeTask(() => {\n if (_this12.collapsibleMainHeader !== undefined) {\n _this12.collapsibleMainHeader.classList.add('header-collapse-main');\n }\n });\n })();\n }\n render() {\n const {\n translucent,\n inheritedAttributes\n } = this;\n const mode = getIonMode(this);\n const collapse = this.collapse || 'none';\n // banner role must be at top level, so remove role if inside a menu\n const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';\n return h(Host, Object.assign({\n key: 'b6cc27f0b08afc9fcc889683525da765d80ba672',\n role: roleType,\n class: {\n [mode]: true,\n // Used internally for styling\n [`header-${mode}`]: true,\n [`header-translucent`]: this.translucent,\n [`header-collapse-${collapse}`]: true,\n [`header-translucent-${mode}`]: this.translucent\n }\n }, inheritedAttributes), mode === 'ios' && translucent && h(\"div\", {\n key: '395766d4dcee3398bc91960db21f922095292f14',\n class: \"header-background\"\n }), h(\"slot\", {\n key: '09a67ece27b258ff1248805d43d92a49b2c6859a'\n }));\n }\n get el() {\n return getElement(this);\n }\n};\nHeader.style = {\n ios: IonHeaderIosStyle0,\n md: IonHeaderMdStyle0\n};\nconst routerOutletCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}\";\nconst IonRouterOutletStyle0 = routerOutletCss;\nconst RouterOutlet = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n this.lockController = createLockController();\n this.gestureOrAnimationInProgress = false;\n this.mode = getIonMode(this);\n this.delegate = undefined;\n this.animated = true;\n this.animation = undefined;\n this.swipeHandler = undefined;\n }\n swipeHandlerChanged() {\n if (this.gesture) {\n this.gesture.enable(this.swipeHandler !== undefined);\n }\n }\n connectedCallback() {\n var _this13 = this;\n return _asyncToGenerator(function* () {\n const onStart = () => {\n _this13.gestureOrAnimationInProgress = true;\n if (_this13.swipeHandler) {\n _this13.swipeHandler.onStart();\n }\n };\n _this13.gesture = (yield import('./swipe-back-e5394307.js')).createSwipeBackGesture(_this13.el, () => !_this13.gestureOrAnimationInProgress && !!_this13.swipeHandler && _this13.swipeHandler.canStart(), () => onStart(), step => {\n var _a;\n return (_a = _this13.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step);\n }, (shouldComplete, step, dur) => {\n if (_this13.ani) {\n _this13.ani.onFinish(() => {\n _this13.gestureOrAnimationInProgress = false;\n if (_this13.swipeHandler) {\n _this13.swipeHandler.onEnd(shouldComplete);\n }\n }, {\n oneTimeCallback: true\n });\n // Account for rounding errors in JS\n let newStepValue = shouldComplete ? -0.001 : 0.001;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n if (!shouldComplete) {\n _this13.ani.easing('cubic-bezier(1, 0, 0.68, 0.28)');\n newStepValue += getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], step)[0];\n } else {\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], step)[0];\n }\n _this13.ani.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n } else {\n _this13.gestureOrAnimationInProgress = false;\n }\n });\n _this13.swipeHandlerChanged();\n })();\n }\n componentWillLoad() {\n this.ionNavWillLoad.emit();\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n /** @internal */\n commit(enteringEl, leavingEl, opts) {\n var _this14 = this;\n return _asyncToGenerator(function* () {\n const unlock = yield _this14.lockController.lock();\n let changed = false;\n try {\n changed = yield _this14.transition(enteringEl, leavingEl, opts);\n } catch (e) {\n console.error(e);\n }\n unlock();\n return changed;\n })();\n }\n /** @internal */\n setRouteId(id, params, direction, animation) {\n var _this15 = this;\n return _asyncToGenerator(function* () {\n const changed = yield _this15.setRoot(id, params, {\n duration: direction === 'root' ? 0 : undefined,\n direction: direction === 'back' ? 'back' : 'forward',\n animationBuilder: animation\n });\n return {\n changed,\n element: _this15.activeEl\n };\n })();\n }\n /** @internal */\n getRouteId() {\n var _this16 = this;\n return _asyncToGenerator(function* () {\n const active = _this16.activeEl;\n return active ? {\n id: active.tagName,\n element: active,\n params: _this16.activeParams\n } : undefined;\n })();\n }\n setRoot(component, params, opts) {\n var _this17 = this;\n return _asyncToGenerator(function* () {\n if (_this17.activeComponent === component && shallowEqualStringMap(params, _this17.activeParams)) {\n return false;\n }\n // attach entering view to DOM\n const leavingEl = _this17.activeEl;\n const enteringEl = yield attachComponent(_this17.delegate, _this17.el, component, ['ion-page', 'ion-page-invisible'], params);\n _this17.activeComponent = component;\n _this17.activeEl = enteringEl;\n _this17.activeParams = params;\n // commit animation\n yield _this17.commit(enteringEl, leavingEl, opts);\n yield detachComponent(_this17.delegate, leavingEl);\n return true;\n })();\n }\n transition(enteringEl, leavingEl, opts = {}) {\n var _this18 = this;\n return _asyncToGenerator(function* () {\n if (leavingEl === enteringEl) {\n return false;\n }\n // emit nav will change event\n _this18.ionNavWillChange.emit();\n const {\n el,\n mode\n } = _this18;\n const animated = _this18.animated && config.getBoolean('animated', true);\n const animationBuilder = opts.animationBuilder || _this18.animation || config.get('navAnimation');\n yield transition(Object.assign(Object.assign({\n mode,\n animated,\n enteringEl,\n leavingEl,\n baseEl: el,\n /**\n * We need to wait for all Stencil components\n * to be ready only when using the lazy\n * loaded bundle.\n */\n deepWait: hasLazyBuild(el),\n progressCallback: opts.progressAnimation ? ani => {\n /**\n * Because this progress callback is called asynchronously\n * it is possible for the gesture to start and end before\n * the animation is ever set. In that scenario, we should\n * immediately call progressEnd so that the transition promise\n * resolves and the gesture does not get locked up.\n */\n if (ani !== undefined && !_this18.gestureOrAnimationInProgress) {\n _this18.gestureOrAnimationInProgress = true;\n ani.onFinish(() => {\n _this18.gestureOrAnimationInProgress = false;\n if (_this18.swipeHandler) {\n _this18.swipeHandler.onEnd(false);\n }\n }, {\n oneTimeCallback: true\n });\n /**\n * Playing animation to beginning\n * with a duration of 0 prevents\n * any flickering when the animation\n * is later cleaned up.\n */\n ani.progressEnd(0, 0, 0);\n } else {\n _this18.ani = ani;\n }\n } : undefined\n }, opts), {\n animationBuilder\n }));\n // emit nav changed event\n _this18.ionNavDidChange.emit();\n return true;\n })();\n }\n render() {\n return h(\"slot\", {\n key: 'a70341f58d19df55de1dad00e3464388e446aa2a'\n });\n }\n get el() {\n return getElement(this);\n }\n static get watchers() {\n return {\n \"swipeHandler\": [\"swipeHandlerChanged\"]\n };\n }\n};\nRouterOutlet.style = IonRouterOutletStyle0;\nconst titleIosCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}\";\nconst IonTitleIosStyle0 = titleIosCss;\nconst titleMdCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}\";\nconst IonTitleMdStyle0 = titleMdCss;\nconst ToolbarTitle = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionStyle = createEvent(this, \"ionStyle\", 7);\n this.color = undefined;\n this.size = undefined;\n }\n sizeChanged() {\n this.emitStyle();\n }\n connectedCallback() {\n this.emitStyle();\n }\n emitStyle() {\n const size = this.getSize();\n this.ionStyle.emit({\n [`title-${size}`]: true\n });\n }\n getSize() {\n return this.size !== undefined ? this.size : 'default';\n }\n render() {\n const mode = getIonMode(this);\n const size = this.getSize();\n return h(Host, {\n key: '7293d2ecd6262feb0d8d769effbb208230baed89',\n class: createColorClasses(this.color, {\n [mode]: true,\n [`title-${size}`]: true,\n 'title-rtl': document.dir === 'rtl'\n })\n }, h(\"div\", {\n key: '086ec3a361ebdf6506846a8704b457cda3a6f897',\n class: \"toolbar-title\"\n }, h(\"slot\", {\n key: '59add7eb92b82d6832a8f0894f897c51fdf4f214'\n })));\n }\n get el() {\n return getElement(this);\n }\n static get watchers() {\n return {\n \"size\": [\"sizeChanged\"]\n };\n }\n};\nToolbarTitle.style = {\n ios: IonTitleIosStyle0,\n md: IonTitleMdStyle0\n};\nconst toolbarIosCss = \":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}\";\nconst IonToolbarIosStyle0 = toolbarIosCss;\nconst toolbarMdCss = \":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}\";\nconst IonToolbarMdStyle0 = toolbarMdCss;\nconst Toolbar = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.childrenStyles = new Map();\n this.color = undefined;\n }\n componentWillLoad() {\n const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));\n const firstButtons = buttons.find(button => {\n return button.slot === 'start';\n });\n if (firstButtons) {\n firstButtons.classList.add('buttons-first-slot');\n }\n const buttonsReversed = buttons.reverse();\n const lastButtons = buttonsReversed.find(button => button.slot === 'end') || buttonsReversed.find(button => button.slot === 'primary') || buttonsReversed.find(button => button.slot === 'secondary');\n if (lastButtons) {\n lastButtons.classList.add('buttons-last-slot');\n }\n }\n childrenStyle(ev) {\n ev.stopPropagation();\n const tagName = ev.target.tagName;\n const updatedStyles = ev.detail;\n const newStyles = {};\n const childStyles = this.childrenStyles.get(tagName) || {};\n let hasStyleChange = false;\n Object.keys(updatedStyles).forEach(key => {\n const childKey = `toolbar-${key}`;\n const newValue = updatedStyles[key];\n if (newValue !== childStyles[childKey]) {\n hasStyleChange = true;\n }\n if (newValue) {\n newStyles[childKey] = true;\n }\n });\n if (hasStyleChange) {\n this.childrenStyles.set(tagName, newStyles);\n forceUpdate(this);\n }\n }\n render() {\n const mode = getIonMode(this);\n const childStyles = {};\n this.childrenStyles.forEach(value => {\n Object.assign(childStyles, value);\n });\n return h(Host, {\n key: '462538a5ecd01baf3cde116c9f029aeda26c81be',\n class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {\n [mode]: true,\n 'in-toolbar': hostContext('ion-toolbar', this.el)\n }))\n }, h(\"div\", {\n key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b',\n class: \"toolbar-background\"\n }), h(\"div\", {\n key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2',\n class: \"toolbar-container\"\n }, h(\"slot\", {\n key: '3e726dac359e923df21d80301651f16063a3de20',\n name: \"start\"\n }), h(\"slot\", {\n key: 'cd799330b56a7f8833bc61bb2807aafb21846f71',\n name: \"secondary\"\n }), h(\"div\", {\n key: '395282e6ac8c53576922dcdb5f08c25d34638c86',\n class: \"toolbar-content\"\n }, h(\"slot\", {\n key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d'\n })), h(\"slot\", {\n key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca',\n name: \"primary\"\n }), h(\"slot\", {\n key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a',\n name: \"end\"\n })));\n }\n get el() {\n return getElement(this);\n }\n};\nToolbar.style = {\n ios: IonToolbarIosStyle0,\n md: IonToolbarMdStyle0\n};\nexport { App as ion_app, Buttons as ion_buttons, Content as ion_content, Footer as ion_footer, Header as ion_header, RouterOutlet as ion_router_outlet, ToolbarTitle as ion_title, Toolbar as ion_toolbar };","map":{"version":3,"names":["r","registerInstance","h","f","Host","i","getElement","d","createEvent","e","readTask","j","forceUpdate","w","writeTask","shouldUseCloseWatcher","p","printIonWarning","b","getIonMode","c","config","a","isPlatform","inheritAriaAttributes","k","hasLazyBuild","componentOnReady","clamp","s","shallowEqualStringMap","isRTL","createColorClasses","hostContext","findIonContent","printIonContentErrorMsg","g","getScrollElement","createKeyboardController","getTimeGivenProgression","attachComponent","detachComponent","createLockController","t","transition","appCss","IonAppStyle0","App","constructor","hostRef","componentDidLoad","_this","rIC","_asyncToGenerator","isHybrid","window","getBoolean","then","module","startTapClick","startStatusTap","needInputShims","platform","startInputShims","hardwareBackButtonModule","supportsHardwareBackButtonEvents","startHardwareBackButton","blockHardwareBackButton","startKeyboardAssist","focusVisible","startFocusVisible","setFocus","elements","_this2","render","mode","key","class","el","needsShimsIOS","isAndroidMobileWeb","callback","requestIdleCallback","setTimeout","style","buttonsIosCss","IonButtonsIosStyle0","buttonsMdCss","IonButtonsMdStyle0","Buttons","collapse","ios","md","contentCss","IonContentStyle0","Content","ionScrollStart","ionScroll","ionScrollEnd","watchDog","isScrolling","lastScroll","queued","cTop","cBottom","isMainContent","resizeTimeout","inheritedAttributes","tabsElement","detail","scrollTop","scrollLeft","type","event","undefined","startX","startY","startTime","currentX","currentY","velocityX","velocityY","deltaX","deltaY","currentTime","data","color","fullscreen","fixedSlotPlacement","forceOverscroll","scrollX","scrollY","scrollEvents","componentWillLoad","connectedCallback","closest","closestTabs","tabsLoadCallback","resize","addEventListener","disconnectedCallback","onScrollEnd","removeEventListener","onResize","clearTimeout","offsetParent","shouldForceOverscroll","readDimensions","page","getPageElement","top","Math","max","offsetTop","bottom","offsetHeight","dirty","onScroll","ev","timeStamp","Date","now","shouldStart","onScrollStart","ts","updateScrollDetail","scrollEl","emit","_this3","Promise","resolve","getBackgroundElement","_this4","backgroundContentEl","scrollToTop","duration","scrollToPoint","scrollToBottom","_this5","y","scrollHeight","clientHeight","scrollByPoint","x","_this6","_this7","promise","fromY","fromX","step","linearTime","min","easedT","pow","floor","requestAnimationFrame","clearInterval","setInterval","rtl","transitionShadow","Object","assign","role","overscroll","ref","id","part","name","getParentElement","_a","parentElement","parentNode","host","tabs","timestamp","prevX","prevY","prevT","timeDelta","handleFooterFade","baseEl","maxScroll","fadeDuration","fadeStart","distanceToStart","scale","setProperty","toString","footerIosCss","IonFooterIosStyle0","footerMdCss","IonFooterMdStyle0","Footer","_this8","keyboardCtrl","checkCollapsibleFooter","hasFade","destroyCollapsibleFooter","pageEl","contentEl","setupFadeFooter","_ref2","contentScrollCallback","_x","apply","arguments","keyboardVisible","translucent","componentDidUpdate","_this9","_ref3","keyboardOpen","waitForResize","_x2","_x3","destroy","tabBar","querySelector","slot","TRANSITION","cloneElement","tagName","getCachedEl","document","clonedEl","createElement","classList","add","body","appendChild","createHeaderIndex","headerEl","toolbars","querySelectorAll","Array","from","map","toolbar","ionTitleEl","background","shadowRoot","innerTitleEl","ionButtonsEl","handleContentScroll","scrollHeaderIndex","nativeRefresher","scaleLargeTitles","setToolbarBackgroundOpacity","opacity","removeProperty","handleToolbarBorderIntersection","mainHeaderIndex","isIntersecting","intersectionRatio","handleToolbarIntersection","intersection","intersectionRect","intersectionArea","width","height","rootArea","rootBounds","isPageHidden","leftDiff","abs","left","boundingClientRect","rightDiff","right","isPageTransitioning","setHeaderActive","hasValidIntersection","headerIndex","active","remove","removeAttribute","setAttribute","forEach","ionTitle","titleDiv","size","transform","handleHeaderFade","condenseHeader","baseElHeight","headerIosCss","IonHeaderIosStyle0","headerMdCss","IonHeaderMdStyle0","Header","_this10","setupFadeHeader","_ref4","_x4","_x5","checkCollapsibleHeader","destroyCollapsibleHeader","_this11","hasCondense","title","setupCondenseHeader","intersectionObserver","disconnect","collapsibleMainHeader","_this12","IntersectionObserver","headers","find","header","toolbarIntersection","root","threshold","observe","length","roleType","routerOutletCss","IonRouterOutletStyle0","RouterOutlet","ionNavWillLoad","ionNavWillChange","ionNavDidChange","lockController","gestureOrAnimationInProgress","delegate","animated","animation","swipeHandler","swipeHandlerChanged","gesture","enable","_this13","onStart","createSwipeBackGesture","canStart","ani","progressStep","shouldComplete","dur","onFinish","onEnd","oneTimeCallback","newStepValue","easing","progressEnd","commit","enteringEl","leavingEl","opts","_this14","unlock","lock","changed","console","error","setRouteId","params","direction","_this15","setRoot","animationBuilder","element","activeEl","getRouteId","_this16","activeParams","component","_this17","activeComponent","_this18","get","deepWait","progressCallback","progressAnimation","watchers","titleIosCss","IonTitleIosStyle0","titleMdCss","IonTitleMdStyle0","ToolbarTitle","ionStyle","sizeChanged","emitStyle","getSize","dir","toolbarIosCss","IonToolbarIosStyle0","toolbarMdCss","IonToolbarMdStyle0","Toolbar","childrenStyles","Map","buttons","firstButtons","button","buttonsReversed","reverse","lastButtons","childrenStyle","stopPropagation","target","updatedStyles","newStyles","childStyles","hasStyleChange","keys","childKey","newValue","set","value","ion_app","ion_buttons","ion_content","ion_footer","ion_header","ion_router_outlet","ion_title","ion_toolbar"],"sources":["F:/workspace/huinongbao-app/node_modules/@ionic/core/dist/esm/ion-app_8.entry.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { r as registerInstance, h, f as Host, i as getElement, d as createEvent, e as readTask, j as forceUpdate, w as writeTask } from './index-28849c61.js';\nimport { shouldUseCloseWatcher } from './hardware-back-button-06ef3c3e.js';\nimport { p as printIonWarning } from './index-9b0d46f4.js';\nimport { b as getIonMode, c as config, a as isPlatform } from './ionic-global-c81d82ab.js';\nimport { i as inheritAriaAttributes, k as hasLazyBuild, c as componentOnReady, j as clamp, s as shallowEqualStringMap } from './helpers-da915de8.js';\nimport { i as isRTL } from './dir-babeabeb.js';\nimport { c as createColorClasses, h as hostContext } from './theme-01f3f29c.js';\nimport { a as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-5cc724f3.js';\nimport { c as createKeyboardController } from './keyboard-controller-ec5c2bfa.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';\nimport { a as attachComponent, d as detachComponent } from './framework-delegate-63d1a679.js';\nimport { c as createLockController } from './lock-controller-316928be.js';\nimport { t as transition } from './index-3ad7f18b.js';\nimport './index-a5d50daf.js';\nimport './keyboard-73175e24.js';\nimport './capacitor-59395cbd.js';\n\nconst appCss = \"html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}\";\nconst IonAppStyle0 = appCss;\n\nconst App = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n componentDidLoad() {\n {\n rIC(async () => {\n const isHybrid = isPlatform(window, 'hybrid');\n if (!config.getBoolean('_testing')) {\n import('./index-79b30591.js').then((module) => module.startTapClick(config));\n }\n if (config.getBoolean('statusTap', isHybrid)) {\n import('./status-tap-f472b09f.js').then((module) => module.startStatusTap());\n }\n if (config.getBoolean('inputShims', needInputShims())) {\n /**\n * needInputShims() ensures that only iOS and Android\n * platforms proceed into this block.\n */\n const platform = isPlatform(window, 'ios') ? 'ios' : 'android';\n import('./input-shims-0314bbe5.js').then((module) => module.startInputShims(config, platform));\n }\n const hardwareBackButtonModule = await import('./hardware-back-button-06ef3c3e.js');\n const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();\n if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {\n hardwareBackButtonModule.startHardwareBackButton();\n }\n else {\n /**\n * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true\n * then the close watcher will not be used.\n */\n if (shouldUseCloseWatcher()) {\n printIonWarning('experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');\n }\n hardwareBackButtonModule.blockHardwareBackButton();\n }\n if (typeof window !== 'undefined') {\n import('./keyboard-52278bd7.js').then((module) => module.startKeyboardAssist(window));\n }\n import('./focus-visible-dd40d69f.js').then((module) => (this.focusVisible = module.startFocusVisible()));\n });\n }\n }\n /**\n * Used to set focus on an element that uses `ion-focusable`.\n * Do not use this if focusing the element as a result of a keyboard\n * event as the focus utility should handle this for us. This method\n * should be used when we want to programmatically focus an element as\n * a result of another user action. (Ex: We focus the first element\n * inside of a popover when the user presents it, but the popover is not always\n * presented as a result of keyboard action.)\n */\n async setFocus(elements) {\n if (this.focusVisible) {\n this.focusVisible.setFocus(elements);\n }\n }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { key: '96715520fd05d6f0e6fa26a8ba78792cfccd4c0a', class: {\n [mode]: true,\n 'ion-page': true,\n 'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),\n } }));\n }\n get el() { return getElement(this); }\n};\nconst needInputShims = () => {\n /**\n * iOS always needs input shims\n */\n const needsShimsIOS = isPlatform(window, 'ios') && isPlatform(window, 'mobile');\n if (needsShimsIOS) {\n return true;\n }\n /**\n * Android only needs input shims when running\n * in the browser and only if the browser is using the\n * new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/\n */\n const isAndroidMobileWeb = isPlatform(window, 'android') && isPlatform(window, 'mobileweb');\n if (isAndroidMobileWeb) {\n return true;\n }\n return false;\n};\nconst rIC = (callback) => {\n if ('requestIdleCallback' in window) {\n window.requestIdleCallback(callback);\n }\n else {\n setTimeout(callback, 32);\n }\n};\nApp.style = IonAppStyle0;\n\nconst buttonsIosCss = \".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}\";\nconst IonButtonsIosStyle0 = buttonsIosCss;\n\nconst buttonsMdCss = \".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}\";\nconst IonButtonsMdStyle0 = buttonsMdCss;\n\nconst Buttons = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.collapse = false;\n }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {\n [mode]: true,\n ['buttons-collapse']: this.collapse,\n } }, h(\"slot\", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));\n }\n};\nButtons.style = {\n ios: IonButtonsIosStyle0,\n md: IonButtonsMdStyle0\n};\n\nconst contentCss = \":host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:\\\"\\\"}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}\";\nconst IonContentStyle0 = contentCss;\n\nconst Content = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionScrollStart = createEvent(this, \"ionScrollStart\", 7);\n this.ionScroll = createEvent(this, \"ionScroll\", 7);\n this.ionScrollEnd = createEvent(this, \"ionScrollEnd\", 7);\n this.watchDog = null;\n this.isScrolling = false;\n this.lastScroll = 0;\n this.queued = false;\n this.cTop = -1;\n this.cBottom = -1;\n this.isMainContent = true;\n this.resizeTimeout = null;\n this.inheritedAttributes = {};\n this.tabsElement = null;\n // Detail is used in a hot loop in the scroll event, by allocating it here\n // V8 will be able to inline any read/write to it since it's a monomorphic class.\n // https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html\n this.detail = {\n scrollTop: 0,\n scrollLeft: 0,\n type: 'scroll',\n event: undefined,\n startX: 0,\n startY: 0,\n startTime: 0,\n currentX: 0,\n currentY: 0,\n velocityX: 0,\n velocityY: 0,\n deltaX: 0,\n deltaY: 0,\n currentTime: 0,\n data: undefined,\n isScrolling: true,\n };\n this.color = undefined;\n this.fullscreen = false;\n this.fixedSlotPlacement = 'after';\n this.forceOverscroll = undefined;\n this.scrollX = false;\n this.scrollY = true;\n this.scrollEvents = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n connectedCallback() {\n this.isMainContent = this.el.closest('ion-menu, ion-popover, ion-modal') === null;\n /**\n * The fullscreen content offsets need to be\n * computed after the tab bar has loaded. Since\n * lazy evaluation means components are not hydrated\n * at the same time, we need to wait for the ionTabBarLoaded\n * event to fire. This does not impact dist-custom-elements\n * because there is no hydration there.\n */\n if (hasLazyBuild(this.el)) {\n /**\n * We need to cache the reference to the tabs.\n * If just the content is unmounted then we won't\n * be able to query for the closest tabs on disconnectedCallback\n * since the content has been removed from the DOM tree.\n */\n const closestTabs = (this.tabsElement = this.el.closest('ion-tabs'));\n if (closestTabs !== null) {\n /**\n * When adding and removing the event listener\n * we need to make sure we pass the same function reference\n * otherwise the event listener will not be removed properly.\n * We can't only pass `this.resize` because \"this\" in the function\n * context becomes a reference to IonTabs instead of IonContent.\n *\n * Additionally, we listen for ionTabBarLoaded on the IonTabs\n * instance rather than the IonTabBar instance. It's possible for\n * a tab bar to be conditionally rendered/mounted. Since ionTabBarLoaded\n * bubbles, we can catch any instances of child tab bars loading by listening\n * on IonTabs.\n */\n this.tabsLoadCallback = () => this.resize();\n closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);\n }\n }\n }\n disconnectedCallback() {\n this.onScrollEnd();\n if (hasLazyBuild(this.el)) {\n /**\n * The event listener and tabs caches need to\n * be cleared otherwise this will create a memory\n * leak where the IonTabs instance can never be\n * garbage collected.\n */\n const { tabsElement, tabsLoadCallback } = this;\n if (tabsElement !== null && tabsLoadCallback !== undefined) {\n tabsElement.removeEventListener('ionTabBarLoaded', tabsLoadCallback);\n }\n this.tabsElement = null;\n this.tabsLoadCallback = undefined;\n }\n }\n /**\n * Rotating certain devices can update\n * the safe area insets. As a result,\n * the fullscreen feature on ion-content\n * needs to be recalculated.\n *\n * We listen for \"resize\" because we\n * do not care what the orientation of\n * the device is. Other APIs\n * such as ScreenOrientation or\n * the deviceorientation event must have\n * permission from the user first whereas\n * the \"resize\" event does not.\n *\n * We also throttle the callback to minimize\n * thrashing when quickly resizing a window.\n */\n onResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = null;\n }\n this.resizeTimeout = setTimeout(() => {\n /**\n * Resize should only happen\n * if the content is visible.\n * When the content is hidden\n * then offsetParent will be null.\n */\n if (this.el.offsetParent === null) {\n return;\n }\n this.resize();\n }, 100);\n }\n shouldForceOverscroll() {\n const { forceOverscroll } = this;\n const mode = getIonMode(this);\n return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;\n }\n resize() {\n /**\n * Only force update if the component is rendered in a browser context.\n * Using `forceUpdate` in a server context with pre-rendering can lead to an infinite loop.\n * The `hydrateDocument` function in `@stencil/core` will render the `ion-content`, but\n * `forceUpdate` will trigger another render, locking up the server.\n *\n * TODO: Remove if STENCIL-834 determines Stencil will account for this.\n */\n {\n if (this.fullscreen) {\n readTask(() => this.readDimensions());\n }\n else if (this.cTop !== 0 || this.cBottom !== 0) {\n this.cTop = this.cBottom = 0;\n forceUpdate(this);\n }\n }\n }\n readDimensions() {\n const page = getPageElement(this.el);\n const top = Math.max(this.el.offsetTop, 0);\n const bottom = Math.max(page.offsetHeight - top - this.el.offsetHeight, 0);\n const dirty = top !== this.cTop || bottom !== this.cBottom;\n if (dirty) {\n this.cTop = top;\n this.cBottom = bottom;\n forceUpdate(this);\n }\n }\n onScroll(ev) {\n const timeStamp = Date.now();\n const shouldStart = !this.isScrolling;\n this.lastScroll = timeStamp;\n if (shouldStart) {\n this.onScrollStart();\n }\n if (!this.queued && this.scrollEvents) {\n this.queued = true;\n readTask((ts) => {\n this.queued = false;\n this.detail.event = ev;\n updateScrollDetail(this.detail, this.scrollEl, ts, shouldStart);\n this.ionScroll.emit(this.detail);\n });\n }\n }\n /**\n * Get the element where the actual scrolling takes place.\n * This element can be used to subscribe to `scroll` events or manually modify\n * `scrollTop`. However, it's recommended to use the API provided by `ion-content`:\n *\n * i.e. Using `ionScroll`, `ionScrollStart`, `ionScrollEnd` for scrolling events\n * and `scrollToPoint()` to scroll the content into a certain point.\n */\n async getScrollElement() {\n /**\n * If this gets called in certain early lifecycle hooks (ex: Vue onMounted),\n * scrollEl won't be defined yet with the custom elements build, so wait for it to load in.\n */\n if (!this.scrollEl) {\n await new Promise((resolve) => componentOnReady(this.el, resolve));\n }\n return Promise.resolve(this.scrollEl);\n }\n /**\n * Returns the background content element.\n * @internal\n */\n async getBackgroundElement() {\n if (!this.backgroundContentEl) {\n await new Promise((resolve) => componentOnReady(this.el, resolve));\n }\n return Promise.resolve(this.backgroundContentEl);\n }\n /**\n * Scroll to the top of the component.\n *\n * @param duration The amount of time to take scrolling to the top. Defaults to `0`.\n */\n scrollToTop(duration = 0) {\n return this.scrollToPoint(undefined, 0, duration);\n }\n /**\n * Scroll to the bottom of the component.\n *\n * @param duration The amount of time to take scrolling to the bottom. Defaults to `0`.\n */\n async scrollToBottom(duration = 0) {\n const scrollEl = await this.getScrollElement();\n const y = scrollEl.scrollHeight - scrollEl.clientHeight;\n return this.scrollToPoint(undefined, y, duration);\n }\n /**\n * Scroll by a specified X/Y distance in the component.\n *\n * @param x The amount to scroll by on the horizontal axis.\n * @param y The amount to scroll by on the vertical axis.\n * @param duration The amount of time to take scrolling by that amount.\n */\n async scrollByPoint(x, y, duration) {\n const scrollEl = await this.getScrollElement();\n return this.scrollToPoint(x + scrollEl.scrollLeft, y + scrollEl.scrollTop, duration);\n }\n /**\n * Scroll to a specified X/Y location in the component.\n *\n * @param x The point to scroll to on the horizontal axis.\n * @param y The point to scroll to on the vertical axis.\n * @param duration The amount of time to take scrolling to that point. Defaults to `0`.\n */\n async scrollToPoint(x, y, duration = 0) {\n const el = await this.getScrollElement();\n if (duration < 32) {\n if (y != null) {\n el.scrollTop = y;\n }\n if (x != null) {\n el.scrollLeft = x;\n }\n return;\n }\n let resolve;\n let startTime = 0;\n const promise = new Promise((r) => (resolve = r));\n const fromY = el.scrollTop;\n const fromX = el.scrollLeft;\n const deltaY = y != null ? y - fromY : 0;\n const deltaX = x != null ? x - fromX : 0;\n // scroll loop\n const step = (timeStamp) => {\n const linearTime = Math.min(1, (timeStamp - startTime) / duration) - 1;\n const easedT = Math.pow(linearTime, 3) + 1;\n if (deltaY !== 0) {\n el.scrollTop = Math.floor(easedT * deltaY + fromY);\n }\n if (deltaX !== 0) {\n el.scrollLeft = Math.floor(easedT * deltaX + fromX);\n }\n if (easedT < 1) {\n // do not use DomController here\n // must use nativeRaf in order to fire in the next frame\n requestAnimationFrame(step);\n }\n else {\n resolve();\n }\n };\n // chill out for a frame first\n requestAnimationFrame((ts) => {\n startTime = ts;\n step(ts);\n });\n return promise;\n }\n onScrollStart() {\n this.isScrolling = true;\n this.ionScrollStart.emit({\n isScrolling: true,\n });\n if (this.watchDog) {\n clearInterval(this.watchDog);\n }\n // watchdog\n this.watchDog = setInterval(() => {\n if (this.lastScroll < Date.now() - 120) {\n this.onScrollEnd();\n }\n }, 100);\n }\n onScrollEnd() {\n if (this.watchDog)\n clearInterval(this.watchDog);\n this.watchDog = null;\n if (this.isScrolling) {\n this.isScrolling = false;\n this.ionScrollEnd.emit({\n isScrolling: false,\n });\n }\n }\n render() {\n const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;\n const rtl = isRTL(el) ? 'rtl' : 'ltr';\n const mode = getIonMode(this);\n const forceOverscroll = this.shouldForceOverscroll();\n const transitionShadow = mode === 'ios';\n this.resize();\n return (h(Host, Object.assign({ key: 'f2a24aa66dbf5c76f9d4b06f708eb73cadc239df', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {\n [mode]: true,\n 'content-sizing': hostContext('ion-popover', this.el),\n overscroll: forceOverscroll,\n [`content-${rtl}`]: true,\n }), style: {\n '--offset-top': `${this.cTop}px`,\n '--offset-bottom': `${this.cBottom}px`,\n } }, inheritedAttributes), h(\"div\", { key: '6480ca7648b278abb36477b3838bccbcd4995e2a', ref: (el) => (this.backgroundContentEl = el), id: \"background-content\", part: \"background\" }), fixedSlotPlacement === 'before' ? h(\"slot\", { name: \"fixed\" }) : null, h(\"div\", { key: '29a23b663f5f0215bb000820c01e1814c0d55985', class: {\n 'inner-scroll': true,\n 'scroll-x': scrollX,\n 'scroll-y': scrollY,\n overscroll: (scrollX || scrollY) && forceOverscroll,\n }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: \"scroll\" }, h(\"slot\", { key: '0fe1bd05609a4b88ae2ce9addf5d5dc5dc1806f0' })), transitionShadow ? (h(\"div\", { class: \"transition-effect\" }, h(\"div\", { class: \"transition-cover\" }), h(\"div\", { class: \"transition-shadow\" }))) : null, fixedSlotPlacement === 'after' ? h(\"slot\", { name: \"fixed\" }) : null));\n }\n get el() { return getElement(this); }\n};\nconst getParentElement = (el) => {\n var _a;\n if (el.parentElement) {\n // normal element with a parent element\n return el.parentElement;\n }\n if ((_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.host) {\n // shadow dom's document fragment\n return el.parentNode.host;\n }\n return null;\n};\nconst getPageElement = (el) => {\n const tabs = el.closest('ion-tabs');\n if (tabs) {\n return tabs;\n }\n /**\n * If we're in a popover, we need to use its wrapper so we can account for space\n * between the popover and the edges of the screen. But if the popover contains\n * its own page element, we should use that instead.\n */\n const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');\n if (page) {\n return page;\n }\n return getParentElement(el);\n};\n// ******** DOM READ ****************\nconst updateScrollDetail = (detail, el, timestamp, shouldStart) => {\n const prevX = detail.currentX;\n const prevY = detail.currentY;\n const prevT = detail.currentTime;\n const currentX = el.scrollLeft;\n const currentY = el.scrollTop;\n const timeDelta = timestamp - prevT;\n if (shouldStart) {\n // remember the start positions\n detail.startTime = timestamp;\n detail.startX = currentX;\n detail.startY = currentY;\n detail.velocityX = detail.velocityY = 0;\n }\n detail.currentTime = timestamp;\n detail.currentX = detail.scrollLeft = currentX;\n detail.currentY = detail.scrollTop = currentY;\n detail.deltaX = currentX - detail.startX;\n detail.deltaY = currentY - detail.startY;\n if (timeDelta > 0 && timeDelta < 100) {\n const velocityX = (currentX - prevX) / timeDelta;\n const velocityY = (currentY - prevY) / timeDelta;\n detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;\n detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;\n }\n};\nContent.style = IonContentStyle0;\n\nconst handleFooterFade = (scrollEl, baseEl) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const maxScroll = scrollEl.scrollHeight - scrollEl.clientHeight;\n /**\n * Toolbar background will fade\n * out over fadeDuration in pixels.\n */\n const fadeDuration = 10;\n /**\n * Begin fading out maxScroll - 30px\n * from the bottom of the content.\n * Also determine how close we are\n * to starting the fade. If we are\n * before the starting point, the\n * scale value will get clamped to 0.\n * If we are after the maxScroll (rubber\n * band scrolling), the scale value will\n * get clamped to 1.\n */\n const fadeStart = maxScroll - fadeDuration;\n const distanceToStart = scrollTop - fadeStart;\n const scale = clamp(0, 1 - distanceToStart / fadeDuration, 1);\n writeTask(() => {\n baseEl.style.setProperty('--opacity-scale', scale.toString());\n });\n });\n};\n\nconst footerIosCss = \"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}\";\nconst IonFooterIosStyle0 = footerIosCss;\n\nconst footerMdCss = \"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}\";\nconst IonFooterMdStyle0 = footerMdCss;\n\nconst Footer = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.keyboardCtrl = null;\n this.checkCollapsibleFooter = () => {\n const mode = getIonMode(this);\n if (mode !== 'ios') {\n return;\n }\n const { collapse } = this;\n const hasFade = collapse === 'fade';\n this.destroyCollapsibleFooter();\n if (hasFade) {\n const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n if (!contentEl) {\n printIonContentErrorMsg(this.el);\n return;\n }\n this.setupFadeFooter(contentEl);\n }\n };\n this.setupFadeFooter = async (contentEl) => {\n const scrollEl = (this.scrollEl = await getScrollElement(contentEl));\n /**\n * Handle fading of toolbars on scroll\n */\n this.contentScrollCallback = () => {\n handleFooterFade(scrollEl, this.el);\n };\n scrollEl.addEventListener('scroll', this.contentScrollCallback);\n handleFooterFade(scrollEl, this.el);\n };\n this.keyboardVisible = false;\n this.collapse = undefined;\n this.translucent = false;\n }\n componentDidLoad() {\n this.checkCollapsibleFooter();\n }\n componentDidUpdate() {\n this.checkCollapsibleFooter();\n }\n async connectedCallback() {\n this.keyboardCtrl = await createKeyboardController(async (keyboardOpen, waitForResize) => {\n /**\n * If the keyboard is hiding, then we need to wait\n * for the webview to resize. Otherwise, the footer\n * will flicker before the webview resizes.\n */\n if (keyboardOpen === false && waitForResize !== undefined) {\n await waitForResize;\n }\n this.keyboardVisible = keyboardOpen; // trigger re-render by updating state\n });\n }\n disconnectedCallback() {\n if (this.keyboardCtrl) {\n this.keyboardCtrl.destroy();\n }\n }\n destroyCollapsibleFooter() {\n if (this.scrollEl && this.contentScrollCallback) {\n this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);\n this.contentScrollCallback = undefined;\n }\n }\n render() {\n const { translucent, collapse } = this;\n const mode = getIonMode(this);\n const tabs = this.el.closest('ion-tabs');\n const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');\n return (h(Host, { key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137', role: \"contentinfo\", class: {\n [mode]: true,\n // Used internally for styling\n [`footer-${mode}`]: true,\n [`footer-translucent`]: translucent,\n [`footer-translucent-${mode}`]: translucent,\n ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),\n [`footer-collapse-${collapse}`]: collapse !== undefined,\n } }, mode === 'ios' && translucent && h(\"div\", { key: 'e16ed4963ff94e06de77eb8038201820af73937c', class: \"footer-background\" }), h(\"slot\", { key: 'f186934febf85d37133d9351a96c1a64b0a4b203' })));\n }\n get el() { return getElement(this); }\n};\nFooter.style = {\n ios: IonFooterIosStyle0,\n md: IonFooterMdStyle0\n};\n\nconst TRANSITION = 'all 0.2s ease-in-out';\nconst cloneElement = (tagName) => {\n const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);\n if (getCachedEl !== null) {\n return getCachedEl;\n }\n const clonedEl = document.createElement(tagName);\n clonedEl.classList.add('ion-cloned-element');\n clonedEl.style.setProperty('display', 'none');\n document.body.appendChild(clonedEl);\n return clonedEl;\n};\nconst createHeaderIndex = (headerEl) => {\n if (!headerEl) {\n return;\n }\n const toolbars = headerEl.querySelectorAll('ion-toolbar');\n return {\n el: headerEl,\n toolbars: Array.from(toolbars).map((toolbar) => {\n const ionTitleEl = toolbar.querySelector('ion-title');\n return {\n el: toolbar,\n background: toolbar.shadowRoot.querySelector('.toolbar-background'),\n ionTitleEl,\n innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,\n ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')),\n };\n }),\n };\n};\nconst handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const scale = clamp(1, 1 + -scrollTop / 500, 1.1);\n // Native refresher should not cause titles to scale\n const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');\n if (nativeRefresher === null) {\n writeTask(() => {\n scaleLargeTitles(scrollHeaderIndex.toolbars, scale);\n });\n }\n });\n};\nconst setToolbarBackgroundOpacity = (headerEl, opacity) => {\n /**\n * Fading in the backdrop opacity\n * should happen after the large title\n * has collapsed, so it is handled\n * by handleHeaderFade()\n */\n if (headerEl.collapse === 'fade') {\n return;\n }\n if (opacity === undefined) {\n headerEl.style.removeProperty('--opacity-scale');\n }\n else {\n headerEl.style.setProperty('--opacity-scale', opacity.toString());\n }\n};\nconst handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {\n if (!ev[0].isIntersecting) {\n return;\n }\n /**\n * There is a bug in Safari where overflow scrolling on a non-body element\n * does not always reset the scrollTop position to 0 when letting go. It will\n * set to 1 once the rubber band effect has ended. This causes the background to\n * appear slightly on certain app setups.\n *\n * Additionally, we check if user is rubber banding (scrolling is negative)\n * as this can mean they are using pull to refresh. Once the refresher starts,\n * the content is transformed which can cause the intersection observer to erroneously\n * fire here as well.\n */\n const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : ((1 - ev[0].intersectionRatio) * 100) / 75;\n setToolbarBackgroundOpacity(mainHeaderIndex.el, scale === 1 ? undefined : scale);\n};\n/**\n * If toolbars are intersecting, hide the scrollable toolbar content\n * and show the primary toolbar content. If the toolbars are not intersecting,\n * hide the primary toolbar content and show the scrollable toolbar content\n */\nconst handleToolbarIntersection = (ev, // TODO(FW-2832): type (IntersectionObserverEntry[] triggers errors which should be sorted)\nmainHeaderIndex, scrollHeaderIndex, scrollEl) => {\n writeTask(() => {\n const scrollTop = scrollEl.scrollTop;\n handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);\n const event = ev[0];\n const intersection = event.intersectionRect;\n const intersectionArea = intersection.width * intersection.height;\n const rootArea = event.rootBounds.width * event.rootBounds.height;\n const isPageHidden = intersectionArea === 0 && rootArea === 0;\n const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);\n const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);\n const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);\n if (isPageHidden || isPageTransitioning) {\n return;\n }\n if (event.isIntersecting) {\n setHeaderActive(mainHeaderIndex, false);\n setHeaderActive(scrollHeaderIndex);\n }\n else {\n /**\n * There is a bug with IntersectionObserver on Safari\n * where `event.isIntersecting === false` when cancelling\n * a swipe to go back gesture. Checking the intersection\n * x, y, width, and height provides a workaround. This bug\n * does not happen when using Safari + Web Animations,\n * only Safari + CSS Animations.\n */\n const hasValidIntersection = (intersection.x === 0 && intersection.y === 0) || (intersection.width !== 0 && intersection.height !== 0);\n if (hasValidIntersection && scrollTop > 0) {\n setHeaderActive(mainHeaderIndex);\n setHeaderActive(scrollHeaderIndex, false);\n setToolbarBackgroundOpacity(mainHeaderIndex.el);\n }\n }\n });\n};\nconst setHeaderActive = (headerIndex, active = true) => {\n const headerEl = headerIndex.el;\n if (active) {\n headerEl.classList.remove('header-collapse-condense-inactive');\n headerEl.removeAttribute('aria-hidden');\n }\n else {\n headerEl.classList.add('header-collapse-condense-inactive');\n headerEl.setAttribute('aria-hidden', 'true');\n }\n};\nconst scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {\n toolbars.forEach((toolbar) => {\n const ionTitle = toolbar.ionTitleEl;\n const titleDiv = toolbar.innerTitleEl;\n if (!ionTitle || ionTitle.size !== 'large') {\n return;\n }\n titleDiv.style.transition = transition ? TRANSITION : '';\n titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;\n });\n};\nconst handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const baseElHeight = baseEl.clientHeight;\n const fadeStart = condenseHeader ? condenseHeader.clientHeight : 0;\n /**\n * If we are using fade header with a condense\n * header, then the toolbar backgrounds should\n * not begin to fade in until the condense\n * header has fully collapsed.\n *\n * Additionally, the main content should not\n * overflow out of the container until the\n * condense header has fully collapsed. When\n * using just the condense header the content\n * should overflow out of the container.\n */\n if (condenseHeader !== null && scrollTop < fadeStart) {\n baseEl.style.setProperty('--opacity-scale', '0');\n scrollEl.style.setProperty('clip-path', `inset(${baseElHeight}px 0px 0px 0px)`);\n return;\n }\n const distanceToStart = scrollTop - fadeStart;\n const fadeDuration = 10;\n const scale = clamp(0, distanceToStart / fadeDuration, 1);\n writeTask(() => {\n scrollEl.style.removeProperty('clip-path');\n baseEl.style.setProperty('--opacity-scale', scale.toString());\n });\n });\n};\n\nconst headerIosCss = \"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}\";\nconst IonHeaderIosStyle0 = headerIosCss;\n\nconst headerMdCss = \"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}\";\nconst IonHeaderMdStyle0 = headerMdCss;\n\nconst Header = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.inheritedAttributes = {};\n this.setupFadeHeader = async (contentEl, condenseHeader) => {\n const scrollEl = (this.scrollEl = await getScrollElement(contentEl));\n /**\n * Handle fading of toolbars on scroll\n */\n this.contentScrollCallback = () => {\n handleHeaderFade(this.scrollEl, this.el, condenseHeader);\n };\n scrollEl.addEventListener('scroll', this.contentScrollCallback);\n handleHeaderFade(this.scrollEl, this.el, condenseHeader);\n };\n this.collapse = undefined;\n this.translucent = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n componentDidLoad() {\n this.checkCollapsibleHeader();\n }\n componentDidUpdate() {\n this.checkCollapsibleHeader();\n }\n disconnectedCallback() {\n this.destroyCollapsibleHeader();\n }\n async checkCollapsibleHeader() {\n const mode = getIonMode(this);\n if (mode !== 'ios') {\n return;\n }\n const { collapse } = this;\n const hasCondense = collapse === 'condense';\n const hasFade = collapse === 'fade';\n this.destroyCollapsibleHeader();\n if (hasCondense) {\n const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n // Cloned elements are always needed in iOS transition\n writeTask(() => {\n const title = cloneElement('ion-title');\n title.size = 'large';\n cloneElement('ion-back-button');\n });\n await this.setupCondenseHeader(contentEl, pageEl);\n }\n else if (hasFade) {\n const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n if (!contentEl) {\n printIonContentErrorMsg(this.el);\n return;\n }\n const condenseHeader = contentEl.querySelector('ion-header[collapse=\"condense\"]');\n await this.setupFadeHeader(contentEl, condenseHeader);\n }\n }\n destroyCollapsibleHeader() {\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n this.intersectionObserver = undefined;\n }\n if (this.scrollEl && this.contentScrollCallback) {\n this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);\n this.contentScrollCallback = undefined;\n }\n if (this.collapsibleMainHeader) {\n this.collapsibleMainHeader.classList.remove('header-collapse-main');\n this.collapsibleMainHeader = undefined;\n }\n }\n async setupCondenseHeader(contentEl, pageEl) {\n if (!contentEl || !pageEl) {\n printIonContentErrorMsg(this.el);\n return;\n }\n if (typeof IntersectionObserver === 'undefined') {\n return;\n }\n this.scrollEl = await getScrollElement(contentEl);\n const headers = pageEl.querySelectorAll('ion-header');\n this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');\n if (!this.collapsibleMainHeader) {\n return;\n }\n const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);\n const scrollHeaderIndex = createHeaderIndex(this.el);\n if (!mainHeaderIndex || !scrollHeaderIndex) {\n return;\n }\n setHeaderActive(mainHeaderIndex, false);\n setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);\n /**\n * Handle interaction between toolbar collapse and\n * showing/hiding content in the primary ion-header\n * as well as progressively showing/hiding the main header\n * border as the top-most toolbar collapses or expands.\n */\n const toolbarIntersection = (ev) => {\n handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, this.scrollEl);\n };\n this.intersectionObserver = new IntersectionObserver(toolbarIntersection, {\n root: contentEl,\n threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],\n });\n this.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);\n /**\n * Handle scaling of large iOS titles and\n * showing/hiding border on last toolbar\n * in primary header\n */\n this.contentScrollCallback = () => {\n handleContentScroll(this.scrollEl, scrollHeaderIndex, contentEl);\n };\n this.scrollEl.addEventListener('scroll', this.contentScrollCallback);\n writeTask(() => {\n if (this.collapsibleMainHeader !== undefined) {\n this.collapsibleMainHeader.classList.add('header-collapse-main');\n }\n });\n }\n render() {\n const { translucent, inheritedAttributes } = this;\n const mode = getIonMode(this);\n const collapse = this.collapse || 'none';\n // banner role must be at top level, so remove role if inside a menu\n const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';\n return (h(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {\n [mode]: true,\n // Used internally for styling\n [`header-${mode}`]: true,\n [`header-translucent`]: this.translucent,\n [`header-collapse-${collapse}`]: true,\n [`header-translucent-${mode}`]: this.translucent,\n } }, inheritedAttributes), mode === 'ios' && translucent && h(\"div\", { key: '395766d4dcee3398bc91960db21f922095292f14', class: \"header-background\" }), h(\"slot\", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));\n }\n get el() { return getElement(this); }\n};\nHeader.style = {\n ios: IonHeaderIosStyle0,\n md: IonHeaderMdStyle0\n};\n\nconst routerOutletCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}\";\nconst IonRouterOutletStyle0 = routerOutletCss;\n\nconst RouterOutlet = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n this.lockController = createLockController();\n this.gestureOrAnimationInProgress = false;\n this.mode = getIonMode(this);\n this.delegate = undefined;\n this.animated = true;\n this.animation = undefined;\n this.swipeHandler = undefined;\n }\n swipeHandlerChanged() {\n if (this.gesture) {\n this.gesture.enable(this.swipeHandler !== undefined);\n }\n }\n async connectedCallback() {\n const onStart = () => {\n this.gestureOrAnimationInProgress = true;\n if (this.swipeHandler) {\n this.swipeHandler.onStart();\n }\n };\n this.gesture = (await import('./swipe-back-e5394307.js')).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {\n if (this.ani) {\n this.ani.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n if (this.swipeHandler) {\n this.swipeHandler.onEnd(shouldComplete);\n }\n }, { oneTimeCallback: true });\n // Account for rounding errors in JS\n let newStepValue = shouldComplete ? -0.001 : 0.001;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n if (!shouldComplete) {\n this.ani.easing('cubic-bezier(1, 0, 0.68, 0.28)');\n newStepValue += getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], step)[0];\n }\n else {\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], step)[0];\n }\n this.ani.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n }\n else {\n this.gestureOrAnimationInProgress = false;\n }\n });\n this.swipeHandlerChanged();\n }\n componentWillLoad() {\n this.ionNavWillLoad.emit();\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n /** @internal */\n async commit(enteringEl, leavingEl, opts) {\n const unlock = await this.lockController.lock();\n let changed = false;\n try {\n changed = await this.transition(enteringEl, leavingEl, opts);\n }\n catch (e) {\n console.error(e);\n }\n unlock();\n return changed;\n }\n /** @internal */\n async setRouteId(id, params, direction, animation) {\n const changed = await this.setRoot(id, params, {\n duration: direction === 'root' ? 0 : undefined,\n direction: direction === 'back' ? 'back' : 'forward',\n animationBuilder: animation,\n });\n return {\n changed,\n element: this.activeEl,\n };\n }\n /** @internal */\n async getRouteId() {\n const active = this.activeEl;\n return active\n ? {\n id: active.tagName,\n element: active,\n params: this.activeParams,\n }\n : undefined;\n }\n async setRoot(component, params, opts) {\n if (this.activeComponent === component && shallowEqualStringMap(params, this.activeParams)) {\n return false;\n }\n // attach entering view to DOM\n const leavingEl = this.activeEl;\n const enteringEl = await attachComponent(this.delegate, this.el, component, ['ion-page', 'ion-page-invisible'], params);\n this.activeComponent = component;\n this.activeEl = enteringEl;\n this.activeParams = params;\n // commit animation\n await this.commit(enteringEl, leavingEl, opts);\n await detachComponent(this.delegate, leavingEl);\n return true;\n }\n async transition(enteringEl, leavingEl, opts = {}) {\n if (leavingEl === enteringEl) {\n return false;\n }\n // emit nav will change event\n this.ionNavWillChange.emit();\n const { el, mode } = this;\n const animated = this.animated && config.getBoolean('animated', true);\n const animationBuilder = opts.animationBuilder || this.animation || config.get('navAnimation');\n await transition(Object.assign(Object.assign({ mode,\n animated,\n enteringEl,\n leavingEl, baseEl: el,\n /**\n * We need to wait for all Stencil components\n * to be ready only when using the lazy\n * loaded bundle.\n */\n deepWait: hasLazyBuild(el), progressCallback: opts.progressAnimation\n ? (ani) => {\n /**\n * Because this progress callback is called asynchronously\n * it is possible for the gesture to start and end before\n * the animation is ever set. In that scenario, we should\n * immediately call progressEnd so that the transition promise\n * resolves and the gesture does not get locked up.\n */\n if (ani !== undefined && !this.gestureOrAnimationInProgress) {\n this.gestureOrAnimationInProgress = true;\n ani.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n if (this.swipeHandler) {\n this.swipeHandler.onEnd(false);\n }\n }, { oneTimeCallback: true });\n /**\n * Playing animation to beginning\n * with a duration of 0 prevents\n * any flickering when the animation\n * is later cleaned up.\n */\n ani.progressEnd(0, 0, 0);\n }\n else {\n this.ani = ani;\n }\n }\n : undefined }, opts), { animationBuilder }));\n // emit nav changed event\n this.ionNavDidChange.emit();\n return true;\n }\n render() {\n return h(\"slot\", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"swipeHandler\": [\"swipeHandlerChanged\"]\n }; }\n};\nRouterOutlet.style = IonRouterOutletStyle0;\n\nconst titleIosCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}\";\nconst IonTitleIosStyle0 = titleIosCss;\n\nconst titleMdCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}\";\nconst IonTitleMdStyle0 = titleMdCss;\n\nconst ToolbarTitle = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionStyle = createEvent(this, \"ionStyle\", 7);\n this.color = undefined;\n this.size = undefined;\n }\n sizeChanged() {\n this.emitStyle();\n }\n connectedCallback() {\n this.emitStyle();\n }\n emitStyle() {\n const size = this.getSize();\n this.ionStyle.emit({\n [`title-${size}`]: true,\n });\n }\n getSize() {\n return this.size !== undefined ? this.size : 'default';\n }\n render() {\n const mode = getIonMode(this);\n const size = this.getSize();\n return (h(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses(this.color, {\n [mode]: true,\n [`title-${size}`]: true,\n 'title-rtl': document.dir === 'rtl',\n }) }, h(\"div\", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: \"toolbar-title\" }, h(\"slot\", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"size\": [\"sizeChanged\"]\n }; }\n};\nToolbarTitle.style = {\n ios: IonTitleIosStyle0,\n md: IonTitleMdStyle0\n};\n\nconst toolbarIosCss = \":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}\";\nconst IonToolbarIosStyle0 = toolbarIosCss;\n\nconst toolbarMdCss = \":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}\";\nconst IonToolbarMdStyle0 = toolbarMdCss;\n\nconst Toolbar = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.childrenStyles = new Map();\n this.color = undefined;\n }\n componentWillLoad() {\n const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));\n const firstButtons = buttons.find((button) => {\n return button.slot === 'start';\n });\n if (firstButtons) {\n firstButtons.classList.add('buttons-first-slot');\n }\n const buttonsReversed = buttons.reverse();\n const lastButtons = buttonsReversed.find((button) => button.slot === 'end') ||\n buttonsReversed.find((button) => button.slot === 'primary') ||\n buttonsReversed.find((button) => button.slot === 'secondary');\n if (lastButtons) {\n lastButtons.classList.add('buttons-last-slot');\n }\n }\n childrenStyle(ev) {\n ev.stopPropagation();\n const tagName = ev.target.tagName;\n const updatedStyles = ev.detail;\n const newStyles = {};\n const childStyles = this.childrenStyles.get(tagName) || {};\n let hasStyleChange = false;\n Object.keys(updatedStyles).forEach((key) => {\n const childKey = `toolbar-${key}`;\n const newValue = updatedStyles[key];\n if (newValue !== childStyles[childKey]) {\n hasStyleChange = true;\n }\n if (newValue) {\n newStyles[childKey] = true;\n }\n });\n if (hasStyleChange) {\n this.childrenStyles.set(tagName, newStyles);\n forceUpdate(this);\n }\n }\n render() {\n const mode = getIonMode(this);\n const childStyles = {};\n this.childrenStyles.forEach((value) => {\n Object.assign(childStyles, value);\n });\n return (h(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {\n [mode]: true,\n 'in-toolbar': hostContext('ion-toolbar', this.el),\n })) }, h(\"div\", { key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b', class: \"toolbar-background\" }), h(\"div\", { key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2', class: \"toolbar-container\" }, h(\"slot\", { key: '3e726dac359e923df21d80301651f16063a3de20', name: \"start\" }), h(\"slot\", { key: 'cd799330b56a7f8833bc61bb2807aafb21846f71', name: \"secondary\" }), h(\"div\", { key: '395282e6ac8c53576922dcdb5f08c25d34638c86', class: \"toolbar-content\" }, h(\"slot\", { key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d' })), h(\"slot\", { key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca', name: \"primary\" }), h(\"slot\", { key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a', name: \"end\" }))));\n }\n get el() { return getElement(this); }\n};\nToolbar.style = {\n ios: IonToolbarIosStyle0,\n md: IonToolbarMdStyle0\n};\n\nexport { App as ion_app, Buttons as ion_buttons, Content as ion_content, Footer as ion_footer, Header as ion_header, RouterOutlet as ion_router_outlet, ToolbarTitle as ion_title, Toolbar as ion_toolbar };\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,CAAC,IAAIC,gBAAgB,EAAEC,CAAC,EAAEC,CAAC,IAAIC,IAAI,EAAEC,CAAC,IAAIC,UAAU,EAAEC,CAAC,IAAIC,WAAW,EAAEC,CAAC,IAAIC,QAAQ,EAAEC,CAAC,IAAIC,WAAW,EAAEC,CAAC,IAAIC,SAAS,QAAQ,qBAAqB;AAC7J,SAASC,qBAAqB,QAAQ,oCAAoC;AAC1E,SAASC,CAAC,IAAIC,eAAe,QAAQ,qBAAqB;AAC1D,SAASC,CAAC,IAAIC,UAAU,EAAEC,CAAC,IAAIC,MAAM,EAAEC,CAAC,IAAIC,UAAU,QAAQ,4BAA4B;AAC1F,SAASlB,CAAC,IAAImB,qBAAqB,EAAEC,CAAC,IAAIC,YAAY,EAAEN,CAAC,IAAIO,gBAAgB,EAAEhB,CAAC,IAAIiB,KAAK,EAAEC,CAAC,IAAIC,qBAAqB,QAAQ,uBAAuB;AACpJ,SAASzB,CAAC,IAAI0B,KAAK,QAAQ,mBAAmB;AAC9C,SAASX,CAAC,IAAIY,kBAAkB,EAAE9B,CAAC,IAAI+B,WAAW,QAAQ,qBAAqB;AAC/E,SAASX,CAAC,IAAIY,cAAc,EAAElB,CAAC,IAAImB,uBAAuB,EAAEC,CAAC,IAAIC,gBAAgB,QAAQ,qBAAqB;AAC9G,SAASjB,CAAC,IAAIkB,wBAAwB,QAAQ,mCAAmC;AACjF,SAASF,CAAC,IAAIG,uBAAuB,QAAQ,4BAA4B;AACzE,SAASjB,CAAC,IAAIkB,eAAe,EAAEjC,CAAC,IAAIkC,eAAe,QAAQ,kCAAkC;AAC7F,SAASrB,CAAC,IAAIsB,oBAAoB,QAAQ,+BAA+B;AACzE,SAASC,CAAC,IAAIC,UAAU,QAAQ,qBAAqB;AACrD,OAAO,qBAAqB;AAC5B,OAAO,wBAAwB;AAC/B,OAAO,yBAAyB;AAEhC,MAAMC,MAAM,GAAG,uSAAuS;AACtT,MAAMC,YAAY,GAAGD,MAAM;AAE3B,MAAME,GAAG,GAAG,MAAM;EACdC,WAAWA,CAACC,OAAO,EAAE;IACjBhD,gBAAgB,CAAC,IAAI,EAAEgD,OAAO,CAAC;EACnC;EACAC,gBAAgBA,CAAA,EAAG;IAAA,IAAAC,KAAA;IACf;MACIC,GAAG,eAAAC,iBAAA,CAAC,aAAY;QACZ,MAAMC,QAAQ,GAAG/B,UAAU,CAACgC,MAAM,EAAE,QAAQ,CAAC;QAC7C,IAAI,CAAClC,MAAM,CAACmC,UAAU,CAAC,UAAU,CAAC,EAAE;UAChC,MAAM,CAAC,qBAAqB,CAAC,CAACC,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACC,aAAa,CAACtC,MAAM,CAAC,CAAC;QAChF;QACA,IAAIA,MAAM,CAACmC,UAAU,CAAC,WAAW,EAAEF,QAAQ,CAAC,EAAE;UAC1C,MAAM,CAAC,0BAA0B,CAAC,CAACG,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACE,cAAc,CAAC,CAAC,CAAC;QAChF;QACA,IAAIvC,MAAM,CAACmC,UAAU,CAAC,YAAY,EAAEK,cAAc,CAAC,CAAC,CAAC,EAAE;UACnD;AACpB;AACA;AACA;UACoB,MAAMC,QAAQ,GAAGvC,UAAU,CAACgC,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;UAC9D,MAAM,CAAC,2BAA2B,CAAC,CAACE,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACK,eAAe,CAAC1C,MAAM,EAAEyC,QAAQ,CAAC,CAAC;QAClG;QACA,MAAME,wBAAwB,SAAS,MAAM,CAAC,oCAAoC,CAAC;QACnF,MAAMC,gCAAgC,GAAGX,QAAQ,IAAIvC,qBAAqB,CAAC,CAAC;QAC5E,IAAIM,MAAM,CAACmC,UAAU,CAAC,oBAAoB,EAAES,gCAAgC,CAAC,EAAE;UAC3ED,wBAAwB,CAACE,uBAAuB,CAAC,CAAC;QACtD,CAAC,MACI;UACD;AACpB;AACA;AACA;UACoB,IAAInD,qBAAqB,CAAC,CAAC,EAAE;YACzBE,eAAe,CAAC,iKAAiK,CAAC;UACtL;UACA+C,wBAAwB,CAACG,uBAAuB,CAAC,CAAC;QACtD;QACA,IAAI,OAAOZ,MAAM,KAAK,WAAW,EAAE;UAC/B,MAAM,CAAC,wBAAwB,CAAC,CAACE,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACU,mBAAmB,CAACb,MAAM,CAAC,CAAC;QACzF;QACA,MAAM,CAAC,6BAA6B,CAAC,CAACE,IAAI,CAAEC,MAAM,IAAMP,KAAI,CAACkB,YAAY,GAAGX,MAAM,CAACY,iBAAiB,CAAC,CAAE,CAAC;MAC5G,CAAC,EAAC;IACN;EACJ;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACUC,QAAQA,CAACC,QAAQ,EAAE;IAAA,IAAAC,MAAA;IAAA,OAAApB,iBAAA;MACrB,IAAIoB,MAAI,CAACJ,YAAY,EAAE;QACnBI,MAAI,CAACJ,YAAY,CAACE,QAAQ,CAACC,QAAQ,CAAC;MACxC;IAAC;EACL;EACAE,MAAMA,CAAA,EAAG;IACL,MAAMC,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC7B,OAAQjB,CAAC,CAACE,IAAI,EAAE;MAAEwE,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;QAClE,CAACF,IAAI,GAAG,IAAI;QACZ,UAAU,EAAE,IAAI;QAChB,yBAAyB,EAAEtD,MAAM,CAACmC,UAAU,CAAC,wBAAwB;MACzE;IAAE,CAAC,CAAC;EACZ;EACA,IAAIsB,EAAEA,CAAA,EAAG;IAAE,OAAOxE,UAAU,CAAC,IAAI,CAAC;EAAE;AACxC,CAAC;AACD,MAAMuD,cAAc,GAAGA,CAAA,KAAM;EACzB;AACJ;AACA;EACI,MAAMkB,aAAa,GAAGxD,UAAU,CAACgC,MAAM,EAAE,KAAK,CAAC,IAAIhC,UAAU,CAACgC,MAAM,EAAE,QAAQ,CAAC;EAC/E,IAAIwB,aAAa,EAAE;IACf,OAAO,IAAI;EACf;EACA;AACJ;AACA;AACA;AACA;EACI,MAAMC,kBAAkB,GAAGzD,UAAU,CAACgC,MAAM,EAAE,SAAS,CAAC,IAAIhC,UAAU,CAACgC,MAAM,EAAE,WAAW,CAAC;EAC3F,IAAIyB,kBAAkB,EAAE;IACpB,OAAO,IAAI;EACf;EACA,OAAO,KAAK;AAChB,CAAC;AACD,MAAM5B,GAAG,GAAI6B,QAAQ,IAAK;EACtB,IAAI,qBAAqB,IAAI1B,MAAM,EAAE;IACjCA,MAAM,CAAC2B,mBAAmB,CAACD,QAAQ,CAAC;EACxC,CAAC,MACI;IACDE,UAAU,CAACF,QAAQ,EAAE,EAAE,CAAC;EAC5B;AACJ,CAAC;AACDlC,GAAG,CAACqC,KAAK,GAAGtC,YAAY;AAExB,MAAMuC,aAAa,GAAG,8pFAA8pF;AACprF,MAAMC,mBAAmB,GAAGD,aAAa;AAEzC,MAAME,YAAY,GAAG,y9FAAy9F;AAC9+F,MAAMC,kBAAkB,GAAGD,YAAY;AAEvC,MAAME,OAAO,GAAG,MAAM;EAClBzC,WAAWA,CAACC,OAAO,EAAE;IACjBhD,gBAAgB,CAAC,IAAI,EAAEgD,OAAO,CAAC;IAC/B,IAAI,CAACyC,QAAQ,GAAG,KAAK;EACzB;EACAhB,MAAMA,CAAA,EAAG;IACL,MAAMC,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC7B,OAAQjB,CAAC,CAACE,IAAI,EAAE;MAAEwE,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;QAClE,CAACF,IAAI,GAAG,IAAI;QACZ,CAAC,kBAAkB,GAAG,IAAI,CAACe;MAC/B;IAAE,CAAC,EAAExF,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE;IAA2C,CAAC,CAAC,CAAC;EAC5E;AACJ,CAAC;AACDa,OAAO,CAACL,KAAK,GAAG;EACZO,GAAG,EAAEL,mBAAmB;EACxBM,EAAE,EAAEJ;AACR,CAAC;AAED,MAAMK,UAAU,GAAG,wmFAAwmF;AAC3nF,MAAMC,gBAAgB,GAAGD,UAAU;AAEnC,MAAME,OAAO,GAAG,MAAM;EAClB/C,WAAWA,CAACC,OAAO,EAAE;IACjBhD,gBAAgB,CAAC,IAAI,EAAEgD,OAAO,CAAC;IAC/B,IAAI,CAAC+C,cAAc,GAAGxF,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC5D,IAAI,CAACyF,SAAS,GAAGzF,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC0F,YAAY,GAAG1F,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC2F,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,MAAM,GAAG,KAAK;IACnB,IAAI,CAACC,IAAI,GAAG,CAAC,CAAC;IACd,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,mBAAmB,GAAG,CAAC,CAAC;IAC7B,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;IACA;IACA;IACA,IAAI,CAACC,MAAM,GAAG;MACVC,SAAS,EAAE,CAAC;MACZC,UAAU,EAAE,CAAC;MACbC,IAAI,EAAE,QAAQ;MACdC,KAAK,EAAEC,SAAS;MAChBC,MAAM,EAAE,CAAC;MACTC,MAAM,EAAE,CAAC;MACTC,SAAS,EAAE,CAAC;MACZC,QAAQ,EAAE,CAAC;MACXC,QAAQ,EAAE,CAAC;MACXC,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE,CAAC;MACZC,MAAM,EAAE,CAAC;MACTC,MAAM,EAAE,CAAC;MACTC,WAAW,EAAE,CAAC;MACdC,IAAI,EAAEX,SAAS;MACfd,WAAW,EAAE;IACjB,CAAC;IACD,IAAI,CAAC0B,KAAK,GAAGZ,SAAS;IACtB,IAAI,CAACa,UAAU,GAAG,KAAK;IACvB,IAAI,CAACC,kBAAkB,GAAG,OAAO;IACjC,IAAI,CAACC,eAAe,GAAGf,SAAS;IAChC,IAAI,CAACgB,OAAO,GAAG,KAAK;IACpB,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,YAAY,GAAG,KAAK;EAC7B;EACAC,iBAAiBA,CAAA,EAAG;IAChB,IAAI,CAAC1B,mBAAmB,GAAGnF,qBAAqB,CAAC,IAAI,CAACsD,EAAE,CAAC;EAC7D;EACAwD,iBAAiBA,CAAA,EAAG;IAChB,IAAI,CAAC7B,aAAa,GAAG,IAAI,CAAC3B,EAAE,CAACyD,OAAO,CAAC,kCAAkC,CAAC,KAAK,IAAI;IACjF;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI7G,YAAY,CAAC,IAAI,CAACoD,EAAE,CAAC,EAAE;MACvB;AACZ;AACA;AACA;AACA;AACA;MACY,MAAM0D,WAAW,GAAI,IAAI,CAAC5B,WAAW,GAAG,IAAI,CAAC9B,EAAE,CAACyD,OAAO,CAAC,UAAU,CAAE;MACpE,IAAIC,WAAW,KAAK,IAAI,EAAE;QACtB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACgB,IAAI,CAACC,gBAAgB,GAAG,MAAM,IAAI,CAACC,MAAM,CAAC,CAAC;QAC3CF,WAAW,CAACG,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAACF,gBAAgB,CAAC;MAC1E;IACJ;EACJ;EACAG,oBAAoBA,CAAA,EAAG;IACnB,IAAI,CAACC,WAAW,CAAC,CAAC;IAClB,IAAInH,YAAY,CAAC,IAAI,CAACoD,EAAE,CAAC,EAAE;MACvB;AACZ;AACA;AACA;AACA;AACA;MACY,MAAM;QAAE8B,WAAW;QAAE6B;MAAiB,CAAC,GAAG,IAAI;MAC9C,IAAI7B,WAAW,KAAK,IAAI,IAAI6B,gBAAgB,KAAKvB,SAAS,EAAE;QACxDN,WAAW,CAACkC,mBAAmB,CAAC,iBAAiB,EAAEL,gBAAgB,CAAC;MACxE;MACA,IAAI,CAAC7B,WAAW,GAAG,IAAI;MACvB,IAAI,CAAC6B,gBAAgB,GAAGvB,SAAS;IACrC;EACJ;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI6B,QAAQA,CAAA,EAAG;IACP,IAAI,IAAI,CAACrC,aAAa,EAAE;MACpBsC,YAAY,CAAC,IAAI,CAACtC,aAAa,CAAC;MAChC,IAAI,CAACA,aAAa,GAAG,IAAI;IAC7B;IACA,IAAI,CAACA,aAAa,GAAGvB,UAAU,CAAC,MAAM;MAClC;AACZ;AACA;AACA;AACA;AACA;MACY,IAAI,IAAI,CAACL,EAAE,CAACmE,YAAY,KAAK,IAAI,EAAE;QAC/B;MACJ;MACA,IAAI,CAACP,MAAM,CAAC,CAAC;IACjB,CAAC,EAAE,GAAG,CAAC;EACX;EACAQ,qBAAqBA,CAAA,EAAG;IACpB,MAAM;MAAEjB;IAAgB,CAAC,GAAG,IAAI;IAChC,MAAMtD,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC7B,OAAO8G,eAAe,KAAKf,SAAS,GAAGvC,IAAI,KAAK,KAAK,IAAIpD,UAAU,CAAC,KAAK,CAAC,GAAG0G,eAAe;EAChG;EACAS,MAAMA,CAAA,EAAG;IACL;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQ;MACI,IAAI,IAAI,CAACX,UAAU,EAAE;QACjBrH,QAAQ,CAAC,MAAM,IAAI,CAACyI,cAAc,CAAC,CAAC,CAAC;MACzC,CAAC,MACI,IAAI,IAAI,CAAC5C,IAAI,KAAK,CAAC,IAAI,IAAI,CAACC,OAAO,KAAK,CAAC,EAAE;QAC5C,IAAI,CAACD,IAAI,GAAG,IAAI,CAACC,OAAO,GAAG,CAAC;QAC5B5F,WAAW,CAAC,IAAI,CAAC;MACrB;IACJ;EACJ;EACAuI,cAAcA,CAAA,EAAG;IACb,MAAMC,IAAI,GAAGC,cAAc,CAAC,IAAI,CAACvE,EAAE,CAAC;IACpC,MAAMwE,GAAG,GAAGC,IAAI,CAACC,GAAG,CAAC,IAAI,CAAC1E,EAAE,CAAC2E,SAAS,EAAE,CAAC,CAAC;IAC1C,MAAMC,MAAM,GAAGH,IAAI,CAACC,GAAG,CAACJ,IAAI,CAACO,YAAY,GAAGL,GAAG,GAAG,IAAI,CAACxE,EAAE,CAAC6E,YAAY,EAAE,CAAC,CAAC;IAC1E,MAAMC,KAAK,GAAGN,GAAG,KAAK,IAAI,CAAC/C,IAAI,IAAImD,MAAM,KAAK,IAAI,CAAClD,OAAO;IAC1D,IAAIoD,KAAK,EAAE;MACP,IAAI,CAACrD,IAAI,GAAG+C,GAAG;MACf,IAAI,CAAC9C,OAAO,GAAGkD,MAAM;MACrB9I,WAAW,CAAC,IAAI,CAAC;IACrB;EACJ;EACAiJ,QAAQA,CAACC,EAAE,EAAE;IACT,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC5B,MAAMC,WAAW,GAAG,CAAC,IAAI,CAAC9D,WAAW;IACrC,IAAI,CAACC,UAAU,GAAG0D,SAAS;IAC3B,IAAIG,WAAW,EAAE;MACb,IAAI,CAACC,aAAa,CAAC,CAAC;IACxB;IACA,IAAI,CAAC,IAAI,CAAC7D,MAAM,IAAI,IAAI,CAAC8B,YAAY,EAAE;MACnC,IAAI,CAAC9B,MAAM,GAAG,IAAI;MAClB5F,QAAQ,CAAE0J,EAAE,IAAK;QACb,IAAI,CAAC9D,MAAM,GAAG,KAAK;QACnB,IAAI,CAACO,MAAM,CAACI,KAAK,GAAG6C,EAAE;QACtBO,kBAAkB,CAAC,IAAI,CAACxD,MAAM,EAAE,IAAI,CAACyD,QAAQ,EAAEF,EAAE,EAAEF,WAAW,CAAC;QAC/D,IAAI,CAACjE,SAAS,CAACsE,IAAI,CAAC,IAAI,CAAC1D,MAAM,CAAC;MACpC,CAAC,CAAC;IACN;EACJ;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACUxE,gBAAgBA,CAAA,EAAG;IAAA,IAAAmI,MAAA;IAAA,OAAAnH,iBAAA;MACrB;AACR;AACA;AACA;MACQ,IAAI,CAACmH,MAAI,CAACF,QAAQ,EAAE;QAChB,MAAM,IAAIG,OAAO,CAAEC,OAAO,IAAK/I,gBAAgB,CAAC6I,MAAI,CAAC1F,EAAE,EAAE4F,OAAO,CAAC,CAAC;MACtE;MACA,OAAOD,OAAO,CAACC,OAAO,CAACF,MAAI,CAACF,QAAQ,CAAC;IAAC;EAC1C;EACA;AACJ;AACA;AACA;EACUK,oBAAoBA,CAAA,EAAG;IAAA,IAAAC,MAAA;IAAA,OAAAvH,iBAAA;MACzB,IAAI,CAACuH,MAAI,CAACC,mBAAmB,EAAE;QAC3B,MAAM,IAAIJ,OAAO,CAAEC,OAAO,IAAK/I,gBAAgB,CAACiJ,MAAI,CAAC9F,EAAE,EAAE4F,OAAO,CAAC,CAAC;MACtE;MACA,OAAOD,OAAO,CAACC,OAAO,CAACE,MAAI,CAACC,mBAAmB,CAAC;IAAC;EACrD;EACA;AACJ;AACA;AACA;AACA;EACIC,WAAWA,CAACC,QAAQ,GAAG,CAAC,EAAE;IACtB,OAAO,IAAI,CAACC,aAAa,CAAC9D,SAAS,EAAE,CAAC,EAAE6D,QAAQ,CAAC;EACrD;EACA;AACJ;AACA;AACA;AACA;EACUE,cAAcA,CAACF,QAAQ,GAAG,CAAC,EAAE;IAAA,IAAAG,MAAA;IAAA,OAAA7H,iBAAA;MAC/B,MAAMiH,QAAQ,SAASY,MAAI,CAAC7I,gBAAgB,CAAC,CAAC;MAC9C,MAAM8I,CAAC,GAAGb,QAAQ,CAACc,YAAY,GAAGd,QAAQ,CAACe,YAAY;MACvD,OAAOH,MAAI,CAACF,aAAa,CAAC9D,SAAS,EAAEiE,CAAC,EAAEJ,QAAQ,CAAC;IAAC;EACtD;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACUO,aAAaA,CAACC,CAAC,EAAEJ,CAAC,EAAEJ,QAAQ,EAAE;IAAA,IAAAS,MAAA;IAAA,OAAAnI,iBAAA;MAChC,MAAMiH,QAAQ,SAASkB,MAAI,CAACnJ,gBAAgB,CAAC,CAAC;MAC9C,OAAOmJ,MAAI,CAACR,aAAa,CAACO,CAAC,GAAGjB,QAAQ,CAACvD,UAAU,EAAEoE,CAAC,GAAGb,QAAQ,CAACxD,SAAS,EAAEiE,QAAQ,CAAC;IAAC;EACzF;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACUC,aAAaA,CAACO,CAAC,EAAEJ,CAAC,EAAEJ,QAAQ,GAAG,CAAC,EAAE;IAAA,IAAAU,MAAA;IAAA,OAAApI,iBAAA;MACpC,MAAMyB,EAAE,SAAS2G,MAAI,CAACpJ,gBAAgB,CAAC,CAAC;MACxC,IAAI0I,QAAQ,GAAG,EAAE,EAAE;QACf,IAAII,CAAC,IAAI,IAAI,EAAE;UACXrG,EAAE,CAACgC,SAAS,GAAGqE,CAAC;QACpB;QACA,IAAII,CAAC,IAAI,IAAI,EAAE;UACXzG,EAAE,CAACiC,UAAU,GAAGwE,CAAC;QACrB;QACA;MACJ;MACA,IAAIb,OAAO;MACX,IAAIrD,SAAS,GAAG,CAAC;MACjB,MAAMqE,OAAO,GAAG,IAAIjB,OAAO,CAAEzK,CAAC,IAAM0K,OAAO,GAAG1K,CAAE,CAAC;MACjD,MAAM2L,KAAK,GAAG7G,EAAE,CAACgC,SAAS;MAC1B,MAAM8E,KAAK,GAAG9G,EAAE,CAACiC,UAAU;MAC3B,MAAMY,MAAM,GAAGwD,CAAC,IAAI,IAAI,GAAGA,CAAC,GAAGQ,KAAK,GAAG,CAAC;MACxC,MAAMjE,MAAM,GAAG6D,CAAC,IAAI,IAAI,GAAGA,CAAC,GAAGK,KAAK,GAAG,CAAC;MACxC;MACA,MAAMC,IAAI,GAAI9B,SAAS,IAAK;QACxB,MAAM+B,UAAU,GAAGvC,IAAI,CAACwC,GAAG,CAAC,CAAC,EAAE,CAAChC,SAAS,GAAG1C,SAAS,IAAI0D,QAAQ,CAAC,GAAG,CAAC;QACtE,MAAMiB,MAAM,GAAGzC,IAAI,CAAC0C,GAAG,CAACH,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC;QAC1C,IAAInE,MAAM,KAAK,CAAC,EAAE;UACd7C,EAAE,CAACgC,SAAS,GAAGyC,IAAI,CAAC2C,KAAK,CAACF,MAAM,GAAGrE,MAAM,GAAGgE,KAAK,CAAC;QACtD;QACA,IAAIjE,MAAM,KAAK,CAAC,EAAE;UACd5C,EAAE,CAACiC,UAAU,GAAGwC,IAAI,CAAC2C,KAAK,CAACF,MAAM,GAAGtE,MAAM,GAAGkE,KAAK,CAAC;QACvD;QACA,IAAII,MAAM,GAAG,CAAC,EAAE;UACZ;UACA;UACAG,qBAAqB,CAACN,IAAI,CAAC;QAC/B,CAAC,MACI;UACDnB,OAAO,CAAC,CAAC;QACb;MACJ,CAAC;MACD;MACAyB,qBAAqB,CAAE/B,EAAE,IAAK;QAC1B/C,SAAS,GAAG+C,EAAE;QACdyB,IAAI,CAACzB,EAAE,CAAC;MACZ,CAAC,CAAC;MACF,OAAOsB,OAAO;IAAC;EACnB;EACAvB,aAAaA,CAAA,EAAG;IACZ,IAAI,CAAC/D,WAAW,GAAG,IAAI;IACvB,IAAI,CAACJ,cAAc,CAACuE,IAAI,CAAC;MACrBnE,WAAW,EAAE;IACjB,CAAC,CAAC;IACF,IAAI,IAAI,CAACD,QAAQ,EAAE;MACfiG,aAAa,CAAC,IAAI,CAACjG,QAAQ,CAAC;IAChC;IACA;IACA,IAAI,CAACA,QAAQ,GAAGkG,WAAW,CAAC,MAAM;MAC9B,IAAI,IAAI,CAAChG,UAAU,GAAG2D,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE;QACpC,IAAI,CAACpB,WAAW,CAAC,CAAC;MACtB;IACJ,CAAC,EAAE,GAAG,CAAC;EACX;EACAA,WAAWA,CAAA,EAAG;IACV,IAAI,IAAI,CAAC1C,QAAQ,EACbiG,aAAa,CAAC,IAAI,CAACjG,QAAQ,CAAC;IAChC,IAAI,CAACA,QAAQ,GAAG,IAAI;IACpB,IAAI,IAAI,CAACC,WAAW,EAAE;MAClB,IAAI,CAACA,WAAW,GAAG,KAAK;MACxB,IAAI,CAACF,YAAY,CAACqE,IAAI,CAAC;QACnBnE,WAAW,EAAE;MACjB,CAAC,CAAC;IACN;EACJ;EACA1B,MAAMA,CAAA,EAAG;IACL,MAAM;MAAEsD,kBAAkB;MAAErB,mBAAmB;MAAEF,aAAa;MAAEyB,OAAO;MAAEC,OAAO;MAAErD;IAAG,CAAC,GAAG,IAAI;IAC7F,MAAMwH,GAAG,GAAGvK,KAAK,CAAC+C,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK;IACrC,MAAMH,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC7B,MAAM8G,eAAe,GAAG,IAAI,CAACiB,qBAAqB,CAAC,CAAC;IACpD,MAAMqD,gBAAgB,GAAG5H,IAAI,KAAK,KAAK;IACvC,IAAI,CAAC+D,MAAM,CAAC,CAAC;IACb,OAAQxI,CAAC,CAACE,IAAI,EAAEoM,MAAM,CAACC,MAAM,CAAC;MAAE7H,GAAG,EAAE,0CAA0C;MAAE8H,IAAI,EAAEjG,aAAa,GAAG,MAAM,GAAGS,SAAS;MAAErC,KAAK,EAAE7C,kBAAkB,CAAC,IAAI,CAAC8F,KAAK,EAAE;QACzJ,CAACnD,IAAI,GAAG,IAAI;QACZ,gBAAgB,EAAE1C,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC6C,EAAE,CAAC;QACrD6H,UAAU,EAAE1E,eAAe;QAC3B,CAAC,WAAWqE,GAAG,EAAE,GAAG;MACxB,CAAC,CAAC;MAAElH,KAAK,EAAE;QACP,cAAc,EAAE,GAAG,IAAI,CAACmB,IAAI,IAAI;QAChC,iBAAiB,EAAE,GAAG,IAAI,CAACC,OAAO;MACtC;IAAE,CAAC,EAAEG,mBAAmB,CAAC,EAAEzG,CAAC,CAAC,KAAK,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEgI,GAAG,EAAG9H,EAAE,IAAM,IAAI,CAAC+F,mBAAmB,GAAG/F,EAAG;MAAE+H,EAAE,EAAE,oBAAoB;MAAEC,IAAI,EAAE;IAAa,CAAC,CAAC,EAAE9E,kBAAkB,KAAK,QAAQ,GAAG9H,CAAC,CAAC,MAAM,EAAE;MAAE6M,IAAI,EAAE;IAAQ,CAAC,CAAC,GAAG,IAAI,EAAE7M,CAAC,CAAC,KAAK,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;QAC5T,cAAc,EAAE,IAAI;QACpB,UAAU,EAAEqD,OAAO;QACnB,UAAU,EAAEC,OAAO;QACnBwE,UAAU,EAAE,CAACzE,OAAO,IAAIC,OAAO,KAAKF;MACxC,CAAC;MAAE2E,GAAG,EAAGtC,QAAQ,IAAM,IAAI,CAACA,QAAQ,GAAGA,QAAS;MAAET,QAAQ,EAAE,IAAI,CAACzB,YAAY,GAAI0B,EAAE,IAAK,IAAI,CAACD,QAAQ,CAACC,EAAE,CAAC,GAAG5C,SAAS;MAAE4F,IAAI,EAAE;IAAS,CAAC,EAAE5M,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE;IAA2C,CAAC,CAAC,CAAC,EAAE2H,gBAAgB,GAAIrM,CAAC,CAAC,KAAK,EAAE;MAAE2E,KAAK,EAAE;IAAoB,CAAC,EAAE3E,CAAC,CAAC,KAAK,EAAE;MAAE2E,KAAK,EAAE;IAAmB,CAAC,CAAC,EAAE3E,CAAC,CAAC,KAAK,EAAE;MAAE2E,KAAK,EAAE;IAAoB,CAAC,CAAC,CAAC,GAAI,IAAI,EAAEmD,kBAAkB,KAAK,OAAO,GAAG9H,CAAC,CAAC,MAAM,EAAE;MAAE6M,IAAI,EAAE;IAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;EAChb;EACA,IAAIjI,EAAEA,CAAA,EAAG;IAAE,OAAOxE,UAAU,CAAC,IAAI,CAAC;EAAE;AACxC,CAAC;AACD,MAAM0M,gBAAgB,GAAIlI,EAAE,IAAK;EAC7B,IAAImI,EAAE;EACN,IAAInI,EAAE,CAACoI,aAAa,EAAE;IAClB;IACA,OAAOpI,EAAE,CAACoI,aAAa;EAC3B;EACA,IAAI,CAACD,EAAE,GAAGnI,EAAE,CAACqI,UAAU,MAAM,IAAI,IAAIF,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,EAAE,CAACG,IAAI,EAAE;IACnE;IACA,OAAOtI,EAAE,CAACqI,UAAU,CAACC,IAAI;EAC7B;EACA,OAAO,IAAI;AACf,CAAC;AACD,MAAM/D,cAAc,GAAIvE,EAAE,IAAK;EAC3B,MAAMuI,IAAI,GAAGvI,EAAE,CAACyD,OAAO,CAAC,UAAU,CAAC;EACnC,IAAI8E,IAAI,EAAE;IACN,OAAOA,IAAI;EACf;EACA;AACJ;AACA;AACA;AACA;EACI,MAAMjE,IAAI,GAAGtE,EAAE,CAACyD,OAAO,CAAC,4DAA4D,CAAC;EACrF,IAAIa,IAAI,EAAE;IACN,OAAOA,IAAI;EACf;EACA,OAAO4D,gBAAgB,CAAClI,EAAE,CAAC;AAC/B,CAAC;AACD;AACA,MAAMuF,kBAAkB,GAAGA,CAACxD,MAAM,EAAE/B,EAAE,EAAEwI,SAAS,EAAEpD,WAAW,KAAK;EAC/D,MAAMqD,KAAK,GAAG1G,MAAM,CAACS,QAAQ;EAC7B,MAAMkG,KAAK,GAAG3G,MAAM,CAACU,QAAQ;EAC7B,MAAMkG,KAAK,GAAG5G,MAAM,CAACe,WAAW;EAChC,MAAMN,QAAQ,GAAGxC,EAAE,CAACiC,UAAU;EAC9B,MAAMQ,QAAQ,GAAGzC,EAAE,CAACgC,SAAS;EAC7B,MAAM4G,SAAS,GAAGJ,SAAS,GAAGG,KAAK;EACnC,IAAIvD,WAAW,EAAE;IACb;IACArD,MAAM,CAACQ,SAAS,GAAGiG,SAAS;IAC5BzG,MAAM,CAACM,MAAM,GAAGG,QAAQ;IACxBT,MAAM,CAACO,MAAM,GAAGG,QAAQ;IACxBV,MAAM,CAACW,SAAS,GAAGX,MAAM,CAACY,SAAS,GAAG,CAAC;EAC3C;EACAZ,MAAM,CAACe,WAAW,GAAG0F,SAAS;EAC9BzG,MAAM,CAACS,QAAQ,GAAGT,MAAM,CAACE,UAAU,GAAGO,QAAQ;EAC9CT,MAAM,CAACU,QAAQ,GAAGV,MAAM,CAACC,SAAS,GAAGS,QAAQ;EAC7CV,MAAM,CAACa,MAAM,GAAGJ,QAAQ,GAAGT,MAAM,CAACM,MAAM;EACxCN,MAAM,CAACc,MAAM,GAAGJ,QAAQ,GAAGV,MAAM,CAACO,MAAM;EACxC,IAAIsG,SAAS,GAAG,CAAC,IAAIA,SAAS,GAAG,GAAG,EAAE;IAClC,MAAMlG,SAAS,GAAG,CAACF,QAAQ,GAAGiG,KAAK,IAAIG,SAAS;IAChD,MAAMjG,SAAS,GAAG,CAACF,QAAQ,GAAGiG,KAAK,IAAIE,SAAS;IAChD7G,MAAM,CAACW,SAAS,GAAGA,SAAS,GAAG,GAAG,GAAGX,MAAM,CAACW,SAAS,GAAG,GAAG;IAC3DX,MAAM,CAACY,SAAS,GAAGA,SAAS,GAAG,GAAG,GAAGZ,MAAM,CAACY,SAAS,GAAG,GAAG;EAC/D;AACJ,CAAC;AACD1B,OAAO,CAACX,KAAK,GAAGU,gBAAgB;AAEhC,MAAM6H,gBAAgB,GAAGA,CAACrD,QAAQ,EAAEsD,MAAM,KAAK;EAC3ClN,QAAQ,CAAC,MAAM;IACX,MAAMoG,SAAS,GAAGwD,QAAQ,CAACxD,SAAS;IACpC,MAAM+G,SAAS,GAAGvD,QAAQ,CAACc,YAAY,GAAGd,QAAQ,CAACe,YAAY;IAC/D;AACR;AACA;AACA;IACQ,MAAMyC,YAAY,GAAG,EAAE;IACvB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,MAAMC,SAAS,GAAGF,SAAS,GAAGC,YAAY;IAC1C,MAAME,eAAe,GAAGlH,SAAS,GAAGiH,SAAS;IAC7C,MAAME,KAAK,GAAGrM,KAAK,CAAC,CAAC,EAAE,CAAC,GAAGoM,eAAe,GAAGF,YAAY,EAAE,CAAC,CAAC;IAC7DhN,SAAS,CAAC,MAAM;MACZ8M,MAAM,CAACxI,KAAK,CAAC8I,WAAW,CAAC,iBAAiB,EAAED,KAAK,CAACE,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAED,MAAMC,YAAY,GAAG,kqBAAkqB;AACvrB,MAAMC,kBAAkB,GAAGD,YAAY;AAEvC,MAAME,WAAW,GAAG,yfAAyf;AAC7gB,MAAMC,iBAAiB,GAAGD,WAAW;AAErC,MAAME,MAAM,GAAG,MAAM;EACjBxL,WAAWA,CAACC,OAAO,EAAE;IAAA,IAAAwL,MAAA;IACjBxO,gBAAgB,CAAC,IAAI,EAAEgD,OAAO,CAAC;IAC/B,IAAI,CAACyL,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,sBAAsB,GAAG,MAAM;MAChC,MAAMhK,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;MAC7B,IAAIwD,IAAI,KAAK,KAAK,EAAE;QAChB;MACJ;MACA,MAAM;QAAEe;MAAS,CAAC,GAAG,IAAI;MACzB,MAAMkJ,OAAO,GAAGlJ,QAAQ,KAAK,MAAM;MACnC,IAAI,CAACmJ,wBAAwB,CAAC,CAAC;MAC/B,IAAID,OAAO,EAAE;QACT,MAAME,MAAM,GAAG,IAAI,CAAChK,EAAE,CAACyD,OAAO,CAAC,uCAAuC,CAAC;QACvE,MAAMwG,SAAS,GAAGD,MAAM,GAAG5M,cAAc,CAAC4M,MAAM,CAAC,GAAG,IAAI;QACxD,IAAI,CAACC,SAAS,EAAE;UACZ5M,uBAAuB,CAAC,IAAI,CAAC2C,EAAE,CAAC;UAChC;QACJ;QACA,IAAI,CAACkK,eAAe,CAACD,SAAS,CAAC;MACnC;IACJ,CAAC;IACD,IAAI,CAACC,eAAe;MAAA,IAAAC,KAAA,GAAA5L,iBAAA,CAAG,WAAO0L,SAAS,EAAK;QACxC,MAAMzE,QAAQ,GAAImE,MAAI,CAACnE,QAAQ,SAASjI,gBAAgB,CAAC0M,SAAS,CAAE;QACpE;AACZ;AACA;QACYN,MAAI,CAACS,qBAAqB,GAAG,MAAM;UAC/BvB,gBAAgB,CAACrD,QAAQ,EAAEmE,MAAI,CAAC3J,EAAE,CAAC;QACvC,CAAC;QACDwF,QAAQ,CAAC3B,gBAAgB,CAAC,QAAQ,EAAE8F,MAAI,CAACS,qBAAqB,CAAC;QAC/DvB,gBAAgB,CAACrD,QAAQ,EAAEmE,MAAI,CAAC3J,EAAE,CAAC;MACvC,CAAC;MAAA,iBAAAqK,EAAA;QAAA,OAAAF,KAAA,CAAAG,KAAA,OAAAC,SAAA;MAAA;IAAA;IACD,IAAI,CAACC,eAAe,GAAG,KAAK;IAC5B,IAAI,CAAC5J,QAAQ,GAAGwB,SAAS;IACzB,IAAI,CAACqI,WAAW,GAAG,KAAK;EAC5B;EACArM,gBAAgBA,CAAA,EAAG;IACf,IAAI,CAACyL,sBAAsB,CAAC,CAAC;EACjC;EACAa,kBAAkBA,CAAA,EAAG;IACjB,IAAI,CAACb,sBAAsB,CAAC,CAAC;EACjC;EACMrG,iBAAiBA,CAAA,EAAG;IAAA,IAAAmH,MAAA;IAAA,OAAApM,iBAAA;MACtBoM,MAAI,CAACf,YAAY,SAASpM,wBAAwB;QAAA,IAAAoN,KAAA,GAAArM,iBAAA,CAAC,WAAOsM,YAAY,EAAEC,aAAa,EAAK;UACtF;AACZ;AACA;AACA;AACA;UACY,IAAID,YAAY,KAAK,KAAK,IAAIC,aAAa,KAAK1I,SAAS,EAAE;YACvD,MAAM0I,aAAa;UACvB;UACAH,MAAI,CAACH,eAAe,GAAGK,YAAY,CAAC,CAAC;QACzC,CAAC;QAAA,iBAAAE,GAAA,EAAAC,GAAA;UAAA,OAAAJ,KAAA,CAAAN,KAAA,OAAAC,SAAA;QAAA;MAAA,IAAC;IAAC;EACP;EACAzG,oBAAoBA,CAAA,EAAG;IACnB,IAAI,IAAI,CAAC8F,YAAY,EAAE;MACnB,IAAI,CAACA,YAAY,CAACqB,OAAO,CAAC,CAAC;IAC/B;EACJ;EACAlB,wBAAwBA,CAAA,EAAG;IACvB,IAAI,IAAI,CAACvE,QAAQ,IAAI,IAAI,CAAC4E,qBAAqB,EAAE;MAC7C,IAAI,CAAC5E,QAAQ,CAACxB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAACoG,qBAAqB,CAAC;MACvE,IAAI,CAACA,qBAAqB,GAAGhI,SAAS;IAC1C;EACJ;EACAxC,MAAMA,CAAA,EAAG;IACL,MAAM;MAAE6K,WAAW;MAAE7J;IAAS,CAAC,GAAG,IAAI;IACtC,MAAMf,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC7B,MAAMkM,IAAI,GAAG,IAAI,CAACvI,EAAE,CAACyD,OAAO,CAAC,UAAU,CAAC;IACxC,MAAMyH,MAAM,GAAG3C,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,IAAI,CAAC4C,aAAa,CAAC,sBAAsB,CAAC;IACrG,OAAQ/P,CAAC,CAACE,IAAI,EAAE;MAAEwE,GAAG,EAAE,0CAA0C;MAAE8H,IAAI,EAAE,aAAa;MAAE7H,KAAK,EAAE;QACvF,CAACF,IAAI,GAAG,IAAI;QACZ;QACA,CAAC,UAAUA,IAAI,EAAE,GAAG,IAAI;QACxB,CAAC,oBAAoB,GAAG4K,WAAW;QACnC,CAAC,sBAAsB5K,IAAI,EAAE,GAAG4K,WAAW;QAC3C,CAAC,wBAAwB,GAAG,CAAC,IAAI,CAACD,eAAe,KAAK,CAACU,MAAM,IAAIA,MAAM,CAACE,IAAI,KAAK,QAAQ,CAAC;QAC1F,CAAC,mBAAmBxK,QAAQ,EAAE,GAAGA,QAAQ,KAAKwB;MAClD;IAAE,CAAC,EAAEvC,IAAI,KAAK,KAAK,IAAI4K,WAAW,IAAIrP,CAAC,CAAC,KAAK,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;IAAoB,CAAC,CAAC,EAAE3E,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE;IAA2C,CAAC,CAAC,CAAC;EACxM;EACA,IAAIE,EAAEA,CAAA,EAAG;IAAE,OAAOxE,UAAU,CAAC,IAAI,CAAC;EAAE;AACxC,CAAC;AACDkO,MAAM,CAACpJ,KAAK,GAAG;EACXO,GAAG,EAAE0I,kBAAkB;EACvBzI,EAAE,EAAE2I;AACR,CAAC;AAED,MAAM4B,UAAU,GAAG,sBAAsB;AACzC,MAAMC,YAAY,GAAIC,OAAO,IAAK;EAC9B,MAAMC,WAAW,GAAGC,QAAQ,CAACN,aAAa,CAAC,GAAGI,OAAO,qBAAqB,CAAC;EAC3E,IAAIC,WAAW,KAAK,IAAI,EAAE;IACtB,OAAOA,WAAW;EACtB;EACA,MAAME,QAAQ,GAAGD,QAAQ,CAACE,aAAa,CAACJ,OAAO,CAAC;EAChDG,QAAQ,CAACE,SAAS,CAACC,GAAG,CAAC,oBAAoB,CAAC;EAC5CH,QAAQ,CAACpL,KAAK,CAAC8I,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;EAC7CqC,QAAQ,CAACK,IAAI,CAACC,WAAW,CAACL,QAAQ,CAAC;EACnC,OAAOA,QAAQ;AACnB,CAAC;AACD,MAAMM,iBAAiB,GAAIC,QAAQ,IAAK;EACpC,IAAI,CAACA,QAAQ,EAAE;IACX;EACJ;EACA,MAAMC,QAAQ,GAAGD,QAAQ,CAACE,gBAAgB,CAAC,aAAa,CAAC;EACzD,OAAO;IACHnM,EAAE,EAAEiM,QAAQ;IACZC,QAAQ,EAAEE,KAAK,CAACC,IAAI,CAACH,QAAQ,CAAC,CAACI,GAAG,CAAEC,OAAO,IAAK;MAC5C,MAAMC,UAAU,GAAGD,OAAO,CAACpB,aAAa,CAAC,WAAW,CAAC;MACrD,OAAO;QACHnL,EAAE,EAAEuM,OAAO;QACXE,UAAU,EAAEF,OAAO,CAACG,UAAU,CAACvB,aAAa,CAAC,qBAAqB,CAAC;QACnEqB,UAAU;QACVG,YAAY,EAAEH,UAAU,GAAGA,UAAU,CAACE,UAAU,CAACvB,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;QACvFyB,YAAY,EAAER,KAAK,CAACC,IAAI,CAACE,OAAO,CAACJ,gBAAgB,CAAC,aAAa,CAAC;MACpE,CAAC;IACL,CAAC;EACL,CAAC;AACL,CAAC;AACD,MAAMU,mBAAmB,GAAGA,CAACrH,QAAQ,EAAEsH,iBAAiB,EAAE7C,SAAS,KAAK;EACpErO,QAAQ,CAAC,MAAM;IACX,MAAMoG,SAAS,GAAGwD,QAAQ,CAACxD,SAAS;IACpC,MAAMmH,KAAK,GAAGrM,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAACkF,SAAS,GAAG,GAAG,EAAE,GAAG,CAAC;IACjD;IACA,MAAM+K,eAAe,GAAG9C,SAAS,CAACkB,aAAa,CAAC,gCAAgC,CAAC;IACjF,IAAI4B,eAAe,KAAK,IAAI,EAAE;MAC1B/Q,SAAS,CAAC,MAAM;QACZgR,gBAAgB,CAACF,iBAAiB,CAACZ,QAAQ,EAAE/C,KAAK,CAAC;MACvD,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AACD,MAAM8D,2BAA2B,GAAGA,CAAChB,QAAQ,EAAEiB,OAAO,KAAK;EACvD;AACJ;AACA;AACA;AACA;AACA;EACI,IAAIjB,QAAQ,CAACrL,QAAQ,KAAK,MAAM,EAAE;IAC9B;EACJ;EACA,IAAIsM,OAAO,KAAK9K,SAAS,EAAE;IACvB6J,QAAQ,CAAC3L,KAAK,CAAC6M,cAAc,CAAC,iBAAiB,CAAC;EACpD,CAAC,MACI;IACDlB,QAAQ,CAAC3L,KAAK,CAAC8I,WAAW,CAAC,iBAAiB,EAAE8D,OAAO,CAAC7D,QAAQ,CAAC,CAAC,CAAC;EACrE;AACJ,CAAC;AACD,MAAM+D,+BAA+B,GAAGA,CAACpI,EAAE,EAAEqI,eAAe,EAAErL,SAAS,KAAK;EACxE,IAAI,CAACgD,EAAE,CAAC,CAAC,CAAC,CAACsI,cAAc,EAAE;IACvB;EACJ;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMnE,KAAK,GAAGnE,EAAE,CAAC,CAAC,CAAC,CAACuI,iBAAiB,GAAG,GAAG,IAAIvL,SAAS,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,CAAC,GAAGgD,EAAE,CAAC,CAAC,CAAC,CAACuI,iBAAiB,IAAI,GAAG,GAAI,EAAE;EAC9GN,2BAA2B,CAACI,eAAe,CAACrN,EAAE,EAAEmJ,KAAK,KAAK,CAAC,GAAG/G,SAAS,GAAG+G,KAAK,CAAC;AACpF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAMqE,yBAAyB,GAAGA,CAACxI,EAAE;AAAE;AACvCqI,eAAe,EAAEP,iBAAiB,EAAEtH,QAAQ,KAAK;EAC7CxJ,SAAS,CAAC,MAAM;IACZ,MAAMgG,SAAS,GAAGwD,QAAQ,CAACxD,SAAS;IACpCoL,+BAA+B,CAACpI,EAAE,EAAEqI,eAAe,EAAErL,SAAS,CAAC;IAC/D,MAAMG,KAAK,GAAG6C,EAAE,CAAC,CAAC,CAAC;IACnB,MAAMyI,YAAY,GAAGtL,KAAK,CAACuL,gBAAgB;IAC3C,MAAMC,gBAAgB,GAAGF,YAAY,CAACG,KAAK,GAAGH,YAAY,CAACI,MAAM;IACjE,MAAMC,QAAQ,GAAG3L,KAAK,CAAC4L,UAAU,CAACH,KAAK,GAAGzL,KAAK,CAAC4L,UAAU,CAACF,MAAM;IACjE,MAAMG,YAAY,GAAGL,gBAAgB,KAAK,CAAC,IAAIG,QAAQ,KAAK,CAAC;IAC7D,MAAMG,QAAQ,GAAGxJ,IAAI,CAACyJ,GAAG,CAACT,YAAY,CAACU,IAAI,GAAGhM,KAAK,CAACiM,kBAAkB,CAACD,IAAI,CAAC;IAC5E,MAAME,SAAS,GAAG5J,IAAI,CAACyJ,GAAG,CAACT,YAAY,CAACa,KAAK,GAAGnM,KAAK,CAACiM,kBAAkB,CAACE,KAAK,CAAC;IAC/E,MAAMC,mBAAmB,GAAGZ,gBAAgB,GAAG,CAAC,KAAKM,QAAQ,IAAI,CAAC,IAAII,SAAS,IAAI,CAAC,CAAC;IACrF,IAAIL,YAAY,IAAIO,mBAAmB,EAAE;MACrC;IACJ;IACA,IAAIpM,KAAK,CAACmL,cAAc,EAAE;MACtBkB,eAAe,CAACnB,eAAe,EAAE,KAAK,CAAC;MACvCmB,eAAe,CAAC1B,iBAAiB,CAAC;IACtC,CAAC,MACI;MACD;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;MACY,MAAM2B,oBAAoB,GAAIhB,YAAY,CAAChH,CAAC,KAAK,CAAC,IAAIgH,YAAY,CAACpH,CAAC,KAAK,CAAC,IAAMoH,YAAY,CAACG,KAAK,KAAK,CAAC,IAAIH,YAAY,CAACI,MAAM,KAAK,CAAE;MACtI,IAAIY,oBAAoB,IAAIzM,SAAS,GAAG,CAAC,EAAE;QACvCwM,eAAe,CAACnB,eAAe,CAAC;QAChCmB,eAAe,CAAC1B,iBAAiB,EAAE,KAAK,CAAC;QACzCG,2BAA2B,CAACI,eAAe,CAACrN,EAAE,CAAC;MACnD;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AACD,MAAMwO,eAAe,GAAGA,CAACE,WAAW,EAAEC,MAAM,GAAG,IAAI,KAAK;EACpD,MAAM1C,QAAQ,GAAGyC,WAAW,CAAC1O,EAAE;EAC/B,IAAI2O,MAAM,EAAE;IACR1C,QAAQ,CAACL,SAAS,CAACgD,MAAM,CAAC,mCAAmC,CAAC;IAC9D3C,QAAQ,CAAC4C,eAAe,CAAC,aAAa,CAAC;EAC3C,CAAC,MACI;IACD5C,QAAQ,CAACL,SAAS,CAACC,GAAG,CAAC,mCAAmC,CAAC;IAC3DI,QAAQ,CAAC6C,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;EAChD;AACJ,CAAC;AACD,MAAM9B,gBAAgB,GAAGA,CAACd,QAAQ,GAAG,EAAE,EAAE/C,KAAK,GAAG,CAAC,EAAErL,UAAU,GAAG,KAAK,KAAK;EACvEoO,QAAQ,CAAC6C,OAAO,CAAExC,OAAO,IAAK;IAC1B,MAAMyC,QAAQ,GAAGzC,OAAO,CAACC,UAAU;IACnC,MAAMyC,QAAQ,GAAG1C,OAAO,CAACI,YAAY;IACrC,IAAI,CAACqC,QAAQ,IAAIA,QAAQ,CAACE,IAAI,KAAK,OAAO,EAAE;MACxC;IACJ;IACAD,QAAQ,CAAC3O,KAAK,CAACxC,UAAU,GAAGA,UAAU,GAAGuN,UAAU,GAAG,EAAE;IACxD4D,QAAQ,CAAC3O,KAAK,CAAC6O,SAAS,GAAG,WAAWhG,KAAK,KAAKA,KAAK,MAAM;EAC/D,CAAC,CAAC;AACN,CAAC;AACD,MAAMiG,gBAAgB,GAAGA,CAAC5J,QAAQ,EAAEsD,MAAM,EAAEuG,cAAc,KAAK;EAC3DzT,QAAQ,CAAC,MAAM;IACX,MAAMoG,SAAS,GAAGwD,QAAQ,CAACxD,SAAS;IACpC,MAAMsN,YAAY,GAAGxG,MAAM,CAACvC,YAAY;IACxC,MAAM0C,SAAS,GAAGoG,cAAc,GAAGA,cAAc,CAAC9I,YAAY,GAAG,CAAC;IAClE;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI8I,cAAc,KAAK,IAAI,IAAIrN,SAAS,GAAGiH,SAAS,EAAE;MAClDH,MAAM,CAACxI,KAAK,CAAC8I,WAAW,CAAC,iBAAiB,EAAE,GAAG,CAAC;MAChD5D,QAAQ,CAAClF,KAAK,CAAC8I,WAAW,CAAC,WAAW,EAAE,SAASkG,YAAY,iBAAiB,CAAC;MAC/E;IACJ;IACA,MAAMpG,eAAe,GAAGlH,SAAS,GAAGiH,SAAS;IAC7C,MAAMD,YAAY,GAAG,EAAE;IACvB,MAAMG,KAAK,GAAGrM,KAAK,CAAC,CAAC,EAAEoM,eAAe,GAAGF,YAAY,EAAE,CAAC,CAAC;IACzDhN,SAAS,CAAC,MAAM;MACZwJ,QAAQ,CAAClF,KAAK,CAAC6M,cAAc,CAAC,WAAW,CAAC;MAC1CrE,MAAM,CAACxI,KAAK,CAAC8I,WAAW,CAAC,iBAAiB,EAAED,KAAK,CAACE,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAED,MAAMkG,YAAY,GAAG,+lEAA+lE;AACpnE,MAAMC,kBAAkB,GAAGD,YAAY;AAEvC,MAAME,WAAW,GAAG,sgBAAsgB;AAC1hB,MAAMC,iBAAiB,GAAGD,WAAW;AAErC,MAAME,MAAM,GAAG,MAAM;EACjBzR,WAAWA,CAACC,OAAO,EAAE;IAAA,IAAAyR,OAAA;IACjBzU,gBAAgB,CAAC,IAAI,EAAEgD,OAAO,CAAC;IAC/B,IAAI,CAAC0D,mBAAmB,GAAG,CAAC,CAAC;IAC7B,IAAI,CAACgO,eAAe;MAAA,IAAAC,KAAA,GAAAvR,iBAAA,CAAG,WAAO0L,SAAS,EAAEoF,cAAc,EAAK;QACxD,MAAM7J,QAAQ,GAAIoK,OAAI,CAACpK,QAAQ,SAASjI,gBAAgB,CAAC0M,SAAS,CAAE;QACpE;AACZ;AACA;QACY2F,OAAI,CAACxF,qBAAqB,GAAG,MAAM;UAC/BgF,gBAAgB,CAACQ,OAAI,CAACpK,QAAQ,EAAEoK,OAAI,CAAC5P,EAAE,EAAEqP,cAAc,CAAC;QAC5D,CAAC;QACD7J,QAAQ,CAAC3B,gBAAgB,CAAC,QAAQ,EAAE+L,OAAI,CAACxF,qBAAqB,CAAC;QAC/DgF,gBAAgB,CAACQ,OAAI,CAACpK,QAAQ,EAAEoK,OAAI,CAAC5P,EAAE,EAAEqP,cAAc,CAAC;MAC5D,CAAC;MAAA,iBAAAU,GAAA,EAAAC,GAAA;QAAA,OAAAF,KAAA,CAAAxF,KAAA,OAAAC,SAAA;MAAA;IAAA;IACD,IAAI,CAAC3J,QAAQ,GAAGwB,SAAS;IACzB,IAAI,CAACqI,WAAW,GAAG,KAAK;EAC5B;EACAlH,iBAAiBA,CAAA,EAAG;IAChB,IAAI,CAAC1B,mBAAmB,GAAGnF,qBAAqB,CAAC,IAAI,CAACsD,EAAE,CAAC;EAC7D;EACA5B,gBAAgBA,CAAA,EAAG;IACf,IAAI,CAAC6R,sBAAsB,CAAC,CAAC;EACjC;EACAvF,kBAAkBA,CAAA,EAAG;IACjB,IAAI,CAACuF,sBAAsB,CAAC,CAAC;EACjC;EACAnM,oBAAoBA,CAAA,EAAG;IACnB,IAAI,CAACoM,wBAAwB,CAAC,CAAC;EACnC;EACMD,sBAAsBA,CAAA,EAAG;IAAA,IAAAE,OAAA;IAAA,OAAA5R,iBAAA;MAC3B,MAAMsB,IAAI,GAAGxD,UAAU,CAAC8T,OAAI,CAAC;MAC7B,IAAItQ,IAAI,KAAK,KAAK,EAAE;QAChB;MACJ;MACA,MAAM;QAAEe;MAAS,CAAC,GAAGuP,OAAI;MACzB,MAAMC,WAAW,GAAGxP,QAAQ,KAAK,UAAU;MAC3C,MAAMkJ,OAAO,GAAGlJ,QAAQ,KAAK,MAAM;MACnCuP,OAAI,CAACD,wBAAwB,CAAC,CAAC;MAC/B,IAAIE,WAAW,EAAE;QACb,MAAMpG,MAAM,GAAGmG,OAAI,CAACnQ,EAAE,CAACyD,OAAO,CAAC,uCAAuC,CAAC;QACvE,MAAMwG,SAAS,GAAGD,MAAM,GAAG5M,cAAc,CAAC4M,MAAM,CAAC,GAAG,IAAI;QACxD;QACAhO,SAAS,CAAC,MAAM;UACZ,MAAMqU,KAAK,GAAG/E,YAAY,CAAC,WAAW,CAAC;UACvC+E,KAAK,CAACnB,IAAI,GAAG,OAAO;UACpB5D,YAAY,CAAC,iBAAiB,CAAC;QACnC,CAAC,CAAC;QACF,MAAM6E,OAAI,CAACG,mBAAmB,CAACrG,SAAS,EAAED,MAAM,CAAC;MACrD,CAAC,MACI,IAAIF,OAAO,EAAE;QACd,MAAME,MAAM,GAAGmG,OAAI,CAACnQ,EAAE,CAACyD,OAAO,CAAC,uCAAuC,CAAC;QACvE,MAAMwG,SAAS,GAAGD,MAAM,GAAG5M,cAAc,CAAC4M,MAAM,CAAC,GAAG,IAAI;QACxD,IAAI,CAACC,SAAS,EAAE;UACZ5M,uBAAuB,CAAC8S,OAAI,CAACnQ,EAAE,CAAC;UAChC;QACJ;QACA,MAAMqP,cAAc,GAAGpF,SAAS,CAACkB,aAAa,CAAC,iCAAiC,CAAC;QACjF,MAAMgF,OAAI,CAACN,eAAe,CAAC5F,SAAS,EAAEoF,cAAc,CAAC;MACzD;IAAC;EACL;EACAa,wBAAwBA,CAAA,EAAG;IACvB,IAAI,IAAI,CAACK,oBAAoB,EAAE;MAC3B,IAAI,CAACA,oBAAoB,CAACC,UAAU,CAAC,CAAC;MACtC,IAAI,CAACD,oBAAoB,GAAGnO,SAAS;IACzC;IACA,IAAI,IAAI,CAACoD,QAAQ,IAAI,IAAI,CAAC4E,qBAAqB,EAAE;MAC7C,IAAI,CAAC5E,QAAQ,CAACxB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAACoG,qBAAqB,CAAC;MACvE,IAAI,CAACA,qBAAqB,GAAGhI,SAAS;IAC1C;IACA,IAAI,IAAI,CAACqO,qBAAqB,EAAE;MAC5B,IAAI,CAACA,qBAAqB,CAAC7E,SAAS,CAACgD,MAAM,CAAC,sBAAsB,CAAC;MACnE,IAAI,CAAC6B,qBAAqB,GAAGrO,SAAS;IAC1C;EACJ;EACMkO,mBAAmBA,CAACrG,SAAS,EAAED,MAAM,EAAE;IAAA,IAAA0G,OAAA;IAAA,OAAAnS,iBAAA;MACzC,IAAI,CAAC0L,SAAS,IAAI,CAACD,MAAM,EAAE;QACvB3M,uBAAuB,CAACqT,OAAI,CAAC1Q,EAAE,CAAC;QAChC;MACJ;MACA,IAAI,OAAO2Q,oBAAoB,KAAK,WAAW,EAAE;QAC7C;MACJ;MACAD,OAAI,CAAClL,QAAQ,SAASjI,gBAAgB,CAAC0M,SAAS,CAAC;MACjD,MAAM2G,OAAO,GAAG5G,MAAM,CAACmC,gBAAgB,CAAC,YAAY,CAAC;MACrDuE,OAAI,CAACD,qBAAqB,GAAGrE,KAAK,CAACC,IAAI,CAACuE,OAAO,CAAC,CAACC,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAAClQ,QAAQ,KAAK,UAAU,CAAC;MACjG,IAAI,CAAC8P,OAAI,CAACD,qBAAqB,EAAE;QAC7B;MACJ;MACA,MAAMpD,eAAe,GAAGrB,iBAAiB,CAAC0E,OAAI,CAACD,qBAAqB,CAAC;MACrE,MAAM3D,iBAAiB,GAAGd,iBAAiB,CAAC0E,OAAI,CAAC1Q,EAAE,CAAC;MACpD,IAAI,CAACqN,eAAe,IAAI,CAACP,iBAAiB,EAAE;QACxC;MACJ;MACA0B,eAAe,CAACnB,eAAe,EAAE,KAAK,CAAC;MACvCJ,2BAA2B,CAACI,eAAe,CAACrN,EAAE,EAAE,CAAC,CAAC;MAClD;AACR;AACA;AACA;AACA;AACA;MACQ,MAAM+Q,mBAAmB,GAAI/L,EAAE,IAAK;QAChCwI,yBAAyB,CAACxI,EAAE,EAAEqI,eAAe,EAAEP,iBAAiB,EAAE4D,OAAI,CAAClL,QAAQ,CAAC;MACpF,CAAC;MACDkL,OAAI,CAACH,oBAAoB,GAAG,IAAII,oBAAoB,CAACI,mBAAmB,EAAE;QACtEC,IAAI,EAAE/G,SAAS;QACfgH,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;MAC1D,CAAC,CAAC;MACFP,OAAI,CAACH,oBAAoB,CAACW,OAAO,CAACpE,iBAAiB,CAACZ,QAAQ,CAACY,iBAAiB,CAACZ,QAAQ,CAACiF,MAAM,GAAG,CAAC,CAAC,CAACnR,EAAE,CAAC;MACvG;AACR;AACA;AACA;AACA;MACQ0Q,OAAI,CAACtG,qBAAqB,GAAG,MAAM;QAC/ByC,mBAAmB,CAAC6D,OAAI,CAAClL,QAAQ,EAAEsH,iBAAiB,EAAE7C,SAAS,CAAC;MACpE,CAAC;MACDyG,OAAI,CAAClL,QAAQ,CAAC3B,gBAAgB,CAAC,QAAQ,EAAE6M,OAAI,CAACtG,qBAAqB,CAAC;MACpEpO,SAAS,CAAC,MAAM;QACZ,IAAI0U,OAAI,CAACD,qBAAqB,KAAKrO,SAAS,EAAE;UAC1CsO,OAAI,CAACD,qBAAqB,CAAC7E,SAAS,CAACC,GAAG,CAAC,sBAAsB,CAAC;QACpE;MACJ,CAAC,CAAC;IAAC;EACP;EACAjM,MAAMA,CAAA,EAAG;IACL,MAAM;MAAE6K,WAAW;MAAE5I;IAAoB,CAAC,GAAG,IAAI;IACjD,MAAMhC,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC7B,MAAMuE,QAAQ,GAAG,IAAI,CAACA,QAAQ,IAAI,MAAM;IACxC;IACA,MAAMwQ,QAAQ,GAAGjU,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC6C,EAAE,CAAC,GAAG,MAAM,GAAG,QAAQ;IACrE,OAAQ5E,CAAC,CAACE,IAAI,EAAEoM,MAAM,CAACC,MAAM,CAAC;MAAE7H,GAAG,EAAE,0CAA0C;MAAE8H,IAAI,EAAEwJ,QAAQ;MAAErR,KAAK,EAAE;QAChG,CAACF,IAAI,GAAG,IAAI;QACZ;QACA,CAAC,UAAUA,IAAI,EAAE,GAAG,IAAI;QACxB,CAAC,oBAAoB,GAAG,IAAI,CAAC4K,WAAW;QACxC,CAAC,mBAAmB7J,QAAQ,EAAE,GAAG,IAAI;QACrC,CAAC,sBAAsBf,IAAI,EAAE,GAAG,IAAI,CAAC4K;MACzC;IAAE,CAAC,EAAE5I,mBAAmB,CAAC,EAAEhC,IAAI,KAAK,KAAK,IAAI4K,WAAW,IAAIrP,CAAC,CAAC,KAAK,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;IAAoB,CAAC,CAAC,EAAE3E,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE;IAA2C,CAAC,CAAC,CAAC;EAC9N;EACA,IAAIE,EAAEA,CAAA,EAAG;IAAE,OAAOxE,UAAU,CAAC,IAAI,CAAC;EAAE;AACxC,CAAC;AACDmU,MAAM,CAACrP,KAAK,GAAG;EACXO,GAAG,EAAE2O,kBAAkB;EACvB1O,EAAE,EAAE4O;AACR,CAAC;AAED,MAAM2B,eAAe,GAAG,4FAA4F;AACpH,MAAMC,qBAAqB,GAAGD,eAAe;AAE7C,MAAME,YAAY,GAAG,MAAM;EACvBrT,WAAWA,CAACC,OAAO,EAAE;IACjBhD,gBAAgB,CAAC,IAAI,EAAEgD,OAAO,CAAC;IAC/B,IAAI,CAACqT,cAAc,GAAG9V,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC+V,gBAAgB,GAAG/V,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChE,IAAI,CAACgW,eAAe,GAAGhW,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9D,IAAI,CAACiW,cAAc,GAAG/T,oBAAoB,CAAC,CAAC;IAC5C,IAAI,CAACgU,4BAA4B,GAAG,KAAK;IACzC,IAAI,CAAC/R,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC5B,IAAI,CAACwV,QAAQ,GAAGzP,SAAS;IACzB,IAAI,CAAC0P,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,SAAS,GAAG3P,SAAS;IAC1B,IAAI,CAAC4P,YAAY,GAAG5P,SAAS;EACjC;EACA6P,mBAAmBA,CAAA,EAAG;IAClB,IAAI,IAAI,CAACC,OAAO,EAAE;MACd,IAAI,CAACA,OAAO,CAACC,MAAM,CAAC,IAAI,CAACH,YAAY,KAAK5P,SAAS,CAAC;IACxD;EACJ;EACMoB,iBAAiBA,CAAA,EAAG;IAAA,IAAA4O,OAAA;IAAA,OAAA7T,iBAAA;MACtB,MAAM8T,OAAO,GAAGA,CAAA,KAAM;QAClBD,OAAI,CAACR,4BAA4B,GAAG,IAAI;QACxC,IAAIQ,OAAI,CAACJ,YAAY,EAAE;UACnBI,OAAI,CAACJ,YAAY,CAACK,OAAO,CAAC,CAAC;QAC/B;MACJ,CAAC;MACDD,OAAI,CAACF,OAAO,GAAG,OAAO,MAAM,CAAC,0BAA0B,CAAC,EAAEI,sBAAsB,CAACF,OAAI,CAACpS,EAAE,EAAE,MAAM,CAACoS,OAAI,CAACR,4BAA4B,IAAI,CAAC,CAACQ,OAAI,CAACJ,YAAY,IAAII,OAAI,CAACJ,YAAY,CAACO,QAAQ,CAAC,CAAC,EAAE,MAAMF,OAAO,CAAC,CAAC,EAAGtL,IAAI,IAAK;QAAE,IAAIoB,EAAE;QAAE,OAAO,CAACA,EAAE,GAAGiK,OAAI,CAACI,GAAG,MAAM,IAAI,IAAIrK,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,EAAE,CAACsK,YAAY,CAAC1L,IAAI,CAAC;MAAE,CAAC,EAAE,CAAC2L,cAAc,EAAE3L,IAAI,EAAE4L,GAAG,KAAK;QACjV,IAAIP,OAAI,CAACI,GAAG,EAAE;UACVJ,OAAI,CAACI,GAAG,CAACI,QAAQ,CAAC,MAAM;YACpBR,OAAI,CAACR,4BAA4B,GAAG,KAAK;YACzC,IAAIQ,OAAI,CAACJ,YAAY,EAAE;cACnBI,OAAI,CAACJ,YAAY,CAACa,KAAK,CAACH,cAAc,CAAC;YAC3C;UACJ,CAAC,EAAE;YAAEI,eAAe,EAAE;UAAK,CAAC,CAAC;UAC7B;UACA,IAAIC,YAAY,GAAGL,cAAc,GAAG,CAAC,KAAK,GAAG,KAAK;UAClD;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;UACgB,IAAI,CAACA,cAAc,EAAE;YACjBN,OAAI,CAACI,GAAG,CAACQ,MAAM,CAAC,gCAAgC,CAAC;YACjDD,YAAY,IAAItV,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEsJ,IAAI,CAAC,CAAC,CAAC,CAAC;UAC1F,CAAC,MACI;YACDgM,YAAY,IAAItV,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEsJ,IAAI,CAAC,CAAC,CAAC,CAAC;UAC1F;UACAqL,OAAI,CAACI,GAAG,CAACS,WAAW,CAACP,cAAc,GAAG,CAAC,GAAG,CAAC,EAAEK,YAAY,EAAEJ,GAAG,CAAC;QACnE,CAAC,MACI;UACDP,OAAI,CAACR,4BAA4B,GAAG,KAAK;QAC7C;MACJ,CAAC,CAAC;MACFQ,OAAI,CAACH,mBAAmB,CAAC,CAAC;IAAC;EAC/B;EACA1O,iBAAiBA,CAAA,EAAG;IAChB,IAAI,CAACiO,cAAc,CAAC/L,IAAI,CAAC,CAAC;EAC9B;EACA3B,oBAAoBA,CAAA,EAAG;IACnB,IAAI,IAAI,CAACoO,OAAO,EAAE;MACd,IAAI,CAACA,OAAO,CAACjH,OAAO,CAAC,CAAC;MACtB,IAAI,CAACiH,OAAO,GAAG9P,SAAS;IAC5B;EACJ;EACA;EACM8Q,MAAMA,CAACC,UAAU,EAAEC,SAAS,EAAEC,IAAI,EAAE;IAAA,IAAAC,OAAA;IAAA,OAAA/U,iBAAA;MACtC,MAAMgV,MAAM,SAASD,OAAI,CAAC3B,cAAc,CAAC6B,IAAI,CAAC,CAAC;MAC/C,IAAIC,OAAO,GAAG,KAAK;MACnB,IAAI;QACAA,OAAO,SAASH,OAAI,CAACxV,UAAU,CAACqV,UAAU,EAAEC,SAAS,EAAEC,IAAI,CAAC;MAChE,CAAC,CACD,OAAO1X,CAAC,EAAE;QACN+X,OAAO,CAACC,KAAK,CAAChY,CAAC,CAAC;MACpB;MACA4X,MAAM,CAAC,CAAC;MACR,OAAOE,OAAO;IAAC;EACnB;EACA;EACMG,UAAUA,CAAC7L,EAAE,EAAE8L,MAAM,EAAEC,SAAS,EAAE/B,SAAS,EAAE;IAAA,IAAAgC,OAAA;IAAA,OAAAxV,iBAAA;MAC/C,MAAMkV,OAAO,SAASM,OAAI,CAACC,OAAO,CAACjM,EAAE,EAAE8L,MAAM,EAAE;QAC3C5N,QAAQ,EAAE6N,SAAS,KAAK,MAAM,GAAG,CAAC,GAAG1R,SAAS;QAC9C0R,SAAS,EAAEA,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;QACpDG,gBAAgB,EAAElC;MACtB,CAAC,CAAC;MACF,OAAO;QACH0B,OAAO;QACPS,OAAO,EAAEH,OAAI,CAACI;MAClB,CAAC;IAAC;EACN;EACA;EACMC,UAAUA,CAAA,EAAG;IAAA,IAAAC,OAAA;IAAA,OAAA9V,iBAAA;MACf,MAAMoQ,MAAM,GAAG0F,OAAI,CAACF,QAAQ;MAC5B,OAAOxF,MAAM,GACP;QACE5G,EAAE,EAAE4G,MAAM,CAACpD,OAAO;QAClB2I,OAAO,EAAEvF,MAAM;QACfkF,MAAM,EAAEQ,OAAI,CAACC;MACjB,CAAC,GACClS,SAAS;IAAC;EACpB;EACM4R,OAAOA,CAACO,SAAS,EAAEV,MAAM,EAAER,IAAI,EAAE;IAAA,IAAAmB,OAAA;IAAA,OAAAjW,iBAAA;MACnC,IAAIiW,OAAI,CAACC,eAAe,KAAKF,SAAS,IAAIvX,qBAAqB,CAAC6W,MAAM,EAAEW,OAAI,CAACF,YAAY,CAAC,EAAE;QACxF,OAAO,KAAK;MAChB;MACA;MACA,MAAMlB,SAAS,GAAGoB,OAAI,CAACL,QAAQ;MAC/B,MAAMhB,UAAU,SAASzV,eAAe,CAAC8W,OAAI,CAAC3C,QAAQ,EAAE2C,OAAI,CAACxU,EAAE,EAAEuU,SAAS,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAEV,MAAM,CAAC;MACvHW,OAAI,CAACC,eAAe,GAAGF,SAAS;MAChCC,OAAI,CAACL,QAAQ,GAAGhB,UAAU;MAC1BqB,OAAI,CAACF,YAAY,GAAGT,MAAM;MAC1B;MACA,MAAMW,OAAI,CAACtB,MAAM,CAACC,UAAU,EAAEC,SAAS,EAAEC,IAAI,CAAC;MAC9C,MAAM1V,eAAe,CAAC6W,OAAI,CAAC3C,QAAQ,EAAEuB,SAAS,CAAC;MAC/C,OAAO,IAAI;IAAC;EAChB;EACMtV,UAAUA,CAACqV,UAAU,EAAEC,SAAS,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IAAA,IAAAqB,OAAA;IAAA,OAAAnW,iBAAA;MAC/C,IAAI6U,SAAS,KAAKD,UAAU,EAAE;QAC1B,OAAO,KAAK;MAChB;MACA;MACAuB,OAAI,CAACjD,gBAAgB,CAAChM,IAAI,CAAC,CAAC;MAC5B,MAAM;QAAEzF,EAAE;QAAEH;MAAK,CAAC,GAAG6U,OAAI;MACzB,MAAM5C,QAAQ,GAAG4C,OAAI,CAAC5C,QAAQ,IAAIvV,MAAM,CAACmC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;MACrE,MAAMuV,gBAAgB,GAAGZ,IAAI,CAACY,gBAAgB,IAAIS,OAAI,CAAC3C,SAAS,IAAIxV,MAAM,CAACoY,GAAG,CAAC,cAAc,CAAC;MAC9F,MAAM7W,UAAU,CAAC4J,MAAM,CAACC,MAAM,CAACD,MAAM,CAACC,MAAM,CAAC;QAAE9H,IAAI;QAC/CiS,QAAQ;QACRqB,UAAU;QACVC,SAAS;QAAEtK,MAAM,EAAE9I,EAAE;QACrB;AACZ;AACA;AACA;AACA;QACY4U,QAAQ,EAAEhY,YAAY,CAACoD,EAAE,CAAC;QAAE6U,gBAAgB,EAAExB,IAAI,CAACyB,iBAAiB,GAC7DtC,GAAG,IAAK;UACP;AACpB;AACA;AACA;AACA;AACA;AACA;UACoB,IAAIA,GAAG,KAAKpQ,SAAS,IAAI,CAACsS,OAAI,CAAC9C,4BAA4B,EAAE;YACzD8C,OAAI,CAAC9C,4BAA4B,GAAG,IAAI;YACxCY,GAAG,CAACI,QAAQ,CAAC,MAAM;cACf8B,OAAI,CAAC9C,4BAA4B,GAAG,KAAK;cACzC,IAAI8C,OAAI,CAAC1C,YAAY,EAAE;gBACnB0C,OAAI,CAAC1C,YAAY,CAACa,KAAK,CAAC,KAAK,CAAC;cAClC;YACJ,CAAC,EAAE;cAAEC,eAAe,EAAE;YAAK,CAAC,CAAC;YAC7B;AACxB;AACA;AACA;AACA;AACA;YACwBN,GAAG,CAACS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;UAC5B,CAAC,MACI;YACDyB,OAAI,CAAClC,GAAG,GAAGA,GAAG;UAClB;QACJ,CAAC,GACCpQ;MAAU,CAAC,EAAEiR,IAAI,CAAC,EAAE;QAAEY;MAAiB,CAAC,CAAC,CAAC;MACpD;MACAS,OAAI,CAAChD,eAAe,CAACjM,IAAI,CAAC,CAAC;MAC3B,OAAO,IAAI;IAAC;EAChB;EACA7F,MAAMA,CAAA,EAAG;IACL,OAAOxE,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE;IAA2C,CAAC,CAAC;EACzE;EACA,IAAIE,EAAEA,CAAA,EAAG;IAAE,OAAOxE,UAAU,CAAC,IAAI,CAAC;EAAE;EACpC,WAAWuZ,QAAQA,CAAA,EAAG;IAAE,OAAO;MAC3B,cAAc,EAAE,CAAC,qBAAqB;IAC1C,CAAC;EAAE;AACP,CAAC;AACDxD,YAAY,CAACjR,KAAK,GAAGgR,qBAAqB;AAE1C,MAAM0D,WAAW,GAAG,ujEAAujE;AAC3kE,MAAMC,iBAAiB,GAAGD,WAAW;AAErC,MAAME,UAAU,GAAG,grBAAgrB;AACnsB,MAAMC,gBAAgB,GAAGD,UAAU;AAEnC,MAAME,YAAY,GAAG,MAAM;EACvBlX,WAAWA,CAACC,OAAO,EAAE;IACjBhD,gBAAgB,CAAC,IAAI,EAAEgD,OAAO,CAAC;IAC/B,IAAI,CAACkX,QAAQ,GAAG3Z,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAChD,IAAI,CAACsH,KAAK,GAAGZ,SAAS;IACtB,IAAI,CAAC8M,IAAI,GAAG9M,SAAS;EACzB;EACAkT,WAAWA,CAAA,EAAG;IACV,IAAI,CAACC,SAAS,CAAC,CAAC;EACpB;EACA/R,iBAAiBA,CAAA,EAAG;IAChB,IAAI,CAAC+R,SAAS,CAAC,CAAC;EACpB;EACAA,SAASA,CAAA,EAAG;IACR,MAAMrG,IAAI,GAAG,IAAI,CAACsG,OAAO,CAAC,CAAC;IAC3B,IAAI,CAACH,QAAQ,CAAC5P,IAAI,CAAC;MACf,CAAC,SAASyJ,IAAI,EAAE,GAAG;IACvB,CAAC,CAAC;EACN;EACAsG,OAAOA,CAAA,EAAG;IACN,OAAO,IAAI,CAACtG,IAAI,KAAK9M,SAAS,GAAG,IAAI,CAAC8M,IAAI,GAAG,SAAS;EAC1D;EACAtP,MAAMA,CAAA,EAAG;IACL,MAAMC,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC7B,MAAM6S,IAAI,GAAG,IAAI,CAACsG,OAAO,CAAC,CAAC;IAC3B,OAAQpa,CAAC,CAACE,IAAI,EAAE;MAAEwE,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE7C,kBAAkB,CAAC,IAAI,CAAC8F,KAAK,EAAE;QACjG,CAACnD,IAAI,GAAG,IAAI;QACZ,CAAC,SAASqP,IAAI,EAAE,GAAG,IAAI;QACvB,WAAW,EAAEzD,QAAQ,CAACgK,GAAG,KAAK;MAClC,CAAC;IAAE,CAAC,EAAEra,CAAC,CAAC,KAAK,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;IAAgB,CAAC,EAAE3E,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE;IAA2C,CAAC,CAAC,CAAC,CAAC;EACpK;EACA,IAAIE,EAAEA,CAAA,EAAG;IAAE,OAAOxE,UAAU,CAAC,IAAI,CAAC;EAAE;EACpC,WAAWuZ,QAAQA,CAAA,EAAG;IAAE,OAAO;MAC3B,MAAM,EAAE,CAAC,aAAa;IAC1B,CAAC;EAAE;AACP,CAAC;AACDK,YAAY,CAAC9U,KAAK,GAAG;EACjBO,GAAG,EAAEoU,iBAAiB;EACtBnU,EAAE,EAAEqU;AACR,CAAC;AAED,MAAMO,aAAa,GAAG,0xFAA0xF;AAChzF,MAAMC,mBAAmB,GAAGD,aAAa;AAEzC,MAAME,YAAY,GAAG,u0EAAu0E;AAC51E,MAAMC,kBAAkB,GAAGD,YAAY;AAEvC,MAAME,OAAO,GAAG,MAAM;EAClB5X,WAAWA,CAACC,OAAO,EAAE;IACjBhD,gBAAgB,CAAC,IAAI,EAAEgD,OAAO,CAAC;IAC/B,IAAI,CAAC4X,cAAc,GAAG,IAAIC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAChT,KAAK,GAAGZ,SAAS;EAC1B;EACAmB,iBAAiBA,CAAA,EAAG;IAChB,MAAM0S,OAAO,GAAG7J,KAAK,CAACC,IAAI,CAAC,IAAI,CAACrM,EAAE,CAACmM,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM+J,YAAY,GAAGD,OAAO,CAACpF,IAAI,CAAEsF,MAAM,IAAK;MAC1C,OAAOA,MAAM,CAAC/K,IAAI,KAAK,OAAO;IAClC,CAAC,CAAC;IACF,IAAI8K,YAAY,EAAE;MACdA,YAAY,CAACtK,SAAS,CAACC,GAAG,CAAC,oBAAoB,CAAC;IACpD;IACA,MAAMuK,eAAe,GAAGH,OAAO,CAACI,OAAO,CAAC,CAAC;IACzC,MAAMC,WAAW,GAAGF,eAAe,CAACvF,IAAI,CAAEsF,MAAM,IAAKA,MAAM,CAAC/K,IAAI,KAAK,KAAK,CAAC,IACvEgL,eAAe,CAACvF,IAAI,CAAEsF,MAAM,IAAKA,MAAM,CAAC/K,IAAI,KAAK,SAAS,CAAC,IAC3DgL,eAAe,CAACvF,IAAI,CAAEsF,MAAM,IAAKA,MAAM,CAAC/K,IAAI,KAAK,WAAW,CAAC;IACjE,IAAIkL,WAAW,EAAE;MACbA,WAAW,CAAC1K,SAAS,CAACC,GAAG,CAAC,mBAAmB,CAAC;IAClD;EACJ;EACA0K,aAAaA,CAACvR,EAAE,EAAE;IACdA,EAAE,CAACwR,eAAe,CAAC,CAAC;IACpB,MAAMjL,OAAO,GAAGvG,EAAE,CAACyR,MAAM,CAAClL,OAAO;IACjC,MAAMmL,aAAa,GAAG1R,EAAE,CAACjD,MAAM;IAC/B,MAAM4U,SAAS,GAAG,CAAC,CAAC;IACpB,MAAMC,WAAW,GAAG,IAAI,CAACb,cAAc,CAACpB,GAAG,CAACpJ,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAIsL,cAAc,GAAG,KAAK;IAC1BnP,MAAM,CAACoP,IAAI,CAACJ,aAAa,CAAC,CAAC3H,OAAO,CAAEjP,GAAG,IAAK;MACxC,MAAMiX,QAAQ,GAAG,WAAWjX,GAAG,EAAE;MACjC,MAAMkX,QAAQ,GAAGN,aAAa,CAAC5W,GAAG,CAAC;MACnC,IAAIkX,QAAQ,KAAKJ,WAAW,CAACG,QAAQ,CAAC,EAAE;QACpCF,cAAc,GAAG,IAAI;MACzB;MACA,IAAIG,QAAQ,EAAE;QACVL,SAAS,CAACI,QAAQ,CAAC,GAAG,IAAI;MAC9B;IACJ,CAAC,CAAC;IACF,IAAIF,cAAc,EAAE;MAChB,IAAI,CAACd,cAAc,CAACkB,GAAG,CAAC1L,OAAO,EAAEoL,SAAS,CAAC;MAC3C7a,WAAW,CAAC,IAAI,CAAC;IACrB;EACJ;EACA8D,MAAMA,CAAA,EAAG;IACL,MAAMC,IAAI,GAAGxD,UAAU,CAAC,IAAI,CAAC;IAC7B,MAAMua,WAAW,GAAG,CAAC,CAAC;IACtB,IAAI,CAACb,cAAc,CAAChH,OAAO,CAAEmI,KAAK,IAAK;MACnCxP,MAAM,CAACC,MAAM,CAACiP,WAAW,EAAEM,KAAK,CAAC;IACrC,CAAC,CAAC;IACF,OAAQ9b,CAAC,CAACE,IAAI,EAAE;MAAEwE,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE2H,MAAM,CAACC,MAAM,CAACD,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEiP,WAAW,CAAC,EAAE1Z,kBAAkB,CAAC,IAAI,CAAC8F,KAAK,EAAE;QAC/I,CAACnD,IAAI,GAAG,IAAI;QACZ,YAAY,EAAE1C,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC6C,EAAE;MACpD,CAAC,CAAC;IAAE,CAAC,EAAE5E,CAAC,CAAC,KAAK,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;IAAqB,CAAC,CAAC,EAAE3E,CAAC,CAAC,KAAK,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;IAAoB,CAAC,EAAE3E,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEmI,IAAI,EAAE;IAAQ,CAAC,CAAC,EAAE7M,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEmI,IAAI,EAAE;IAAY,CAAC,CAAC,EAAE7M,CAAC,CAAC,KAAK,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEC,KAAK,EAAE;IAAkB,CAAC,EAAE3E,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE;IAA2C,CAAC,CAAC,CAAC,EAAE1E,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEmI,IAAI,EAAE;IAAU,CAAC,CAAC,EAAE7M,CAAC,CAAC,MAAM,EAAE;MAAE0E,GAAG,EAAE,0CAA0C;MAAEmI,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;EAC9pB;EACA,IAAIjI,EAAEA,CAAA,EAAG;IAAE,OAAOxE,UAAU,CAAC,IAAI,CAAC;EAAE;AACxC,CAAC;AACDsa,OAAO,CAACxV,KAAK,GAAG;EACZO,GAAG,EAAE8U,mBAAmB;EACxB7U,EAAE,EAAE+U;AACR,CAAC;AAED,SAAS5X,GAAG,IAAIkZ,OAAO,EAAExW,OAAO,IAAIyW,WAAW,EAAEnW,OAAO,IAAIoW,WAAW,EAAE3N,MAAM,IAAI4N,UAAU,EAAE3H,MAAM,IAAI4H,UAAU,EAAEhG,YAAY,IAAIiG,iBAAiB,EAAEpC,YAAY,IAAIqC,SAAS,EAAE3B,OAAO,IAAI4B,WAAW","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}