hintorium-react 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -0
- package/dist/components/Tooltip.d.ts +15 -0
- package/dist/components/Tooltip.d.ts.map +1 -0
- package/dist/components/TooltipProvider.d.ts +36 -0
- package/dist/components/TooltipProvider.d.ts.map +1 -0
- package/dist/components/Tour.d.ts +42 -0
- package/dist/components/Tour.d.ts.map +1 -0
- package/dist/context/TooltipContext.d.ts +16 -0
- package/dist/context/TooltipContext.d.ts.map +1 -0
- package/dist/hooks/useAnalytics.d.ts +8 -0
- package/dist/hooks/useAnalytics.d.ts.map +1 -0
- package/dist/hooks/useHintoriumI18n.d.ts +26 -0
- package/dist/hooks/useHintoriumI18n.d.ts.map +1 -0
- package/dist/hooks/useInlineHint.d.ts +40 -0
- package/dist/hooks/useInlineHint.d.ts.map +1 -0
- package/dist/hooks/useTooltip.d.ts +43 -0
- package/dist/hooks/useTooltip.d.ts.map +1 -0
- package/dist/hooks/useTooltipAnalytics.d.ts +4 -0
- package/dist/hooks/useTooltipAnalytics.d.ts.map +1 -0
- package/dist/hooks/useTooltipManager.d.ts +23 -0
- package/dist/hooks/useTooltipManager.d.ts.map +1 -0
- package/dist/hooks/useTour.d.ts +31 -0
- package/dist/hooks/useTour.d.ts.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2826 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../hintorium/dist/hintorium.es.js","../src/context/TooltipContext.tsx","../src/hooks/useTooltipManager.ts","../src/components/TooltipProvider.tsx","../src/hooks/useTooltipAnalytics.ts","../src/hooks/useTooltip.ts","../src/components/Tooltip.tsx","../src/hooks/useTour.ts","../src/components/Tour.tsx","../src/hooks/useHintoriumI18n.ts","../src/hooks/useAnalytics.ts","../src/hooks/useInlineHint.ts"],"sourcesContent":["const be = [\n \"top\",\n \"bottom\",\n \"left\",\n \"right\"\n], h = {\n ATTRIBUTES: {\n TOOLTIP: \"data-hintorium-tooltip\",\n HINT_TOOLTIP: \"data-hintorium-hint\",\n TOOLTIP_POSITION: \"data-hintorium-tooltip-position\",\n TOOLTIP_THEME: \"data-hintorium-tooltip-theme\",\n TOOLTIP_ANIMATION: \"data-hintorium-tooltip-animation\",\n TOOLTIP_DELAY: \"data-hintorium-tooltip-delay\"\n },\n STORAGE_KEYS: {\n TOOLTIP_ANALYTICS: \"tooltip-hintorium_analytics\"\n },\n CSS_CLASSES: {\n BASE: \"hintorium-tooltip\",\n HINT: \"hintorium-inline-hint\",\n RTL: \"hintorium-tooltip-rtl\",\n WRAPPER: \"hintorium-tooltip-inner\",\n HINTORIUM_TOUR: \"hintorium-tooltip-tour\",\n SHOW: \"show\",\n HIDDEN: \"hidden\",\n MOBILE: \"mobile\"\n },\n ARIA: {\n ROLE_TOOLTIP: \"tooltip\"\n },\n KEYS: {\n ESCAPE: \"Escape\",\n ENTER: \"Enter\",\n SPACE: \" \",\n TAB: \"Tab\"\n },\n EVENTS: {\n MOUSE_DOWN: \"mousedown\",\n KEYDOWN: \"keydown\"\n },\n DEFAULT: {\n POSITION: \"top\",\n THEME: \"dark\",\n ANIMATION: \"fade\",\n ID_PREFIX: \"hintorium-tooltip-\",\n ANIMATION_PREFIX: \"anim-\",\n MOBILE_BREAKPOINT: 768,\n TOUCH_DELAY: 500,\n DEFAULT_OFFSET: 8,\n VIEWPORT_PADDING: 4,\n DELAY: 0\n }\n};\nclass H {\n /** CSS class added when keyboard focus is applied. */\n static FOCUS_VISIBLE_CLASS = \"keyboard-focus\";\n /** Flag indicating whether the user is currently using the keyboard. */\n static isKeyboardUser = !1;\n static init() {\n typeof document > \"u\" || (this.setupKeyboardDetection(), this.setupFocusListeners());\n }\n /**\n * Detects whether the user is using the keyboard (e.g., Tab vs. Mouse).\n */\n static setupKeyboardDetection() {\n document.addEventListener(\n h.EVENTS.KEYDOWN,\n (e) => {\n e.key === h.KEYS.TAB && (this.isKeyboardUser = !0);\n },\n !0\n ), document.addEventListener(\n h.EVENTS.MOUSE_DOWN,\n () => {\n this.isKeyboardUser = !1;\n },\n !0\n );\n }\n /**\n * Returns whether the user is currently using the keyboard.\n */\n static isKeyboardMode() {\n return this.isKeyboardUser;\n }\n /**\n * Checks whether a given element can be focused.\n * @param element - the element to check\n */\n static isFocusable(e) {\n return [\n \"a[href]\",\n \"button\",\n \"input\",\n \"textarea\",\n \"select\",\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]'\n ].some((i) => e.matches(i)) || e.hasAttribute(\"tabindex\") && e.getAttribute(\"tabindex\") !== \"-1\";\n }\n /**\n * Configures the ARIA relationship between the tooltip and the target element.\n * @param tooltip - the tooltip element\n * @param target - the element to which the tooltip is assigned\n * @param options - tooltip options (from section a11y)\n */\n static setupTooltipAccessibility(e, t, i) {\n e.setAttribute(\"role\", h.ARIA.ROLE_TOOLTIP);\n const o = (t.getAttribute(\"aria-describedby\") || \"\").split(/\\s+/).filter(Boolean);\n o.includes(e.id) || (o.push(e.id), t.setAttribute(\"aria-describedby\", o.join(\" \"))), i.a11y?.keyboard !== !1 && this.addKeyboardSupport(t), this.ensureFocusable(t, i);\n }\n /**\n * Sets a global focus event listener for the document,\n * to add and remove the visual focus class (`.keyboard-focus`)\n * only when the user is using the keyboard (e.g., pressing Tab).\n */\n static setupFocusListeners() {\n typeof document > \"u\" || (document.addEventListener(\"focusin\", (e) => {\n const t = e.target;\n t && this.isKeyboardUser && t.classList.add(this.FOCUS_VISIBLE_CLASS);\n }), document.addEventListener(\"focusout\", (e) => {\n const t = e.target;\n t && t.classList.remove(this.FOCUS_VISIBLE_CLASS);\n }));\n }\n /**\n * Adds keyboard support to the tooltip's target element.\n * Responds to the following keys: ESC (close), Enter / Space (toggle).\n * @param target - the element to which the tooltip is assigned\n */\n static addKeyboardSupport(e) {\n if (e.getAttribute(\"data-has-keyboard-support\") === \"true\") return;\n const t = (i) => {\n switch (i.key) {\n case h.KEYS.ESCAPE:\n e.dispatchEvent(\n new CustomEvent(\"tooltip:hide\", { bubbles: !0 })\n ), i.preventDefault();\n break;\n case h.KEYS.ENTER:\n case h.KEYS.SPACE:\n e.dispatchEvent(\n new CustomEvent(\"tooltip:toggle\", { bubbles: !0 })\n ), i.preventDefault();\n break;\n }\n };\n e.addEventListener(\"keydown\", t), e.setAttribute(\"data-has-keyboard-support\", \"true\");\n }\n /**\n * Removes ARIA relationships after the tooltip is destroyed.\n * @param tooltip - tooltip element\n * @param target - target element\n */\n static removeTooltipAccessibility(e, t) {\n const i = t.getAttribute(\"aria-describedby\");\n if (i) {\n const s = i.split(\" \").filter((o) => o !== e.id);\n s.length > 0 ? t.setAttribute(\"aria-describedby\", s.join(\" \")) : t.removeAttribute(\"aria-describedby\");\n }\n }\n /**\n * Sends a message to the screen reader (aria-live).\n * @param message - the message content to be announced\n */\n static announceToScreenReader(e) {\n const t = document.createElement(\"div\");\n t.setAttribute(\"aria-live\", \"polite\"), t.setAttribute(\"aria-atomic\", \"true\"), t.className = \"sr-only\", t.textContent = e, document.body.appendChild(t), setTimeout(() => t.remove(), 1e3);\n }\n /**\n * Ensures that the tooltip target is focusable.\n * @param target - tooltip target\n * @param options - tooltip options\n */\n static ensureFocusable(e, t) {\n !this.isFocusable(e) && t.a11y?.focusable !== !1 && e.setAttribute(\"tabindex\", \"0\");\n }\n}\nclass q {\n manager;\n icon;\n constructor(e, t, i) {\n this.manager = R.getInstance(), this.icon = this.createHintIcon(), e.appendChild(this.icon);\n const s = i ?? q.extractOptionsFromElement(e, this.manager);\n this.manager.add(this.icon, t, s);\n }\n /**\n * Initializes all inline hints in the DOM with [data-hintorium-hint].\n */\n static initFromDOM() {\n const e = R.getInstance();\n document.querySelectorAll(\n `[${h.ATTRIBUTES.HINT_TOOLTIP}]`\n ).forEach((i) => {\n if (i.querySelector(`.${h.CSS_CLASSES.HINT}`))\n return;\n const s = i.getAttribute(\n h.ATTRIBUTES.HINT_TOOLTIP\n );\n if (!s) return;\n const o = q.extractOptionsFromElement(\n i,\n e\n );\n new q(i, s, o);\n });\n }\n /**\n * Remove hint from DOM and TooltipManager\n */\n destroy() {\n this.manager.remove(this.icon), this.icon.remove();\n }\n /**\n * Reuseable hintorium options on hint tooltip.\n */\n static extractOptionsFromElement(e, t) {\n return typeof t.extractOptions == \"function\" ? t.extractOptions(e) : {};\n }\n /**\n * Create Hint Icon with custom css class and a11y.\n */\n createHintIcon() {\n const e = document.createElement(\"span\");\n return e.classList.add(h.CSS_CLASSES.HINT), e.setAttribute(\"tabindex\", \"0\"), e.setAttribute(\"aria-label\", \"Show hint\"), e.innerHTML = `\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M9 9a3 3 0 0 1 6 0c0 2-3 2-3 4\"/>\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"17\"/>\n </svg>\n `, e;\n }\n}\nclass N {\n /** Timer that supports long-press / touch-delay */\n static touchTimer = null;\n /** Currently active tooltip triggered by touch */\n static activeTouchTooltip = null;\n /** Stores assigned event handlers for a given element */\n static touchHandlers = /* @__PURE__ */ new WeakMap();\n /**\n * Checks whether the current environment is a mobile or touch-enabled device.\n * Uses several heuristics: window width, presence of `ontouchstart`, and `maxTouchPoints`.\n *\n * @returns {boolean} `true` if the device supports touch or has a small viewport.\n */\n static isMobile() {\n return typeof window > \"u\" ? !1 : window.innerWidth <= h.DEFAULT.MOBILE_BREAKPOINT || \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n }\n /**\n * Resolves mobile configuration for tooltip behavior.\n * Decides whether mobile support should be enabled based on user options and environment.\n *\n * @param globalOptions - The global tooltip options provided by the user.\n * @returns A normalized mobile options object.\n */\n static resolveMobileOptions(e) {\n return {\n enabled: e?.enabled !== void 0 ? e.enabled : N.isMobile(),\n longPress: e?.longPress ?? !0,\n touchDelay: e?.touchDelay ?? h.DEFAULT.TOUCH_DELAY\n };\n }\n /**\n * Initializes touch support for a specific tooltip.\n * Adds classes and listens for gestures (tap, long-press).\n *\n * @param tooltip - Tooltip instance.\n * @param target - Element on which the tooltip is activated.\n * @param options - Tooltip options (including mobile).\n */\n static setupMobileSupport(e, t, i) {\n !(i.mobile ?? this.resolveMobileOptions()).enabled || !this.isMobile() || t.getAttribute(\"data-mobile-handlers\") !== \"true\" && (e.element.classList.add(h.CSS_CLASSES.MOBILE), this.addTouchEvents(e, t, i), t.addEventListener(\"contextmenu\", this.handleContextMenu), t.setAttribute(\"data-mobile-handlers\", \"true\"));\n }\n /**\n * Adds touch event handling to the target element.\n * Supports both long-presses (after the specified `touchDelay`)\n * and single taps if `longPress` is disabled.\n *\n * @private\n */\n static addTouchEvents(e, t, i) {\n const { mobile: { longPress: s, touchDelay: o } = {} } = i, r = () => {\n this.touchTimer && (clearTimeout(this.touchTimer), this.touchTimer = null);\n }, a = () => {\n r(), this.activeTouchTooltip && this.activeTouchTooltip !== e && (this.activeTouchTooltip.hide(), this.activeTouchTooltip = null), s ? this.touchTimer = window.setTimeout(() => {\n e.element.classList.contains(\n h.CSS_CLASSES.SHOW\n ) ? (e.hide(), this.activeTouchTooltip = null) : (e.show(), this.activeTouchTooltip = e), this.touchTimer = null;\n }, o) : e.element.classList.contains(\n h.CSS_CLASSES.SHOW\n ) ? (e.hide(), this.activeTouchTooltip = null) : (e.show(), this.activeTouchTooltip = e);\n }, l = () => r(), c = () => r(), u = window.PointerEvent ? \"pointerdown\" : \"touchstart\", p = window.PointerEvent ? \"pointerup\" : \"touchend\", d = window.PointerEvent ? \"pointercancel\" : \"touchcancel\";\n t.addEventListener(u, a, { passive: !0 }), t.addEventListener(p, l, { passive: !0 }), t.addEventListener(d, c, { passive: !0 }), this.touchHandlers.set(t, {\n start: a,\n end: l,\n cancel: c\n });\n }\n /**\n * Blocks the display of the context menu (long-press menu).\n * @private\n */\n static handleContextMenu(e) {\n e.preventDefault();\n }\n /**\n * Hides the currently active touch tooltip (if any)\n * and clears any active long-press timer.\n */\n static hideMobileTooltips() {\n this.activeTouchTooltip && (this.activeTouchTooltip.hide(), this.activeTouchTooltip = null), this.touchTimer && clearTimeout(this.touchTimer), this.touchTimer = null;\n }\n /**\n * Removes all event listeners and clears the touch state\n * assigned to the target element.\n *\n * @param target - The element for which cleanup should be performed.\n */\n static cleanup(e) {\n e.removeEventListener(\"contextmenu\", this.handleContextMenu);\n const t = this.touchHandlers.get(e);\n if (t) {\n const i = window.PointerEvent ? \"pointerdown\" : \"touchstart\", s = window.PointerEvent ? \"pointerup\" : \"touchend\", o = window.PointerEvent ? \"pointercancel\" : \"touchcancel\";\n e.removeEventListener(i, t.start), e.removeEventListener(s, t.end), e.removeEventListener(o, t.cancel), this.touchHandlers.delete(e);\n }\n e.removeAttribute(\"data-mobile-handlers\"), this.touchTimer && (clearTimeout(this.touchTimer), this.touchTimer = null), this.activeTouchTooltip = null;\n }\n}\nclass Q {\n /**\n * Get singleton instance for a given namespace\n * @param keyPrefix - unique namespace key\n */\n static instances = /* @__PURE__ */ new Map();\n cache = {};\n keyPrefix;\n constructor(e) {\n this.keyPrefix = e, this.load();\n }\n static getInstance(e) {\n return this.instances.has(e) || this.instances.set(e, new Q(e)), this.instances.get(e);\n }\n /**\n * Save a value under a key\n * @param key - key to store value\n * @param value - any JSON-serializable value\n */\n set(e, t) {\n this.cache[e] = t, this.save();\n }\n /**\n * Get the full data object\n */\n getAll() {\n return { ...this.cache };\n }\n /**\n * Remove a key from storage\n */\n remove(e) {\n delete this.cache[e], this.save();\n }\n /**\n * Get all keys stored in this namespace\n */\n keys() {\n return Object.keys(this.cache);\n }\n /**\n * Clear all data in this namespace\n */\n clear() {\n this.cache = {}, this.save();\n }\n /**\n * Retrieve a value by key, optionally with a default\n * @param key - key to retrieve\n * @param defaultValue - value if key not found\n */\n get(e, t) {\n if (e in this.cache) return this.cache[e];\n if (t)\n return t;\n }\n /**\n * Save data to localStorage\n */\n save() {\n try {\n localStorage.setItem(this.keyPrefix, JSON.stringify(this.cache));\n } catch (e) {\n console.warn(\n `[StorageManager:${this.keyPrefix}] Failed to save to LocalStorage`,\n e\n );\n }\n }\n /**\n * Load data from localStorage\n */\n load() {\n try {\n const e = localStorage.getItem(this.keyPrefix);\n e && (this.cache = JSON.parse(e));\n } catch (e) {\n console.warn(\n `[StorageManager:${this.keyPrefix}] Failed to load from LocalStorage`,\n e\n ), this.cache = {};\n }\n }\n}\nclass ne {\n static instance = null;\n storage;\n constructor() {\n this.storage = Q.getInstance(\n h.STORAGE_KEYS.TOOLTIP_ANALYTICS\n );\n }\n static getInstance() {\n return this.instance || (this.instance = new ne()), this.instance;\n }\n /**\n * Increment tooltip show count\n * @param tooltipId - unique identifier for the tooltip\n */\n increment(e) {\n const i = (this.storage.get(e, 0) ?? 0) + 1;\n this.storage.set(e, i);\n }\n /**\n * Get the number of times a tooltip has been shown\n * @param tooltipId - unique identifier for the tooltip\n */\n getCount(e) {\n const t = this.storage.get(e, 0);\n return t || 0;\n }\n /**\n * Get all tooltip counts as an object\n */\n getAll() {\n return this.storage.getAll();\n }\n /**\n * Reset all tooltip counts\n */\n resetAll() {\n this.storage.clear();\n }\n}\nconst Fe = ne.getInstance();\nclass Te {\n /**\n * Removes all existing animation classes from the tooltip and\n * applies the new animation class based on the given animation type.\n *\n * @private\n * @param {HTMLElement} tooltip - The tooltip element to prepare.\n * @param {TooltipAnimation} animation - The animation type (e.g., `'fade'`, `'scale'`, `'slide'`).\n *\n * @example\n * ```ts\n * AnimationManager.prepareAnimation(tooltip, 'scale');\n * ```\n */\n static prepareAnimation(e, t) {\n e.classList.forEach((i) => {\n i.startsWith(h.DEFAULT.ANIMATION_PREFIX) && e.classList.remove(i);\n }), e.classList.add(\n `${h.DEFAULT.ANIMATION_PREFIX}${t}`\n );\n }\n /**\n * Displays the tooltip with the specified animation effect.\n * Automatically removes the `hidden` class, adds the `show` class,\n * and waits for the CSS transition to finish before resolving.\n *\n * @async\n * @param {HTMLDivElement} tooltip - The tooltip element to animate.\n * @param {TooltipAnimation} [animation='fade'] - The animation style to apply.\n * @param {number} [delay=0] - The delay (in milliseconds) before starting the animation.\n * @returns {Promise<void>} Resolves once the animation completes.\n *\n * @example\n * ```ts\n * await AnimationManager.show(tooltip, 'fade', 150);\n * ```\n */\n static async show(e, t = \"fade\", i = 0) {\n if (!e) return Promise.resolve();\n this.prepareAnimation(e, t), await this.wait(i), e.classList.remove(h.CSS_CLASSES.HIDDEN), e.classList.add(h.CSS_CLASSES.SHOW), await this.waitForTransition(e);\n }\n /**\n * Hides the tooltip with the currently active animation effect.\n * Removes the `show` class, waits for the transition to complete,\n * and finally adds the `hidden` class.\n *\n * @async\n * @param {HTMLDivElement} tooltip - The tooltip element to hide.\n * @param {number} [delay=0] - Optional delay (in milliseconds) before hiding.\n * @returns {Promise<void>} Resolves once the hide transition finishes.\n *\n * @example\n * ```ts\n * await AnimationManager.hide(tooltip, 200);\n * ```\n */\n static async hide(e, t = 0) {\n e && (await this.wait(t), e.classList.remove(h.CSS_CLASSES.SHOW), await this.waitForTransition(e), e.classList.add(h.CSS_CLASSES.HIDDEN));\n }\n /**\n * Waits for the CSS transition on the given element to complete.\n * If no `transitionend` event is fired, it resolves automatically after\n * the computed transition duration (as a safety fallback).\n *\n * @private\n * @param {HTMLElement} element - The element undergoing a CSS transition.\n * @returns {Promise<void>} Resolves after the transition completes or timeout elapses.\n */\n static waitForTransition(e) {\n return new Promise((t) => {\n const i = this.getTransitionDuration(e);\n e.addEventListener(\"transitionend\", () => t(), {\n once: !0\n }), setTimeout(t, i);\n });\n }\n /**\n * Reads the element’s computed transition duration and delay from CSS.\n * Returns the total transition time in milliseconds.\n *\n * @private\n * @param {HTMLElement} element - The element whose transition timing is computed.\n * @returns {number} Total transition time (duration + delay) in milliseconds.\n */\n static getTransitionDuration(e) {\n const t = getComputedStyle(e), i = parseFloat(t.transitionDuration) || 0, s = parseFloat(t.transitionDelay) || 0;\n return (i + s) * 1e3;\n }\n /**\n * A simple delay helper that pauses execution for the specified time.\n *\n * @private\n * @param {number} ms - Time in milliseconds to wait.\n * @returns {Promise<void>} Resolves after the delay.\n *\n * @example\n * ```ts\n * await AnimationManager.wait(300) ;\n * console.log('Waited 300ms');\n * ```\n */\n static wait(e) {\n return new Promise((t) => setTimeout(t, e));\n }\n}\nfunction re() {\n return { async: !1, breaks: !1, extensions: null, gfm: !0, hooks: null, pedantic: !1, renderer: null, silent: !1, tokenizer: null, walkTokens: null };\n}\nvar C = re();\nfunction Le(n) {\n C = n;\n}\nvar W = { exec: () => null };\nfunction g(n, e = \"\") {\n let t = typeof n == \"string\" ? n : n.source, i = { replace: (s, o) => {\n let r = typeof o == \"string\" ? o : o.source;\n return r = r.replace(T.caret, \"$1\"), t = t.replace(s, r), i;\n }, getRegex: () => new RegExp(t, e) };\n return i;\n}\nvar T = { codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm, outputLinkReplace: /\\\\([\\[\\]])/g, indentCodeCompensation: /^(\\s+)(?:```)/, beginningSpace: /^\\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\\n/g, tabCharGlobal: /\\t/g, multipleSpaceGlobal: /\\s+/g, blankLine: /^[ \\t]*$/, doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm, listReplaceTabs: /^\\t+/, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\\[[ xX]\\] /, listReplaceTask: /^\\[[ xX]\\] +/, anyLine: /\\n.*\\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\\||\\| *$/g, tableRowBlankLine: /\\n[ \\t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^<a /i, endATag: /^<\\/a>/i, startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i, endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i, startAngleBracket: /^</, endAngleBracket: />$/, pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/, unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u, escapeTest: /[&<>\"']/, escapeReplace: /[&<>\"']/g, escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/, escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g, unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, caret: /(^|[^\\[])\\^/g, percentDecode: /%25/g, findPipe: /\\|/g, splitPipe: / \\|/, slashPipe: /\\\\\\|/g, carriageReturn: /\\r\\n|\\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\\S*/, endingNewline: /\\n$/, listItemRegex: (n) => new RegExp(`^( {0,3}${n})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`), nextBulletRegex: (n) => new RegExp(`^ {0,${Math.min(3, n - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`), hrRegex: (n) => new RegExp(`^ {0,${Math.min(3, n - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`), fencesBeginRegex: (n) => new RegExp(`^ {0,${Math.min(3, n - 1)}}(?:\\`\\`\\`|~~~)`), headingBeginRegex: (n) => new RegExp(`^ {0,${Math.min(3, n - 1)}}#`), htmlBeginRegex: (n) => new RegExp(`^ {0,${Math.min(3, n - 1)}}<(?:[a-z].*>|!--)`, \"i\") }, He = /^(?:[ \\t]*(?:\\n|$))+/, Ue = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/, qe = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/, K = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/, We = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/, oe = /(?:[*+-]|\\d{1,9}[.)])/, ve = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/, Pe = g(ve).replace(/bull/g, oe).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g, \"\").getRegex(), Ve = g(ve).replace(/bull/g, oe).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(), ae = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/, Ke = /^[^\\n]+/, le = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/, Ge = g(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\", le).replace(\"title\", /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(), je = g(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g, oe).getRegex(), J = \"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\", ce = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/, Ze = g(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\", \"i\").replace(\"comment\", ce).replace(\"tag\", J).replace(\"attribute\", / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(), Ie = g(ae).replace(\"hr\", K).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", J).getRegex(), Ye = g(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\", Ie).getRegex(), he = { blockquote: Ye, code: Ue, def: Ge, fences: qe, heading: We, hr: K, html: Ze, lheading: Pe, list: je, newline: He, paragraph: Ie, table: W, text: Ke }, we = g(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\", K).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\", \" {0,3}>\").replace(\"code\", \"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", J).getRegex(), Xe = { ...he, lheading: Ve, table: we, paragraph: g(ae).replace(\"hr\", K).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"table\", we).replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", J).getRegex() }, Qe = { ...he, html: g(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\", ce).replace(/tag/g, \"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(), def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/, heading: /^(#{1,6})(.*)(?:\\n+|$)/, fences: W, lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/, paragraph: g(ae).replace(\"hr\", K).replace(\"heading\", ` *#{1,6} *[^\n]`).replace(\"lheading\", Pe).replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"|fences\", \"\").replace(\"|list\", \"\").replace(\"|html\", \"\").replace(\"|tag\", \"\").getRegex() }, Je = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/, et = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/, Re = /^( {2,}|\\\\)\\n(?!\\s*$)/, tt = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/, ee = /[\\p{P}\\p{S}]/u, ue = /[\\s\\p{P}\\p{S}]/u, $e = /[^\\s\\p{P}\\p{S}]/u, st = g(/^((?![*_])punctSpace)/, \"u\").replace(/punctSpace/g, ue).getRegex(), Oe = /(?!~)[\\p{P}\\p{S}]/u, it = /(?!~)[\\s\\p{P}\\p{S}]/u, nt = /(?:[^\\s\\p{P}\\p{S}]|~)/u, rt = g(/link|code|html/, \"g\").replace(\"link\", new RegExp(\"\\\\[(?:[^\\\\[\\\\]`]|(?<!`)(?<a>`+)[^`]+\\\\k<a>(?!`))*?\\\\]\\\\((?:\\\\\\\\[\\\\s\\\\S]|[^\\\\\\\\\\\\(\\\\)]|\\\\((?:\\\\\\\\[\\\\s\\\\S]|[^\\\\\\\\\\\\(\\\\)])*\\\\))*\\\\)\")).replace(\"code\", new RegExp(\"(?<!`)(?<b>`+)[^`]+\\\\k<b>(?!`)\")).replace(\"html\", /<(?! )[^<>]*?>/).getRegex(), Ce = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/, ot = g(Ce, \"u\").replace(/punct/g, ee).getRegex(), at = g(Ce, \"u\").replace(/punct/g, Oe).getRegex(), De = \"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\", lt = g(De, \"gu\").replace(/notPunctSpace/g, $e).replace(/punctSpace/g, ue).replace(/punct/g, ee).getRegex(), ct = g(De, \"gu\").replace(/notPunctSpace/g, nt).replace(/punctSpace/g, it).replace(/punct/g, Oe).getRegex(), ht = g(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\", \"gu\").replace(/notPunctSpace/g, $e).replace(/punctSpace/g, ue).replace(/punct/g, ee).getRegex(), ut = g(/\\\\(punct)/, \"gu\").replace(/punct/g, ee).getRegex(), pt = g(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(), dt = g(ce).replace(\"(?:-->|$)\", \"-->\").getRegex(), gt = g(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\", dt).replace(\"attribute\", /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(), Z = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/, ft = g(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\", Z).replace(\"href\", /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\", /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(), _e = g(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\", Z).replace(\"ref\", le).getRegex(), Me = g(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\", le).getRegex(), mt = g(\"reflink|nolink(?!\\\\()\", \"g\").replace(\"reflink\", _e).replace(\"nolink\", Me).getRegex(), xe = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/, pe = { _backpedal: W, anyPunctuation: ut, autolink: pt, blockSkip: rt, br: Re, code: et, del: W, emStrongLDelim: ot, emStrongRDelimAst: lt, emStrongRDelimUnd: ht, escape: Je, link: ft, nolink: Me, punctuation: st, reflink: _e, reflinkSearch: mt, tag: gt, text: tt, url: W }, kt = { ...pe, link: g(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\", Z).getRegex(), reflink: g(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\", Z).getRegex() }, te = { ...pe, emStrongRDelimAst: ct, emStrongLDelim: at, url: g(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\", xe).replace(\"email\", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/, del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/, text: g(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\", xe).getRegex() }, bt = { ...te, br: g(Re).replace(\"{2,}\", \"*\").getRegex(), text: g(te.text).replace(\"\\\\b_\", \"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g, \"*\").getRegex() }, j = { normal: he, gfm: Xe, pedantic: Qe }, B = { normal: pe, gfm: te, breaks: bt, pedantic: kt }, Tt = { \"&\": \"&\", \"<\": \"<\", \">\": \">\", '\"': \""\", \"'\": \"'\" }, Se = (n) => Tt[n];\nfunction y(n, e) {\n if (e) {\n if (T.escapeTest.test(n)) return n.replace(T.escapeReplace, Se);\n } else if (T.escapeTestNoEncode.test(n)) return n.replace(T.escapeReplaceNoEncode, Se);\n return n;\n}\nfunction ye(n) {\n try {\n n = encodeURI(n).replace(T.percentDecode, \"%\");\n } catch {\n return null;\n }\n return n;\n}\nfunction Ee(n, e) {\n let t = n.replace(T.findPipe, (o, r, a) => {\n let l = !1, c = r;\n for (; --c >= 0 && a[c] === \"\\\\\"; ) l = !l;\n return l ? \"|\" : \" |\";\n }), i = t.split(T.splitPipe), s = 0;\n if (i[0].trim() || i.shift(), i.length > 0 && !i.at(-1)?.trim() && i.pop(), e) if (i.length > e) i.splice(e);\n else for (; i.length < e; ) i.push(\"\");\n for (; s < i.length; s++) i[s] = i[s].trim().replace(T.slashPipe, \"|\");\n return i;\n}\nfunction F(n, e, t) {\n let i = n.length;\n if (i === 0) return \"\";\n let s = 0;\n for (; s < i && n.charAt(i - s - 1) === e; )\n s++;\n return n.slice(0, i - s);\n}\nfunction wt(n, e) {\n if (n.indexOf(e[1]) === -1) return -1;\n let t = 0;\n for (let i = 0; i < n.length; i++) if (n[i] === \"\\\\\") i++;\n else if (n[i] === e[0]) t++;\n else if (n[i] === e[1] && (t--, t < 0)) return i;\n return t > 0 ? -2 : -1;\n}\nfunction Ae(n, e, t, i, s) {\n let o = e.href, r = e.title || null, a = n[1].replace(s.other.outputLinkReplace, \"$1\");\n i.state.inLink = !0;\n let l = { type: n[0].charAt(0) === \"!\" ? \"image\" : \"link\", raw: t, href: o, title: r, text: a, tokens: i.inlineTokens(a) };\n return i.state.inLink = !1, l;\n}\nfunction xt(n, e, t) {\n let i = n.match(t.other.indentCodeCompensation);\n if (i === null) return e;\n let s = i[1];\n return e.split(`\n`).map((o) => {\n let r = o.match(t.other.beginningSpace);\n if (r === null) return o;\n let [a] = r;\n return a.length >= s.length ? o.slice(s.length) : o;\n }).join(`\n`);\n}\nvar Y = class {\n options;\n rules;\n lexer;\n constructor(n) {\n this.options = n || C;\n }\n space(n) {\n let e = this.rules.block.newline.exec(n);\n if (e && e[0].length > 0) return { type: \"space\", raw: e[0] };\n }\n code(n) {\n let e = this.rules.block.code.exec(n);\n if (e) {\n let t = e[0].replace(this.rules.other.codeRemoveIndent, \"\");\n return { type: \"code\", raw: e[0], codeBlockStyle: \"indented\", text: this.options.pedantic ? t : F(t, `\n`) };\n }\n }\n fences(n) {\n let e = this.rules.block.fences.exec(n);\n if (e) {\n let t = e[0], i = xt(t, e[3] || \"\", this.rules);\n return { type: \"code\", raw: t, lang: e[2] ? e[2].trim().replace(this.rules.inline.anyPunctuation, \"$1\") : e[2], text: i };\n }\n }\n heading(n) {\n let e = this.rules.block.heading.exec(n);\n if (e) {\n let t = e[2].trim();\n if (this.rules.other.endingHash.test(t)) {\n let i = F(t, \"#\");\n (this.options.pedantic || !i || this.rules.other.endingSpaceChar.test(i)) && (t = i.trim());\n }\n return { type: \"heading\", raw: e[0], depth: e[1].length, text: t, tokens: this.lexer.inline(t) };\n }\n }\n hr(n) {\n let e = this.rules.block.hr.exec(n);\n if (e) return { type: \"hr\", raw: F(e[0], `\n`) };\n }\n blockquote(n) {\n let e = this.rules.block.blockquote.exec(n);\n if (e) {\n let t = F(e[0], `\n`).split(`\n`), i = \"\", s = \"\", o = [];\n for (; t.length > 0; ) {\n let r = !1, a = [], l;\n for (l = 0; l < t.length; l++) if (this.rules.other.blockquoteStart.test(t[l])) a.push(t[l]), r = !0;\n else if (!r) a.push(t[l]);\n else break;\n t = t.slice(l);\n let c = a.join(`\n`), u = c.replace(this.rules.other.blockquoteSetextReplace, `\n $1`).replace(this.rules.other.blockquoteSetextReplace2, \"\");\n i = i ? `${i}\n${c}` : c, s = s ? `${s}\n${u}` : u;\n let p = this.lexer.state.top;\n if (this.lexer.state.top = !0, this.lexer.blockTokens(u, o, !0), this.lexer.state.top = p, t.length === 0) break;\n let d = o.at(-1);\n if (d?.type === \"code\") break;\n if (d?.type === \"blockquote\") {\n let k = d, m = k.raw + `\n` + t.join(`\n`), b = this.blockquote(m);\n o[o.length - 1] = b, i = i.substring(0, i.length - k.raw.length) + b.raw, s = s.substring(0, s.length - k.text.length) + b.text;\n break;\n } else if (d?.type === \"list\") {\n let k = d, m = k.raw + `\n` + t.join(`\n`), b = this.list(m);\n o[o.length - 1] = b, i = i.substring(0, i.length - d.raw.length) + b.raw, s = s.substring(0, s.length - k.raw.length) + b.raw, t = m.substring(o.at(-1).raw.length).split(`\n`);\n continue;\n }\n }\n return { type: \"blockquote\", raw: i, tokens: o, text: s };\n }\n }\n list(n) {\n let e = this.rules.block.list.exec(n);\n if (e) {\n let t = e[1].trim(), i = t.length > 1, s = { type: \"list\", raw: \"\", ordered: i, start: i ? +t.slice(0, -1) : \"\", loose: !1, items: [] };\n t = i ? `\\\\d{1,9}\\\\${t.slice(-1)}` : `\\\\${t}`, this.options.pedantic && (t = i ? t : \"[*+-]\");\n let o = this.rules.other.listItemRegex(t), r = !1;\n for (; n; ) {\n let l = !1, c = \"\", u = \"\";\n if (!(e = o.exec(n)) || this.rules.block.hr.test(n)) break;\n c = e[0], n = n.substring(c.length);\n let p = e[2].split(`\n`, 1)[0].replace(this.rules.other.listReplaceTabs, (D) => \" \".repeat(3 * D.length)), d = n.split(`\n`, 1)[0], k = !p.trim(), m = 0;\n if (this.options.pedantic ? (m = 2, u = p.trimStart()) : k ? m = e[1].length + 1 : (m = e[2].search(this.rules.other.nonSpaceChar), m = m > 4 ? 1 : m, u = p.slice(m), m += e[1].length), k && this.rules.other.blankLine.test(d) && (c += d + `\n`, n = n.substring(d.length + 1), l = !0), !l) {\n let D = this.rules.other.nextBulletRegex(m), E = this.rules.other.hrRegex(m), A = this.rules.other.fencesBeginRegex(m), $ = this.rules.other.headingBeginRegex(m), G = this.rules.other.htmlBeginRegex(m);\n for (; n; ) {\n let L = n.split(`\n`, 1)[0], v;\n if (d = L, this.options.pedantic ? (d = d.replace(this.rules.other.listReplaceNesting, \" \"), v = d) : v = d.replace(this.rules.other.tabCharGlobal, \" \"), A.test(d) || $.test(d) || G.test(d) || D.test(d) || E.test(d)) break;\n if (v.search(this.rules.other.nonSpaceChar) >= m || !d.trim()) u += `\n` + v.slice(m);\n else {\n if (k || p.replace(this.rules.other.tabCharGlobal, \" \").search(this.rules.other.nonSpaceChar) >= 4 || A.test(p) || $.test(p) || E.test(p)) break;\n u += `\n` + d;\n }\n !k && !d.trim() && (k = !0), c += L + `\n`, n = n.substring(L.length + 1), p = v.slice(m);\n }\n }\n s.loose || (r ? s.loose = !0 : this.rules.other.doubleBlankLine.test(c) && (r = !0));\n let b = null, z;\n this.options.gfm && (b = this.rules.other.listIsTask.exec(u), b && (z = b[0] !== \"[ ] \", u = u.replace(this.rules.other.listReplaceTask, \"\"))), s.items.push({ type: \"list_item\", raw: c, task: !!b, checked: z, loose: !1, text: u, tokens: [] }), s.raw += c;\n }\n let a = s.items.at(-1);\n if (a) a.raw = a.raw.trimEnd(), a.text = a.text.trimEnd();\n else return;\n s.raw = s.raw.trimEnd();\n for (let l = 0; l < s.items.length; l++) if (this.lexer.state.top = !1, s.items[l].tokens = this.lexer.blockTokens(s.items[l].text, []), !s.loose) {\n let c = s.items[l].tokens.filter((p) => p.type === \"space\"), u = c.length > 0 && c.some((p) => this.rules.other.anyLine.test(p.raw));\n s.loose = u;\n }\n if (s.loose) for (let l = 0; l < s.items.length; l++) s.items[l].loose = !0;\n return s;\n }\n }\n html(n) {\n let e = this.rules.block.html.exec(n);\n if (e) return { type: \"html\", block: !0, raw: e[0], pre: e[1] === \"pre\" || e[1] === \"script\" || e[1] === \"style\", text: e[0] };\n }\n def(n) {\n let e = this.rules.block.def.exec(n);\n if (e) {\n let t = e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, \" \"), i = e[2] ? e[2].replace(this.rules.other.hrefBrackets, \"$1\").replace(this.rules.inline.anyPunctuation, \"$1\") : \"\", s = e[3] ? e[3].substring(1, e[3].length - 1).replace(this.rules.inline.anyPunctuation, \"$1\") : e[3];\n return { type: \"def\", tag: t, raw: e[0], href: i, title: s };\n }\n }\n table(n) {\n let e = this.rules.block.table.exec(n);\n if (!e || !this.rules.other.tableDelimiter.test(e[2])) return;\n let t = Ee(e[1]), i = e[2].replace(this.rules.other.tableAlignChars, \"\").split(\"|\"), s = e[3]?.trim() ? e[3].replace(this.rules.other.tableRowBlankLine, \"\").split(`\n`) : [], o = { type: \"table\", raw: e[0], header: [], align: [], rows: [] };\n if (t.length === i.length) {\n for (let r of i) this.rules.other.tableAlignRight.test(r) ? o.align.push(\"right\") : this.rules.other.tableAlignCenter.test(r) ? o.align.push(\"center\") : this.rules.other.tableAlignLeft.test(r) ? o.align.push(\"left\") : o.align.push(null);\n for (let r = 0; r < t.length; r++) o.header.push({ text: t[r], tokens: this.lexer.inline(t[r]), header: !0, align: o.align[r] });\n for (let r of s) o.rows.push(Ee(r, o.header.length).map((a, l) => ({ text: a, tokens: this.lexer.inline(a), header: !1, align: o.align[l] })));\n return o;\n }\n }\n lheading(n) {\n let e = this.rules.block.lheading.exec(n);\n if (e) return { type: \"heading\", raw: e[0], depth: e[2].charAt(0) === \"=\" ? 1 : 2, text: e[1], tokens: this.lexer.inline(e[1]) };\n }\n paragraph(n) {\n let e = this.rules.block.paragraph.exec(n);\n if (e) {\n let t = e[1].charAt(e[1].length - 1) === `\n` ? e[1].slice(0, -1) : e[1];\n return { type: \"paragraph\", raw: e[0], text: t, tokens: this.lexer.inline(t) };\n }\n }\n text(n) {\n let e = this.rules.block.text.exec(n);\n if (e) return { type: \"text\", raw: e[0], text: e[0], tokens: this.lexer.inline(e[0]) };\n }\n escape(n) {\n let e = this.rules.inline.escape.exec(n);\n if (e) return { type: \"escape\", raw: e[0], text: e[1] };\n }\n tag(n) {\n let e = this.rules.inline.tag.exec(n);\n if (e) return !this.lexer.state.inLink && this.rules.other.startATag.test(e[0]) ? this.lexer.state.inLink = !0 : this.lexer.state.inLink && this.rules.other.endATag.test(e[0]) && (this.lexer.state.inLink = !1), !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(e[0]) ? this.lexer.state.inRawBlock = !0 : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(e[0]) && (this.lexer.state.inRawBlock = !1), { type: \"html\", raw: e[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: !1, text: e[0] };\n }\n link(n) {\n let e = this.rules.inline.link.exec(n);\n if (e) {\n let t = e[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(t)) {\n if (!this.rules.other.endAngleBracket.test(t)) return;\n let o = F(t.slice(0, -1), \"\\\\\");\n if ((t.length - o.length) % 2 === 0) return;\n } else {\n let o = wt(e[2], \"()\");\n if (o === -2) return;\n if (o > -1) {\n let r = (e[0].indexOf(\"!\") === 0 ? 5 : 4) + e[1].length + o;\n e[2] = e[2].substring(0, o), e[0] = e[0].substring(0, r).trim(), e[3] = \"\";\n }\n }\n let i = e[2], s = \"\";\n if (this.options.pedantic) {\n let o = this.rules.other.pedanticHrefTitle.exec(i);\n o && (i = o[1], s = o[3]);\n } else s = e[3] ? e[3].slice(1, -1) : \"\";\n return i = i.trim(), this.rules.other.startAngleBracket.test(i) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(t) ? i = i.slice(1) : i = i.slice(1, -1)), Ae(e, { href: i && i.replace(this.rules.inline.anyPunctuation, \"$1\"), title: s && s.replace(this.rules.inline.anyPunctuation, \"$1\") }, e[0], this.lexer, this.rules);\n }\n }\n reflink(n, e) {\n let t;\n if ((t = this.rules.inline.reflink.exec(n)) || (t = this.rules.inline.nolink.exec(n))) {\n let i = (t[2] || t[1]).replace(this.rules.other.multipleSpaceGlobal, \" \"), s = e[i.toLowerCase()];\n if (!s) {\n let o = t[0].charAt(0);\n return { type: \"text\", raw: o, text: o };\n }\n return Ae(t, s, t[0], this.lexer, this.rules);\n }\n }\n emStrong(n, e, t = \"\") {\n let i = this.rules.inline.emStrongLDelim.exec(n);\n if (!(!i || i[3] && t.match(this.rules.other.unicodeAlphaNumeric)) && (!(i[1] || i[2]) || !t || this.rules.inline.punctuation.exec(t))) {\n let s = [...i[0]].length - 1, o, r, a = s, l = 0, c = i[0][0] === \"*\" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n for (c.lastIndex = 0, e = e.slice(-1 * n.length + s); (i = c.exec(e)) != null; ) {\n if (o = i[1] || i[2] || i[3] || i[4] || i[5] || i[6], !o) continue;\n if (r = [...o].length, i[3] || i[4]) {\n a += r;\n continue;\n } else if ((i[5] || i[6]) && s % 3 && !((s + r) % 3)) {\n l += r;\n continue;\n }\n if (a -= r, a > 0) continue;\n r = Math.min(r, r + a + l);\n let u = [...i[0]][0].length, p = n.slice(0, s + i.index + u + r);\n if (Math.min(s, r) % 2) {\n let k = p.slice(1, -1);\n return { type: \"em\", raw: p, text: k, tokens: this.lexer.inlineTokens(k) };\n }\n let d = p.slice(2, -2);\n return { type: \"strong\", raw: p, text: d, tokens: this.lexer.inlineTokens(d) };\n }\n }\n }\n codespan(n) {\n let e = this.rules.inline.code.exec(n);\n if (e) {\n let t = e[2].replace(this.rules.other.newLineCharGlobal, \" \"), i = this.rules.other.nonSpaceChar.test(t), s = this.rules.other.startingSpaceChar.test(t) && this.rules.other.endingSpaceChar.test(t);\n return i && s && (t = t.substring(1, t.length - 1)), { type: \"codespan\", raw: e[0], text: t };\n }\n }\n br(n) {\n let e = this.rules.inline.br.exec(n);\n if (e) return { type: \"br\", raw: e[0] };\n }\n del(n) {\n let e = this.rules.inline.del.exec(n);\n if (e) return { type: \"del\", raw: e[0], text: e[2], tokens: this.lexer.inlineTokens(e[2]) };\n }\n autolink(n) {\n let e = this.rules.inline.autolink.exec(n);\n if (e) {\n let t, i;\n return e[2] === \"@\" ? (t = e[1], i = \"mailto:\" + t) : (t = e[1], i = t), { type: \"link\", raw: e[0], text: t, href: i, tokens: [{ type: \"text\", raw: t, text: t }] };\n }\n }\n url(n) {\n let e;\n if (e = this.rules.inline.url.exec(n)) {\n let t, i;\n if (e[2] === \"@\") t = e[0], i = \"mailto:\" + t;\n else {\n let s;\n do\n s = e[0], e[0] = this.rules.inline._backpedal.exec(e[0])?.[0] ?? \"\";\n while (s !== e[0]);\n t = e[0], e[1] === \"www.\" ? i = \"http://\" + e[0] : i = e[0];\n }\n return { type: \"link\", raw: e[0], text: t, href: i, tokens: [{ type: \"text\", raw: t, text: t }] };\n }\n }\n inlineText(n) {\n let e = this.rules.inline.text.exec(n);\n if (e) {\n let t = this.lexer.state.inRawBlock;\n return { type: \"text\", raw: e[0], text: e[0], escaped: t };\n }\n }\n}, x = class se {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(e) {\n this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e || C, this.options.tokenizer = this.options.tokenizer || new Y(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: !1, inRawBlock: !1, top: !0 };\n let t = { other: T, block: j.normal, inline: B.normal };\n this.options.pedantic ? (t.block = j.pedantic, t.inline = B.pedantic) : this.options.gfm && (t.block = j.gfm, this.options.breaks ? t.inline = B.breaks : t.inline = B.gfm), this.tokenizer.rules = t;\n }\n static get rules() {\n return { block: j, inline: B };\n }\n static lex(e, t) {\n return new se(t).lex(e);\n }\n static lexInline(e, t) {\n return new se(t).inlineTokens(e);\n }\n lex(e) {\n e = e.replace(T.carriageReturn, `\n`), this.blockTokens(e, this.tokens);\n for (let t = 0; t < this.inlineQueue.length; t++) {\n let i = this.inlineQueue[t];\n this.inlineTokens(i.src, i.tokens);\n }\n return this.inlineQueue = [], this.tokens;\n }\n blockTokens(e, t = [], i = !1) {\n for (this.options.pedantic && (e = e.replace(T.tabCharGlobal, \" \").replace(T.spaceLine, \"\")); e; ) {\n let s;\n if (this.options.extensions?.block?.some((r) => (s = r.call({ lexer: this }, e, t)) ? (e = e.substring(s.raw.length), t.push(s), !0) : !1)) continue;\n if (s = this.tokenizer.space(e)) {\n e = e.substring(s.raw.length);\n let r = t.at(-1);\n s.raw.length === 1 && r !== void 0 ? r.raw += `\n` : t.push(s);\n continue;\n }\n if (s = this.tokenizer.code(e)) {\n e = e.substring(s.raw.length);\n let r = t.at(-1);\n r?.type === \"paragraph\" || r?.type === \"text\" ? (r.raw += (r.raw.endsWith(`\n`) ? \"\" : `\n`) + s.raw, r.text += `\n` + s.text, this.inlineQueue.at(-1).src = r.text) : t.push(s);\n continue;\n }\n if (s = this.tokenizer.fences(e)) {\n e = e.substring(s.raw.length), t.push(s);\n continue;\n }\n if (s = this.tokenizer.heading(e)) {\n e = e.substring(s.raw.length), t.push(s);\n continue;\n }\n if (s = this.tokenizer.hr(e)) {\n e = e.substring(s.raw.length), t.push(s);\n continue;\n }\n if (s = this.tokenizer.blockquote(e)) {\n e = e.substring(s.raw.length), t.push(s);\n continue;\n }\n if (s = this.tokenizer.list(e)) {\n e = e.substring(s.raw.length), t.push(s);\n continue;\n }\n if (s = this.tokenizer.html(e)) {\n e = e.substring(s.raw.length), t.push(s);\n continue;\n }\n if (s = this.tokenizer.def(e)) {\n e = e.substring(s.raw.length);\n let r = t.at(-1);\n r?.type === \"paragraph\" || r?.type === \"text\" ? (r.raw += (r.raw.endsWith(`\n`) ? \"\" : `\n`) + s.raw, r.text += `\n` + s.raw, this.inlineQueue.at(-1).src = r.text) : this.tokens.links[s.tag] || (this.tokens.links[s.tag] = { href: s.href, title: s.title }, t.push(s));\n continue;\n }\n if (s = this.tokenizer.table(e)) {\n e = e.substring(s.raw.length), t.push(s);\n continue;\n }\n if (s = this.tokenizer.lheading(e)) {\n e = e.substring(s.raw.length), t.push(s);\n continue;\n }\n let o = e;\n if (this.options.extensions?.startBlock) {\n let r = 1 / 0, a = e.slice(1), l;\n this.options.extensions.startBlock.forEach((c) => {\n l = c.call({ lexer: this }, a), typeof l == \"number\" && l >= 0 && (r = Math.min(r, l));\n }), r < 1 / 0 && r >= 0 && (o = e.substring(0, r + 1));\n }\n if (this.state.top && (s = this.tokenizer.paragraph(o))) {\n let r = t.at(-1);\n i && r?.type === \"paragraph\" ? (r.raw += (r.raw.endsWith(`\n`) ? \"\" : `\n`) + s.raw, r.text += `\n` + s.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = r.text) : t.push(s), i = o.length !== e.length, e = e.substring(s.raw.length);\n continue;\n }\n if (s = this.tokenizer.text(e)) {\n e = e.substring(s.raw.length);\n let r = t.at(-1);\n r?.type === \"text\" ? (r.raw += (r.raw.endsWith(`\n`) ? \"\" : `\n`) + s.raw, r.text += `\n` + s.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = r.text) : t.push(s);\n continue;\n }\n if (e) {\n let r = \"Infinite loop on byte: \" + e.charCodeAt(0);\n if (this.options.silent) {\n console.error(r);\n break;\n } else throw new Error(r);\n }\n }\n return this.state.top = !0, t;\n }\n inline(e, t = []) {\n return this.inlineQueue.push({ src: e, tokens: t }), t;\n }\n inlineTokens(e, t = []) {\n let i = e, s = null;\n if (this.tokens.links) {\n let a = Object.keys(this.tokens.links);\n if (a.length > 0) for (; (s = this.tokenizer.rules.inline.reflinkSearch.exec(i)) != null; ) a.includes(s[0].slice(s[0].lastIndexOf(\"[\") + 1, -1)) && (i = i.slice(0, s.index) + \"[\" + \"a\".repeat(s[0].length - 2) + \"]\" + i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex));\n }\n for (; (s = this.tokenizer.rules.inline.anyPunctuation.exec(i)) != null; ) i = i.slice(0, s.index) + \"++\" + i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n for (; (s = this.tokenizer.rules.inline.blockSkip.exec(i)) != null; ) i = i.slice(0, s.index) + \"[\" + \"a\".repeat(s[0].length - 2) + \"]\" + i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n i = this.options.hooks?.emStrongMask?.call({ lexer: this }, i) ?? i;\n let o = !1, r = \"\";\n for (; e; ) {\n o || (r = \"\"), o = !1;\n let a;\n if (this.options.extensions?.inline?.some((c) => (a = c.call({ lexer: this }, e, t)) ? (e = e.substring(a.raw.length), t.push(a), !0) : !1)) continue;\n if (a = this.tokenizer.escape(e)) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n if (a = this.tokenizer.tag(e)) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n if (a = this.tokenizer.link(e)) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n if (a = this.tokenizer.reflink(e, this.tokens.links)) {\n e = e.substring(a.raw.length);\n let c = t.at(-1);\n a.type === \"text\" && c?.type === \"text\" ? (c.raw += a.raw, c.text += a.text) : t.push(a);\n continue;\n }\n if (a = this.tokenizer.emStrong(e, i, r)) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n if (a = this.tokenizer.codespan(e)) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n if (a = this.tokenizer.br(e)) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n if (a = this.tokenizer.del(e)) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n if (a = this.tokenizer.autolink(e)) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n if (!this.state.inLink && (a = this.tokenizer.url(e))) {\n e = e.substring(a.raw.length), t.push(a);\n continue;\n }\n let l = e;\n if (this.options.extensions?.startInline) {\n let c = 1 / 0, u = e.slice(1), p;\n this.options.extensions.startInline.forEach((d) => {\n p = d.call({ lexer: this }, u), typeof p == \"number\" && p >= 0 && (c = Math.min(c, p));\n }), c < 1 / 0 && c >= 0 && (l = e.substring(0, c + 1));\n }\n if (a = this.tokenizer.inlineText(l)) {\n e = e.substring(a.raw.length), a.raw.slice(-1) !== \"_\" && (r = a.raw.slice(-1)), o = !0;\n let c = t.at(-1);\n c?.type === \"text\" ? (c.raw += a.raw, c.text += a.text) : t.push(a);\n continue;\n }\n if (e) {\n let c = \"Infinite loop on byte: \" + e.charCodeAt(0);\n if (this.options.silent) {\n console.error(c);\n break;\n } else throw new Error(c);\n }\n }\n return t;\n }\n}, X = class {\n options;\n parser;\n constructor(n) {\n this.options = n || C;\n }\n space(n) {\n return \"\";\n }\n code({ text: n, lang: e, escaped: t }) {\n let i = (e || \"\").match(T.notSpaceStart)?.[0], s = n.replace(T.endingNewline, \"\") + `\n`;\n return i ? '<pre><code class=\"language-' + y(i) + '\">' + (t ? s : y(s, !0)) + `</code></pre>\n` : \"<pre><code>\" + (t ? s : y(s, !0)) + `</code></pre>\n`;\n }\n blockquote({ tokens: n }) {\n return `<blockquote>\n${this.parser.parse(n)}</blockquote>\n`;\n }\n html({ text: n }) {\n return n;\n }\n def(n) {\n return \"\";\n }\n heading({ tokens: n, depth: e }) {\n return `<h${e}>${this.parser.parseInline(n)}</h${e}>\n`;\n }\n hr(n) {\n return `<hr>\n`;\n }\n list(n) {\n let e = n.ordered, t = n.start, i = \"\";\n for (let r = 0; r < n.items.length; r++) {\n let a = n.items[r];\n i += this.listitem(a);\n }\n let s = e ? \"ol\" : \"ul\", o = e && t !== 1 ? ' start=\"' + t + '\"' : \"\";\n return \"<\" + s + o + `>\n` + i + \"</\" + s + `>\n`;\n }\n listitem(n) {\n let e = \"\";\n if (n.task) {\n let t = this.checkbox({ checked: !!n.checked });\n n.loose ? n.tokens[0]?.type === \"paragraph\" ? (n.tokens[0].text = t + \" \" + n.tokens[0].text, n.tokens[0].tokens && n.tokens[0].tokens.length > 0 && n.tokens[0].tokens[0].type === \"text\" && (n.tokens[0].tokens[0].text = t + \" \" + y(n.tokens[0].tokens[0].text), n.tokens[0].tokens[0].escaped = !0)) : n.tokens.unshift({ type: \"text\", raw: t + \" \", text: t + \" \", escaped: !0 }) : e += t + \" \";\n }\n return e += this.parser.parse(n.tokens, !!n.loose), `<li>${e}</li>\n`;\n }\n checkbox({ checked: n }) {\n return \"<input \" + (n ? 'checked=\"\" ' : \"\") + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph({ tokens: n }) {\n return `<p>${this.parser.parseInline(n)}</p>\n`;\n }\n table(n) {\n let e = \"\", t = \"\";\n for (let s = 0; s < n.header.length; s++) t += this.tablecell(n.header[s]);\n e += this.tablerow({ text: t });\n let i = \"\";\n for (let s = 0; s < n.rows.length; s++) {\n let o = n.rows[s];\n t = \"\";\n for (let r = 0; r < o.length; r++) t += this.tablecell(o[r]);\n i += this.tablerow({ text: t });\n }\n return i && (i = `<tbody>${i}</tbody>`), `<table>\n<thead>\n` + e + `</thead>\n` + i + `</table>\n`;\n }\n tablerow({ text: n }) {\n return `<tr>\n${n}</tr>\n`;\n }\n tablecell(n) {\n let e = this.parser.parseInline(n.tokens), t = n.header ? \"th\" : \"td\";\n return (n.align ? `<${t} align=\"${n.align}\">` : `<${t}>`) + e + `</${t}>\n`;\n }\n strong({ tokens: n }) {\n return `<strong>${this.parser.parseInline(n)}</strong>`;\n }\n em({ tokens: n }) {\n return `<em>${this.parser.parseInline(n)}</em>`;\n }\n codespan({ text: n }) {\n return `<code>${y(n, !0)}</code>`;\n }\n br(n) {\n return \"<br>\";\n }\n del({ tokens: n }) {\n return `<del>${this.parser.parseInline(n)}</del>`;\n }\n link({ href: n, title: e, tokens: t }) {\n let i = this.parser.parseInline(t), s = ye(n);\n if (s === null) return i;\n n = s;\n let o = '<a href=\"' + n + '\"';\n return e && (o += ' title=\"' + y(e) + '\"'), o += \">\" + i + \"</a>\", o;\n }\n image({ href: n, title: e, text: t, tokens: i }) {\n i && (t = this.parser.parseInline(i, this.parser.textRenderer));\n let s = ye(n);\n if (s === null) return y(t);\n n = s;\n let o = `<img src=\"${n}\" alt=\"${t}\"`;\n return e && (o += ` title=\"${y(e)}\"`), o += \">\", o;\n }\n text(n) {\n return \"tokens\" in n && n.tokens ? this.parser.parseInline(n.tokens) : \"escaped\" in n && n.escaped ? n.text : y(n.text);\n }\n}, de = class {\n strong({ text: n }) {\n return n;\n }\n em({ text: n }) {\n return n;\n }\n codespan({ text: n }) {\n return n;\n }\n del({ text: n }) {\n return n;\n }\n html({ text: n }) {\n return n;\n }\n text({ text: n }) {\n return n;\n }\n link({ text: n }) {\n return \"\" + n;\n }\n image({ text: n }) {\n return \"\" + n;\n }\n br() {\n return \"\";\n }\n}, S = class ie {\n options;\n renderer;\n textRenderer;\n constructor(e) {\n this.options = e || C, this.options.renderer = this.options.renderer || new X(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new de();\n }\n static parse(e, t) {\n return new ie(t).parse(e);\n }\n static parseInline(e, t) {\n return new ie(t).parseInline(e);\n }\n parse(e, t = !0) {\n let i = \"\";\n for (let s = 0; s < e.length; s++) {\n let o = e[s];\n if (this.options.extensions?.renderers?.[o.type]) {\n let a = o, l = this.options.extensions.renderers[a.type].call({ parser: this }, a);\n if (l !== !1 || ![\"space\", \"hr\", \"heading\", \"code\", \"table\", \"blockquote\", \"list\", \"html\", \"def\", \"paragraph\", \"text\"].includes(a.type)) {\n i += l || \"\";\n continue;\n }\n }\n let r = o;\n switch (r.type) {\n case \"space\": {\n i += this.renderer.space(r);\n continue;\n }\n case \"hr\": {\n i += this.renderer.hr(r);\n continue;\n }\n case \"heading\": {\n i += this.renderer.heading(r);\n continue;\n }\n case \"code\": {\n i += this.renderer.code(r);\n continue;\n }\n case \"table\": {\n i += this.renderer.table(r);\n continue;\n }\n case \"blockquote\": {\n i += this.renderer.blockquote(r);\n continue;\n }\n case \"list\": {\n i += this.renderer.list(r);\n continue;\n }\n case \"html\": {\n i += this.renderer.html(r);\n continue;\n }\n case \"def\": {\n i += this.renderer.def(r);\n continue;\n }\n case \"paragraph\": {\n i += this.renderer.paragraph(r);\n continue;\n }\n case \"text\": {\n let a = r, l = this.renderer.text(a);\n for (; s + 1 < e.length && e[s + 1].type === \"text\"; ) a = e[++s], l += `\n` + this.renderer.text(a);\n t ? i += this.renderer.paragraph({ type: \"paragraph\", raw: l, text: l, tokens: [{ type: \"text\", raw: l, text: l, escaped: !0 }] }) : i += l;\n continue;\n }\n default: {\n let a = 'Token with \"' + r.type + '\" type was not found.';\n if (this.options.silent) return console.error(a), \"\";\n throw new Error(a);\n }\n }\n }\n return i;\n }\n parseInline(e, t = this.renderer) {\n let i = \"\";\n for (let s = 0; s < e.length; s++) {\n let o = e[s];\n if (this.options.extensions?.renderers?.[o.type]) {\n let a = this.options.extensions.renderers[o.type].call({ parser: this }, o);\n if (a !== !1 || ![\"escape\", \"html\", \"link\", \"image\", \"strong\", \"em\", \"codespan\", \"br\", \"del\", \"text\"].includes(o.type)) {\n i += a || \"\";\n continue;\n }\n }\n let r = o;\n switch (r.type) {\n case \"escape\": {\n i += t.text(r);\n break;\n }\n case \"html\": {\n i += t.html(r);\n break;\n }\n case \"link\": {\n i += t.link(r);\n break;\n }\n case \"image\": {\n i += t.image(r);\n break;\n }\n case \"strong\": {\n i += t.strong(r);\n break;\n }\n case \"em\": {\n i += t.em(r);\n break;\n }\n case \"codespan\": {\n i += t.codespan(r);\n break;\n }\n case \"br\": {\n i += t.br(r);\n break;\n }\n case \"del\": {\n i += t.del(r);\n break;\n }\n case \"text\": {\n i += t.text(r);\n break;\n }\n default: {\n let a = 'Token with \"' + r.type + '\" type was not found.';\n if (this.options.silent) return console.error(a), \"\";\n throw new Error(a);\n }\n }\n }\n return i;\n }\n}, U = class {\n options;\n block;\n constructor(n) {\n this.options = n || C;\n }\n static passThroughHooks = /* @__PURE__ */ new Set([\"preprocess\", \"postprocess\", \"processAllTokens\", \"emStrongMask\"]);\n static passThroughHooksRespectAsync = /* @__PURE__ */ new Set([\"preprocess\", \"postprocess\", \"processAllTokens\"]);\n preprocess(n) {\n return n;\n }\n postprocess(n) {\n return n;\n }\n processAllTokens(n) {\n return n;\n }\n emStrongMask(n) {\n return n;\n }\n provideLexer() {\n return this.block ? x.lex : x.lexInline;\n }\n provideParser() {\n return this.block ? S.parse : S.parseInline;\n }\n}, St = class {\n defaults = re();\n options = this.setOptions;\n parse = this.parseMarkdown(!0);\n parseInline = this.parseMarkdown(!1);\n Parser = S;\n Renderer = X;\n TextRenderer = de;\n Lexer = x;\n Tokenizer = Y;\n Hooks = U;\n constructor(...n) {\n this.use(...n);\n }\n walkTokens(n, e) {\n let t = [];\n for (let i of n) switch (t = t.concat(e.call(this, i)), i.type) {\n case \"table\": {\n let s = i;\n for (let o of s.header) t = t.concat(this.walkTokens(o.tokens, e));\n for (let o of s.rows) for (let r of o) t = t.concat(this.walkTokens(r.tokens, e));\n break;\n }\n case \"list\": {\n let s = i;\n t = t.concat(this.walkTokens(s.items, e));\n break;\n }\n default: {\n let s = i;\n this.defaults.extensions?.childTokens?.[s.type] ? this.defaults.extensions.childTokens[s.type].forEach((o) => {\n let r = s[o].flat(1 / 0);\n t = t.concat(this.walkTokens(r, e));\n }) : s.tokens && (t = t.concat(this.walkTokens(s.tokens, e)));\n }\n }\n return t;\n }\n use(...n) {\n let e = this.defaults.extensions || { renderers: {}, childTokens: {} };\n return n.forEach((t) => {\n let i = { ...t };\n if (i.async = this.defaults.async || i.async || !1, t.extensions && (t.extensions.forEach((s) => {\n if (!s.name) throw new Error(\"extension name required\");\n if (\"renderer\" in s) {\n let o = e.renderers[s.name];\n o ? e.renderers[s.name] = function(...r) {\n let a = s.renderer.apply(this, r);\n return a === !1 && (a = o.apply(this, r)), a;\n } : e.renderers[s.name] = s.renderer;\n }\n if (\"tokenizer\" in s) {\n if (!s.level || s.level !== \"block\" && s.level !== \"inline\") throw new Error(\"extension level must be 'block' or 'inline'\");\n let o = e[s.level];\n o ? o.unshift(s.tokenizer) : e[s.level] = [s.tokenizer], s.start && (s.level === \"block\" ? e.startBlock ? e.startBlock.push(s.start) : e.startBlock = [s.start] : s.level === \"inline\" && (e.startInline ? e.startInline.push(s.start) : e.startInline = [s.start]));\n }\n \"childTokens\" in s && s.childTokens && (e.childTokens[s.name] = s.childTokens);\n }), i.extensions = e), t.renderer) {\n let s = this.defaults.renderer || new X(this.defaults);\n for (let o in t.renderer) {\n if (!(o in s)) throw new Error(`renderer '${o}' does not exist`);\n if ([\"options\", \"parser\"].includes(o)) continue;\n let r = o, a = t.renderer[r], l = s[r];\n s[r] = (...c) => {\n let u = a.apply(s, c);\n return u === !1 && (u = l.apply(s, c)), u || \"\";\n };\n }\n i.renderer = s;\n }\n if (t.tokenizer) {\n let s = this.defaults.tokenizer || new Y(this.defaults);\n for (let o in t.tokenizer) {\n if (!(o in s)) throw new Error(`tokenizer '${o}' does not exist`);\n if ([\"options\", \"rules\", \"lexer\"].includes(o)) continue;\n let r = o, a = t.tokenizer[r], l = s[r];\n s[r] = (...c) => {\n let u = a.apply(s, c);\n return u === !1 && (u = l.apply(s, c)), u;\n };\n }\n i.tokenizer = s;\n }\n if (t.hooks) {\n let s = this.defaults.hooks || new U();\n for (let o in t.hooks) {\n if (!(o in s)) throw new Error(`hook '${o}' does not exist`);\n if ([\"options\", \"block\"].includes(o)) continue;\n let r = o, a = t.hooks[r], l = s[r];\n U.passThroughHooks.has(o) ? s[r] = (c) => {\n if (this.defaults.async && U.passThroughHooksRespectAsync.has(o)) return (async () => {\n let p = await a.call(s, c);\n return l.call(s, p);\n })();\n let u = a.call(s, c);\n return l.call(s, u);\n } : s[r] = (...c) => {\n if (this.defaults.async) return (async () => {\n let p = await a.apply(s, c);\n return p === !1 && (p = await l.apply(s, c)), p;\n })();\n let u = a.apply(s, c);\n return u === !1 && (u = l.apply(s, c)), u;\n };\n }\n i.hooks = s;\n }\n if (t.walkTokens) {\n let s = this.defaults.walkTokens, o = t.walkTokens;\n i.walkTokens = function(r) {\n let a = [];\n return a.push(o.call(this, r)), s && (a = a.concat(s.call(this, r))), a;\n };\n }\n this.defaults = { ...this.defaults, ...i };\n }), this;\n }\n setOptions(n) {\n return this.defaults = { ...this.defaults, ...n }, this;\n }\n lexer(n, e) {\n return x.lex(n, e ?? this.defaults);\n }\n parser(n, e) {\n return S.parse(n, e ?? this.defaults);\n }\n parseMarkdown(n) {\n return (e, t) => {\n let i = { ...t }, s = { ...this.defaults, ...i }, o = this.onError(!!s.silent, !!s.async);\n if (this.defaults.async === !0 && i.async === !1) return o(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));\n if (typeof e > \"u\" || e === null) return o(new Error(\"marked(): input parameter is undefined or null\"));\n if (typeof e != \"string\") return o(new Error(\"marked(): input parameter is of type \" + Object.prototype.toString.call(e) + \", string expected\"));\n if (s.hooks && (s.hooks.options = s, s.hooks.block = n), s.async) return (async () => {\n let r = s.hooks ? await s.hooks.preprocess(e) : e, a = await (s.hooks ? await s.hooks.provideLexer() : n ? x.lex : x.lexInline)(r, s), l = s.hooks ? await s.hooks.processAllTokens(a) : a;\n s.walkTokens && await Promise.all(this.walkTokens(l, s.walkTokens));\n let c = await (s.hooks ? await s.hooks.provideParser() : n ? S.parse : S.parseInline)(l, s);\n return s.hooks ? await s.hooks.postprocess(c) : c;\n })().catch(o);\n try {\n s.hooks && (e = s.hooks.preprocess(e));\n let r = (s.hooks ? s.hooks.provideLexer() : n ? x.lex : x.lexInline)(e, s);\n s.hooks && (r = s.hooks.processAllTokens(r)), s.walkTokens && this.walkTokens(r, s.walkTokens);\n let a = (s.hooks ? s.hooks.provideParser() : n ? S.parse : S.parseInline)(r, s);\n return s.hooks && (a = s.hooks.postprocess(a)), a;\n } catch (r) {\n return o(r);\n }\n };\n }\n onError(n, e) {\n return (t) => {\n if (t.message += `\nPlease report this to https://github.com/markedjs/marked.`, n) {\n let i = \"<p>An error occurred:</p><pre>\" + y(t.message + \"\", !0) + \"</pre>\";\n return e ? Promise.resolve(i) : i;\n }\n if (e) return Promise.reject(t);\n throw t;\n };\n }\n}, O = new St();\nfunction f(n, e) {\n return O.parse(n, e);\n}\nf.options = f.setOptions = function(n) {\n return O.setOptions(n), f.defaults = O.defaults, Le(f.defaults), f;\n};\nf.getDefaults = re;\nf.defaults = C;\nf.use = function(...n) {\n return O.use(...n), f.defaults = O.defaults, Le(f.defaults), f;\n};\nf.walkTokens = function(n, e) {\n return O.walkTokens(n, e);\n};\nf.parseInline = O.parseInline;\nf.Parser = S;\nf.parser = S.parse;\nf.Renderer = X;\nf.TextRenderer = de;\nf.Lexer = x;\nf.lexer = x.lex;\nf.Tokenizer = Y;\nf.Hooks = U;\nf.parse = f;\nf.options;\nf.setOptions;\nf.use;\nf.walkTokens;\nf.parseInline;\nS.parse;\nx.lex;\nclass ge {\n static instance = null;\n currentLang = \"en\";\n fallbackLang = \"en\";\n translations = {};\n supportedLangs = /* @__PURE__ */ new Set([\"en\", \"pl\"]);\n loadingPromises = /* @__PURE__ */ new Map();\n /** Returns the global singleton instance */\n static getInstance() {\n return this.instance || (this.instance = new ge()), this.instance;\n }\n /**\n * Sets the current active language.\n * Emits a change event if language was updated.\n */\n setLanguage(e) {\n if (!this.supportedLangs.has(e)) {\n console.warn(`[HintoriumI18n] Unsupported language: ${e}`);\n return;\n }\n this.currentLang !== e && (this.currentLang = e);\n }\n /**\n * Sets the fallback language used when a translation key is missing.\n */\n setFallbackLanguage(e) {\n if (!this.supportedLangs.has(e)) {\n console.warn(`[HintoriumI18n] Unsupported fallback language: ${e}`);\n return;\n }\n this.fallbackLang = e;\n }\n /**\n * Loads multiple language files at once.\n * @param langs - Array of language configurations\n * @returns Promise that resolves when all translations are loaded\n */\n async loadMultipleTranslations(e) {\n await Promise.all(\n e.map(({ lang: t, url: i }) => this.loadTranslations(t, i))\n );\n }\n /**\n * Loads translations from an external file (JSON).\n * @param lang - Language code\n * @param url - URL to the JSON file\n * @returns Promise that resolves when translations are loaded\n */\n async loadTranslations(e, t) {\n if (this.loadingPromises.has(e))\n return this.loadingPromises.get(e);\n const i = (async () => {\n try {\n const s = await fetch(t);\n if (!s.ok)\n throw new Error(\n `Failed to load translations: ${s.statusText}`\n );\n const o = await s.json();\n this.setTranslations(e, o);\n } catch (s) {\n throw console.error(\n `[HintoriumI18n] Error loading translations for ${e}:`,\n s\n ), s;\n } finally {\n this.loadingPromises.delete(e);\n }\n })();\n return this.loadingPromises.set(e, i), i;\n }\n /**\n * Returns the fallback language.\n */\n getFallbackLanguage() {\n return this.fallbackLang;\n }\n /**\n * Returns the currently active language.\n */\n getLanguage() {\n return this.currentLang;\n }\n /** Dynamically adds a supported language (e.g. \"fr\", \"de\", \"ar\"). */\n addLanguage(e) {\n this.supportedLangs.has(e) || this.supportedLangs.add(e);\n }\n /**\n * Returns the list of supported languages.\n */\n getSupportedLanguages() {\n return Array.from(this.supportedLangs);\n }\n /** Adds or merges translations for a given language. */\n setTranslations(e, t) {\n this.addLanguage(e), this.translations[e] = {\n ...this.translations[e] || {},\n ...t\n };\n }\n /**\n * Translates a key.\n * - Looks up the current language first.\n * - Falls back to the fallback language.\n * - Falls back to `fallback` param or the key itself if not found.\n */\n t(e, t) {\n const i = this.currentLang, s = this.translations[i], o = this.translations[this.fallbackLang], r = (l, c) => c.split(\".\").reduce((u, p) => u?.[p], l);\n return s ? r(s, e) || r(o, e) || s[e] || t || e : o?.[e] || t || e;\n }\n /** Detects browser or document language. */\n detectLanguage() {\n const t = (document.documentElement.lang || document.body.lang || navigator.language || \"en\").split(\"-\")[0].toLowerCase();\n return this.supportedLangs.has(t) && (this.currentLang = t), this.currentLang;\n }\n}\nconst M = ge.getInstance();\nclass V {\n LOADING_HTML = '<span class=\"hintorium-loading\">⏳ Loading...</span>';\n ERROR_HTML = '<span class=\"hintorium-error\">⚠️ Failed to load content</span>';\n content;\n static cache = /* @__PURE__ */ new Map();\n constructor(e) {\n this.content = e;\n }\n /**\n * Render the tooltip content.\n * Supports string, HTMLElement, sync callback, or async callback.\n */\n async render() {\n try {\n if (this.content instanceof HTMLElement)\n return this.content;\n if (typeof this.content == \"string\") {\n const i = M.t(this.content);\n return i ? this.renderString(i) : this.renderString(this.content);\n }\n let e = this.LOADING_HTML;\n const t = await this.resolveDynamicContent(this.content);\n return t instanceof HTMLElement ? e = t : e = await this.renderString(t), e;\n } catch {\n return this.ERROR_HTML;\n }\n }\n /**\n * Convert a string to HTML, treating it as Markdown\n * and then sanitizing it.\n */\n async renderString(e) {\n const t = await f.parse(e);\n return this.sanitizeHTML(t);\n }\n /**\n * Resolves dynamic tooltip content (callback, promise, or URL fetch).\n */\n async resolveDynamicContent(e) {\n let t;\n if (typeof e == \"function\") {\n const i = e();\n t = i instanceof Promise ? await i : i;\n } else\n t = e;\n if (typeof t == \"string\" && this.isURL(t)) {\n if (V.cache.has(t))\n return V.cache.get(t);\n try {\n const i = await fetch(t);\n if (!i.ok) throw new Error(`HTTP ${i.status}`);\n const s = await i.text(), o = await this.renderString(s);\n return V.cache.set(t, o), o;\n } catch {\n return this.ERROR_HTML;\n }\n }\n return t;\n }\n /**\n * Simple URL validator.\n */\n isURL(e) {\n return /^https?:\\/\\//i.test(e);\n }\n /**\n * Sanitizes HTML string manually.\n * Removes <script>, <iframe>, <object>, <embed>, <link>, <meta>\n * and dangerous inline event handlers (onmouseover, onclick, etc.).\n *\n * @param html - Raw HTML to sanitize.\n * @returns Safe HTML string.\n */\n sanitizeHTML(e) {\n const t = document.createElement(\"div\");\n return t.innerHTML = e, [\n \"script\",\n \"iframe\",\n \"object\",\n \"embed\",\n \"link\",\n \"meta\"\n ].forEach(\n (s) => t.querySelectorAll(s).forEach((o) => o.remove())\n ), t.querySelectorAll(\"*\").forEach((s) => {\n [...s.attributes].forEach((o) => {\n const r = o.name.toLowerCase();\n r.startsWith(\"on\") && s.removeAttribute(o.name), [\"srcdoc\", \"srcset\", \"formaction\"].includes(r) && s.removeAttribute(o.name);\n });\n }), t.querySelectorAll(\"a, area, iframe\").forEach((s) => {\n const o = s.getAttribute(\"href\");\n o && o.trim().toLowerCase().startsWith(\"javascript:\") && s.removeAttribute(\"href\");\n }), t.innerHTML;\n }\n}\nclass fe {\n /** Default pixel offset between trigger and tooltip */\n static DEFAULT_OFFSET = h.DEFAULT.DEFAULT_OFFSET;\n /** Minimal padding from viewport edges (in px). */\n static VIEWPORT_PADDING = h.DEFAULT.VIEWPORT_PADDING;\n /**\n * Positions a tooltip element relative to its trigger element.\n * Handles flipping and edge detection automatically.\n *\n * @param triggerElement - The element that triggers the tooltip.\n * @param tooltipElement - The tooltip element to be positioned.\n * @param position - Desired position (\"top\" | \"bottom\" | \"left\" | \"right\" | \"auto\").\n * @param offset - Distance in pixels between the trigger and the tooltip.\n * @param rtl - If direction is rtl or ltr.\n */\n static position(e, t, i = \"top\", s, o = fe.DEFAULT_OFFSET) {\n if (typeof window > \"u\" || !e || !t)\n return;\n const r = this.calculatePosition(\n e,\n t,\n i,\n o,\n s\n );\n t.style.top = `${r.top}px`, t.style.left = `${r.left}px`;\n }\n /**\n * Calculates the tooltip's top and left coordinates in the document.\n * Automatically flips the tooltip if it doesn't fit in the viewport.\n */\n static calculatePosition(e, t, i, s, o) {\n const r = e.getBoundingClientRect();\n let a = t.getBoundingClientRect();\n const l = window.scrollX, c = window.scrollY, u = window.innerWidth, p = window.innerHeight, {\n top: d,\n left: k,\n bottom: m,\n right: b,\n width: z,\n height: D\n } = r;\n a = t.getBoundingClientRect();\n const E = a.width, A = a.height, $ = {\n top: d - s - this.VIEWPORT_PADDING,\n bottom: p - m - s - this.VIEWPORT_PADDING,\n left: k - s - this.VIEWPORT_PADDING,\n right: u - b - s - this.VIEWPORT_PADDING\n }, G = {\n top: $.top >= A,\n bottom: $.bottom >= A,\n left: $.left >= E,\n right: $.right >= E\n };\n o && (i === \"left\" ? i = \"right\" : i === \"right\" && (i = \"left\"));\n let L = i;\n if (!G[i]) {\n const Be = {\n top: [\"bottom\", \"right\", \"left\"],\n bottom: [\"top\", \"right\", \"left\"],\n left: [\"right\", \"top\", \"bottom\"],\n right: [\"left\", \"top\", \"bottom\"]\n };\n for (const ke of Be[i])\n if (G[ke]) {\n L = ke;\n break;\n }\n }\n const v = k + l + (z - E) / 2, me = d + c + (D - A) / 2;\n let P = 0, I = 0;\n switch (L) {\n case \"top\":\n P = d + c - A - s, I = v;\n break;\n case \"bottom\":\n P = m + c + s, I = v;\n break;\n case \"left\":\n P = me, I = k + l - E - s;\n break;\n case \"right\":\n P = me, I = b + l + s;\n break;\n }\n P = Math.max(\n c + this.VIEWPORT_PADDING,\n Math.min(P, c + p - A - this.VIEWPORT_PADDING)\n ), I = Math.max(\n l + this.VIEWPORT_PADDING,\n Math.min(I, l + u - E - this.VIEWPORT_PADDING)\n );\n const Ne = Math.max(\n 10,\n Math.min(z / 2 + (k - I), E - 10)\n ), ze = Math.max(\n 10,\n Math.min(D / 2 + (d - P), A - 10)\n );\n return t.style.setProperty(\"--arrow-offset-x\", `${Ne}px`), t.style.setProperty(\"--arrow-offset-y\", `${ze}px`), t.setAttribute(\"data-position\", L), t.setAttribute(\"dir\", o ? \"rtl\" : \"ltr\"), { top: P, left: I, actualPosition: L };\n }\n}\nclass w {\n static activeTooltip = null;\n static tourActive = !1;\n element;\n contentManager;\n tooltipEl = null;\n options = {};\n id;\n listeners = /* @__PURE__ */ new Map();\n outsideClickListener = null;\n showTimeout = null;\n rtl;\n constructor(e, t, i) {\n this.element = e, this.rtl = this.detectRTL(), this.contentManager = new V(t), this.id = i?.id ?? this.generateId(), i && (this.options = i), H.ensureFocusable(this.element, this.options), N.setupMobileSupport(this, this.element, this.options), this.setupListeners();\n }\n handleTooltipShow = () => this.show();\n handleTooltipHide = () => this.hide();\n handleTooltipToggle = () => this.tooltipEl ? this.hide() : this.show();\n handleMouseEnter = () => {\n w.tourActive || this.show();\n };\n handleMouseLeave = () => this.hide();\n handleClick = () => {\n w.tourActive || (this.tooltipEl ? this.hide() : this.show());\n };\n async createElement() {\n const e = document.createElement(\"div\");\n e.id = this.id, e.classList.add(h.CSS_CLASSES.BASE), e.classList.add(\n this.options.theme || h.DEFAULT.THEME\n ), this.rtl && (e.setAttribute(\"dir\", \"rtl\"), e.classList.add(h.CSS_CLASSES.RTL));\n const t = document.createElement(\"div\");\n t.classList.add(h.CSS_CLASSES.WRAPPER), this.options.isTour && t.classList.add(h.CSS_CLASSES.HINTORIUM_TOUR);\n const i = await this.contentManager.render();\n return typeof i == \"string\" ? t.innerHTML = i : t.appendChild(i), e.appendChild(t), e.setAttribute(\"data-position\", this.options.position || \"top\"), e;\n }\n generateId() {\n return `${h.DEFAULT.ID_PREFIX}${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n }\n setupAccessibility() {\n this.tooltipEl && H.setupTooltipAccessibility(\n this.tooltipEl,\n this.element,\n this.options\n );\n }\n setupListeners() {\n const e = {\n mouseenter: this.handleMouseEnter,\n mouseleave: this.options.sticky ? () => {\n } : this.handleMouseLeave,\n // 👈 ignore mouseleave if sticky\n focus: this.handleMouseEnter,\n blur: this.options.sticky ? () => {\n } : this.handleMouseLeave,\n \"tooltip:show\": this.handleTooltipShow,\n \"tooltip:hide\": this.handleTooltipHide,\n \"tooltip:toggle\": this.handleTooltipToggle\n };\n this.options.sticky && (this.element.addEventListener(\"click\", this.handleClick), this.listeners.set(\"click\", this.handleClick)), Object.entries(e).forEach(([t, i]) => {\n this.element.addEventListener(t, i), this.listeners.set(t, i);\n });\n }\n removeListeners() {\n this.listeners.forEach((e, t) => {\n this.element.removeEventListener(t, e);\n }), this.listeners.clear();\n }\n async show() {\n if (w.activeTooltip && w.activeTooltip !== this && await w.activeTooltip.hide(), w.activeTooltip = this, this.tooltipEl) return;\n const e = this.options.delay ?? 0;\n if (e > 0)\n return new Promise((t) => {\n this.showTimeout = window.setTimeout(async () => {\n this.showTimeout = null, await this.showTooltip(), t();\n }, e);\n });\n await this.showTooltip();\n }\n async showTooltip() {\n this.tooltipEl = await this.createElement(), this.setupAccessibility(), this.options.onInjectContent && this.options.onInjectContent(this.tooltipEl), document.body.appendChild(this.tooltipEl), fe.position(\n this.element,\n this.tooltipEl,\n this.options.position,\n this.rtl\n ), Fe.increment(this.id), this.options.onShow?.(this.id), this.options.a11y?.announceOnShow && H.announceToScreenReader(\n `Tooltip shown: ${this.element.textContent}`\n ), this.options.sticky && this.addOutsideClickListener(), await Te.show(this.tooltipEl, this.options.animation);\n }\n addOutsideClickListener() {\n this.outsideClickListener = (e) => {\n const t = e.target;\n this.tooltipEl?.contains(t) || this.element.contains(t) || this.hide();\n }, document.addEventListener(\"mousedown\", this.outsideClickListener), document.addEventListener(\"touchstart\", this.outsideClickListener);\n }\n async hide() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout), this.showTimeout = null;\n return;\n }\n if (this.tooltipEl)\n try {\n await Te.hide(this.tooltipEl), this.tooltipEl?.parentNode?.removeChild(this.tooltipEl);\n } catch (e) {\n console.warn(\"[Hintorium Tooltip] Error hiding tooltip:\", e);\n } finally {\n this.tooltipEl = null, w.activeTooltip === this && (w.activeTooltip = null);\n }\n }\n /**\n * Detect if RTL is enabled.\n */\n detectRTL() {\n if (this.options.rtl) return this.options.rtl;\n const e = this.element.dir || document.documentElement.dir || document.body.dir;\n if (e) return e.toLowerCase() === \"rtl\";\n const t = document.documentElement.lang?.toLowerCase() ?? \"\";\n return [\"ar\", \"he\", \"fa\", \"ur\"].some((s) => t.startsWith(s));\n }\n isRTL() {\n return this.rtl;\n }\n destroy() {\n this.hide(), this.tooltipEl && H.removeTooltipAccessibility(\n this.tooltipEl,\n this.element\n ), this.removeListeners();\n }\n}\nclass _ {\n /**\n * Checks if the provided NodeList contains at least one valid tooltip element.\n * @param elements - List of elements to validate.\n * @returns True if at least one element exists, false otherwise.\n */\n static isValidTooltipElements(e) {\n const t = e.length > 0;\n return t || console.warn(\n `⚠️ No valid tooltip elements found. Please ensure elements have the correct data attribute to initialize tooltip - (${h.ATTRIBUTES.TOOLTIP}).`\n ), t;\n }\n /**\n * Validates that the element has tooltip content.\n * @param element - The HTML element to check.\n * @returns True if the element has non-empty tooltip content, false otherwise.\n */\n static hasValidTooltipContent(e, t) {\n const i = !!t && t.trim().length > 0;\n return i || console.warn(\n \"⚠️ Tooltip element missing content: \",\n e,\n `Please provide a non-empty ${h.ATTRIBUTES.TOOLTIP} attribute.`\n ), i;\n }\n /**\n * Validates whether the provided animation string is a supported tooltip animation.\n *\n * Logs a console warning if the animation is invalid or unsupported.\n *\n * @param theme - The raw animation string to validate.\n * @param element - The HTML element associated with the tooltip, used for contextual logging.\n * @returns {theme is TooltipAnimation} `true` if the animation is valid, otherwise `false`.\n */\n static validateAnimation(e, t) {\n const i = [\n \"fade\",\n \"slide\",\n \"zoom\",\n \"bounce\"\n ], s = i.includes(e);\n return s || console.warn(\n `⚠️ Invalid tooltip animation: \"${e}\" for element`,\n t,\n `\n Valid animations are: ${i.join(\", \")}.`\n ), s;\n }\n /**\n * Validates the delay value for a tooltip.\n * Ensures that the provided value is a finite number and non-negative.\n *\n * Logs a console warning if the value is invalid.\n *\n * @param delay - The raw delay value (string from data attribute or number from options).\n * @param element - The HTML element associated with the tooltip, used for logging.\n * @returns A valid number delay (>= 0). Falls back to 0 if invalid.\n */\n static validateDelay(e, t) {\n if (e == null) return 0;\n const i = typeof e == \"number\" ? e : Number(e);\n return Number.isNaN(i) || i < 0 ? (console.warn(\n `⚠️ Invalid tooltip delay \"${e}\" on element`,\n t,\n `\nDelay must be a non-negative number in milliseconds. Falling back to 0.`\n ), 0) : i;\n }\n /**\n * Validates whether the provided theme string is a supported tooltip theme.\n *\n * Logs a console warning if the theme is invalid or unsupported.\n *\n * @param theme - The raw theme string to validate (e.g. \"light\", \"dark\").\n * @param element - The HTML element associated with the tooltip, used for contextual logging.\n * @returns {theme is TooltipTheme} `true` if the theme is valid, otherwise `false`.\n */\n static validateTheme(e, t) {\n const i = [\n \"light\",\n \"dark\",\n \"glass\",\n \"pastel\",\n \"neon\",\n \"gradient\"\n ], s = i.includes(e);\n return s || console.warn(\n `⚠️ Invalid tooltip theme: \"${e}\" for element`,\n t,\n `\n Valid themes are: ${i.join(\", \")}.`\n ), s;\n }\n /**\n * Checks if a given position string is a valid TooltipPosition.\n * Logs a warning if invalid.\n *\n * @param position - Raw position string to validate.\n * @returns True if position is valid, false otherwise.\n */\n static validatePosition(e, t) {\n if (!e) return !1;\n const i = be.includes(\n e\n );\n return i || console.warn(\n `Invalid tooltip position : ${e} for element`,\n t,\n `\n Valid positions are : ${be.join(\", \")}`\n ), i;\n }\n /**\n * Returns a valid tooltip position, falling back to default if invalid.\n *\n * @param raw - Raw position string.\n * @param element - The HTML element to check.\n * @param defaultPosition - Default position to use if raw is invalid.\n * @returns Valid TooltipPosition.\n */\n static getValidPosition(e, t, i = \"top\") {\n return e && this.validatePosition(e, t) ? e : i;\n }\n /**\n * Returns a valid tooltip theme, falling back to default if invalid.\n *\n * @param raw - Raw theme string.\n * @param element - The HTML element to check.\n * @param defaultPosition - Default theme to use if raw is invalid.\n * @returns Valid TooltipTheme.\n */\n static getValidTheme(e, t, i = \"dark\") {\n return e && this.validateTheme(e, t) ? e : i;\n }\n /**\n * Returns a valid tooltip animation, falling back to default if invalid.\n *\n * @param raw - Raw animation string.\n * @param element - The HTML element to check.\n * @param defaultAnimation - Default animation to use if raw is invalid.\n * @returns Valid TooltipAnimation.\n */\n static getValidAnimation(e, t, i = \"fade\") {\n return e && this.validateAnimation(e, t) ? e : i;\n }\n}\nclass R {\n static instance;\n options = {};\n tooltips = /* @__PURE__ */ new Map();\n isInitialized = !1;\n constructor(e) {\n this.options = {\n ...e\n };\n }\n /**\n * Returns the single instance of TooltipManager (Singleton pattern).\n */\n static getInstance() {\n return R.instance || (R.instance = new R()), R.instance;\n }\n /**\n * Initializes all tooltips found in the DOM that contain the tooltip attribute.\n * Also sets up global listeners for touch devices and initializes accessibility support.\n */\n init() {\n return this.isInitialized ? this : (this.isInitialized = !0, H.init(), this.registerGlobalTouchListener(), this.initializeAllTooltips(), q.initFromDOM(), this);\n }\n /**\n * Creates and registers a new tooltip instance for the given element.\n *\n * If a tooltip already exists for the same element, it will be removed\n * and replaced with a new instance. This ensures that each element has\n * at most one active tooltip at any given time.\n *\n * The provided options are merged with both global manager defaults\n * and tooltip-level overrides to ensure consistent configuration.\n *\n * @param {HTMLElement} element - The target element to which the tooltip is bound.\n * @param {string} content - The text or HTML content displayed inside the tooltip.\n * @param {TooltipOptions} [options] - Optional configuration overrides for this tooltip.\n * @returns {Tooltip} The newly created {@link Tooltip} instance.\n *\n * @example\n * const manager = TooltipManager.getInstance();\n * const button = document.querySelector('#save');\n * manager.add(button, 'Click to save your progress', { position: 'bottom' });\n */\n add(e, t, i) {\n this.tooltips.has(e) && this.remove(e);\n const s = {\n ...this.options,\n ...i\n }, o = new w(e, t, s);\n return this.tooltips.set(e, o), o;\n }\n /**\n * Removes and destroys an existing tooltip associated with a specific element.\n *\n * This method ensures full cleanup by calling the tooltip’s internal `destroy()`\n * method, removing mobile-related listeners via {@link MobileManager.cleanup},\n * and deleting the reference from the manager’s internal Map.\n *\n * @param {HTMLElement} element - The element whose tooltip should be removed.\n *\n * @example\n * const button = document.querySelector('#save');\n * tooltipManager.remove(button);\n */\n remove(e) {\n if (!e) return;\n const t = this.tooltips.get(e);\n t && (t.destroy(), N.cleanup(e), this.tooltips.delete(e));\n }\n /**\n * Extracts and normalizes tooltip configuration options from a given HTML element.\n *\n * This method reads tooltip-related attributes from the target element (such as\n * position, theme, and animation), validates them using {@link TooltipValidator},\n * and merges them with global and default configuration values.\n *\n * Additionally, mobile-specific behavior is automatically resolved via\n * {@link MobileManager.resolveMobileOptions}, which determines whether mobile\n * support should be enabled based on the current environment and user-provided options.\n *\n * The resulting configuration object ensures consistent, validated tooltip behavior\n * across all initialization methods (attribute-based and programmatic).\n *\n * @private\n * @param {HTMLElement} element - The target element containing tooltip attributes.\n * @returns {TooltipOptions} A fully merged and validated tooltip configuration object.\n *\n * @example\n * // Example element markup:\n * // <button data-tooltip=\"Hello\" data-tooltip-position=\"bottom\" data-tooltip-theme=\"dark\"></button>\n *\n * const options = tooltipManager['extractOptions'](buttonEl);\n * // Returns something like:\n * // {\n * // position: \"bottom\",\n * // theme: \"dark\",\n * // animation: \"fade\",\n * // mobile: { enabled: true, longPress: true, touchDelay: 300 },\n * // ...\n * // }\n */\n extractOptions(e) {\n const t = e.getAttribute(\n h.ATTRIBUTES.TOOLTIP_POSITION\n ), i = e.getAttribute(\n h.ATTRIBUTES.TOOLTIP_THEME\n ), s = e.getAttribute(\n h.ATTRIBUTES.TOOLTIP_ANIMATION\n ), o = e.getAttribute(\n h.ATTRIBUTES.TOOLTIP_DELAY\n );\n return {\n position: t ? _.getValidPosition(t, e) : this.options.position ?? h.DEFAULT.POSITION,\n theme: i ? _.getValidTheme(i, e) : this.options.theme ?? h.DEFAULT.THEME,\n animation: s ? _.getValidAnimation(s, e) : this.options.animation ?? h.DEFAULT.ANIMATION,\n mobile: this.options.mobile !== void 0 ? N.resolveMobileOptions(this.options.mobile) : {},\n delay: o ? _.validateDelay(o, e) : this.options.delay ?? h.DEFAULT.DELAY\n };\n }\n /**\n * Initializes a single tooltip element from the DOM.\n */\n initializeTooltip(e) {\n const t = e.getAttribute(h.ATTRIBUTES.TOOLTIP);\n if (!_.hasValidTooltipContent(e, t)) return;\n const i = this.extractOptions(e);\n this.add(e, t, i);\n }\n /**\n * Initializes tooltips for all DOM elements that contain the tooltip attribute.\n */\n initializeAllTooltips() {\n const e = document.querySelectorAll(\n `[${h.ATTRIBUTES.TOOLTIP}]`\n );\n _.isValidTooltipElements(e) && e.forEach((t) => {\n this.initializeTooltip(t);\n });\n }\n /**\n * Registers a global event listener that hides mobile tooltips when tapping outside.\n */\n registerGlobalTouchListener() {\n document.addEventListener(\"touchstart\", (e) => {\n if (!(e.target instanceof HTMLElement)) return;\n Array.from(this.tooltips.values()).map(\n (i) => i.element\n ).includes(e.target) || N.hideMobileTooltips();\n });\n }\n}\nfunction At(n) {\n return console.info(\"🎨 Hintorium Tooltip Library Loaded!\"), new R(n).init();\n}\nconst yt = JSON.parse(\n JSON.stringify({\n hintorium: {\n tour: {\n next: \"Next →\",\n done: \"Done\",\n prev: \"← Back\"\n }\n }\n })\n), Et = JSON.parse(\n JSON.stringify({\n hintorium: {\n tour: {\n next: \"Następny →\",\n done: \"Gotowe\",\n prev: \"← Wstecz\"\n }\n }\n })\n);\nclass Lt {\n steps = [];\n current = 0;\n activeTooltip = null;\n storage = null;\n completedTour = !1;\n /**\n * Tour state keys (localStorage)\n */\n tourProgress = \"hintorium_tour_progress\";\n tourCompleted = \"hintorium_tour_completed\";\n tourStorageKey;\n /**\n * Auto play\n */\n autoPlay = !1;\n autoPlayDelay = 3e3;\n // default 3s\n autoPlayTimeout = null;\n progressBar;\n autoPlayStartTime = 0;\n autoPlayAnimationFrame = null;\n constructor({ steps: e, localStorageKey: t, auto: i }) {\n this.steps = e, t && (this.storage = Q.getInstance(t), this.tourStorageKey = t), i?.enabled && (this.autoPlay = !0), i?.delay && (this.autoPlayDelay = i.delay), this.registerDefaultTranslations(), this.initializeState();\n }\n registerDefaultTranslations() {\n M.setTranslations(\"en\", yt), M.setTranslations(\"pl\", Et);\n }\n initializeState() {\n if (!this.storage || !this.tourStorageKey) return;\n if (this.storage.get(\n `${this.tourStorageKey}-${this.tourCompleted}`,\n !1\n )) {\n this.completedTour = !0;\n return;\n }\n const t = this.storage.get(\n `${this.tourStorageKey}-${this.tourProgress}`,\n 0\n );\n t && (this.current = t);\n }\n start() {\n this.steps.length && (this.completedTour || (w.tourActive = !0, this.showStep(this.current)));\n }\n startProgressBarAnimation() {\n if (!this.progressBar || !this.autoPlay) return;\n this.autoPlayStartTime = Date.now();\n const e = () => {\n const t = Date.now() - this.autoPlayStartTime, i = Math.min(t / this.autoPlayDelay, 1);\n this.progressBar.style.width = `${i * 100}%`, i < 1 ? this.autoPlayAnimationFrame = requestAnimationFrame(e) : (this.autoPlayAnimationFrame = null, this.current === this.steps.length - 1 ? this.finish() : this.next());\n };\n this.autoPlayAnimationFrame && cancelAnimationFrame(this.autoPlayAnimationFrame), this.autoPlayAnimationFrame = requestAnimationFrame(e);\n }\n async showStep(e) {\n if (e < 0 || e >= this.steps.length) return;\n this.activeTooltip && (this.activeTooltip.hide(), this.activeTooltip = null);\n const t = this.steps[e], i = document.querySelector(t.target);\n if (!i) return;\n const s = new w(i, t.content, {\n ...t.options,\n sticky: !0,\n isTour: !0,\n onInjectContent: (o) => {\n this.createNavigation(o), this.createProgressBar(o);\n }\n });\n this.activeTooltip = s, await s.show(), this.autoPlay && (this.clearAutoPlay(), this.startProgressBarAnimation());\n }\n clearAutoPlay() {\n this.autoPlayTimeout && (clearTimeout(this.autoPlayTimeout), this.autoPlayTimeout = null), this.autoPlayAnimationFrame && (cancelAnimationFrame(this.autoPlayAnimationFrame), this.autoPlayAnimationFrame = null);\n }\n createProgressBar(e) {\n const t = document.createElement(\"div\");\n t.className = \"hintorium-tour-progress-bar-wrapper\";\n const i = e.querySelector(\n `.${h.CSS_CLASSES.WRAPPER}`\n );\n if (!i) return;\n const s = document.createElement(\"div\");\n s.className = \"hintorium-tour-progress-bar-fill\", t.appendChild(s), i.appendChild(t), this.progressBar = s, this.autoPlay && this.startProgressBarAnimation();\n }\n createNavigation(e) {\n const t = document.createElement(\"div\");\n t.className = \"hintorium-tour-nav\";\n const i = e.querySelector(\n `.${h.CSS_CLASSES.WRAPPER}`\n );\n if (!i) return;\n const s = this.current === 0, o = this.current === this.steps.length - 1;\n t.innerHTML = `\n <div class=\"hintorium-tour-progress\">\n <span class=\"hintorium-tour-step\">${this.current + 1}</span>\n <span class=\"hintorium-tour-separator\">/</span>\n <span class=\"hintorium-tour-total\">${this.steps.length}</span>\n </div>\n <div class=\"hintorium-tour-buttons\">\n <button class= \"hintorium-tour-btn hintorium-tour-prev\" ${s ? \"disabled\" : \"\"}>\n ${M.t(\"hintorium.tour.prev\")}\n </button>\n ${o ? `<button class=\"hintorium-tour-btn hintorium-tour-done\">${M.t(\n \"hintorium.tour.done\"\n )}</button>` : `<button class=\"hintorium-tour-btn hintorium-tour-next\">${M.t(\n \"hintorium.tour.next\"\n )}</button>`}\n </div>\n `;\n const r = t.querySelector(\n \".hintorium-tour-prev\"\n ), a = t.querySelector(\n \".hintorium-tour-next\"\n ), l = t.querySelector(\n \".hintorium-tour-done\"\n );\n r?.addEventListener(\"click\", this.prev.bind(this)), a?.addEventListener(\"click\", this.next.bind(this)), l?.addEventListener(\"click\", this.finish.bind(this)), i.appendChild(t);\n }\n prev() {\n this.current > 0 && (this.clearAutoPlay(), this.current--, this.showStep(this.current), this.saveProgress());\n }\n next() {\n this.current < this.steps.length - 1 && (this.clearAutoPlay(), this.current++, this.showStep(this.current), this.saveProgress());\n }\n finish() {\n this.clearAutoPlay(), this.activeTooltip && (this.activeTooltip.hide(), this.activeTooltip.destroy(), this.activeTooltip = null), this.current = 0, this.markCompleted();\n }\n saveProgress() {\n this.storage && this.storage.set(\n `${this.tourStorageKey}-${this.tourProgress}`,\n this.current\n );\n }\n markCompleted() {\n !this.storage || !this.tourStorageKey || (this.storage.set(`${this.tourStorageKey}-${this.tourCompleted}`, !0), this.storage.remove(`${this.tourStorageKey}-${this.tourProgress}`));\n }\n resetProgress() {\n !this.storage || !this.tourStorageKey || (this.current = 0, this.storage.remove(`${this.tourStorageKey}-${this.tourProgress}`), this.storage.remove(`${this.tourStorageKey}-${this.tourCompleted}`));\n }\n}\nexport {\n Fe as Analytics,\n Lt as HintoriumTour,\n M as I18n,\n q as InlineHint,\n w as Tooltip,\n At as initTooltip\n};\n","import { createContext, useContext } from \"react\";\nimport type { TooltipOptions } from \"../types\";\n\ninterface TooltipContextValue {\n /**\n * Global tooltip options that will be merged with individual tooltip options\n */\n options: TooltipOptions;\n}\n\nexport const TooltipContext = createContext<TooltipContextValue | null>(null);\n\n/**\n * Hook to access tooltip context\n * Returns null if not inside TooltipProvider\n */\nexport function useTooltipContext(): TooltipContextValue | null {\n return useContext(TooltipContext);\n}\n","import { useEffect, useRef } from \"react\";\nimport { initTooltip } from \"hintorium-core\";\nimport type { TooltipOptions } from \"../types\";\n\n/**\n * Hook for initializing the global TooltipManager\n * This automatically initializes all tooltips with data-tooltip attributes in the DOM\n *\n * @param options - Global tooltip options\n *\n * @example\n * ```tsx\n * function App() {\n * useTooltipManager({ theme: 'dark', animation: 'fade' });\n *\n * return (\n * <div>\n * <button data-tooltip=\"I'm a tooltip!\">Hover me</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useTooltipManager(options?: TooltipOptions) {\n const managerRef = useRef<ReturnType<typeof initTooltip> | null>(null);\n const isInitialized = useRef(false);\n\n useEffect(() => {\n if (isInitialized.current) return;\n\n try {\n managerRef.current = initTooltip(options);\n isInitialized.current = true;\n } catch (error) {\n console.error(\n \"[hintorium-react] Failed to initialize TooltipManager:\",\n error,\n );\n }\n\n return () => {\n isInitialized.current = false;\n managerRef.current = null;\n };\n }, []);\n\n return managerRef.current;\n}\n","import type { ReactNode } from \"react\";\nimport { TooltipContext } from \"../context/TooltipContext\";\nimport type { TooltipOptions } from \"../types\";\nimport { useTooltipManager } from \"../hooks/useTooltipManager\";\n\nexport interface TooltipProviderProps {\n /**\n * Child components\n */\n children: ReactNode;\n /**\n * Global tooltip options applied to all tooltips\n */\n options?: TooltipOptions;\n /**\n * Whether to initialize the global TooltipManager\n * This enables data-tooltip attributes throughout the app\n * @default true\n */\n initManager?: boolean;\n}\n\n/**\n * Provider component for global tooltip configuration\n * Wraps your app to provide consistent tooltip styling and behavior\n *\n * @example\n * ```tsx\n * function App() {\n * return (\n * <TooltipProvider options={{ theme: 'dark', animation: 'fade' }}>\n * <YourApp />\n * </TooltipProvider>\n * );\n * }\n * ```\n */\nexport function TooltipProvider({\n children,\n options = {},\n initManager = true,\n}: TooltipProviderProps) {\n if (initManager) {\n useTooltipManager(options);\n }\n\n return (\n <TooltipContext.Provider value={{ options }}>\n {children}\n </TooltipContext.Provider>\n );\n}\n","import { useCallback } from \"react\";\nimport { Analytics } from \"hintorium-core\";\nimport type { UseTooltipOptions } from \"../types\";\n\nexport function useTooltipAnalytics(options?: UseTooltipOptions) {\n return useCallback(\n (originalOnShow?: (id: string) => void) => {\n return (id: string) => {\n originalOnShow?.(id);\n\n if (options?.id) {\n Analytics.increment(options.id);\n }\n };\n },\n [options?.id],\n );\n}\n","import { useEffect, useRef, useCallback } from \"react\";\nimport { Tooltip, TooltipContentSource } from \"hintorium-core\";\nimport type { UseTooltipOptions } from \"../types\";\nimport { useTooltipContext } from \"../context/TooltipContext\";\nimport { useTooltipAnalytics } from \"./useTooltipAnalytics\";\n\n/**\n * Hook for creating a tooltip on any element\n *\n * @param content - Tooltip content (string or HTML)\n * @param options - Tooltip configuration options\n * @returns Ref to attach to the target element\n *\n * @example\n * ```tsx\n * function MyButton() {\n * const tooltipRef = useTooltip('Click me!', { position: 'top' });\n * return <button ref={tooltipRef}>Hover me</button>;\n * }\n * ```\n */\nexport function useTooltip(\n content: TooltipContentSource,\n options?: UseTooltipOptions,\n): React.RefCallback<HTMLElement> {\n const context = useTooltipContext();\n const tooltipRef = useRef<Tooltip | null>(null);\n const elementRef = useRef<HTMLElement | null>(null);\n const withAnalytics = useTooltipAnalytics(options);\n\n const cleanup = useCallback(() => {\n if (tooltipRef.current) {\n tooltipRef.current.destroy();\n tooltipRef.current = null;\n }\n }, []);\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n cleanup();\n\n if (!element || options?.disabled) {\n elementRef.current = null;\n return;\n }\n\n elementRef.current = element;\n\n const mergedOptions = {\n ...context?.options,\n ...options,\n onShow: withAnalytics(options?.onShow),\n };\n\n try {\n tooltipRef.current = new Tooltip(element, content, mergedOptions);\n } catch (error) {\n throw error;\n }\n },\n [content, options, context, cleanup],\n );\n\n useEffect(() => {\n return cleanup;\n }, [cleanup]);\n\n return refCallback;\n}\n\n/**\n * Alternative hook that returns tooltip instance for manual control\n *\n * @example\n * ```tsx\n * function MyButton() {\n * const { ref, tooltip } = useTooltipInstance('Hello');\n *\n * return (\n * <button\n * ref={ref}\n * onClick={() => tooltip?.show()}\n * >\n * Click to show\n * </button>\n * );\n * }\n * ```\n */\nexport function useTooltipInstance(\n content: string,\n options?: UseTooltipOptions,\n) {\n const context = useTooltipContext();\n const tooltipRef = useRef<Tooltip | null>(null);\n const elementRef = useRef<HTMLElement | null>(null);\n const withAnalytics = useTooltipAnalytics(options);\n\n const cleanup = useCallback(() => {\n if (tooltipRef.current) {\n tooltipRef.current.destroy();\n tooltipRef.current = null;\n }\n }, []);\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n cleanup();\n\n if (!element || options?.disabled) {\n elementRef.current = null;\n return;\n }\n\n elementRef.current = element;\n\n const mergedOptions = {\n ...context?.options,\n ...options,\n onShow: withAnalytics(options?.onShow),\n };\n\n try {\n tooltipRef.current = new Tooltip(element, content, mergedOptions);\n } catch (error) {\n throw error;\n }\n },\n [content, options, context, cleanup],\n );\n\n useEffect(() => {\n return cleanup;\n }, [cleanup]);\n\n return {\n ref: refCallback,\n tooltip: tooltipRef.current,\n };\n}\n","import { cloneElement, isValidElement, ReactElement } from \"react\";\nimport type { TooltipComponentProps } from \"../types\";\nimport { useTooltip } from \"../hooks/useTooltip\";\n\n/**\n * Declarative tooltip component\n * Wraps a single child element and adds tooltip functionality\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Click me!\" position=\"top\" theme=\"dark\">\n * <button>Hover me</button>\n * </Tooltip>\n * ```\n */\nexport function Tooltip({\n content,\n children,\n className,\n disabled,\n ...options\n}: TooltipComponentProps) {\n const contentString = typeof content === \"string\" ? content : String(content);\n\n const tooltipRef = useTooltip(contentString, { ...options, disabled });\n\n if (!isValidElement(children)) {\n console.error(\n \"[hintorium-react] Tooltip children must be a valid React element\",\n );\n return <>{children}</>;\n }\n\n const child = children as ReactElement<{ className?: string; ref?: unknown }>;\n\n return cloneElement(child, {\n ref: tooltipRef,\n className: className\n ? `${child.props.className || \"\"} ${className}`.trim()\n : child.props.className,\n });\n}\n","import { useState, useCallback, useRef, useEffect } from \"react\";\nimport { HintoriumTour } from \"hintorium-core\";\nimport type { TourStep, UseTourReturn } from \"../types\";\nimport { useTooltipContext } from \"../context/TooltipContext\";\n\n/**\n * Hook for creating an interactive product tour\n *\n * @param steps - Array of tour steps\n * @returns Tour control methods and state\n *\n * @example\n * ```tsx\n * function MyTour() {\n * const tour = useTour([\n * { element: '#step1', content: 'Welcome!' },\n * { element: '#step2', content: 'Click here to continue' },\n * ]);\n *\n * return (\n * <div>\n * <button onClick={tour.start}>Start Tour</button>\n * {tour.isActive && (\n * <div>\n * Step {tour.currentStep + 1} of {steps.length}\n * </div>\n * )}\n * </div>\n * );\n * }\n * ```\n */\nexport function useTour(steps: TourStep[]): UseTourReturn {\n const context = useTooltipContext();\n const tourRef = useRef<HintoriumTour | null>(null);\n const [currentStep, setCurrentStep] = useState(0);\n const [isActive, setIsActive] = useState(false);\n\n useEffect(() => {\n if (steps.length === 0) return;\n\n const tourSteps = steps.map((step) => ({\n target: typeof step.element === \"string\" ? step.element : \"\",\n content:\n typeof step.content === \"string\" ? step.content : String(step.content),\n options: {\n ...context?.options,\n ...step.options,\n isTour: true,\n },\n }));\n\n try {\n tourRef.current = new HintoriumTour({\n steps: tourSteps,\n });\n } catch (error) {\n console.error(\"[hintorium-react] Failed to create tour:\", error);\n }\n\n return () => {\n if (tourRef.current) {\n tourRef.current.finish();\n tourRef.current = null;\n }\n };\n }, [steps, context]);\n\n const start = useCallback(() => {\n if (!tourRef.current) return;\n\n try {\n tourRef.current.start();\n setIsActive(true);\n setCurrentStep(0);\n } catch (error) {\n console.error(\"[hintorium-react] Failed to start tour:\", error);\n }\n }, []);\n\n const stop = useCallback(() => {\n if (!tourRef.current) return;\n\n try {\n tourRef.current.finish();\n setIsActive(false);\n setCurrentStep(0);\n } catch (error) {\n console.error(\"[hintorium-react] Failed to stop tour:\", error);\n }\n }, []);\n\n const next = useCallback(() => {\n if (!tourRef.current || !isActive) return;\n\n try {\n tourRef.current.next();\n setCurrentStep((prev) => Math.min(prev + 1, steps.length - 1));\n } catch (error) {\n console.error(\"[hintorium-react] Failed to go to next step:\", error);\n }\n }, [isActive, steps.length]);\n\n const prev = useCallback(() => {\n if (!tourRef.current || !isActive) return;\n\n try {\n tourRef.current.prev();\n setCurrentStep((prev) => Math.max(prev - 1, 0));\n } catch (error) {\n console.error(\"[hintorium-react] Failed to go to previous step:\", error);\n }\n }, [isActive]);\n\n const goTo = useCallback(\n (index: number) => {\n if (!tourRef.current || !isActive) return;\n if (index < 0 || index >= steps.length) return;\n\n const diff = index - currentStep;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n tourRef.current.next();\n }\n } else if (diff < 0) {\n for (let i = 0; i < Math.abs(diff); i++) {\n tourRef.current.prev();\n }\n }\n setCurrentStep(index);\n },\n [isActive, currentStep, steps.length],\n );\n\n return {\n start,\n stop,\n next,\n prev,\n goTo,\n currentStep,\n isActive,\n };\n}\n","import type { ReactNode } from \"react\";\nimport type { TourStep } from \"../types\";\nimport { useTour } from \"../hooks/useTour\";\n\nexport interface TourProps {\n /**\n * Array of tour steps\n */\n steps: TourStep[];\n /**\n * Render prop function that receives tour controls\n */\n children: (tour: ReturnType<typeof useTour>) => ReactNode;\n}\n\n/**\n * Render prop component for product tours\n * Provides tour controls to children via render prop pattern\n *\n * @example\n * ```tsx\n * <Tour steps={[\n * { element: '#step1', content: 'First step' },\n * { element: '#step2', content: 'Second step' },\n * ]}>\n * {(tour) => (\n * <div>\n * <button onClick={tour.start}>Start Tour</button>\n * {tour.isActive && (\n * <div>\n * <button onClick={tour.prev}>Previous</button>\n * <button onClick={tour.next}>Next</button>\n * <button onClick={tour.stop}>Exit</button>\n * <span>Step {tour.currentStep + 1}</span>\n * </div>\n * )}\n * </div>\n * )}\n * </Tour>\n * ```\n */\nexport function Tour({ steps, children }: TourProps) {\n const tour = useTour(steps);\n return <>{children(tour)}</>;\n}\n","import { useState, useEffect } from \"react\";\nimport { I18n } from \"hintorium-core\";\n\n/**\n * Hook for internationalization (i18n)\n * Provides translation functions and language management\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { t, language, setLanguage } = useI18n();\n *\n * return (\n * <div>\n * <h1>{t('hintorium.tour.next')}</h1>\n * <button onClick={() => setLanguage('pl')}>Polski</button>\n * <button onClick={() => setLanguage('en')}>English</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useHintoriumI18n() {\n const [language, setLanguageState] = useState(I18n.getLanguage());\n\n useEffect(() => {\n I18n.detectLanguage();\n setLanguageState(I18n.getLanguage());\n }, []);\n\n const setLanguage = (lang: string) => {\n I18n.setLanguage(lang);\n setLanguageState(lang);\n };\n\n const t = (key: string, fallback?: string) => {\n return I18n.t(key, fallback);\n };\n\n return {\n language,\n setLanguage,\n t,\n supportedLanguages: I18n.getSupportedLanguages(),\n };\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { Analytics } from \"hintorium-core\";\n\nexport function useAnalytics() {\n const [data, setData] = useState<Record<string, number>>({});\n\n const refresh = useCallback(() => {\n setData(Analytics.getAll());\n }, []);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const increment = useCallback(\n (id: string) => {\n Analytics.increment(id);\n refresh();\n },\n [refresh],\n );\n\n const getCount = useCallback((id: string) => {\n return Analytics.getCount(id);\n }, []);\n\n const resetAll = useCallback(() => {\n Analytics.resetAll();\n refresh();\n }, [refresh]);\n\n return {\n data,\n getCount,\n increment,\n resetAll,\n refresh,\n };\n}\n","import { useEffect, useRef, useCallback } from 'react';\nimport { InlineHint } from 'hintorium-core';\n\n/**\n * Hook for creating inline hints\n * Inline hints are persistent tooltips that appear inline with content\n * \n * @param content - Hint content\n * @returns Ref to attach to the target element\n * \n * @example\n * ```tsx\n * function HelpText() {\n * const hintRef = useInlineHint('This is helpful information');\n * \n * return (\n * <span ref={hintRef}>\n * Hover for help\n * </span>\n * );\n * }\n * ```\n */\nexport function useInlineHint(content: string): React.RefCallback<HTMLElement> {\n const hintRef = useRef<InlineHint | null>(null);\n\n const cleanup = useCallback(() => {\n if (hintRef.current) {\n hintRef.current.destroy();\n hintRef.current = null;\n }\n }, []);\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n cleanup();\n\n if (!element) return;\n\n try {\n hintRef.current = new InlineHint(element, content);\n } catch (error) {\n console.error('[hintorium-react] Failed to create inline hint:', error);\n }\n },\n [content, cleanup]\n );\n\n useEffect(() => {\n return cleanup;\n }, [cleanup]);\n\n return refCallback;\n}\n\n/**\n * Hook for initializing all inline hints in the DOM\n * This scans for elements with data-inline-hint attribute\n * \n * @example\n * ```tsx\n * function App() {\n * useInlineHintManager();\n * \n * return (\n * <div>\n * <span data-inline-hint=\"Helper text\">Need help?</span>\n * </div>\n * );\n * }\n * ```\n */\nexport function useInlineHintManager() {\n const isInitialized = useRef(false);\n\n useEffect(() => {\n if (isInitialized.current) return;\n\n try {\n InlineHint.initFromDOM();\n isInitialized.current = true;\n } catch (error) {\n console.error('[hintorium-react] Failed to initialize inline hints:', error);\n }\n }, []);\n}\n"],"names":["be","h","H","i","o","_a","__publicField","q","R","s","_N","r","a","l","c","u","p","d","N","_Q","Q","_ne","ne","Fe","Te","re","C","Le","n","W","g","T","He","Ue","qe","K","We","oe","ve","Pe","Ve","ae","Ke","le","Ge","je","J","ce","Ze","Ie","Ye","he","we","Xe","Qe","Je","et","Re","tt","ee","ue","$e","st","Oe","it","nt","rt","Ce","ot","at","De","lt","ct","ht","ut","pt","dt","gt","Z","ft","_e","Me","mt","xe","pe","kt","te","bt","j","B","Tt","Se","y","ye","Ee","F","wt","Ae","xt","Y","k","m","b","D","E","A","$","G","L","v","z","t","x","se","_b","_c","_d","X","de","S","ie","U","St","O","f","_ge","ge","M","_V","V","_fe","Be","ke","me","P","I","Ne","ze","fe","_w","e","w","_","_R","At","yt","Et","Lt","TooltipContext","createContext","useTooltipContext","useContext","useTooltipManager","options","managerRef","useRef","isInitialized","useEffect","initTooltip","error","TooltipProvider","children","initManager","jsx","useTooltipAnalytics","useCallback","originalOnShow","id","Analytics","useTooltip","content","context","tooltipRef","elementRef","withAnalytics","cleanup","refCallback","element","mergedOptions","Tooltip","useTooltipInstance","className","disabled","contentString","isValidElement","child","cloneElement","useTour","steps","tourRef","currentStep","setCurrentStep","useState","isActive","setIsActive","tourSteps","step","HintoriumTour","start","stop","next","prev","goTo","index","diff","Tour","tour","Fragment","useHintoriumI18n","language","setLanguageState","I18n","lang","key","fallback","useAnalytics","data","setData","refresh","increment","getCount","resetAll","useInlineHint","hintRef","InlineHint","useInlineHintManager"],"mappings":";;;;;AAAA,MAAMA,KAAK;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAGC,IAAI;AAAA,EACL,YAAY;AAAA,IACV,SAAS;AAAA,IACT,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe;AAAA,EACnB;AAAA,EACE,cAAc;AAAA,IACZ,mBAAmB;AAAA,EACvB;AAAA,EACE,aAAa;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,cAAc;AAAA,EAClB;AAAA,EACE,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,EACT;AAAA,EACE,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,SAAS;AAAA,EACb;AAAA,EACE,SAAS;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW;AAAA,IACX,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,OAAO;AAAA,EACX;AACA;AACA,MAAMC,EAAE;AAAA,EAKN,OAAO,OAAO;AACZ,WAAO,WAAW,QAAQ,KAAK,uBAAsB,GAAI,KAAK;EAChE;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,yBAAyB;AAC9B,aAAS;AAAA,MACPD,EAAE,OAAO;AAAA,MACT,CAAC,MAAM;AACL,UAAE,QAAQA,EAAE,KAAK,QAAQ,KAAK,iBAAiB;AAAA,MACjD;AAAA,MACA;AAAA,IACN,GAAO,SAAS;AAAA,MACVA,EAAE,OAAO;AAAA,MACT,MAAM;AACJ,aAAK,iBAAiB;AAAA,MACxB;AAAA,MACA;AAAA,IACN;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,iBAAiB;AACtB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,YAAY,GAAG;AACpB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,EAAM,KAAK,CAACE,MAAM,EAAE,QAAQA,CAAC,CAAC,KAAK,EAAE,aAAa,UAAU,KAAK,EAAE,aAAa,UAAU,MAAM;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,0BAA0B,GAAG,GAAG,GAAG;;AACxC,MAAE,aAAa,QAAQF,EAAE,KAAK,YAAY;AAC1C,UAAMG,KAAK,EAAE,aAAa,kBAAkB,KAAK,IAAI,MAAM,KAAK,EAAE,OAAO,OAAO;AAChF,IAAAA,EAAE,SAAS,EAAE,EAAE,MAAMA,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,aAAa,oBAAoBA,EAAE,KAAK,GAAG,CAAC,MAAIC,IAAA,EAAE,SAAF,gBAAAA,EAAQ,cAAa,MAAM,KAAK,mBAAmB,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,EACvK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,sBAAsB;AAC3B,WAAO,WAAW,QAAQ,SAAS,iBAAiB,WAAW,CAAC,MAAM;AACpE,YAAM,IAAI,EAAE;AACZ,WAAK,KAAK,kBAAkB,EAAE,UAAU,IAAI,KAAK,mBAAmB;AAAA,IACtE,CAAC,GAAG,SAAS,iBAAiB,YAAY,CAAC,MAAM;AAC/C,YAAM,IAAI,EAAE;AACZ,WAAK,EAAE,UAAU,OAAO,KAAK,mBAAmB;AAAA,IAClD,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,mBAAmB,GAAG;AAC3B,QAAI,EAAE,aAAa,2BAA2B,MAAM,OAAQ;AAC5D,UAAM,IAAI,CAAC,MAAM;AACf,cAAQ,EAAE,KAAG;AAAA,QACX,KAAKJ,EAAE,KAAK;AACV,YAAE;AAAA,YACA,IAAI,YAAY,gBAAgB,EAAE,SAAS,GAAE,CAAE;AAAA,UAC3D,GAAa,EAAE,eAAc;AACnB;AAAA,QACF,KAAKA,EAAE,KAAK;AAAA,QACZ,KAAKA,EAAE,KAAK;AACV,YAAE;AAAA,YACA,IAAI,YAAY,kBAAkB,EAAE,SAAS,GAAE,CAAE;AAAA,UAC7D,GAAa,EAAE,eAAc;AACnB;AAAA,MACV;AAAA,IACI;AACA,MAAE,iBAAiB,WAAW,CAAC,GAAG,EAAE,aAAa,6BAA6B,MAAM;AAAA,EACtF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,2BAA2B,GAAG,GAAG;AACtC,UAAM,IAAI,EAAE,aAAa,kBAAkB;AAC3C,QAAI,GAAG;AACL,YAAM,IAAI,EAAE,MAAM,GAAG,EAAE,OAAO,CAACG,MAAMA,MAAM,EAAE,EAAE;AAC/C,QAAE,SAAS,IAAI,EAAE,aAAa,oBAAoB,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,gBAAgB,kBAAkB;AAAA,IACvG;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,uBAAuB,GAAG;AAC/B,UAAM,IAAI,SAAS,cAAc,KAAK;AACtC,MAAE,aAAa,aAAa,QAAQ,GAAG,EAAE,aAAa,eAAe,MAAM,GAAG,EAAE,YAAY,WAAW,EAAE,cAAc,GAAG,SAAS,KAAK,YAAY,CAAC,GAAG,WAAW,MAAM,EAAE,OAAM,GAAI,GAAG;AAAA,EAC1L;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,gBAAgB,GAAG,GAAG;;AAC3B,KAAC,KAAK,YAAY,CAAC,OAAKC,IAAA,EAAE,SAAF,gBAAAA,EAAQ,eAAc,MAAM,EAAE,aAAa,YAAY,GAAG;AAAA,EACpF;AACF;AAAA;AA1HEC,EAFIJ,GAEG,uBAAsB;AAE7BI,EAJIJ,GAIG,kBAAiB;AAyH1B,MAAMK,EAAE;AAAA,EAGN,YAAY,GAAG,GAAG,GAAG;AAFrB,IAAAD,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,UAAUE,GAAE,YAAW,GAAI,KAAK,OAAO,KAAK,eAAc,GAAI,EAAE,YAAY,KAAK,IAAI;AAC1F,UAAM,IAAI,KAAKD,EAAE,0BAA0B,GAAG,KAAK,OAAO;AAC1D,SAAK,QAAQ,IAAI,KAAK,MAAM,GAAG,CAAC;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,cAAc;AACnB,UAAM,IAAIC,GAAE,YAAW;AACvB,aAAS;AAAA,MACP,IAAIP,EAAE,WAAW,YAAY;AAAA,IACnC,EAAM,QAAQ,CAACE,MAAM;AACf,UAAIA,EAAE,cAAc,IAAIF,EAAE,YAAY,IAAI,EAAE;AAC1C;AACF,YAAMQ,IAAIN,EAAE;AAAA,QACVF,EAAE,WAAW;AAAA,MACrB;AACM,UAAI,CAACQ,EAAG;AACR,YAAML,IAAIG,EAAE;AAAA,QACVJ;AAAA,QACA;AAAA,MACR;AACM,UAAII,EAAEJ,GAAGM,GAAGL,CAAC;AAAA,IACf,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU;AACR,SAAK,QAAQ,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,OAAM;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,0BAA0B,GAAG,GAAG;AACrC,WAAO,OAAO,EAAE,kBAAkB,aAAa,EAAE,eAAe,CAAC,IAAI,CAAA;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiB;AACf,UAAM,IAAI,SAAS,cAAc,MAAM;AACvC,WAAO,EAAE,UAAU,IAAIH,EAAE,YAAY,IAAI,GAAG,EAAE,aAAa,YAAY,GAAG,GAAG,EAAE,aAAa,cAAc,WAAW,GAAG,EAAE,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMrI;AAAA,EACH;AACF;AACA,MAAMS,IAAN,MAAMA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaN,OAAO,WAAW;AAChB,WAAO,OAAO,SAAS,MAAM,KAAK,OAAO,cAAcT,EAAE,QAAQ,qBAAqB,kBAAkB,UAAU,UAAU,iBAAiB;AAAA,EAC/I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,qBAAqB,GAAG;AAC7B,WAAO;AAAA,MACL,UAAS,uBAAG,aAAY,SAAS,EAAE,UAAUS,EAAE,SAAQ;AAAA,MACvD,YAAW,uBAAG,cAAa;AAAA,MAC3B,aAAY,uBAAG,eAAcT,EAAE,QAAQ;AAAA,IAC7C;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,mBAAmB,GAAG,GAAG,GAAG;AACjC,MAAE,EAAE,UAAU,KAAK,wBAAwB,WAAW,CAAC,KAAK,SAAQ,KAAM,EAAE,aAAa,sBAAsB,MAAM,WAAW,EAAE,QAAQ,UAAU,IAAIA,EAAE,YAAY,MAAM,GAAG,KAAK,eAAe,GAAG,GAAG,CAAC,GAAG,EAAE,iBAAiB,eAAe,KAAK,iBAAiB,GAAG,EAAE,aAAa,wBAAwB,MAAM;AAAA,EACvT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,eAAe,GAAG,GAAG,GAAG;AAC7B,UAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,YAAYG,EAAC,IAAK,CAAA,EAAE,IAAK,GAAGO,IAAI,MAAM;AACpE,WAAK,eAAe,aAAa,KAAK,UAAU,GAAG,KAAK,aAAa;AAAA,IACvE,GAAGC,IAAI,MAAM;AACX,MAAAD,EAAC,GAAI,KAAK,sBAAsB,KAAK,uBAAuB,MAAM,KAAK,mBAAmB,KAAI,GAAI,KAAK,qBAAqB,OAAO,IAAI,KAAK,aAAa,OAAO,WAAW,MAAM;AAC/K,UAAE,QAAQ,UAAU;AAAA,UAClBV,EAAE,YAAY;AAAA,QACxB,KAAa,EAAE,KAAI,GAAI,KAAK,qBAAqB,SAAS,EAAE,KAAI,GAAI,KAAK,qBAAqB,IAAI,KAAK,aAAa;AAAA,MAC9G,GAAGG,CAAC,IAAI,EAAE,QAAQ,UAAU;AAAA,QAC1BH,EAAE,YAAY;AAAA,MACtB,KAAW,EAAE,QAAQ,KAAK,qBAAqB,SAAS,EAAE,KAAI,GAAI,KAAK,qBAAqB;AAAA,IACxF,GAAGY,IAAI,MAAMF,KAAKG,IAAI,MAAMH,KAAKI,IAAI,OAAO,eAAe,gBAAgB,cAAcC,IAAI,OAAO,eAAe,cAAc,YAAYC,IAAI,OAAO,eAAe,kBAAkB;AACzL,MAAE,iBAAiBF,GAAGH,GAAG,EAAE,SAAS,IAAI,GAAG,EAAE,iBAAiBI,GAAGH,GAAG,EAAE,SAAS,GAAE,CAAE,GAAG,EAAE,iBAAiBI,GAAGH,GAAG,EAAE,SAAS,GAAE,CAAE,GAAG,KAAK,cAAc,IAAI,GAAG;AAAA,MACzJ,OAAOF;AAAA,MACP,KAAKC;AAAA,MACL,QAAQC;AAAA,IACd,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,kBAAkB,GAAG;AAC1B,MAAE,eAAc;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,qBAAqB;AAC1B,SAAK,uBAAuB,KAAK,mBAAmB,KAAI,GAAI,KAAK,qBAAqB,OAAO,KAAK,cAAc,aAAa,KAAK,UAAU,GAAG,KAAK,aAAa;AAAA,EACnK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,QAAQ,GAAG;AAChB,MAAE,oBAAoB,eAAe,KAAK,iBAAiB;AAC3D,UAAM,IAAI,KAAK,cAAc,IAAI,CAAC;AAClC,QAAI,GAAG;AACL,YAAM,IAAI,OAAO,eAAe,gBAAgB,cAAc,IAAI,OAAO,eAAe,cAAc,YAAYV,IAAI,OAAO,eAAe,kBAAkB;AAC9J,QAAE,oBAAoB,GAAG,EAAE,KAAK,GAAG,EAAE,oBAAoB,GAAG,EAAE,GAAG,GAAG,EAAE,oBAAoBA,GAAG,EAAE,MAAM,GAAG,KAAK,cAAc,OAAO,CAAC;AAAA,IACrI;AACA,MAAE,gBAAgB,sBAAsB,GAAG,KAAK,eAAe,aAAa,KAAK,UAAU,GAAG,KAAK,aAAa,OAAO,KAAK,qBAAqB;AAAA,EACnJ;AACF;AAAA;AA7FEE,EAFII,GAEG,cAAa;AAEpBJ,EAJII,GAIG,sBAAqB;AAE5BJ,EANII,GAMG,iBAAgC,oBAAI,QAAO;AANpD,IAAMQ,IAANR;AAgGA,MAAMS,KAAN,MAAMA,GAAE;AAAA,EAQN,YAAY,GAAG;AAFf,IAAAb,EAAA,eAAQ,CAAA;AACR,IAAAA,EAAA;AAEE,SAAK,YAAY,GAAG,KAAK,KAAI;AAAA,EAC/B;AAAA,EACA,OAAO,YAAY,GAAG;AACpB,WAAO,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,IAAIa,GAAE,CAAC,CAAC,GAAG,KAAK,UAAU,IAAI,CAAC;AAAA,EACvF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,GAAG,GAAG;AACR,SAAK,MAAM,CAAC,IAAI,GAAG,KAAK,KAAI;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACP,WAAO,EAAE,GAAG,KAAK,MAAK;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,GAAG;AACR,WAAO,KAAK,MAAM,CAAC,GAAG,KAAK,KAAI;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACL,WAAO,OAAO,KAAK,KAAK,KAAK;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACN,SAAK,QAAQ,IAAI,KAAK,KAAI;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,GAAG,GAAG;AACR,QAAI,KAAK,KAAK,MAAO,QAAO,KAAK,MAAM,CAAC;AACxC,QAAI;AACF,aAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACL,QAAI;AACF,mBAAa,QAAQ,KAAK,WAAW,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,IACjE,SAAS,GAAG;AACV,cAAQ;AAAA,QACN,mBAAmB,KAAK,SAAS;AAAA,QACjC;AAAA,MACR;AAAA,IACI;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACL,QAAI;AACF,YAAM,IAAI,aAAa,QAAQ,KAAK,SAAS;AAC7C,YAAM,KAAK,QAAQ,KAAK,MAAM,CAAC;AAAA,IACjC,SAAS,GAAG;AACV,cAAQ;AAAA,QACN,mBAAmB,KAAK,SAAS;AAAA,QACjC;AAAA,MACR,GAAS,KAAK,QAAQ,CAAA;AAAA,IAClB;AAAA,EACF;AACF;AAAA;AAAA;AAAA;AAAA;AA9EEb,EALIa,IAKG,aAA4B,oBAAI,IAAG;AAL5C,IAAMC,KAAND;AAoFA,MAAME,KAAN,MAAMA,GAAG;AAAA,EAGP,cAAc;AADd,IAAAf,EAAA;AAEE,SAAK,UAAUc,GAAE;AAAA,MACfnB,EAAE,aAAa;AAAA,IACrB;AAAA,EACE;AAAA,EACA,OAAO,cAAc;AACnB,WAAO,KAAK,aAAa,KAAK,WAAW,IAAIoB,GAAE,IAAK,KAAK;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,GAAG;AACX,UAAMlB,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK;AAC1C,SAAK,QAAQ,IAAI,GAAGA,CAAC;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,GAAG;AAEV,WADU,KAAK,QAAQ,IAAI,GAAG,CAAC,KACnB;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACP,WAAO,KAAK,QAAQ,OAAM;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACT,SAAK,QAAQ,MAAK;AAAA,EACpB;AACF;AAtCEG,EADIe,IACG,YAAW;AADpB,IAAMC,KAAND;AAwCK,MAACE,IAAKD,GAAG,YAAW;AACzB,MAAME,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcP,OAAO,iBAAiB,GAAG,GAAG;AAC5B,MAAE,UAAU,QAAQ,CAAC,MAAM;AACzB,QAAE,WAAWvB,EAAE,QAAQ,gBAAgB,KAAK,EAAE,UAAU,OAAO,CAAC;AAAA,IAClE,CAAC,GAAG,EAAE,UAAU;AAAA,MACd,GAAGA,EAAE,QAAQ,gBAAgB,GAAG,CAAC;AAAA,IACvC;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,aAAa,KAAK,GAAG,IAAI,QAAQ,IAAI,GAAG;AACtC,QAAI,CAAC,EAAG,QAAO,QAAQ,QAAO;AAC9B,SAAK,iBAAiB,GAAG,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,GAAG,EAAE,UAAU,OAAOA,EAAE,YAAY,MAAM,GAAG,EAAE,UAAU,IAAIA,EAAE,YAAY,IAAI,GAAG,MAAM,KAAK,kBAAkB,CAAC;AAAA,EAChK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,aAAa,KAAK,GAAG,IAAI,GAAG;AAC1B,UAAM,MAAM,KAAK,KAAK,CAAC,GAAG,EAAE,UAAU,OAAOA,EAAE,YAAY,IAAI,GAAG,MAAM,KAAK,kBAAkB,CAAC,GAAG,EAAE,UAAU,IAAIA,EAAE,YAAY,MAAM;AAAA,EACzI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,kBAAkB,GAAG;AAC1B,WAAO,IAAI,QAAQ,CAAC,MAAM;AACxB,YAAM,IAAI,KAAK,sBAAsB,CAAC;AACtC,QAAE,iBAAiB,iBAAiB,MAAM,EAAC,GAAI;AAAA,QAC7C,MAAM;AAAA,MACd,CAAO,GAAG,WAAW,GAAG,CAAC;AAAA,IACrB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,sBAAsB,GAAG;AAC9B,UAAM,IAAI,iBAAiB,CAAC,GAAG,IAAI,WAAW,EAAE,kBAAkB,KAAK,GAAG,IAAI,WAAW,EAAE,eAAe,KAAK;AAC/G,YAAQ,IAAI,KAAK;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,OAAO,KAAK,GAAG;AACb,WAAO,IAAI,QAAQ,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAAA,EAC5C;AACF;AACA,SAASwB,KAAK;AACZ,SAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,YAAY,MAAM,KAAK,IAAI,OAAO,MAAM,UAAU,IAAI,UAAU,MAAM,QAAQ,IAAI,WAAW,MAAM,YAAY,KAAI;AACrJ;AACA,IAAIC,IAAID,GAAE;AACV,SAASE,GAAGC,GAAG;AACb,EAAAF,IAAIE;AACN;AACA,IAAIC,IAAI,EAAE,MAAM,MAAM,KAAI;AAC1B,SAASC,EAAEF,GAAG,IAAI,IAAI;AACpB,MAAI,IAAI,OAAOA,KAAK,WAAWA,IAAIA,EAAE,QAAQ,IAAI,EAAE,SAAS,CAAC,GAAGxB,MAAM;AACpE,QAAIO,IAAI,OAAOP,KAAK,WAAWA,IAAIA,EAAE;AACrC,WAAOO,IAAIA,EAAE,QAAQoB,EAAE,OAAO,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAGpB,CAAC,GAAG;AAAA,EAC5D,GAAG,UAAU,MAAM,IAAI,OAAO,GAAG,CAAC,EAAC;AACnC,SAAO;AACT;AACA,IAAIoB,IAAI,EAAE,kBAAkB,0BAA0B,mBAAmB,eAAe,wBAAwB,iBAAiB,gBAAgB,QAAQ,YAAY,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,cAAc,QAAQ,mBAAmB,OAAO,eAAe,OAAO,qBAAqB,QAAQ,WAAW,YAAY,iBAAiB,qBAAqB,iBAAiB,YAAY,yBAAyB,kCAAkC,0BAA0B,oBAAoB,iBAAiB,QAAQ,oBAAoB,2BAA2B,YAAY,eAAe,iBAAiB,gBAAgB,SAAS,UAAU,cAAc,YAAY,gBAAgB,QAAQ,iBAAiB,cAAc,mBAAmB,aAAa,iBAAiB,aAAa,kBAAkB,cAAc,gBAAgB,aAAa,WAAW,SAAS,SAAS,WAAW,mBAAmB,kCAAkC,iBAAiB,oCAAoC,mBAAmB,MAAM,iBAAiB,MAAM,mBAAmB,iCAAiC,qBAAqB,iBAAiB,YAAY,WAAW,eAAe,YAAY,oBAAoB,qDAAqD,uBAAuB,sDAAsD,cAAc,8CAA8C,OAAO,gBAAgB,eAAe,QAAQ,UAAU,OAAO,WAAW,OAAO,WAAW,SAAS,gBAAgB,YAAY,WAAW,UAAU,eAAe,QAAQ,eAAe,OAAO,eAAe,CAACH,MAAM,IAAI,OAAO,WAAWA,CAAC,8BAA8B,GAAG,iBAAiB,CAACA,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAGA,IAAI,CAAC,CAAC,oDAAoD,GAAG,SAAS,CAACA,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAGA,IAAI,CAAC,CAAC,oDAAoD,GAAG,kBAAkB,CAACA,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAGA,IAAI,CAAC,CAAC,iBAAiB,GAAG,mBAAmB,CAACA,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAGA,IAAI,CAAC,CAAC,IAAI,GAAG,gBAAgB,CAACA,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAGA,IAAI,CAAC,CAAC,sBAAsB,GAAG,EAAC,GAAII,KAAK,wBAAwBC,KAAK,yDAAyDC,KAAK,+GAA+GC,KAAI,sEAAsEC,KAAK,wCAAwCC,KAAK,yBAAyBC,KAAK,kKAAkKC,KAAKT,EAAEQ,EAAE,EAAE,QAAQ,SAASD,EAAE,EAAE,QAAQ,cAAc,mBAAmB,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,eAAe,SAAS,EAAE,QAAQ,YAAY,cAAc,EAAE,QAAQ,SAAS,mBAAmB,EAAE,QAAQ,YAAY,EAAE,EAAE,SAAQ,GAAIG,KAAKV,EAAEQ,EAAE,EAAE,QAAQ,SAASD,EAAE,EAAE,QAAQ,cAAc,mBAAmB,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,eAAe,SAAS,EAAE,QAAQ,YAAY,cAAc,EAAE,QAAQ,SAAS,mBAAmB,EAAE,QAAQ,UAAU,mCAAmC,EAAE,SAAQ,GAAII,KAAK,wFAAwFC,KAAK,WAAWC,KAAK,oCAAoCC,KAAKd,EAAE,6GAA6G,EAAE,QAAQ,SAASa,EAAE,EAAE,QAAQ,SAAS,8DAA8D,EAAE,SAAQ,GAAIE,KAAKf,EAAE,sCAAsC,EAAE,QAAQ,SAASO,EAAE,EAAE,SAAQ,GAAIS,KAAI,iWAAiWC,KAAK,iCAAiCC,KAAKlB,EAAE,6dAA6d,GAAG,EAAE,QAAQ,WAAWiB,EAAE,EAAE,QAAQ,OAAOD,EAAC,EAAE,QAAQ,aAAa,0EAA0E,EAAE,SAAQ,GAAIG,KAAKnB,EAAEW,EAAE,EAAE,QAAQ,MAAMN,EAAC,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,aAAa,EAAE,EAAE,QAAQ,UAAU,EAAE,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,UAAU,gDAAgD,EAAE,QAAQ,QAAQ,wBAAwB,EAAE,QAAQ,QAAQ,6DAA6D,EAAE,QAAQ,OAAOW,EAAC,EAAE,SAAQ,GAAII,KAAKpB,EAAE,yCAAyC,EAAE,QAAQ,aAAamB,EAAE,EAAE,SAAQ,GAAIE,KAAK,EAAE,YAAYD,IAAI,MAAMjB,IAAI,KAAKW,IAAI,QAAQV,IAAI,SAASE,IAAI,IAAID,IAAG,MAAMa,IAAI,UAAUT,IAAI,MAAMM,IAAI,SAASb,IAAI,WAAWiB,IAAI,OAAOpB,GAAG,MAAMa,GAAE,GAAIU,KAAKtB,EAAE,6JAA6J,EAAE,QAAQ,MAAMK,EAAC,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,QAAQ,wBAAwB,EAAE,QAAQ,UAAU,gDAAgD,EAAE,QAAQ,QAAQ,wBAAwB,EAAE,QAAQ,QAAQ,6DAA6D,EAAE,QAAQ,OAAOW,EAAC,EAAE,SAAQ,GAAIO,KAAK,EAAE,GAAGF,IAAI,UAAUX,IAAI,OAAOY,IAAI,WAAWtB,EAAEW,EAAE,EAAE,QAAQ,MAAMN,EAAC,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,aAAa,EAAE,EAAE,QAAQ,SAASiB,EAAE,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,UAAU,gDAAgD,EAAE,QAAQ,QAAQ,wBAAwB,EAAE,QAAQ,QAAQ,6DAA6D,EAAE,QAAQ,OAAON,EAAC,EAAE,SAAQ,EAAE,GAAIQ,KAAK,EAAE,GAAGH,IAAI,MAAMrB,EAAE,wIAAwI,EAAE,QAAQ,WAAWiB,EAAE,EAAE,QAAQ,QAAQ,mKAAmK,EAAE,SAAQ,GAAI,KAAK,qEAAqE,SAAS,0BAA0B,QAAQlB,GAAG,UAAU,oCAAoC,WAAWC,EAAEW,EAAE,EAAE,QAAQ,MAAMN,EAAC,EAAE,QAAQ,WAAW;AAAA,EAC1tN,EAAE,QAAQ,YAAYI,EAAE,EAAE,QAAQ,UAAU,EAAE,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,WAAW,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,QAAQ,EAAE,EAAE,WAAU,GAAIgB,KAAK,+CAA+CC,KAAK,uCAAuCC,KAAK,yBAAyBC,KAAK,+EAA+EC,KAAK,iBAAiBC,KAAK,mBAAmBC,KAAK,oBAAoBC,KAAKhC,EAAE,yBAAyB,GAAG,EAAE,QAAQ,eAAe8B,EAAE,EAAE,SAAQ,GAAIG,KAAK,sBAAsBC,KAAK,wBAAwBC,KAAK,0BAA0BC,KAAKpC,EAAE,kBAAkB,GAAG,EAAE,QAAQ,QAAQ,IAAI,OAAO,kIAAkI,CAAC,EAAE,QAAQ,QAAQ,IAAI,OAAO,gCAAgC,CAAC,EAAE,QAAQ,QAAQ,gBAAgB,EAAE,SAAQ,GAAIqC,KAAK,iEAAiEC,KAAKtC,EAAEqC,IAAI,GAAG,EAAE,QAAQ,UAAUR,EAAE,EAAE,SAAQ,GAAIU,KAAKvC,EAAEqC,IAAI,GAAG,EAAE,QAAQ,UAAUJ,EAAE,EAAE,SAAQ,GAAIO,KAAK,yQAAyQC,KAAKzC,EAAEwC,IAAI,IAAI,EAAE,QAAQ,kBAAkBT,EAAE,EAAE,QAAQ,eAAeD,EAAE,EAAE,QAAQ,UAAUD,EAAE,EAAE,SAAQ,GAAIa,KAAK1C,EAAEwC,IAAI,IAAI,EAAE,QAAQ,kBAAkBL,EAAE,EAAE,QAAQ,eAAeD,EAAE,EAAE,QAAQ,UAAUD,EAAE,EAAE,SAAQ,GAAIU,KAAK3C,EAAE,oNAAoN,IAAI,EAAE,QAAQ,kBAAkB+B,EAAE,EAAE,QAAQ,eAAeD,EAAE,EAAE,QAAQ,UAAUD,EAAE,EAAE,SAAQ,GAAIe,KAAK5C,EAAE,aAAa,IAAI,EAAE,QAAQ,UAAU6B,EAAE,EAAE,SAAQ,GAAIgB,KAAK7C,EAAE,qCAAqC,EAAE,QAAQ,UAAU,8BAA8B,EAAE,QAAQ,SAAS,8IAA8I,EAAE,SAAQ,GAAI8C,KAAK9C,EAAEiB,EAAE,EAAE,QAAQ,aAAa,KAAK,EAAE,YAAY8B,KAAK/C,EAAE,0JAA0J,EAAE,QAAQ,WAAW8C,EAAE,EAAE,QAAQ,aAAa,6EAA6E,EAAE,SAAQ,GAAIE,KAAI,yEAAyEC,KAAKjD,EAAE,mEAAmE,EAAE,QAAQ,SAASgD,EAAC,EAAE,QAAQ,QAAQ,yCAAyC,EAAE,QAAQ,SAAS,6DAA6D,EAAE,YAAYE,KAAKlD,EAAE,yBAAyB,EAAE,QAAQ,SAASgD,EAAC,EAAE,QAAQ,OAAOnC,EAAE,EAAE,SAAQ,GAAIsC,KAAKnD,EAAE,uBAAuB,EAAE,QAAQ,OAAOa,EAAE,EAAE,SAAQ,GAAIuC,KAAKpD,EAAE,yBAAyB,GAAG,EAAE,QAAQ,WAAWkD,EAAE,EAAE,QAAQ,UAAUC,EAAE,EAAE,SAAQ,GAAIE,KAAK,sCAAsCC,KAAK,EAAE,YAAYvD,GAAG,gBAAgB6C,IAAI,UAAUC,IAAI,WAAWT,IAAI,IAAIT,IAAI,MAAMD,IAAI,KAAK3B,GAAG,gBAAgBuC,IAAI,mBAAmBG,IAAI,mBAAmBE,IAAI,QAAQlB,IAAI,MAAMwB,IAAI,QAAQE,IAAI,aAAanB,IAAI,SAASkB,IAAI,eAAeE,IAAI,KAAKL,IAAI,MAAMnB,IAAI,KAAK7B,EAAC,GAAIwD,KAAK,EAAE,GAAGD,IAAI,MAAMtD,EAAE,yBAAyB,EAAE,QAAQ,SAASgD,EAAC,EAAE,SAAQ,GAAI,SAAShD,EAAE,+BAA+B,EAAE,QAAQ,SAASgD,EAAC,EAAE,SAAQ,EAAE,GAAIQ,KAAK,EAAE,GAAGF,IAAI,mBAAmBZ,IAAI,gBAAgBH,IAAI,KAAKvC,EAAE,gEAAgE,EAAE,QAAQ,YAAYqD,EAAE,EAAE,QAAQ,SAAS,2EAA2E,EAAE,SAAQ,GAAI,YAAY,8EAA8E,KAAK,2EAA2E,MAAMrD,EAAE,qNAAqN,EAAE,QAAQ,YAAYqD,EAAE,EAAE,SAAQ,KAAMI,KAAK,EAAE,GAAGD,IAAI,IAAIxD,EAAE2B,EAAE,EAAE,QAAQ,QAAQ,GAAG,EAAE,SAAQ,GAAI,MAAM3B,EAAEwD,GAAG,IAAI,EAAE,QAAQ,QAAQ,eAAe,EAAE,QAAQ,WAAW,GAAG,EAAE,SAAQ,KAAME,KAAI,EAAE,QAAQrC,IAAI,KAAKE,IAAI,UAAUC,GAAE,GAAImC,IAAI,EAAE,QAAQL,IAAI,KAAKE,IAAI,QAAQC,IAAI,UAAUF,GAAE,GAAIK,KAAK,EAAE,KAAK,SAAS,KAAK,QAAQ,KAAK,QAAQ,KAAK,UAAU,KAAK,QAAO,GAAIC,KAAK,CAAC/D,MAAM8D,GAAG9D,CAAC;AACriJ,SAASgE,EAAEhE,GAAG,GAAG;AACf,MAAI;AACF,QAAIG,EAAE,WAAW,KAAKH,CAAC,EAAG,QAAOA,EAAE,QAAQG,EAAE,eAAe4D,EAAE;AAAA,aACrD5D,EAAE,mBAAmB,KAAKH,CAAC,EAAG,QAAOA,EAAE,QAAQG,EAAE,uBAAuB4D,EAAE;AACrF,SAAO/D;AACT;AACA,SAASiE,GAAGjE,GAAG;AACb,MAAI;AACF,IAAAA,IAAI,UAAUA,CAAC,EAAE,QAAQG,EAAE,eAAe,GAAG;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AACA,SAAOH;AACT;AACA,SAASkE,GAAGlE,GAAG,GAAG;;AAChB,MAAI,IAAIA,EAAE,QAAQG,EAAE,UAAU,CAAC3B,GAAGO,GAAGC,MAAM;AACzC,QAAI,IAAI,IAAIE,IAAIH;AAChB,WAAO,EAAEG,KAAK,KAAKF,EAAEE,CAAC,MAAM,OAAQ,KAAI,CAAC;AACzC,WAAO,IAAI,MAAM;AAAA,EACnB,CAAC,GAAG,IAAI,EAAE,MAAMiB,EAAE,SAAS,GAAG,IAAI;AAClC,MAAI,EAAE,CAAC,EAAE,KAAI,KAAM,EAAE,MAAK,GAAI,EAAE,SAAS,KAAK,GAAC1B,IAAA,EAAE,GAAG,EAAE,MAAP,QAAAA,EAAU,WAAU,EAAE,IAAG,GAAI,EAAG,KAAI,EAAE,SAAS,EAAG,GAAE,OAAO,CAAC;AAAA,MACtG,QAAO,EAAE,SAAS,IAAK,GAAE,KAAK,EAAE;AACrC,SAAO,IAAI,EAAE,QAAQ,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAI,EAAG,QAAQ0B,EAAE,WAAW,GAAG;AACrE,SAAO;AACT;AACA,SAASgE,EAAEnE,GAAG,GAAG,GAAG;AAClB,MAAI,IAAIA,EAAE;AACV,MAAI,MAAM,EAAG,QAAO;AACpB,MAAI,IAAI;AACR,SAAO,IAAI,KAAKA,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM;AACtC;AACF,SAAOA,EAAE,MAAM,GAAG,IAAI,CAAC;AACzB;AACA,SAASoE,GAAGpE,GAAG,GAAG;AAChB,MAAIA,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAI,QAAO;AACnC,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAIA,EAAE,QAAQ,IAAK,KAAIA,EAAE,CAAC,MAAM,KAAM;AAAA,WAC7CA,EAAE,CAAC,MAAM,EAAE,CAAC,EAAG;AAAA,WACfA,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,IAAI,GAAI,QAAO;AAC/C,SAAO,IAAI,IAAI,KAAK;AACtB;AACA,SAASqE,GAAGrE,GAAG,GAAG,GAAG,GAAG,GAAG;AACzB,MAAIxB,IAAI,EAAE,MAAMO,IAAI,EAAE,SAAS,MAAMC,IAAIgB,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,mBAAmB,IAAI;AACrF,IAAE,MAAM,SAAS;AACjB,MAAIf,IAAI,EAAE,MAAMe,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,UAAU,QAAQ,KAAK,GAAG,MAAMxB,GAAG,OAAOO,GAAG,MAAMC,GAAG,QAAQ,EAAE,aAAaA,CAAC,EAAC;AACxH,SAAO,EAAE,MAAM,SAAS,IAAIC;AAC9B;AACA,SAASqF,GAAGtE,GAAG,GAAG,GAAG;AACnB,MAAI,IAAIA,EAAE,MAAM,EAAE,MAAM,sBAAsB;AAC9C,MAAI,MAAM,KAAM,QAAO;AACvB,MAAI,IAAI,EAAE,CAAC;AACX,SAAO,EAAE,MAAM;AAAA,CAChB,EAAE,IAAI,CAACxB,MAAM;AACV,QAAIO,IAAIP,EAAE,MAAM,EAAE,MAAM,cAAc;AACtC,QAAIO,MAAM,KAAM,QAAOP;AACvB,QAAI,CAACQ,CAAC,IAAID;AACV,WAAOC,EAAE,UAAU,EAAE,SAASR,EAAE,MAAM,EAAE,MAAM,IAAIA;AAAA,EACpD,CAAC,EAAE,KAAK;AAAA,CACT;AACD;AACA,IAAI+F,KAAI,MAAM;AAAA,EAIZ,YAAYvE,GAAG;AAHf,IAAAtB,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,UAAUsB,KAAKF;AAAA,EACtB;AAAA,EACA,MAAME,GAAG;AACP,QAAI,IAAI,KAAK,MAAM,MAAM,QAAQ,KAAKA,CAAC;AACvC,QAAI,KAAK,EAAE,CAAC,EAAE,SAAS,EAAG,QAAO,EAAE,MAAM,SAAS,KAAK,EAAE,CAAC,EAAC;AAAA,EAC7D;AAAA,EACA,KAAKA,GAAG;AACN,QAAI,IAAI,KAAK,MAAM,MAAM,KAAK,KAAKA,CAAC;AACpC,QAAI,GAAG;AACL,UAAI,IAAI,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,kBAAkB,EAAE;AAC1D,aAAO,EAAE,MAAM,QAAQ,KAAK,EAAE,CAAC,GAAG,gBAAgB,YAAY,MAAM,KAAK,QAAQ,WAAW,IAAImE,EAAE,GAAG;AAAA,CAC1G,EAAC;AAAA,IACE;AAAA,EACF;AAAA,EACA,OAAOnE,GAAG;AACR,QAAI,IAAI,KAAK,MAAM,MAAM,OAAO,KAAKA,CAAC;AACtC,QAAI,GAAG;AACL,UAAI,IAAI,EAAE,CAAC,GAAG,IAAIsE,GAAG,GAAG,EAAE,CAAC,KAAK,IAAI,KAAK,KAAK;AAC9C,aAAO,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,IAAI,EAAE,CAAC,GAAG,MAAM,EAAC;AAAA,IACzH;AAAA,EACF;AAAA,EACA,QAAQtE,GAAG;AACT,QAAI,IAAI,KAAK,MAAM,MAAM,QAAQ,KAAKA,CAAC;AACvC,QAAI,GAAG;AACL,UAAI,IAAI,EAAE,CAAC,EAAE,KAAI;AACjB,UAAI,KAAK,MAAM,MAAM,WAAW,KAAK,CAAC,GAAG;AACvC,YAAI,IAAImE,EAAE,GAAG,GAAG;AAChB,SAAC,KAAK,QAAQ,YAAY,CAAC,KAAK,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC,OAAO,IAAI,EAAE;MACtF;AACA,aAAO,EAAE,MAAM,WAAW,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,MAAM,GAAG,QAAQ,KAAK,MAAM,OAAO,CAAC,EAAC;AAAA,IAChG;AAAA,EACF;AAAA,EACA,GAAGnE,GAAG;AACJ,QAAI,IAAI,KAAK,MAAM,MAAM,GAAG,KAAKA,CAAC;AAClC,QAAI,EAAG,QAAO,EAAE,MAAM,MAAM,KAAKmE,EAAE,EAAE,CAAC,GAAG;AAAA,CAC5C,EAAC;AAAA,EACA;AAAA,EACA,WAAWnE,GAAG;AACZ,QAAI,IAAI,KAAK,MAAM,MAAM,WAAW,KAAKA,CAAC;AAC1C,QAAI,GAAG;AACL,UAAI,IAAImE,EAAE,EAAE,CAAC,GAAG;AAAA,CACrB,EAAE,MAAM;AAAA,CACR,GAAG,IAAI,IAAI,IAAI,IAAI3F,IAAI,CAAA;AAClB,aAAO,EAAE,SAAS,KAAK;AACrB,YAAIO,IAAI,IAAIC,IAAI,CAAA,GAAIC;AACpB,aAAKA,IAAI,GAAGA,IAAI,EAAE,QAAQA,IAAK,KAAI,KAAK,MAAM,MAAM,gBAAgB,KAAK,EAAEA,CAAC,CAAC,EAAG,CAAAD,EAAE,KAAK,EAAEC,CAAC,CAAC,GAAGF,IAAI;AAAA,iBACzF,CAACA,EAAG,CAAAC,EAAE,KAAK,EAAEC,CAAC,CAAC;AAAA,YACnB;AACL,YAAI,EAAE,MAAMA,CAAC;AACb,YAAIC,IAAIF,EAAE,KAAK;AAAA,CACtB,GAAGG,IAAID,EAAE,QAAQ,KAAK,MAAM,MAAM,yBAAyB;AAAA,OACrD,EAAE,QAAQ,KAAK,MAAM,MAAM,0BAA0B,EAAE;AACtD,YAAI,IAAI,GAAG,CAAC;AAAA,EAClBA,CAAC,KAAKA,GAAG,IAAI,IAAI,GAAG,CAAC;AAAA,EACrBC,CAAC,KAAKA;AACA,YAAIC,IAAI,KAAK,MAAM,MAAM;AACzB,YAAI,KAAK,MAAM,MAAM,MAAM,IAAI,KAAK,MAAM,YAAYD,GAAGX,GAAG,EAAE,GAAG,KAAK,MAAM,MAAM,MAAMY,GAAG,EAAE,WAAW,EAAG;AAC3G,YAAIC,IAAIb,EAAE,GAAG,EAAE;AACf,aAAIa,KAAA,gBAAAA,EAAG,UAAS,OAAQ;AACxB,aAAIA,KAAA,gBAAAA,EAAG,UAAS,cAAc;AAC5B,cAAImF,IAAInF,GAAGoF,IAAID,EAAE,MAAM;AAAA,IAC7B,EAAE,KAAK;AAAA,CACV,GAAGE,IAAI,KAAK,WAAWD,CAAC;AACf,UAAAjG,EAAEA,EAAE,SAAS,CAAC,IAAIkG,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,SAASF,EAAE,IAAI,MAAM,IAAIE,EAAE,KAAK,IAAI,EAAE,UAAU,GAAG,EAAE,SAASF,EAAE,KAAK,MAAM,IAAIE,EAAE;AAC3H;AAAA,QACF,YAAWrF,KAAA,gBAAAA,EAAG,UAAS,QAAQ;AAC7B,cAAImF,IAAInF,GAAGoF,IAAID,EAAE,MAAM;AAAA,IAC7B,EAAE,KAAK;AAAA,CACV,GAAGE,IAAI,KAAK,KAAKD,CAAC;AACT,UAAAjG,EAAEA,EAAE,SAAS,CAAC,IAAIkG,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,SAASrF,EAAE,IAAI,MAAM,IAAIqF,EAAE,KAAK,IAAI,EAAE,UAAU,GAAG,EAAE,SAASF,EAAE,IAAI,MAAM,IAAIE,EAAE,KAAK,IAAID,EAAE,UAAUjG,EAAE,GAAG,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM;AAAA,CACnL;AACS;AAAA,QACF;AAAA,MACF;AACA,aAAO,EAAE,MAAM,cAAc,KAAK,GAAG,QAAQA,GAAG,MAAM,EAAC;AAAA,IACzD;AAAA,EACF;AAAA,EACA,KAAKwB,GAAG;AACN,QAAI,IAAI,KAAK,MAAM,MAAM,KAAK,KAAKA,CAAC;AACpC,QAAI,GAAG;AACL,UAAI,IAAI,EAAE,CAAC,EAAE,KAAI,GAAI,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,QAAQ,KAAK,IAAI,SAAS,GAAG,OAAO,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,OAAO,IAAI,OAAO,CAAA,EAAE;AACrI,UAAI,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,QAAQ,aAAa,IAAI,IAAI,IAAI;AACrF,UAAIxB,IAAI,KAAK,MAAM,MAAM,cAAc,CAAC,GAAGO,IAAI;AAC/C,aAAOiB,KAAK;AACV,YAAIf,IAAI,IAAIC,IAAI,IAAIC,IAAI;AACxB,YAAI,EAAE,IAAIX,EAAE,KAAKwB,CAAC,MAAM,KAAK,MAAM,MAAM,GAAG,KAAKA,CAAC,EAAG;AACrD,QAAAd,IAAI,EAAE,CAAC,GAAGc,IAAIA,EAAE,UAAUd,EAAE,MAAM;AAClC,YAAIE,IAAI,EAAE,CAAC,EAAE,MAAM;AAAA,GACxB,CAAC,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,iBAAiB,CAACuF,MAAM,IAAI,OAAO,IAAIA,EAAE,MAAM,CAAC,GAAGtF,IAAIW,EAAE,MAAM;AAAA,GAC9F,CAAC,EAAE,CAAC,GAAGwE,IAAI,CAACpF,EAAE,QAAQqF,IAAI;AACrB,YAAI,KAAK,QAAQ,YAAYA,IAAI,GAAGtF,IAAIC,EAAE,eAAeoF,IAAIC,IAAI,EAAE,CAAC,EAAE,SAAS,KAAKA,IAAI,EAAE,CAAC,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,GAAGA,IAAIA,IAAI,IAAI,IAAIA,GAAGtF,IAAIC,EAAE,MAAMqF,CAAC,GAAGA,KAAK,EAAE,CAAC,EAAE,SAASD,KAAK,KAAK,MAAM,MAAM,UAAU,KAAKnF,CAAC,MAAMH,KAAKG,IAAI;AAAA,GACpPW,IAAIA,EAAE,UAAUX,EAAE,SAAS,CAAC,GAAGJ,IAAI,KAAK,CAACA,GAAG;AACrC,cAAI0F,IAAI,KAAK,MAAM,MAAM,gBAAgBF,CAAC,GAAGG,IAAI,KAAK,MAAM,MAAM,QAAQH,CAAC,GAAGI,IAAI,KAAK,MAAM,MAAM,iBAAiBJ,CAAC,GAAGK,IAAI,KAAK,MAAM,MAAM,kBAAkBL,CAAC,GAAGM,KAAI,KAAK,MAAM,MAAM,eAAeN,CAAC;AACxM,iBAAOzE,KAAK;AACV,gBAAIgF,IAAIhF,EAAE,MAAM;AAAA,GACzB,CAAC,EAAE,CAAC,GAAGiF;AACE,gBAAI5F,IAAI2F,GAAG,KAAK,QAAQ,YAAY3F,IAAIA,EAAE,QAAQ,KAAK,MAAM,MAAM,oBAAoB,IAAI,GAAG4F,IAAI5F,KAAK4F,IAAI5F,EAAE,QAAQ,KAAK,MAAM,MAAM,eAAe,MAAM,GAAGwF,EAAE,KAAKxF,CAAC,KAAKyF,EAAE,KAAKzF,CAAC,KAAK0F,GAAE,KAAK1F,CAAC,KAAKsF,EAAE,KAAKtF,CAAC,KAAKuF,EAAE,KAAKvF,CAAC,EAAG;AAC7N,gBAAI4F,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,KAAKR,KAAK,CAACpF,EAAE,KAAI,EAAI,CAAAF,KAAK;AAAA,IAC5E8F,EAAE,MAAMR,CAAC;AAAA,iBACI;AACH,kBAAID,KAAKpF,EAAE,QAAQ,KAAK,MAAM,MAAM,eAAe,MAAM,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,KAAK,KAAKyF,EAAE,KAAKzF,CAAC,KAAK0F,EAAE,KAAK1F,CAAC,KAAKwF,EAAE,KAAKxF,CAAC,EAAG;AAC9I,cAAAD,KAAK;AAAA,IACfE;AAAA,YACQ;AACA,aAACmF,KAAK,CAACnF,EAAE,KAAI,MAAOmF,IAAI,KAAKtF,KAAK8F,IAAI;AAAA,GAC/ChF,IAAIA,EAAE,UAAUgF,EAAE,SAAS,CAAC,GAAG5F,IAAI6F,EAAE,MAAMR,CAAC;AAAA,UACrC;AAAA,QACF;AACA,UAAE,UAAU1F,IAAI,EAAE,QAAQ,KAAK,KAAK,MAAM,MAAM,gBAAgB,KAAKG,CAAC,MAAMH,IAAI;AAChF,YAAI2F,IAAI,MAAMQ;AACd,aAAK,QAAQ,QAAQR,IAAI,KAAK,MAAM,MAAM,WAAW,KAAKvF,CAAC,GAAGuF,MAAMQ,IAAIR,EAAE,CAAC,MAAM,QAAQvF,IAAIA,EAAE,QAAQ,KAAK,MAAM,MAAM,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,MAAM,aAAa,KAAKD,GAAG,MAAM,CAAC,CAACwF,GAAG,SAASQ,GAAG,OAAO,IAAI,MAAM/F,GAAG,QAAQ,GAAE,CAAE,GAAG,EAAE,OAAOD;AAAA,MAC/P;AACA,UAAIF,IAAI,EAAE,MAAM,GAAG,EAAE;AACrB,UAAIA,EAAG,CAAAA,EAAE,MAAMA,EAAE,IAAI,QAAO,GAAIA,EAAE,OAAOA,EAAE,KAAK,QAAO;AAAA,UAClD;AACL,QAAE,MAAM,EAAE,IAAI,QAAO;AACrB,eAASC,IAAI,GAAGA,IAAI,EAAE,MAAM,QAAQA,IAAK,KAAI,KAAK,MAAM,MAAM,MAAM,IAAI,EAAE,MAAMA,CAAC,EAAE,SAAS,KAAK,MAAM,YAAY,EAAE,MAAMA,CAAC,EAAE,MAAM,CAAA,CAAE,GAAG,CAAC,EAAE,OAAO;AACjJ,YAAIC,IAAI,EAAE,MAAMD,CAAC,EAAE,OAAO,OAAO,CAACG,MAAMA,EAAE,SAAS,OAAO,GAAGD,IAAID,EAAE,SAAS,KAAKA,EAAE,KAAK,CAACE,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAKA,EAAE,GAAG,CAAC;AACnI,UAAE,QAAQD;AAAA,MACZ;AACA,UAAI,EAAE,MAAO,UAASF,IAAI,GAAGA,IAAI,EAAE,MAAM,QAAQA,IAAK,GAAE,MAAMA,CAAC,EAAE,QAAQ;AACzE,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,KAAKe,GAAG;AACN,QAAI,IAAI,KAAK,MAAM,MAAM,KAAK,KAAKA,CAAC;AACpC,QAAI,EAAG,QAAO,EAAE,MAAM,QAAQ,OAAO,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,SAAS,EAAE,CAAC,MAAM,YAAY,EAAE,CAAC,MAAM,SAAS,MAAM,EAAE,CAAC,EAAC;AAAA,EAC9H;AAAA,EACA,IAAIA,GAAG;AACL,QAAI,IAAI,KAAK,MAAM,MAAM,IAAI,KAAKA,CAAC;AACnC,QAAI,GAAG;AACL,UAAI,IAAI,EAAE,CAAC,EAAE,YAAW,EAAG,QAAQ,KAAK,MAAM,MAAM,qBAAqB,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,cAAc,IAAI,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,IAAI,EAAE,CAAC;AACrS,aAAO,EAAE,MAAM,OAAO,KAAK,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,OAAO,EAAC;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,MAAMA,GAAG;;AACP,QAAI,IAAI,KAAK,MAAM,MAAM,MAAM,KAAKA,CAAC;AACrC,QAAI,CAAC,KAAK,CAAC,KAAK,MAAM,MAAM,eAAe,KAAK,EAAE,CAAC,CAAC,EAAG;AACvD,QAAI,IAAIkE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,iBAAiB,EAAE,EAAE,MAAM,GAAG,GAAG,KAAIzF,IAAA,EAAE,CAAC,MAAH,QAAAA,EAAM,SAAS,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,mBAAmB,EAAE,EAAE,MAAM;AAAA,CACtK,IAAI,CAAA,GAAID,IAAI,EAAE,MAAM,SAAS,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAA,GAAI,OAAO,CAAA,GAAI,MAAM,GAAE;AACpE,QAAI,EAAE,WAAW,EAAE,QAAQ;AACzB,eAASO,KAAK,EAAG,MAAK,MAAM,MAAM,gBAAgB,KAAKA,CAAC,IAAIP,EAAE,MAAM,KAAK,OAAO,IAAI,KAAK,MAAM,MAAM,iBAAiB,KAAKO,CAAC,IAAIP,EAAE,MAAM,KAAK,QAAQ,IAAI,KAAK,MAAM,MAAM,eAAe,KAAKO,CAAC,IAAIP,EAAE,MAAM,KAAK,MAAM,IAAIA,EAAE,MAAM,KAAK,IAAI;AAC3O,eAASO,IAAI,GAAGA,IAAI,EAAE,QAAQA,IAAK,CAAAP,EAAE,OAAO,KAAK,EAAE,MAAM,EAAEO,CAAC,GAAG,QAAQ,KAAK,MAAM,OAAO,EAAEA,CAAC,CAAC,GAAG,QAAQ,IAAI,OAAOP,EAAE,MAAMO,CAAC,EAAC,CAAE;AAC/H,eAASA,KAAK,EAAG,CAAAP,EAAE,KAAK,KAAK0F,GAAGnF,GAAGP,EAAE,OAAO,MAAM,EAAE,IAAI,CAACQ,GAAG,OAAO,EAAE,MAAMA,GAAG,QAAQ,KAAK,MAAM,OAAOA,CAAC,GAAG,QAAQ,IAAI,OAAOR,EAAE,MAAM,CAAC,EAAC,EAAG,CAAC;AAC7I,aAAOA;AAAA,IACT;AAAA,EACF;AAAA,EACA,SAASwB,GAAG;AACV,QAAI,IAAI,KAAK,MAAM,MAAM,SAAS,KAAKA,CAAC;AACxC,QAAI,EAAG,QAAO,EAAE,MAAM,WAAW,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ,KAAK,MAAM,OAAO,EAAE,CAAC,CAAC,EAAC;AAAA,EAChI;AAAA,EACA,UAAUA,GAAG;AACX,QAAI,IAAI,KAAK,MAAM,MAAM,UAAU,KAAKA,CAAC;AACzC,QAAI,GAAG;AACL,UAAI,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM;AAAA,IAC3C,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC;AACrB,aAAO,EAAE,MAAM,aAAa,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,QAAQ,KAAK,MAAM,OAAO,CAAC,EAAC;AAAA,IAC9E;AAAA,EACF;AAAA,EACA,KAAKA,GAAG;AACN,QAAI,IAAI,KAAK,MAAM,MAAM,KAAK,KAAKA,CAAC;AACpC,QAAI,EAAG,QAAO,EAAE,MAAM,QAAQ,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ,KAAK,MAAM,OAAO,EAAE,CAAC,CAAC,EAAC;AAAA,EACtF;AAAA,EACA,OAAOA,GAAG;AACR,QAAI,IAAI,KAAK,MAAM,OAAO,OAAO,KAAKA,CAAC;AACvC,QAAI,EAAG,QAAO,EAAE,MAAM,UAAU,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAC;AAAA,EACvD;AAAA,EACA,IAAIA,GAAG;AACL,QAAI,IAAI,KAAK,MAAM,OAAO,IAAI,KAAKA,CAAC;AACpC,QAAI,EAAG,QAAO,CAAC,KAAK,MAAM,MAAM,UAAU,KAAK,MAAM,MAAM,UAAU,KAAK,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,MAAM,SAAS,KAAK,KAAK,MAAM,MAAM,UAAU,KAAK,MAAM,MAAM,QAAQ,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,MAAM,MAAM,SAAS,KAAK,CAAC,KAAK,MAAM,MAAM,cAAc,KAAK,MAAM,MAAM,kBAAkB,KAAK,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,MAAM,aAAa,KAAK,KAAK,MAAM,MAAM,cAAc,KAAK,MAAM,MAAM,gBAAgB,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,MAAM,MAAM,aAAa,KAAK,EAAE,MAAM,QAAQ,KAAK,EAAE,CAAC,GAAG,QAAQ,KAAK,MAAM,MAAM,QAAQ,YAAY,KAAK,MAAM,MAAM,YAAY,OAAO,IAAI,MAAM,EAAE,CAAC,EAAC;AAAA,EACpjB;AAAA,EACA,KAAKA,GAAG;AACN,QAAI,IAAI,KAAK,MAAM,OAAO,KAAK,KAAKA,CAAC;AACrC,QAAI,GAAG;AACL,UAAI,IAAI,EAAE,CAAC,EAAE,KAAI;AACjB,UAAI,CAAC,KAAK,QAAQ,YAAY,KAAK,MAAM,MAAM,kBAAkB,KAAK,CAAC,GAAG;AACxE,YAAI,CAAC,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC,EAAG;AAC/C,YAAIxB,IAAI2F,EAAE,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI;AAC9B,aAAK,EAAE,SAAS3F,EAAE,UAAU,MAAM,EAAG;AAAA,MACvC,OAAO;AACL,YAAIA,IAAI4F,GAAG,EAAE,CAAC,GAAG,IAAI;AACrB,YAAI5F,MAAM,GAAI;AACd,YAAIA,IAAI,IAAI;AACV,cAAIO,KAAK,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC,EAAE,SAASP;AAC1D,YAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,GAAGA,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,GAAGO,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI;AAAA,QAC1E;AAAA,MACF;AACA,UAAI,IAAI,EAAE,CAAC,GAAG,IAAI;AAClB,UAAI,KAAK,QAAQ,UAAU;AACzB,YAAIP,IAAI,KAAK,MAAM,MAAM,kBAAkB,KAAK,CAAC;AACjD,QAAAA,MAAM,IAAIA,EAAE,CAAC,GAAG,IAAIA,EAAE,CAAC;AAAA,MACzB,MAAO,KAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI;AACtC,aAAO,IAAI,EAAE,KAAI,GAAI,KAAK,MAAM,MAAM,kBAAkB,KAAK,CAAC,MAAM,KAAK,QAAQ,YAAY,CAAC,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI6F,GAAG,GAAG,EAAE,MAAM,KAAK,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,GAAG,OAAO,KAAK,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,EAAC,GAAI,EAAE,CAAC,GAAG,KAAK,OAAO,KAAK,KAAK;AAAA,IACpV;AAAA,EACF;AAAA,EACA,QAAQrE,GAAG,GAAG;AACZ,QAAI;AACJ,SAAK,IAAI,KAAK,MAAM,OAAO,QAAQ,KAAKA,CAAC,OAAO,IAAI,KAAK,MAAM,OAAO,OAAO,KAAKA,CAAC,IAAI;AACrF,UAAI,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,KAAK,MAAM,MAAM,qBAAqB,GAAG,GAAG,IAAI,EAAE,EAAE,aAAa;AAChG,UAAI,CAAC,GAAG;AACN,YAAIxB,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC;AACrB,eAAO,EAAE,MAAM,QAAQ,KAAKA,GAAG,MAAMA,EAAC;AAAA,MACxC;AACA,aAAO6F,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,OAAO,KAAK,KAAK;AAAA,IAC9C;AAAA,EACF;AAAA,EACA,SAASrE,GAAG,GAAG,IAAI,IAAI;AACrB,QAAI,IAAI,KAAK,MAAM,OAAO,eAAe,KAAKA,CAAC;AAC/C,QAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,MAAM,mBAAmB,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,OAAO,YAAY,KAAK,CAAC,IAAI;AACtI,UAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,GAAGxB,GAAGO,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,MAAM,KAAK,MAAM,OAAO,oBAAoB,KAAK,MAAM,OAAO;AAChI,WAAKA,EAAE,YAAY,GAAG,IAAI,EAAE,MAAM,KAAKc,EAAE,SAAS,CAAC,IAAI,IAAId,EAAE,KAAK,CAAC,MAAM,QAAQ;AAC/E,YAAIV,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAACA,EAAG;AAC1D,YAAIO,IAAI,CAAC,GAAGP,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG;AACnC,UAAAQ,KAAKD;AACL;AAAA,QACF,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,KAAK,GAAG,IAAIA,KAAK,IAAI;AACpD,UAAAE,KAAKF;AACL;AAAA,QACF;AACA,YAAIC,KAAKD,GAAGC,IAAI,EAAG;AACnB,QAAAD,IAAI,KAAK,IAAIA,GAAGA,IAAIC,IAAIC,CAAC;AACzB,YAAIE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQC,IAAIY,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQb,IAAIJ,CAAC;AAC/D,YAAI,KAAK,IAAI,GAAGA,CAAC,IAAI,GAAG;AACtB,cAAIyF,IAAIpF,EAAE,MAAM,GAAG,EAAE;AACrB,iBAAO,EAAE,MAAM,MAAM,KAAKA,GAAG,MAAMoF,GAAG,QAAQ,KAAK,MAAM,aAAaA,CAAC,EAAC;AAAA,QAC1E;AACA,YAAInF,IAAID,EAAE,MAAM,GAAG,EAAE;AACrB,eAAO,EAAE,MAAM,UAAU,KAAKA,GAAG,MAAMC,GAAG,QAAQ,KAAK,MAAM,aAAaA,CAAC,EAAC;AAAA,MAC9E;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAASW,GAAG;AACV,QAAI,IAAI,KAAK,MAAM,OAAO,KAAK,KAAKA,CAAC;AACrC,QAAI,GAAG;AACL,UAAI,IAAI,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,mBAAmB,GAAG,GAAG,IAAI,KAAK,MAAM,MAAM,aAAa,KAAK,CAAC,GAAG,IAAI,KAAK,MAAM,MAAM,kBAAkB,KAAK,CAAC,KAAK,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC;AACnM,aAAO,KAAK,MAAM,IAAI,EAAE,UAAU,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,YAAY,KAAK,EAAE,CAAC,GAAG,MAAM,EAAC;AAAA,IAC7F;AAAA,EACF;AAAA,EACA,GAAGA,GAAG;AACJ,QAAI,IAAI,KAAK,MAAM,OAAO,GAAG,KAAKA,CAAC;AACnC,QAAI,EAAG,QAAO,EAAE,MAAM,MAAM,KAAK,EAAE,CAAC,EAAC;AAAA,EACvC;AAAA,EACA,IAAIA,GAAG;AACL,QAAI,IAAI,KAAK,MAAM,OAAO,IAAI,KAAKA,CAAC;AACpC,QAAI,EAAG,QAAO,EAAE,MAAM,OAAO,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ,KAAK,MAAM,aAAa,EAAE,CAAC,CAAC,EAAC;AAAA,EAC3F;AAAA,EACA,SAASA,GAAG;AACV,QAAI,IAAI,KAAK,MAAM,OAAO,SAAS,KAAKA,CAAC;AACzC,QAAI,GAAG;AACL,UAAI,GAAG;AACP,aAAO,EAAE,CAAC,MAAM,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI,YAAY,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,MAAM,QAAQ,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,EAAC,CAAE,EAAC;AAAA,IACnK;AAAA,EACF;AAAA,EACA,IAAIA,GAAG;;AACL,QAAI;AACJ,QAAI,IAAI,KAAK,MAAM,OAAO,IAAI,KAAKA,CAAC,GAAG;AACrC,UAAImF,GAAG5G;AACP,UAAI,EAAE,CAAC,MAAM,IAAK,CAAA4G,IAAI,EAAE,CAAC,GAAG5G,IAAI,YAAY4G;AAAA,WACvC;AACH,YAAItG;AACJ;AACE,UAAAA,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,MAAIJ,IAAA,KAAK,MAAM,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,MAAtC,gBAAAA,EAA0C,OAAM;AAAA,eAC5DI,MAAM,EAAE,CAAC;AAChB,QAAAsG,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,SAAS5G,IAAI,YAAY,EAAE,CAAC,IAAIA,IAAI,EAAE,CAAC;AAAA,MAC5D;AACA,aAAO,EAAE,MAAM,QAAQ,KAAK,EAAE,CAAC,GAAG,MAAM4G,GAAG,MAAM5G,GAAG,QAAQ,CAAC,EAAE,MAAM,QAAQ,KAAK4G,GAAG,MAAMA,EAAC,CAAE,EAAC;AAAA,IACjG;AAAA,EACF;AAAA,EACA,WAAWnF,GAAG;AACZ,QAAI,IAAI,KAAK,MAAM,OAAO,KAAK,KAAKA,CAAC;AACrC,QAAI,GAAG;AACL,UAAI,IAAI,KAAK,MAAM,MAAM;AACzB,aAAO,EAAE,MAAM,QAAQ,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,SAAS,EAAC;AAAA,IAC1D;AAAA,EACF;AACF,GAAGoF,IAAI,MAAMC,GAAG;AAAA,EAMd,YAAY,GAAG;AALf,IAAA3G,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,SAAS,IAAI,KAAK,OAAO,QAAwB,uBAAO,OAAO,IAAI,GAAG,KAAK,UAAU,KAAKoB,GAAG,KAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa,IAAIyE,GAAC,GAAI,KAAK,YAAY,KAAK,QAAQ,WAAW,KAAK,UAAU,UAAU,KAAK,SAAS,KAAK,UAAU,QAAQ,MAAM,KAAK,cAAc,CAAA,GAAI,KAAK,QAAQ,EAAE,QAAQ,IAAI,YAAY,IAAI,KAAK,GAAE;AACpV,QAAI,IAAI,EAAE,OAAOpE,GAAG,OAAOyD,GAAE,QAAQ,QAAQC,EAAE,OAAM;AACrD,SAAK,QAAQ,YAAY,EAAE,QAAQD,GAAE,UAAU,EAAE,SAASC,EAAE,YAAY,KAAK,QAAQ,QAAQ,EAAE,QAAQD,GAAE,KAAK,KAAK,QAAQ,SAAS,EAAE,SAASC,EAAE,SAAS,EAAE,SAASA,EAAE,MAAM,KAAK,UAAU,QAAQ;AAAA,EACtM;AAAA,EACA,WAAW,QAAQ;AACjB,WAAO,EAAE,OAAOD,IAAG,QAAQC,EAAC;AAAA,EAC9B;AAAA,EACA,OAAO,IAAI,GAAG,GAAG;AACf,WAAO,IAAIwB,GAAG,CAAC,EAAE,IAAI,CAAC;AAAA,EACxB;AAAA,EACA,OAAO,UAAU,GAAG,GAAG;AACrB,WAAO,IAAIA,GAAG,CAAC,EAAE,aAAa,CAAC;AAAA,EACjC;AAAA,EACA,IAAI,GAAG;AACL,QAAI,EAAE,QAAQlF,EAAE,gBAAgB;AAAA,CACnC,GAAG,KAAK,YAAY,GAAG,KAAK,MAAM;AAC/B,aAAS,IAAI,GAAG,IAAI,KAAK,YAAY,QAAQ,KAAK;AAChD,UAAI,IAAI,KAAK,YAAY,CAAC;AAC1B,WAAK,aAAa,EAAE,KAAK,EAAE,MAAM;AAAA,IACnC;AACA,WAAO,KAAK,cAAc,CAAA,GAAI,KAAK;AAAA,EACrC;AAAA,EACA,YAAY,GAAG,IAAI,CAAA,GAAI,IAAI,IAAI;;AAC7B,SAAK,KAAK,QAAQ,aAAa,IAAI,EAAE,QAAQA,EAAE,eAAe,MAAM,EAAE,QAAQA,EAAE,WAAW,EAAE,IAAI,KAAK;AACpG,UAAItB;AACJ,WAAIyG,KAAA7G,IAAA,KAAK,QAAQ,eAAb,gBAAAA,EAAyB,UAAzB,QAAA6G,EAAgC,KAAK,CAACvG,OAAOF,IAAIE,EAAE,KAAK,EAAE,OAAO,KAAI,GAAI,GAAG,CAAC,MAAM,IAAI,EAAE,UAAUF,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC,GAAG,MAAM,IAAK;AAC5I,UAAIA,IAAI,KAAK,UAAU,MAAM,CAAC,GAAG;AAC/B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM;AAC5B,YAAIE,IAAI,EAAE,GAAG,EAAE;AACf,QAAAF,EAAE,IAAI,WAAW,KAAKE,MAAM,SAASA,EAAE,OAAO;AAAA,IAClD,EAAE,KAAKF,CAAC;AACJ;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAC9B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM;AAC5B,YAAIE,IAAI,EAAE,GAAG,EAAE;AACf,SAAAA,KAAA,gBAAAA,EAAG,UAAS,gBAAeA,KAAA,gBAAAA,EAAG,UAAS,UAAUA,EAAE,QAAQA,EAAE,IAAI,SAAS;AAAA,CACjF,IAAI,KAAK;AAAA,KACLF,EAAE,KAAKE,EAAE,QAAQ;AAAA,IAClBF,EAAE,MAAM,KAAK,YAAY,GAAG,EAAE,EAAE,MAAME,EAAE,QAAQ,EAAE,KAAKF,CAAC;AACpD;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,OAAO,CAAC,GAAG;AAChC,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,QAAQ,CAAC,GAAG;AACjC,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,GAAG,CAAC,GAAG;AAC5B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,WAAW,CAAC,GAAG;AACpC,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAC9B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAC9B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AAC7B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM;AAC5B,YAAIE,IAAI,EAAE,GAAG,EAAE;AACf,SAAAA,KAAA,gBAAAA,EAAG,UAAS,gBAAeA,KAAA,gBAAAA,EAAG,UAAS,UAAUA,EAAE,QAAQA,EAAE,IAAI,SAAS;AAAA,CACjF,IAAI,KAAK;AAAA,KACLF,EAAE,KAAKE,EAAE,QAAQ;AAAA,IAClBF,EAAE,KAAK,KAAK,YAAY,GAAG,EAAE,EAAE,MAAME,EAAE,QAAQ,KAAK,OAAO,MAAMF,EAAE,GAAG,MAAM,KAAK,OAAO,MAAMA,EAAE,GAAG,IAAI,EAAE,MAAMA,EAAE,MAAM,OAAOA,EAAE,MAAK,GAAI,EAAE,KAAKA,CAAC;AAC7I;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,MAAM,CAAC,GAAG;AAC/B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,SAAS,CAAC,GAAG;AAClC,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIL,IAAI;AACR,WAAI+G,IAAA,KAAK,QAAQ,eAAb,QAAAA,EAAyB,YAAY;AACvC,YAAIxG,IAAI,OAAOC,IAAI,EAAE,MAAM,CAAC,GAAGC;AAC/B,aAAK,QAAQ,WAAW,WAAW,QAAQ,CAAC,MAAM;AAChD,UAAAA,IAAI,EAAE,KAAK,EAAE,OAAO,KAAI,GAAID,CAAC,GAAG,OAAOC,KAAK,YAAYA,KAAK,MAAMF,IAAI,KAAK,IAAIA,GAAGE,CAAC;AAAA,QACtF,CAAC,GAAGF,IAAI,SAASA,KAAK,MAAMP,IAAI,EAAE,UAAU,GAAGO,IAAI,CAAC;AAAA,MACtD;AACA,UAAI,KAAK,MAAM,QAAQF,IAAI,KAAK,UAAU,UAAUL,CAAC,IAAI;AACvD,YAAIO,IAAI,EAAE,GAAG,EAAE;AACf,cAAKA,KAAA,gBAAAA,EAAG,UAAS,eAAeA,EAAE,QAAQA,EAAE,IAAI,SAAS;AAAA,CAChE,IAAI,KAAK;AAAA,KACLF,EAAE,KAAKE,EAAE,QAAQ;AAAA,IAClBF,EAAE,MAAM,KAAK,YAAY,IAAG,GAAI,KAAK,YAAY,GAAG,EAAE,EAAE,MAAME,EAAE,QAAQ,EAAE,KAAKF,CAAC,GAAG,IAAIL,EAAE,WAAW,EAAE,QAAQ,IAAI,EAAE,UAAUK,EAAE,IAAI,MAAM;AACtI;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAC9B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM;AAC5B,YAAIE,IAAI,EAAE,GAAG,EAAE;AACf,SAAAA,KAAA,gBAAAA,EAAG,UAAS,UAAUA,EAAE,QAAQA,EAAE,IAAI,SAAS;AAAA,CACtD,IAAI,KAAK;AAAA,KACLF,EAAE,KAAKE,EAAE,QAAQ;AAAA,IAClBF,EAAE,MAAM,KAAK,YAAY,IAAG,GAAI,KAAK,YAAY,GAAG,EAAE,EAAE,MAAME,EAAE,QAAQ,EAAE,KAAKF,CAAC;AAC5E;AAAA,MACF;AACA,UAAI,GAAG;AACL,YAAIE,IAAI,4BAA4B,EAAE,WAAW,CAAC;AAClD,YAAI,KAAK,QAAQ,QAAQ;AACvB,kBAAQ,MAAMA,CAAC;AACf;AAAA,QACF,MAAO,OAAM,IAAI,MAAMA,CAAC;AAAA,MAC1B;AAAA,IACF;AACA,WAAO,KAAK,MAAM,MAAM,IAAI;AAAA,EAC9B;AAAA,EACA,OAAO,GAAG,IAAI,IAAI;AAChB,WAAO,KAAK,YAAY,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAC,CAAE,GAAG;AAAA,EACvD;AAAA,EACA,aAAa,GAAG,IAAI,IAAI;;AACtB,QAAI,IAAI,GAAG,IAAI;AACf,QAAI,KAAK,OAAO,OAAO;AACrB,UAAIC,IAAI,OAAO,KAAK,KAAK,OAAO,KAAK;AACrC,UAAIA,EAAE,SAAS,EAAG,SAAQ,IAAI,KAAK,UAAU,MAAM,OAAO,cAAc,KAAK,CAAC,MAAM,OAAQ,CAAAA,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,cAAc,SAAS;AAAA,IACvR;AACA,YAAQ,IAAI,KAAK,UAAU,MAAM,OAAO,eAAe,KAAK,CAAC,MAAM,OAAQ,KAAI,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,eAAe,SAAS;AACxK,YAAQ,IAAI,KAAK,UAAU,MAAM,OAAO,UAAU,KAAK,CAAC,MAAM,OAAQ,KAAI,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,UAAU,SAAS;AACjM,UAAIsG,KAAA7G,IAAA,KAAK,QAAQ,UAAb,gBAAAA,EAAoB,iBAApB,gBAAA6G,EAAkC,KAAK,EAAE,OAAO,QAAQ,OAAM;AAClE,QAAI9G,IAAI,IAAIO,IAAI;AAChB,WAAO,KAAK;AACV,MAAAP,MAAMO,IAAI,KAAKP,IAAI;AACnB,UAAIQ;AACJ,WAAIwG,KAAAD,IAAA,KAAK,QAAQ,eAAb,gBAAAA,EAAyB,WAAzB,QAAAC,EAAiC,KAAK,CAACtG,OAAOF,IAAIE,EAAE,KAAK,EAAE,OAAO,KAAI,GAAI,GAAG,CAAC,MAAM,IAAI,EAAE,UAAUF,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC,GAAG,MAAM,IAAK;AAC7I,UAAIA,IAAI,KAAK,UAAU,OAAO,CAAC,GAAG;AAChC,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AAC7B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAC9B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,QAAQ,GAAG,KAAK,OAAO,KAAK,GAAG;AACpD,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM;AAC5B,YAAIE,IAAI,EAAE,GAAG,EAAE;AACf,QAAAF,EAAE,SAAS,WAAUE,KAAA,gBAAAA,EAAG,UAAS,UAAUA,EAAE,OAAOF,EAAE,KAAKE,EAAE,QAAQF,EAAE,QAAQ,EAAE,KAAKA,CAAC;AACvF;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,SAAS,GAAG,GAAGD,CAAC,GAAG;AACxC,YAAI,EAAE,UAAUC,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,SAAS,CAAC,GAAG;AAClC,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,GAAG,CAAC,GAAG;AAC5B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AAC7B,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIA,IAAI,KAAK,UAAU,SAAS,CAAC,GAAG;AAClC,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAI,CAAC,KAAK,MAAM,WAAWA,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI;AACrD,YAAI,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAG,EAAE,KAAKA,CAAC;AACvC;AAAA,MACF;AACA,UAAIC,IAAI;AACR,WAAImE,IAAA,KAAK,QAAQ,eAAb,QAAAA,EAAyB,aAAa;AACxC,YAAIlE,IAAI,OAAOC,IAAI,EAAE,MAAM,CAAC,GAAGC;AAC/B,aAAK,QAAQ,WAAW,YAAY,QAAQ,CAACC,MAAM;AACjD,UAAAD,IAAIC,EAAE,KAAK,EAAE,OAAO,KAAI,GAAIF,CAAC,GAAG,OAAOC,KAAK,YAAYA,KAAK,MAAMF,IAAI,KAAK,IAAIA,GAAGE,CAAC;AAAA,QACtF,CAAC,GAAGF,IAAI,SAASA,KAAK,MAAMD,IAAI,EAAE,UAAU,GAAGC,IAAI,CAAC;AAAA,MACtD;AACA,UAAIF,IAAI,KAAK,UAAU,WAAWC,CAAC,GAAG;AACpC,YAAI,EAAE,UAAUD,EAAE,IAAI,MAAM,GAAGA,EAAE,IAAI,MAAM,EAAE,MAAM,QAAQD,IAAIC,EAAE,IAAI,MAAM,EAAE,IAAIR,IAAI;AACrF,YAAIU,IAAI,EAAE,GAAG,EAAE;AACf,SAAAA,KAAA,gBAAAA,EAAG,UAAS,UAAUA,EAAE,OAAOF,EAAE,KAAKE,EAAE,QAAQF,EAAE,QAAQ,EAAE,KAAKA,CAAC;AAClE;AAAA,MACF;AACA,UAAI,GAAG;AACL,YAAIE,IAAI,4BAA4B,EAAE,WAAW,CAAC;AAClD,YAAI,KAAK,QAAQ,QAAQ;AACvB,kBAAQ,MAAMA,CAAC;AACf;AAAA,QACF,MAAO,OAAM,IAAI,MAAMA,CAAC;AAAA,MAC1B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF,GAAGuG,KAAI,MAAM;AAAA,EAGX,YAAYzF,GAAG;AAFf,IAAAtB,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,UAAUsB,KAAKF;AAAA,EACtB;AAAA,EACA,MAAME,GAAG;AACP,WAAO;AAAA,EACT;AAAA,EACA,KAAK,EAAE,MAAMA,GAAG,MAAM,GAAG,SAAS,KAAK;;AACrC,QAAI,KAAKvB,KAAA,KAAK,IAAI,MAAM0B,EAAE,aAAa,MAA9B,gBAAA1B,EAAkC,IAAI,IAAIuB,EAAE,QAAQG,EAAE,eAAe,EAAE,IAAI;AAAA;AAEpF,WAAO,IAAI,gCAAgC6D,EAAE,CAAC,IAAI,QAAQ,IAAI,IAAIA,EAAE,GAAG,EAAE,KAAK;AAAA,IAC9E,iBAAiB,IAAI,IAAIA,EAAE,GAAG,EAAE,KAAK;AAAA;AAAA,EAEvC;AAAA,EACA,WAAW,EAAE,QAAQhE,KAAK;AACxB,WAAO;AAAA,EACT,KAAK,OAAO,MAAMA,CAAC,CAAC;AAAA;AAAA,EAEpB;AAAA,EACA,KAAK,EAAE,MAAMA,KAAK;AAChB,WAAOA;AAAA,EACT;AAAA,EACA,IAAIA,GAAG;AACL,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,EAAE,QAAQA,GAAG,OAAO,EAAC,GAAI;AAC/B,WAAO,KAAK,CAAC,IAAI,KAAK,OAAO,YAAYA,CAAC,CAAC,MAAM,CAAC;AAAA;AAAA,EAEpD;AAAA,EACA,GAAGA,GAAG;AACJ,WAAO;AAAA;AAAA,EAET;AAAA,EACA,KAAKA,GAAG;AACN,QAAI,IAAIA,EAAE,SAAS,IAAIA,EAAE,OAAO,IAAI;AACpC,aAASjB,IAAI,GAAGA,IAAIiB,EAAE,MAAM,QAAQjB,KAAK;AACvC,UAAIC,IAAIgB,EAAE,MAAMjB,CAAC;AACjB,WAAK,KAAK,SAASC,CAAC;AAAA,IACtB;AACA,QAAI,IAAI,IAAI,OAAO,MAAMR,IAAI,KAAK,MAAM,IAAI,aAAa,IAAI,MAAM;AACnE,WAAO,MAAM,IAAIA,IAAI;AAAA,IACrB,IAAI,OAAO,IAAI;AAAA;AAAA,EAEjB;AAAA,EACA,SAASwB,GAAG;;AACV,QAAI,IAAI;AACR,QAAIA,EAAE,MAAM;AACV,UAAImF,IAAI,KAAK,SAAS,EAAE,SAAS,CAAC,CAACnF,EAAE,SAAS;AAC9C,MAAAA,EAAE,UAAQvB,IAAAuB,EAAE,OAAO,CAAC,MAAV,gBAAAvB,EAAa,UAAS,eAAeuB,EAAE,OAAO,CAAC,EAAE,OAAOmF,IAAI,MAAMnF,EAAE,OAAO,CAAC,EAAE,MAAMA,EAAE,OAAO,CAAC,EAAE,UAAUA,EAAE,OAAO,CAAC,EAAE,OAAO,SAAS,KAAKA,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,WAAWA,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAOmF,IAAI,MAAMnB,EAAEhE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,GAAGA,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,OAAOA,EAAE,OAAO,QAAQ,EAAE,MAAM,QAAQ,KAAKmF,IAAI,KAAK,MAAMA,IAAI,KAAK,SAAS,IAAI,IAAI,KAAKA,IAAI;AAAA,IACtY;AACA,WAAO,KAAK,KAAK,OAAO,MAAMnF,EAAE,QAAQ,CAAC,CAACA,EAAE,KAAK,GAAG,OAAO,CAAC;AAAA;AAAA,EAE9D;AAAA,EACA,SAAS,EAAE,SAASA,KAAK;AACvB,WAAO,aAAaA,IAAI,gBAAgB,MAAM;AAAA,EAChD;AAAA,EACA,UAAU,EAAE,QAAQA,KAAK;AACvB,WAAO,MAAM,KAAK,OAAO,YAAYA,CAAC,CAAC;AAAA;AAAA,EAEzC;AAAA,EACA,MAAMA,GAAG;AACP,QAAI,IAAI,IAAI,IAAI;AAChB,aAAS,IAAI,GAAG,IAAIA,EAAE,OAAO,QAAQ,IAAK,MAAK,KAAK,UAAUA,EAAE,OAAO,CAAC,CAAC;AACzE,SAAK,KAAK,SAAS,EAAE,MAAM,EAAC,CAAE;AAC9B,QAAI,IAAI;AACR,aAAS,IAAI,GAAG,IAAIA,EAAE,KAAK,QAAQ,KAAK;AACtC,UAAIxB,IAAIwB,EAAE,KAAK,CAAC;AAChB,UAAI;AACJ,eAASjB,IAAI,GAAGA,IAAIP,EAAE,QAAQO,IAAK,MAAK,KAAK,UAAUP,EAAEO,CAAC,CAAC;AAC3D,WAAK,KAAK,SAAS,EAAE,MAAM,EAAC,CAAE;AAAA,IAChC;AACA,WAAO,MAAM,IAAI,UAAU,CAAC,aAAa;AAAA;AAAA,IAEzC,IAAI;AAAA,IACJ,IAAI;AAAA;AAAA,EAEN;AAAA,EACA,SAAS,EAAE,MAAMiB,KAAK;AACpB,WAAO;AAAA,EACTA,CAAC;AAAA;AAAA,EAED;AAAA,EACA,UAAUA,GAAG;AACX,QAAI,IAAI,KAAK,OAAO,YAAYA,EAAE,MAAM,GAAG,IAAIA,EAAE,SAAS,OAAO;AACjE,YAAQA,EAAE,QAAQ,IAAI,CAAC,WAAWA,EAAE,KAAK,OAAO,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;AAAA;AAAA,EAExE;AAAA,EACA,OAAO,EAAE,QAAQA,KAAK;AACpB,WAAO,WAAW,KAAK,OAAO,YAAYA,CAAC,CAAC;AAAA,EAC9C;AAAA,EACA,GAAG,EAAE,QAAQA,KAAK;AAChB,WAAO,OAAO,KAAK,OAAO,YAAYA,CAAC,CAAC;AAAA,EAC1C;AAAA,EACA,SAAS,EAAE,MAAMA,KAAK;AACpB,WAAO,SAASgE,EAAEhE,GAAG,EAAE,CAAC;AAAA,EAC1B;AAAA,EACA,GAAGA,GAAG;AACJ,WAAO;AAAA,EACT;AAAA,EACA,IAAI,EAAE,QAAQA,KAAK;AACjB,WAAO,QAAQ,KAAK,OAAO,YAAYA,CAAC,CAAC;AAAA,EAC3C;AAAA,EACA,KAAK,EAAE,MAAMA,GAAG,OAAO,GAAG,QAAQ,KAAK;AACrC,QAAI,IAAI,KAAK,OAAO,YAAY,CAAC,GAAG,IAAIiE,GAAGjE,CAAC;AAC5C,QAAI,MAAM,KAAM,QAAO;AACvB,IAAAA,IAAI;AACJ,QAAIxB,IAAI,cAAcwB,IAAI;AAC1B,WAAO,MAAMxB,KAAK,aAAawF,EAAE,CAAC,IAAI,MAAMxF,KAAK,MAAM,IAAI,QAAQA;AAAA,EACrE;AAAA,EACA,MAAM,EAAE,MAAMwB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,KAAK;AAC/C,UAAM,IAAI,KAAK,OAAO,YAAY,GAAG,KAAK,OAAO,YAAY;AAC7D,QAAI,IAAIiE,GAAGjE,CAAC;AACZ,QAAI,MAAM,KAAM,QAAOgE,EAAE,CAAC;AAC1B,IAAAhE,IAAI;AACJ,QAAIxB,IAAI,aAAawB,CAAC,UAAU,CAAC;AACjC,WAAO,MAAMxB,KAAK,WAAWwF,EAAE,CAAC,CAAC,MAAMxF,KAAK,KAAKA;AAAA,EACnD;AAAA,EACA,KAAKwB,GAAG;AACN,WAAO,YAAYA,KAAKA,EAAE,SAAS,KAAK,OAAO,YAAYA,EAAE,MAAM,IAAI,aAAaA,KAAKA,EAAE,UAAUA,EAAE,OAAOgE,EAAEhE,EAAE,IAAI;AAAA,EACxH;AACF,GAAG0F,KAAK,MAAM;AAAA,EACZ,OAAO,EAAE,MAAM1F,KAAK;AAClB,WAAOA;AAAA,EACT;AAAA,EACA,GAAG,EAAE,MAAMA,KAAK;AACd,WAAOA;AAAA,EACT;AAAA,EACA,SAAS,EAAE,MAAMA,KAAK;AACpB,WAAOA;AAAA,EACT;AAAA,EACA,IAAI,EAAE,MAAMA,KAAK;AACf,WAAOA;AAAA,EACT;AAAA,EACA,KAAK,EAAE,MAAMA,KAAK;AAChB,WAAOA;AAAA,EACT;AAAA,EACA,KAAK,EAAE,MAAMA,KAAK;AAChB,WAAOA;AAAA,EACT;AAAA,EACA,KAAK,EAAE,MAAMA,KAAK;AAChB,WAAO,KAAKA;AAAA,EACd;AAAA,EACA,MAAM,EAAE,MAAMA,KAAK;AACjB,WAAO,KAAKA;AAAA,EACd;AAAA,EACA,KAAK;AACH,WAAO;AAAA,EACT;AACF,GAAG2F,IAAI,MAAMC,GAAG;AAAA,EAId,YAAY,GAAG;AAHf,IAAAlH,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,UAAU,KAAKoB,GAAG,KAAK,QAAQ,WAAW,KAAK,QAAQ,YAAY,IAAI2F,GAAC,GAAI,KAAK,WAAW,KAAK,QAAQ,UAAU,KAAK,SAAS,UAAU,KAAK,SAAS,KAAK,SAAS,SAAS,MAAM,KAAK,eAAe,IAAIC,GAAE;AAAA,EACvN;AAAA,EACA,OAAO,MAAM,GAAG,GAAG;AACjB,WAAO,IAAIE,GAAG,CAAC,EAAE,MAAM,CAAC;AAAA,EAC1B;AAAA,EACA,OAAO,YAAY,GAAG,GAAG;AACvB,WAAO,IAAIA,GAAG,CAAC,EAAE,YAAY,CAAC;AAAA,EAChC;AAAA,EACA,MAAM,GAAG,IAAI,IAAI;;AACf,QAAI,IAAI;AACR,aAAS/G,IAAI,GAAGA,IAAI,EAAE,QAAQA,KAAK;AACjC,UAAI,IAAI,EAAEA,CAAC;AACX,WAAIyG,KAAA7G,IAAA,KAAK,QAAQ,eAAb,gBAAAA,EAAyB,cAAzB,QAAA6G,EAAqC,EAAE,OAAO;AAChD,YAAItG,IAAI,GAAGC,IAAI,KAAK,QAAQ,WAAW,UAAUD,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAI,GAAIA,CAAC;AACjF,YAAIC,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,WAAW,QAAQ,SAAS,cAAc,QAAQ,QAAQ,OAAO,aAAa,MAAM,EAAE,SAASD,EAAE,IAAI,GAAG;AACvI,eAAKC,KAAK;AACV;AAAA,QACF;AAAA,MACF;AACA,UAAIF,IAAI;AACR,cAAQA,EAAE,MAAI;AAAA,QACZ,KAAK,SAAS;AACZ,eAAK,KAAK,SAAS,MAAMA,CAAC;AAC1B;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,eAAK,KAAK,SAAS,GAAGA,CAAC;AACvB;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,eAAK,KAAK,SAAS,QAAQA,CAAC;AAC5B;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,eAAK,KAAK,SAAS,KAAKA,CAAC;AACzB;AAAA,QACF;AAAA,QACA,KAAK,SAAS;AACZ,eAAK,KAAK,SAAS,MAAMA,CAAC;AAC1B;AAAA,QACF;AAAA,QACA,KAAK,cAAc;AACjB,eAAK,KAAK,SAAS,WAAWA,CAAC;AAC/B;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,eAAK,KAAK,SAAS,KAAKA,CAAC;AACzB;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,eAAK,KAAK,SAAS,KAAKA,CAAC;AACzB;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACV,eAAK,KAAK,SAAS,IAAIA,CAAC;AACxB;AAAA,QACF;AAAA,QACA,KAAK,aAAa;AAChB,eAAK,KAAK,SAAS,UAAUA,CAAC;AAC9B;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,cAAIC,IAAID,GAAGE,IAAI,KAAK,SAAS,KAAKD,CAAC;AACnC,iBAAOH,IAAI,IAAI,EAAE,UAAU,EAAEA,IAAI,CAAC,EAAE,SAAS,SAAU,CAAAG,IAAI,EAAE,EAAEH,CAAC,GAAGI,KAAK;AAAA,IAC9E,KAAK,SAAS,KAAKD,CAAC;AACd,cAAI,KAAK,KAAK,SAAS,UAAU,EAAE,MAAM,aAAa,KAAKC,GAAG,MAAMA,GAAG,QAAQ,CAAC,EAAE,MAAM,QAAQ,KAAKA,GAAG,MAAMA,GAAG,SAAS,GAAE,CAAE,GAAG,IAAI,KAAKA;AAC1I;AAAA,QACF;AAAA,QACA,SAAS;AACP,cAAID,IAAI,iBAAiBD,EAAE,OAAO;AAClC,cAAI,KAAK,QAAQ,OAAQ,QAAO,QAAQ,MAAMC,CAAC,GAAG;AAClD,gBAAM,IAAI,MAAMA,CAAC;AAAA,QACnB;AAAA,MACR;AAAA,IACI;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,GAAG,IAAI,KAAK,UAAU;;AAChC,QAAI,IAAI;AACR,aAASH,IAAI,GAAGA,IAAI,EAAE,QAAQA,KAAK;AACjC,UAAI,IAAI,EAAEA,CAAC;AACX,WAAIyG,KAAA7G,IAAA,KAAK,QAAQ,eAAb,gBAAAA,EAAyB,cAAzB,QAAA6G,EAAqC,EAAE,OAAO;AAChD,YAAItG,IAAI,KAAK,QAAQ,WAAW,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAI,GAAI,CAAC;AAC1E,YAAIA,MAAM,MAAM,CAAC,CAAC,UAAU,QAAQ,QAAQ,SAAS,UAAU,MAAM,YAAY,MAAM,OAAO,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG;AACtH,eAAKA,KAAK;AACV;AAAA,QACF;AAAA,MACF;AACA,UAAID,IAAI;AACR,cAAQA,EAAE,MAAI;AAAA,QACZ,KAAK,UAAU;AACb,eAAK,EAAE,KAAKA,CAAC;AACb;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,eAAK,EAAE,KAAKA,CAAC;AACb;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,eAAK,EAAE,KAAKA,CAAC;AACb;AAAA,QACF;AAAA,QACA,KAAK,SAAS;AACZ,eAAK,EAAE,MAAMA,CAAC;AACd;AAAA,QACF;AAAA,QACA,KAAK,UAAU;AACb,eAAK,EAAE,OAAOA,CAAC;AACf;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,eAAK,EAAE,GAAGA,CAAC;AACX;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,eAAK,EAAE,SAASA,CAAC;AACjB;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,eAAK,EAAE,GAAGA,CAAC;AACX;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACV,eAAK,EAAE,IAAIA,CAAC;AACZ;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,eAAK,EAAE,KAAKA,CAAC;AACb;AAAA,QACF;AAAA,QACA,SAAS;AACP,cAAIC,IAAI,iBAAiBD,EAAE,OAAO;AAClC,cAAI,KAAK,QAAQ,OAAQ,QAAO,QAAQ,MAAMC,CAAC,GAAG;AAClD,gBAAM,IAAI,MAAMA,CAAC;AAAA,QACnB;AAAA,MACR;AAAA,IACI;AACA,WAAO;AAAA,EACT;AACF,OAAG6G,KAAIpH,KAAA,MAAM;AAAA,EAGX,YAAYuB,GAAG;AAFf,IAAAtB,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,UAAUsB,KAAKF;AAAA,EACtB;AAAA,EAGA,WAAWE,GAAG;AACZ,WAAOA;AAAA,EACT;AAAA,EACA,YAAYA,GAAG;AACb,WAAOA;AAAA,EACT;AAAA,EACA,iBAAiBA,GAAG;AAClB,WAAOA;AAAA,EACT;AAAA,EACA,aAAaA,GAAG;AACd,WAAOA;AAAA,EACT;AAAA,EACA,eAAe;AACb,WAAO,KAAK,QAAQoF,EAAE,MAAMA,EAAE;AAAA,EAChC;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,QAAQO,EAAE,QAAQA,EAAE;AAAA,EAClC;AACF,GApBEjH,EANKD,IAME,oBAAmC,oBAAI,IAAI,CAAC,cAAc,eAAe,oBAAoB,cAAc,CAAC,IACnHC,EAPKD,IAOE,gCAA+C,oBAAI,IAAI,CAAC,cAAc,eAAe,kBAAkB,CAAC,IAP1GA,KA0BJqH,KAAK,MAAM;AAAA,EAWZ,eAAe9F,GAAG;AAVlB,IAAAtB,EAAA,kBAAWmB,GAAE;AACb,IAAAnB,EAAA,iBAAU,KAAK;AACf,IAAAA,EAAA,eAAQ,KAAK,cAAc,EAAE;AAC7B,IAAAA,EAAA,qBAAc,KAAK,cAAc,EAAE;AACnC,IAAAA,EAAA,gBAASiH;AACT,IAAAjH,EAAA,kBAAW+G;AACX,IAAA/G,EAAA,sBAAegH;AACf,IAAAhH,EAAA,eAAQ0G;AACR,IAAA1G,EAAA,mBAAY6F;AACZ,IAAA7F,EAAA,eAAQmH;AAEN,SAAK,IAAI,GAAG7F,CAAC;AAAA,EACf;AAAA,EACA,WAAWA,GAAG,GAAG;;AACf,QAAI,IAAI,CAAA;AACR,aAASzB,KAAKyB,EAAG,SAAQ,IAAI,EAAE,OAAO,EAAE,KAAK,MAAMzB,CAAC,CAAC,GAAGA,EAAE,MAAI;AAAA,MAC5D,KAAK,SAAS;AACZ,YAAIM,IAAIN;AACR,iBAAS,KAAKM,EAAE,OAAQ,KAAI,EAAE,OAAO,KAAK,WAAW,EAAE,QAAQ,CAAC,CAAC;AACjE,iBAAS,KAAKA,EAAE,KAAM,UAASE,KAAK,EAAG,KAAI,EAAE,OAAO,KAAK,WAAWA,EAAE,QAAQ,CAAC,CAAC;AAChF;AAAA,MACF;AAAA,MACA,KAAK,QAAQ;AACX,YAAIF,IAAIN;AACR,YAAI,EAAE,OAAO,KAAK,WAAWM,EAAE,OAAO,CAAC,CAAC;AACxC;AAAA,MACF;AAAA,MACA,SAAS;AACP,YAAIA,IAAIN;AACR,SAAA+G,KAAA7G,IAAA,KAAK,SAAS,eAAd,gBAAAA,EAA0B,gBAA1B,QAAA6G,EAAwCzG,EAAE,QAAQ,KAAK,SAAS,WAAW,YAAYA,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM;AAC5G,cAAIE,IAAIF,EAAE,CAAC,EAAE,KAAK,KAAK;AACvB,cAAI,EAAE,OAAO,KAAK,WAAWE,GAAG,CAAC,CAAC;AAAA,QACpC,CAAC,IAAIF,EAAE,WAAW,IAAI,EAAE,OAAO,KAAK,WAAWA,EAAE,QAAQ,CAAC,CAAC;AAAA,MAC7D;AAAA,IACN;AACI,WAAO;AAAA,EACT;AAAA,EACA,OAAOmB,GAAG;AACR,QAAI,IAAI,KAAK,SAAS,cAAc,EAAE,WAAW,CAAA,GAAI,aAAa,GAAE;AACpE,WAAOA,EAAE,QAAQ,CAAC,MAAM;AACtB,UAAI,IAAI,EAAE,GAAG,EAAC;AACd,UAAI,EAAE,QAAQ,KAAK,SAAS,SAAS,EAAE,SAAS,IAAI,EAAE,eAAe,EAAE,WAAW,QAAQ,CAAC,MAAM;AAC/F,YAAI,CAAC,EAAE,KAAM,OAAM,IAAI,MAAM,yBAAyB;AACtD,YAAI,cAAc,GAAG;AACnB,cAAIxB,IAAI,EAAE,UAAU,EAAE,IAAI;AAC1B,UAAAA,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,YAAYO,GAAG;AACvC,gBAAIC,IAAI,EAAE,SAAS,MAAM,MAAMD,CAAC;AAChC,mBAAOC,MAAM,OAAOA,IAAIR,EAAE,MAAM,MAAMO,CAAC,IAAIC;AAAA,UAC7C,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE;AAAA,QAC9B;AACA,YAAI,eAAe,GAAG;AACpB,cAAI,CAAC,EAAE,SAAS,EAAE,UAAU,WAAW,EAAE,UAAU,SAAU,OAAM,IAAI,MAAM,6CAA6C;AAC1H,cAAIR,IAAI,EAAE,EAAE,KAAK;AACjB,UAAAA,IAAIA,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,SAAS,GAAG,EAAE,UAAU,EAAE,UAAU,UAAU,EAAE,aAAa,EAAE,WAAW,KAAK,EAAE,KAAK,IAAI,EAAE,aAAa,CAAC,EAAE,KAAK,IAAI,EAAE,UAAU,aAAa,EAAE,cAAc,EAAE,YAAY,KAAK,EAAE,KAAK,IAAI,EAAE,cAAc,CAAC,EAAE,KAAK;AAAA,QACnQ;AACA,yBAAiB,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE;AAAA,MACpE,CAAC,GAAG,EAAE,aAAa,IAAI,EAAE,UAAU;AACjC,YAAI,IAAI,KAAK,SAAS,YAAY,IAAIiH,GAAE,KAAK,QAAQ;AACrD,iBAASjH,KAAK,EAAE,UAAU;AACxB,cAAI,EAAEA,KAAK,GAAI,OAAM,IAAI,MAAM,aAAaA,CAAC,kBAAkB;AAC/D,cAAI,CAAC,WAAW,QAAQ,EAAE,SAASA,CAAC,EAAG;AACvC,cAAIO,IAAIP,GAAGQ,IAAI,EAAE,SAASD,CAAC,GAAGE,IAAI,EAAEF,CAAC;AACrC,YAAEA,CAAC,IAAI,IAAIG,MAAM;AACf,gBAAIC,IAAIH,EAAE,MAAM,GAAGE,CAAC;AACpB,mBAAOC,MAAM,OAAOA,IAAIF,EAAE,MAAM,GAAGC,CAAC,IAAIC,KAAK;AAAA,UAC/C;AAAA,QACF;AACA,UAAE,WAAW;AAAA,MACf;AACA,UAAI,EAAE,WAAW;AACf,YAAI,IAAI,KAAK,SAAS,aAAa,IAAIoF,GAAE,KAAK,QAAQ;AACtD,iBAAS/F,KAAK,EAAE,WAAW;AACzB,cAAI,EAAEA,KAAK,GAAI,OAAM,IAAI,MAAM,cAAcA,CAAC,kBAAkB;AAChE,cAAI,CAAC,WAAW,SAAS,OAAO,EAAE,SAASA,CAAC,EAAG;AAC/C,cAAIO,IAAIP,GAAGQ,IAAI,EAAE,UAAUD,CAAC,GAAGE,IAAI,EAAEF,CAAC;AACtC,YAAEA,CAAC,IAAI,IAAIG,MAAM;AACf,gBAAIC,IAAIH,EAAE,MAAM,GAAGE,CAAC;AACpB,mBAAOC,MAAM,OAAOA,IAAIF,EAAE,MAAM,GAAGC,CAAC,IAAIC;AAAA,UAC1C;AAAA,QACF;AACA,UAAE,YAAY;AAAA,MAChB;AACA,UAAI,EAAE,OAAO;AACX,YAAI,IAAI,KAAK,SAAS,SAAS,IAAI0G,EAAC;AACpC,iBAASrH,KAAK,EAAE,OAAO;AACrB,cAAI,EAAEA,KAAK,GAAI,OAAM,IAAI,MAAM,SAASA,CAAC,kBAAkB;AAC3D,cAAI,CAAC,WAAW,OAAO,EAAE,SAASA,CAAC,EAAG;AACtC,cAAIO,IAAIP,GAAGQ,IAAI,EAAE,MAAMD,CAAC,GAAGE,IAAI,EAAEF,CAAC;AAClC,UAAA8G,EAAE,iBAAiB,IAAIrH,CAAC,IAAI,EAAEO,CAAC,IAAI,CAACG,MAAM;AACxC,gBAAI,KAAK,SAAS,SAAS2G,EAAE,6BAA6B,IAAIrH,CAAC,EAAG,SAAQ,YAAY;AACpF,kBAAIY,IAAI,MAAMJ,EAAE,KAAK,GAAGE,CAAC;AACzB,qBAAOD,EAAE,KAAK,GAAGG,CAAC;AAAA,YACpB,GAAC;AACD,gBAAID,IAAIH,EAAE,KAAK,GAAGE,CAAC;AACnB,mBAAOD,EAAE,KAAK,GAAGE,CAAC;AAAA,UACpB,IAAI,EAAEJ,CAAC,IAAI,IAAIG,MAAM;AACnB,gBAAI,KAAK,SAAS,MAAO,SAAQ,YAAY;AAC3C,kBAAIE,IAAI,MAAMJ,EAAE,MAAM,GAAGE,CAAC;AAC1B,qBAAOE,MAAM,OAAOA,IAAI,MAAMH,EAAE,MAAM,GAAGC,CAAC,IAAIE;AAAA,YAChD,GAAC;AACD,gBAAID,IAAIH,EAAE,MAAM,GAAGE,CAAC;AACpB,mBAAOC,MAAM,OAAOA,IAAIF,EAAE,MAAM,GAAGC,CAAC,IAAIC;AAAA,UAC1C;AAAA,QACF;AACA,UAAE,QAAQ;AAAA,MACZ;AACA,UAAI,EAAE,YAAY;AAChB,YAAI,IAAI,KAAK,SAAS,YAAYX,IAAI,EAAE;AACxC,UAAE,aAAa,SAASO,GAAG;AACzB,cAAIC,IAAI,CAAA;AACR,iBAAOA,EAAE,KAAKR,EAAE,KAAK,MAAMO,CAAC,CAAC,GAAG,MAAMC,IAAIA,EAAE,OAAO,EAAE,KAAK,MAAMD,CAAC,CAAC,IAAIC;AAAA,QACxE;AAAA,MACF;AACA,WAAK,WAAW,EAAE,GAAG,KAAK,UAAU,GAAG,EAAC;AAAA,IAC1C,CAAC,GAAG;AAAA,EACN;AAAA,EACA,WAAWgB,GAAG;AACZ,WAAO,KAAK,WAAW,EAAE,GAAG,KAAK,UAAU,GAAGA,EAAC,GAAI;AAAA,EACrD;AAAA,EACA,MAAMA,GAAG,GAAG;AACV,WAAOoF,EAAE,IAAIpF,GAAG,KAAK,KAAK,QAAQ;AAAA,EACpC;AAAA,EACA,OAAOA,GAAG,GAAG;AACX,WAAO2F,EAAE,MAAM3F,GAAG,KAAK,KAAK,QAAQ;AAAA,EACtC;AAAA,EACA,cAAcA,GAAG;AACf,WAAO,CAAC,GAAG,MAAM;AACf,UAAI,IAAI,EAAE,GAAG,EAAC,GAAI,IAAI,EAAE,GAAG,KAAK,UAAU,GAAG,EAAC,GAAIxB,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK;AACxF,UAAI,KAAK,SAAS,UAAU,MAAM,EAAE,UAAU,GAAI,QAAOA,EAAE,IAAI,MAAM,oIAAoI,CAAC;AAC1M,UAAI,OAAO,IAAI,OAAO,MAAM,KAAM,QAAOA,EAAE,IAAI,MAAM,gDAAgD,CAAC;AACtG,UAAI,OAAO,KAAK,SAAU,QAAOA,EAAE,IAAI,MAAM,0CAA0C,OAAO,UAAU,SAAS,KAAK,CAAC,IAAI,mBAAmB,CAAC;AAC/I,UAAI,EAAE,UAAU,EAAE,MAAM,UAAU,GAAG,EAAE,MAAM,QAAQwB,IAAI,EAAE,MAAO,SAAQ,YAAY;AACpF,YAAIjB,IAAI,EAAE,QAAQ,MAAM,EAAE,MAAM,WAAW,CAAC,IAAI,GAAGC,IAAI,OAAO,EAAE,QAAQ,MAAM,EAAE,MAAM,aAAY,IAAKgB,IAAIoF,EAAE,MAAMA,EAAE,WAAWrG,GAAG,CAAC,GAAGE,IAAI,EAAE,QAAQ,MAAM,EAAE,MAAM,iBAAiBD,CAAC,IAAIA;AACzL,UAAE,cAAc,MAAM,QAAQ,IAAI,KAAK,WAAWC,GAAG,EAAE,UAAU,CAAC;AAClE,YAAIC,IAAI,OAAO,EAAE,QAAQ,MAAM,EAAE,MAAM,cAAa,IAAKc,IAAI2F,EAAE,QAAQA,EAAE,aAAa1G,GAAG,CAAC;AAC1F,eAAO,EAAE,QAAQ,MAAM,EAAE,MAAM,YAAYC,CAAC,IAAIA;AAAA,MAClD,GAAC,EAAI,MAAMV,CAAC;AACZ,UAAI;AACF,UAAE,UAAU,IAAI,EAAE,MAAM,WAAW,CAAC;AACpC,YAAIO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAY,IAAKiB,IAAIoF,EAAE,MAAMA,EAAE,WAAW,GAAG,CAAC;AACzE,UAAE,UAAUrG,IAAI,EAAE,MAAM,iBAAiBA,CAAC,IAAI,EAAE,cAAc,KAAK,WAAWA,GAAG,EAAE,UAAU;AAC7F,YAAIC,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAa,IAAKgB,IAAI2F,EAAE,QAAQA,EAAE,aAAa5G,GAAG,CAAC;AAC9E,eAAO,EAAE,UAAUC,IAAI,EAAE,MAAM,YAAYA,CAAC,IAAIA;AAAA,MAClD,SAASD,GAAG;AACV,eAAOP,EAAEO,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQiB,GAAG,GAAG;AACZ,WAAO,CAAC,MAAM;AACZ,UAAI,EAAE,WAAW;AAAA,4DACqCA,GAAG;AACvD,YAAI,IAAI,mCAAmCgE,EAAE,EAAE,UAAU,IAAI,EAAE,IAAI;AACnE,eAAO,IAAI,QAAQ,QAAQ,CAAC,IAAI;AAAA,MAClC;AACA,UAAI,EAAG,QAAO,QAAQ,OAAO,CAAC;AAC9B,YAAM;AAAA,IACR;AAAA,EACF;AACF,GAAG+B,IAAI,IAAID,GAAE;AACb,SAASE,EAAEhG,GAAG,GAAG;AACf,SAAO+F,EAAE,MAAM/F,GAAG,CAAC;AACrB;AACAgG,EAAE,UAAUA,EAAE,aAAa,SAAShG,GAAG;AACrC,SAAO+F,EAAE,WAAW/F,CAAC,GAAGgG,EAAE,WAAWD,EAAE,UAAUhG,GAAGiG,EAAE,QAAQ,GAAGA;AACnE;AACAA,EAAE,cAAcnG;AAChBmG,EAAE,WAAWlG;AACbkG,EAAE,MAAM,YAAYhG,GAAG;AACrB,SAAO+F,EAAE,IAAI,GAAG/F,CAAC,GAAGgG,EAAE,WAAWD,EAAE,UAAUhG,GAAGiG,EAAE,QAAQ,GAAGA;AAC/D;AACAA,EAAE,aAAa,SAAShG,GAAG,GAAG;AAC5B,SAAO+F,EAAE,WAAW/F,GAAG,CAAC;AAC1B;AACAgG,EAAE,cAAcD,EAAE;AAClBC,EAAE,SAASL;AACXK,EAAE,SAASL,EAAE;AACbK,EAAE,WAAWP;AACbO,EAAE,eAAeN;AACjBM,EAAE,QAAQZ;AACVY,EAAE,QAAQZ,EAAE;AACZY,EAAE,YAAYzB;AACdyB,EAAE,QAAQH;AACVG,EAAE,QAAQA;AACVA,EAAE;AACFA,EAAE;AACFA,EAAE;AACFA,EAAE;AACFA,EAAE;AACFL,EAAE;AACFP,EAAE;AACF,MAAMa,KAAN,MAAMA,GAAG;AAAA,EAAT;AAEE,IAAAvH,EAAA,qBAAc;AACd,IAAAA,EAAA,sBAAe;AACf,IAAAA,EAAA,sBAAe,CAAA;AACf,IAAAA,EAAA,wBAAiC,oBAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AACrD,IAAAA,EAAA,yBAAkC,oBAAI,IAAG;AAAA;AAAA;AAAA,EAEzC,OAAO,cAAc;AACnB,WAAO,KAAK,aAAa,KAAK,WAAW,IAAIuH,GAAE,IAAK,KAAK;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,GAAG;AACb,QAAI,CAAC,KAAK,eAAe,IAAI,CAAC,GAAG;AAC/B,cAAQ,KAAK,yCAAyC,CAAC,EAAE;AACzD;AAAA,IACF;AACA,SAAK,gBAAgB,MAAM,KAAK,cAAc;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAIA,oBAAoB,GAAG;AACrB,QAAI,CAAC,KAAK,eAAe,IAAI,CAAC,GAAG;AAC/B,cAAQ,KAAK,kDAAkD,CAAC,EAAE;AAClE;AAAA,IACF;AACA,SAAK,eAAe;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,yBAAyB,GAAG;AAChC,UAAM,QAAQ;AAAA,MACZ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,EAAC,MAAO,KAAK,iBAAiB,GAAG,CAAC,CAAC;AAAA,IAChE;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAiB,GAAG,GAAG;AAC3B,QAAI,KAAK,gBAAgB,IAAI,CAAC;AAC5B,aAAO,KAAK,gBAAgB,IAAI,CAAC;AACnC,UAAM,KAAK,YAAY;AACrB,UAAI;AACF,cAAM,IAAI,MAAM,MAAM,CAAC;AACvB,YAAI,CAAC,EAAE;AACL,gBAAM,IAAI;AAAA,YACR,gCAAgC,EAAE,UAAU;AAAA,UACxD;AACQ,cAAMzH,IAAI,MAAM,EAAE,KAAI;AACtB,aAAK,gBAAgB,GAAGA,CAAC;AAAA,MAC3B,SAAS,GAAG;AACV,cAAM,QAAQ;AAAA,UACZ,kDAAkD,CAAC;AAAA,UACnD;AAAA,QACV,GAAW;AAAA,MACL,UAAC;AACC,aAAK,gBAAgB,OAAO,CAAC;AAAA,MAC/B;AAAA,IACF,GAAC;AACD,WAAO,KAAK,gBAAgB,IAAI,GAAG,CAAC,GAAG;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAIA,sBAAsB;AACpB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc;AACZ,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAEA,YAAY,GAAG;AACb,SAAK,eAAe,IAAI,CAAC,KAAK,KAAK,eAAe,IAAI,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA,EAIA,wBAAwB;AACtB,WAAO,MAAM,KAAK,KAAK,cAAc;AAAA,EACvC;AAAA;AAAA,EAEA,gBAAgB,GAAG,GAAG;AACpB,SAAK,YAAY,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI;AAAA,MAC1C,GAAG,KAAK,aAAa,CAAC,KAAK,CAAA;AAAA,MAC3B,GAAG;AAAA,IACT;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,EAAE,GAAG,GAAG;AACN,UAAM,IAAI,KAAK,aAAa,IAAI,KAAK,aAAa,CAAC,GAAGA,IAAI,KAAK,aAAa,KAAK,YAAY,GAAGO,IAAI,CAACE,GAAGC,MAAMA,EAAE,MAAM,GAAG,EAAE,OAAO,CAACC,GAAG,MAAMA,KAAA,gBAAAA,EAAI,IAAIF,CAAC;AACrJ,WAAO,IAAIF,EAAE,GAAG,CAAC,KAAKA,EAAEP,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,KAAIA,KAAA,gBAAAA,EAAI,OAAM,KAAK;AAAA,EACnE;AAAA;AAAA,EAEA,iBAAiB;AACf,UAAM2G,KAAK,SAAS,gBAAgB,QAAQ,SAAS,KAAK,QAAQ,UAAU,YAAY,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,YAAW;AACvH,WAAO,KAAK,eAAe,IAAIA,CAAC,MAAM,KAAK,cAAcA,IAAI,KAAK;AAAA,EACpE;AACF;AAlHEzG,EADIuH,IACG,YAAW;AADpB,IAAMC,KAAND;AAoHK,MAACE,IAAID,GAAG,YAAW,GAClBE,IAAN,MAAMA,EAAE;AAAA,EAKN,YAAY,GAAG;AAJf,IAAA1H,EAAA,sBAAe;AACf,IAAAA,EAAA,oBAAa;AACb,IAAAA,EAAA;AAGE,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS;AACb,QAAI;AACF,UAAI,KAAK,mBAAmB;AAC1B,eAAO,KAAK;AACd,UAAI,OAAO,KAAK,WAAW,UAAU;AACnC,cAAM,IAAIyH,EAAE,EAAE,KAAK,OAAO;AAC1B,eAAO,IAAI,KAAK,aAAa,CAAC,IAAI,KAAK,aAAa,KAAK,OAAO;AAAA,MAClE;AACA,UAAI,IAAI,KAAK;AACb,YAAM,IAAI,MAAM,KAAK,sBAAsB,KAAK,OAAO;AACvD,aAAO,aAAa,cAAc,IAAI,IAAI,IAAI,MAAM,KAAK,aAAa,CAAC,GAAG;AAAA,IAC5E,QAAQ;AACN,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,GAAG;AACpB,UAAM,IAAI,MAAMH,EAAE,MAAM,CAAC;AACzB,WAAO,KAAK,aAAa,CAAC;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,sBAAsB,GAAG;AAC7B,QAAI;AACJ,QAAI,OAAO,KAAK,YAAY;AAC1B,YAAM,IAAI,EAAC;AACX,UAAI,aAAa,UAAU,MAAM,IAAI;AAAA,IACvC;AACE,UAAI;AACN,QAAI,OAAO,KAAK,YAAY,KAAK,MAAM,CAAC,GAAG;AACzC,UAAII,EAAE,MAAM,IAAI,CAAC;AACf,eAAOA,EAAE,MAAM,IAAI,CAAC;AACtB,UAAI;AACF,cAAM,IAAI,MAAM,MAAM,CAAC;AACvB,YAAI,CAAC,EAAE,GAAI,OAAM,IAAI,MAAM,QAAQ,EAAE,MAAM,EAAE;AAC7C,cAAM,IAAI,MAAM,EAAE,KAAI,GAAI5H,IAAI,MAAM,KAAK,aAAa,CAAC;AACvD,eAAO4H,EAAE,MAAM,IAAI,GAAG5H,CAAC,GAAGA;AAAA,MAC5B,QAAQ;AACN,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,GAAG;AACP,WAAO,gBAAgB,KAAK,CAAC;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAa,GAAG;AACd,UAAM,IAAI,SAAS,cAAc,KAAK;AACtC,WAAO,EAAE,YAAY,GAAG;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,EAAM;AAAA,MACA,CAACK,MAAM,EAAE,iBAAiBA,CAAC,EAAE,QAAQ,CAACL,MAAMA,EAAE,OAAM,CAAE;AAAA,IAC5D,GAAO,EAAE,iBAAiB,GAAG,EAAE,QAAQ,CAACK,MAAM;AACxC,OAAC,GAAGA,EAAE,UAAU,EAAE,QAAQ,CAACL,MAAM;AAC/B,cAAMO,IAAIP,EAAE,KAAK,YAAW;AAC5B,QAAAO,EAAE,WAAW,IAAI,KAAKF,EAAE,gBAAgBL,EAAE,IAAI,GAAG,CAAC,UAAU,UAAU,YAAY,EAAE,SAASO,CAAC,KAAKF,EAAE,gBAAgBL,EAAE,IAAI;AAAA,MAC7H,CAAC;AAAA,IACH,CAAC,GAAG,EAAE,iBAAiB,iBAAiB,EAAE,QAAQ,CAACK,MAAM;AACvD,YAAML,IAAIK,EAAE,aAAa,MAAM;AAC/B,MAAAL,KAAKA,EAAE,KAAI,EAAG,YAAW,EAAG,WAAW,aAAa,KAAKK,EAAE,gBAAgB,MAAM;AAAA,IACnF,CAAC,GAAG,EAAE;AAAA,EACR;AACF;AA1FEH,EAJI0H,GAIG,SAAwB,oBAAI,IAAG;AAJxC,IAAMC,KAAND;AA+FA,MAAME,IAAN,MAAMA,EAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeP,OAAO,SAAS,GAAG,GAAG,IAAI,OAAO,GAAG9H,IAAI8H,EAAG,gBAAgB;AACzD,QAAI,OAAO,SAAS,OAAO,CAAC,KAAK,CAAC;AAChC;AACF,UAAMvH,IAAI,KAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACAP;AAAA,MACA;AAAA,IACN;AACI,MAAE,MAAM,MAAM,GAAGO,EAAE,GAAG,MAAM,EAAE,MAAM,OAAO,GAAGA,EAAE,IAAI;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,kBAAkB,GAAG,GAAG,GAAG,GAAGP,GAAG;AACtC,UAAMO,IAAI,EAAE,sBAAqB;AACjC,QAAIC,IAAI,EAAE,sBAAqB;AAC/B,UAAMC,IAAI,OAAO,SAASC,IAAI,OAAO,SAASC,IAAI,OAAO,YAAYC,IAAI,OAAO,aAAa;AAAA,MAC3F,KAAKC;AAAA,MACL,MAAMmF;AAAA,MACN,QAAQC;AAAA,MACR,OAAOC;AAAA,MACP,OAAOQ;AAAA,MACP,QAAQP;AAAA,IACd,IAAQ5F;AACJ,IAAAC,IAAI,EAAE,sBAAqB;AAC3B,UAAM4F,IAAI5F,EAAE,OAAO6F,IAAI7F,EAAE,QAAQ8F,IAAI;AAAA,MACnC,KAAKzF,IAAI,IAAI,KAAK;AAAA,MAClB,QAAQD,IAAIqF,IAAI,IAAI,KAAK;AAAA,MACzB,MAAMD,IAAI,IAAI,KAAK;AAAA,MACnB,OAAOrF,IAAIuF,IAAI,IAAI,KAAK;AAAA,IAC9B,GAAOK,KAAI;AAAA,MACL,KAAKD,EAAE,OAAOD;AAAA,MACd,QAAQC,EAAE,UAAUD;AAAA,MACpB,MAAMC,EAAE,QAAQF;AAAA,MAChB,OAAOE,EAAE,SAASF;AAAA,IACxB;AACI,IAAApG,MAAM,MAAM,SAAS,IAAI,UAAU,MAAM,YAAY,IAAI;AACzD,QAAIwG,IAAI;AACR,QAAI,CAACD,GAAE,CAAC,GAAG;AACT,YAAMwB,KAAK;AAAA,QACT,KAAK,CAAC,UAAU,SAAS,MAAM;AAAA,QAC/B,QAAQ,CAAC,OAAO,SAAS,MAAM;AAAA,QAC/B,MAAM,CAAC,SAAS,OAAO,QAAQ;AAAA,QAC/B,OAAO,CAAC,QAAQ,OAAO,QAAQ;AAAA,MACvC;AACM,iBAAWC,MAAMD,GAAG,CAAC;AACnB,YAAIxB,GAAEyB,EAAE,GAAG;AACT,UAAAxB,IAAIwB;AACJ;AAAA,QACF;AAAA,IACJ;AACA,UAAMvB,IAAIT,IAAIvF,KAAKiG,IAAIN,KAAK,GAAG6B,KAAKpH,IAAIH,KAAKyF,IAAIE,KAAK;AACtD,QAAI6B,IAAI,GAAGC,IAAI;AACf,YAAQ3B,GAAC;AAAA,MACP,KAAK;AACH,QAAA0B,IAAIrH,IAAIH,IAAI2F,IAAI,GAAG8B,IAAI1B;AACvB;AAAA,MACF,KAAK;AACH,QAAAyB,IAAIjC,IAAIvF,IAAI,GAAGyH,IAAI1B;AACnB;AAAA,MACF,KAAK;AACH,QAAAyB,IAAID,IAAIE,IAAInC,IAAIvF,IAAI2F,IAAI;AACxB;AAAA,MACF,KAAK;AACH,QAAA8B,IAAID,IAAIE,IAAIjC,IAAIzF,IAAI;AACpB;AAAA,IACR;AACI,IAAAyH,IAAI,KAAK;AAAA,MACPxH,IAAI,KAAK;AAAA,MACT,KAAK,IAAIwH,GAAGxH,IAAIE,IAAIyF,IAAI,KAAK,gBAAgB;AAAA,IACnD,GAAO8B,IAAI,KAAK;AAAA,MACV1H,IAAI,KAAK;AAAA,MACT,KAAK,IAAI0H,GAAG1H,IAAIE,IAAIyF,IAAI,KAAK,gBAAgB;AAAA,IACnD;AACI,UAAMgC,KAAK,KAAK;AAAA,MACd;AAAA,MACA,KAAK,IAAI1B,IAAI,KAAKV,IAAImC,IAAI/B,IAAI,EAAE;AAAA,IACtC,GAAOiC,KAAK,KAAK;AAAA,MACX;AAAA,MACA,KAAK,IAAIlC,IAAI,KAAKtF,IAAIqH,IAAI7B,IAAI,EAAE;AAAA,IACtC;AACI,WAAO,EAAE,MAAM,YAAY,oBAAoB,GAAG+B,EAAE,IAAI,GAAG,EAAE,MAAM,YAAY,oBAAoB,GAAGC,EAAE,IAAI,GAAG,EAAE,aAAa,iBAAiB7B,CAAC,GAAG,EAAE,aAAa,OAAOxG,IAAI,QAAQ,KAAK,GAAG,EAAE,KAAKkI,GAAG,MAAMC,GAAG,gBAAgB3B,EAAC;AAAA,EACnO;AACF;AAAA;AAnGEtG,EAFI4H,GAEG,kBAAiBjI,EAAE,QAAQ;AAElCK,EAJI4H,GAIG,oBAAmBjI,EAAE,QAAQ;AAJtC,IAAMyI,KAANR;AAsGA,MAAMS,IAAN,MAAMA,EAAE;AAAA,EAYN,YAAY,GAAG,GAAG,GAAG;AATrB,IAAArI,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,mBAAY;AACZ,IAAAA,EAAA,iBAAU,CAAA;AACV,IAAAA,EAAA;AACA,IAAAA,EAAA,mBAA4B,oBAAI,IAAG;AACnC,IAAAA,EAAA,8BAAuB;AACvB,IAAAA,EAAA,qBAAc;AACd,IAAAA,EAAA;AAIA,IAAAA,EAAA,2BAAoB,MAAM,KAAK,KAAI;AACnC,IAAAA,EAAA,2BAAoB,MAAM,KAAK,KAAI;AACnC,IAAAA,EAAA,6BAAsB,MAAM,KAAK,YAAY,KAAK,KAAI,IAAK,KAAK,KAAI;AACpE,IAAAA,EAAA,0BAAmB,MAAM;AACvB,MAAAqI,EAAE,cAAc,KAAK,KAAI;AAAA,IAC3B;AACA,IAAArI,EAAA,0BAAmB,MAAM,KAAK,KAAI;AAClC,IAAAA,EAAA,qBAAc,MAAM;AAClB,MAAAqI,EAAE,eAAe,KAAK,YAAY,KAAK,KAAI,IAAK,KAAK;IACvD;AAXE,SAAK,UAAU,GAAG,KAAK,MAAM,KAAK,UAAS,GAAI,KAAK,iBAAiB,IAAIV,GAAE,CAAC,GAAG,KAAK,MAAK,uBAAG,OAAM,KAAK,cAAc,MAAM,KAAK,UAAU,IAAI/H,EAAE,gBAAgB,KAAK,SAAS,KAAK,OAAO,GAAGgB,EAAE,mBAAmB,MAAM,KAAK,SAAS,KAAK,OAAO,GAAG,KAAK,eAAc;AAAA,EAC1Q;AAAA,EAWA,MAAM,gBAAgB;AACpB,UAAM,IAAI,SAAS,cAAc,KAAK;AACtC,MAAE,KAAK,KAAK,IAAI,EAAE,UAAU,IAAIjB,EAAE,YAAY,IAAI,GAAG,EAAE,UAAU;AAAA,MAC/D,KAAK,QAAQ,SAASA,EAAE,QAAQ;AAAA,IACtC,GAAO,KAAK,QAAQ,EAAE,aAAa,OAAO,KAAK,GAAG,EAAE,UAAU,IAAIA,EAAE,YAAY,GAAG;AAC/E,UAAM,IAAI,SAAS,cAAc,KAAK;AACtC,MAAE,UAAU,IAAIA,EAAE,YAAY,OAAO,GAAG,KAAK,QAAQ,UAAU,EAAE,UAAU,IAAIA,EAAE,YAAY,cAAc;AAC3G,UAAM,IAAI,MAAM,KAAK,eAAe,OAAM;AAC1C,WAAO,OAAO,KAAK,WAAW,EAAE,YAAY,IAAI,EAAE,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,aAAa,iBAAiB,KAAK,QAAQ,YAAY,KAAK,GAAG;AAAA,EACvJ;AAAA,EACA,aAAa;AACX,WAAO,GAAGA,EAAE,QAAQ,SAAS,GAAG,KAAK,IAAG,CAAE,IAAI,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EACtF;AAAA,EACA,qBAAqB;AACnB,SAAK,aAAaC,EAAE;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACX;AAAA,EACE;AAAA,EACA,iBAAiB;AACf,UAAM,IAAI;AAAA,MACR,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK,QAAQ,SAAS,MAAM;AAAA,MACxC,IAAI,KAAK;AAAA;AAAA,MAET,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK,QAAQ,SAAS,MAAM;AAAA,MAClC,IAAI,KAAK;AAAA,MACT,gBAAgB,KAAK;AAAA,MACrB,gBAAgB,KAAK;AAAA,MACrB,kBAAkB,KAAK;AAAA,IAC7B;AACI,SAAK,QAAQ,WAAW,KAAK,QAAQ,iBAAiB,SAAS,KAAK,WAAW,GAAG,KAAK,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,OAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;AACtK,WAAK,QAAQ,iBAAiB,GAAG,CAAC,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC;AAAA,IAC9D,CAAC;AAAA,EACH;AAAA,EACA,kBAAkB;AAChB,SAAK,UAAU,QAAQ,CAAC,GAAG,MAAM;AAC/B,WAAK,QAAQ,oBAAoB,GAAG,CAAC;AAAA,IACvC,CAAC,GAAG,KAAK,UAAU,MAAK;AAAA,EAC1B;AAAA,EACA,MAAM,OAAO;AACX,QAAIyI,EAAE,iBAAiBA,EAAE,kBAAkB,QAAQ,MAAMA,EAAE,cAAc,KAAI,GAAIA,EAAE,gBAAgB,MAAM,KAAK,UAAW;AACzH,UAAM,IAAI,KAAK,QAAQ,SAAS;AAChC,QAAI,IAAI;AACN,aAAO,IAAI,QAAQ,CAAC,MAAM;AACxB,aAAK,cAAc,OAAO,WAAW,YAAY;AAC/C,eAAK,cAAc,MAAM,MAAM,KAAK,YAAW,GAAI,EAAC;AAAA,QACtD,GAAG,CAAC;AAAA,MACN,CAAC;AACH,UAAM,KAAK,YAAW;AAAA,EACxB;AAAA,EACA,MAAM,cAAc;;AAClB,SAAK,YAAY,MAAM,KAAK,cAAa,GAAI,KAAK,sBAAsB,KAAK,QAAQ,mBAAmB,KAAK,QAAQ,gBAAgB,KAAK,SAAS,GAAG,SAAS,KAAK,YAAY,KAAK,SAAS,GAAGD,GAAG;AAAA,MAClM,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,QAAQ;AAAA,MACb,KAAK;AAAA,IACX,GAAOnH,EAAG,UAAU,KAAK,EAAE,IAAG2F,KAAA7G,IAAA,KAAK,SAAQ,WAAb,QAAA6G,EAAA,KAAA7G,GAAsB,KAAK,MAAK8G,IAAA,KAAK,QAAQ,SAAb,QAAAA,EAAmB,kBAAkBjH,EAAE;AAAA,MAC/F,kBAAkB,KAAK,QAAQ,WAAW;AAAA,IAChD,GAAO,KAAK,QAAQ,UAAU,KAAK,wBAAuB,GAAI,MAAMsB,GAAG,KAAK,KAAK,WAAW,KAAK,QAAQ,SAAS;AAAA,EAChH;AAAA,EACA,0BAA0B;AACxB,SAAK,uBAAuB,CAAC,MAAM;;AACjC,YAAM,IAAI,EAAE;AACZ,OAAAnB,IAAA,KAAK,cAAL,QAAAA,EAAgB,SAAS,MAAM,KAAK,QAAQ,SAAS,CAAC,KAAK,KAAK,KAAI;AAAA,IACtE,GAAG,SAAS,iBAAiB,aAAa,KAAK,oBAAoB,GAAG,SAAS,iBAAiB,cAAc,KAAK,oBAAoB;AAAA,EACzI;AAAA,EACA,MAAM,OAAO;;AACX,QAAI,KAAK,aAAa;AACpB,mBAAa,KAAK,WAAW,GAAG,KAAK,cAAc;AACnD;AAAA,IACF;AACA,QAAI,KAAK;AACP,UAAI;AACF,cAAMmB,GAAG,KAAK,KAAK,SAAS,IAAG0F,KAAA7G,IAAA,KAAK,cAAL,gBAAAA,EAAgB,eAAhB,QAAA6G,EAA4B,YAAY,KAAK;AAAA,MAC9E,SAAS0B,GAAG;AACV,gBAAQ,KAAK,6CAA6CA,CAAC;AAAA,MAC7D,UAAC;AACC,aAAK,YAAY,MAAMD,EAAE,kBAAkB,SAASA,EAAE,gBAAgB;AAAA,MACxE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY;;AACV,QAAI,KAAK,QAAQ,IAAK,QAAO,KAAK,QAAQ;AAC1C,UAAM,IAAI,KAAK,QAAQ,OAAO,SAAS,gBAAgB,OAAO,SAAS,KAAK;AAC5E,QAAI,EAAG,QAAO,EAAE,YAAW,MAAO;AAClC,UAAM,MAAItI,IAAA,SAAS,gBAAgB,SAAzB,gBAAAA,EAA+B,kBAAiB;AAC1D,WAAO,CAAC,MAAM,MAAM,MAAM,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAAA,EAC7D;AAAA,EACA,QAAQ;AACN,WAAO,KAAK;AAAA,EACd;AAAA,EACA,UAAU;AACR,SAAK,KAAI,GAAI,KAAK,aAAaH,EAAE;AAAA,MAC/B,KAAK;AAAA,MACL,KAAK;AAAA,IACX,GAAO,KAAK,gBAAe;AAAA,EACzB;AACF;AA9HEI,EADIqI,GACG,iBAAgB,OACvBrI,EAFIqI,GAEG,cAAa;AAFtB,IAAME,IAANF;AAgIA,MAAMG,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMN,OAAO,uBAAuB,GAAG;AAC/B,UAAM,IAAI,EAAE,SAAS;AACrB,WAAO,KAAK,QAAQ;AAAA,MAClB,uHAAuH7I,EAAE,WAAW,OAAO;AAAA,IACjJ,GAAO;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,uBAAuB,GAAG,GAAG;AAClC,UAAM,IAAI,CAAC,CAAC,KAAK,EAAE,KAAI,EAAG,SAAS;AACnC,WAAO,KAAK,QAAQ;AAAA,MAClB;AAAA,MACA;AAAA,MACA,8BAA8BA,EAAE,WAAW,OAAO;AAAA,IACxD,GAAO;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,kBAAkB,GAAG,GAAG;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,GAAO,IAAI,EAAE,SAAS,CAAC;AACnB,WAAO,KAAK,QAAQ;AAAA,MAClB,kCAAkC,CAAC;AAAA,MACnC;AAAA,MACA;AAAA,yBACmB,EAAE,KAAK,IAAI,CAAC;AAAA,IACrC,GAAO;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,cAAc,GAAG,GAAG;AACzB,QAAI,KAAK,KAAM,QAAO;AACtB,UAAM,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC;AAC7C,WAAO,OAAO,MAAM,CAAC,KAAK,IAAI,KAAK,QAAQ;AAAA,MACzC,6BAA6B,CAAC;AAAA,MAC9B;AAAA,MACA;AAAA;AAAA,IAEN,GAAO,KAAK;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,cAAc,GAAG,GAAG;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,GAAO,IAAI,EAAE,SAAS,CAAC;AACnB,WAAO,KAAK,QAAQ;AAAA,MAClB,8BAA8B,CAAC;AAAA,MAC/B;AAAA,MACA;AAAA,qBACe,EAAE,KAAK,IAAI,CAAC;AAAA,IACjC,GAAO;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,iBAAiB,GAAG,GAAG;AAC5B,QAAI,CAAC,EAAG,QAAO;AACf,UAAM,IAAID,GAAG;AAAA,MACX;AAAA,IACN;AACI,WAAO,KAAK,QAAQ;AAAA,MAClB,8BAA8B,CAAC;AAAA,MAC/B;AAAA,MACA;AAAA,yBACmBA,GAAG,KAAK,IAAI,CAAC;AAAA,IACtC,GAAO;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,iBAAiB,GAAG,GAAG,IAAI,OAAO;AACvC,WAAO,KAAK,KAAK,iBAAiB,GAAG,CAAC,IAAI,IAAI;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,cAAc,GAAG,GAAG,IAAI,QAAQ;AACrC,WAAO,KAAK,KAAK,cAAc,GAAG,CAAC,IAAI,IAAI;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,kBAAkB,GAAG,GAAG,IAAI,QAAQ;AACzC,WAAO,KAAK,KAAK,kBAAkB,GAAG,CAAC,IAAI,IAAI;AAAA,EACjD;AACF;AACA,MAAM+I,IAAN,MAAMA,EAAE;AAAA,EAKN,YAAY,GAAG;AAHf,IAAAzI,EAAA,iBAAU,CAAA;AACV,IAAAA,EAAA,kBAA2B,oBAAI,IAAG;AAClC,IAAAA,EAAA,uBAAgB;AAEd,SAAK,UAAU;AAAA,MACb,GAAG;AAAA,IACT;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,cAAc;AACnB,WAAOyI,EAAE,aAAaA,EAAE,WAAW,IAAIA,EAAC,IAAKA,EAAE;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO;AACL,WAAO,KAAK,gBAAgB,QAAQ,KAAK,gBAAgB,IAAI7I,EAAE,KAAI,GAAI,KAAK,4BAA2B,GAAI,KAAK,sBAAqB,GAAIK,EAAE,YAAW,GAAI;AAAA,EAC5J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,IAAI,GAAG,GAAG,GAAG;AACX,SAAK,SAAS,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;AACrC,UAAM,IAAI;AAAA,MACR,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,IACT,GAAOH,IAAI,IAAIyI,EAAE,GAAG,GAAG,CAAC;AACpB,WAAO,KAAK,SAAS,IAAI,GAAGzI,CAAC,GAAGA;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,OAAO,GAAG;AACR,QAAI,CAAC,EAAG;AACR,UAAM,IAAI,KAAK,SAAS,IAAI,CAAC;AAC7B,UAAM,EAAE,QAAO,GAAIc,EAAE,QAAQ,CAAC,GAAG,KAAK,SAAS,OAAO,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiCA,eAAe,GAAG;AAChB,UAAM,IAAI,EAAE;AAAA,MACVjB,EAAE,WAAW;AAAA,IACnB,GAAO,IAAI,EAAE;AAAA,MACPA,EAAE,WAAW;AAAA,IACnB,GAAO,IAAI,EAAE;AAAA,MACPA,EAAE,WAAW;AAAA,IACnB,GAAOG,IAAI,EAAE;AAAA,MACPH,EAAE,WAAW;AAAA,IACnB;AACI,WAAO;AAAA,MACL,UAAU,IAAI6I,EAAE,iBAAiB,GAAG,CAAC,IAAI,KAAK,QAAQ,YAAY7I,EAAE,QAAQ;AAAA,MAC5E,OAAO,IAAI6I,EAAE,cAAc,GAAG,CAAC,IAAI,KAAK,QAAQ,SAAS7I,EAAE,QAAQ;AAAA,MACnE,WAAW,IAAI6I,EAAE,kBAAkB,GAAG,CAAC,IAAI,KAAK,QAAQ,aAAa7I,EAAE,QAAQ;AAAA,MAC/E,QAAQ,KAAK,QAAQ,WAAW,SAASiB,EAAE,qBAAqB,KAAK,QAAQ,MAAM,IAAI,CAAA;AAAA,MACvF,OAAOd,IAAI0I,EAAE,cAAc1I,GAAG,CAAC,IAAI,KAAK,QAAQ,SAASH,EAAE,QAAQ;AAAA,IACzE;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAIA,kBAAkB,GAAG;AACnB,UAAM,IAAI,EAAE,aAAaA,EAAE,WAAW,OAAO;AAC7C,QAAI,CAAC6I,EAAE,uBAAuB,GAAG,CAAC,EAAG;AACrC,UAAM,IAAI,KAAK,eAAe,CAAC;AAC/B,SAAK,IAAI,GAAG,GAAG,CAAC;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAIA,wBAAwB;AACtB,UAAM,IAAI,SAAS;AAAA,MACjB,IAAI7I,EAAE,WAAW,OAAO;AAAA,IAC9B;AACI,IAAA6I,EAAE,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM;AAC9C,WAAK,kBAAkB,CAAC;AAAA,IAC1B,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,8BAA8B;AAC5B,aAAS,iBAAiB,cAAc,CAAC,MAAM;AAC7C,MAAM,EAAE,kBAAkB,gBAC1B,MAAM,KAAK,KAAK,SAAS,OAAM,CAAE,EAAE;AAAA,QACjC,CAAC3I,MAAMA,EAAE;AAAA,MACjB,EAAQ,SAAS,EAAE,MAAM,KAAKe,EAAE,mBAAkB;AAAA,IAC9C,CAAC;AAAA,EACH;AACF;AArJEZ,EADIyI,GACG;AADT,IAAMvI,KAANuI;AAuJA,SAASC,GAAGpH,GAAG;AACb,SAAO,QAAQ,KAAK,sCAAsC,GAAG,IAAIpB,GAAEoB,CAAC,EAAE,KAAI;AAC5E;AACA,MAAMqH,KAAK,KAAK;AAAA,EACd,KAAK,UAAU;AAAA,IACb,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACd;AAAA,IACA;AAAA,EACA,CAAG;AACH,GAAGC,KAAK,KAAK;AAAA,EACX,KAAK,UAAU;AAAA,IACb,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACd;AAAA,IACA;AAAA,EACA,CAAG;AACH;AACA,MAAMC,GAAG;AAAA,EAsBP,YAAY,EAAE,OAAO,GAAG,iBAAiB,GAAG,MAAM,KAAK;AArBvD,IAAA7I,EAAA,eAAQ,CAAA;AACR,IAAAA,EAAA,iBAAU;AACV,IAAAA,EAAA,uBAAgB;AAChB,IAAAA,EAAA,iBAAU;AACV,IAAAA,EAAA,uBAAgB;AAIhB;AAAA;AAAA;AAAA,IAAAA,EAAA,sBAAe;AACf,IAAAA,EAAA,uBAAgB;AAChB,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA,kBAAW;AACX,IAAAA,EAAA,uBAAgB;AAEhB;AAAA,IAAAA,EAAA,yBAAkB;AAClB,IAAAA,EAAA;AACA,IAAAA,EAAA,2BAAoB;AACpB,IAAAA,EAAA,gCAAyB;AAEvB,SAAK,QAAQ,GAAG,MAAM,KAAK,UAAUc,GAAE,YAAY,CAAC,GAAG,KAAK,iBAAiB,IAAI,eAAG,YAAY,KAAK,WAAW,KAAK,eAAG,UAAU,KAAK,gBAAgB,EAAE,QAAQ,KAAK,4BAA2B,GAAI,KAAK,gBAAe;AAAA,EAC3N;AAAA,EACA,8BAA8B;AAC5B,IAAA2G,EAAE,gBAAgB,MAAMkB,EAAE,GAAGlB,EAAE,gBAAgB,MAAMmB,EAAE;AAAA,EACzD;AAAA,EACA,kBAAkB;AAChB,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,eAAgB;AAC3C,QAAI,KAAK,QAAQ;AAAA,MACf,GAAG,KAAK,cAAc,IAAI,KAAK,aAAa;AAAA,MAC5C;AAAA,IACN,GAAO;AACD,WAAK,gBAAgB;AACrB;AAAA,IACF;AACA,UAAMnC,IAAI,KAAK,QAAQ;AAAA,MACrB,GAAG,KAAK,cAAc,IAAI,KAAK,YAAY;AAAA,MAC3C;AAAA,IACN;AACI,IAAAA,MAAM,KAAK,UAAUA;AAAA,EACvB;AAAA,EACA,QAAQ;AACN,SAAK,MAAM,WAAW,KAAK,kBAAkB8B,EAAE,aAAa,IAAI,KAAK,SAAS,KAAK,OAAO;AAAA,EAC5F;AAAA,EACA,4BAA4B;AAC1B,QAAI,CAAC,KAAK,eAAe,CAAC,KAAK,SAAU;AACzC,SAAK,oBAAoB,KAAK,IAAG;AACjC,UAAM,IAAI,MAAM;AACd,YAAM,IAAI,KAAK,IAAG,IAAK,KAAK,mBAAmB,IAAI,KAAK,IAAI,IAAI,KAAK,eAAe,CAAC;AACrF,WAAK,YAAY,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,yBAAyB,sBAAsB,CAAC,KAAK,KAAK,yBAAyB,MAAM,KAAK,YAAY,KAAK,MAAM,SAAS,IAAI,KAAK,OAAM,IAAK,KAAK,KAAI;AAAA,IACxN;AACA,SAAK,0BAA0B,qBAAqB,KAAK,sBAAsB,GAAG,KAAK,yBAAyB,sBAAsB,CAAC;AAAA,EACzI;AAAA,EACA,MAAM,SAAS,GAAG;AAChB,QAAI,IAAI,KAAK,KAAK,KAAK,MAAM,OAAQ;AACrC,SAAK,kBAAkB,KAAK,cAAc,KAAI,GAAI,KAAK,gBAAgB;AACvE,UAAM,IAAI,KAAK,MAAM,CAAC,GAAG,IAAI,SAAS,cAAc,EAAE,MAAM;AAC5D,QAAI,CAAC,EAAG;AACR,UAAM,IAAI,IAAIA,EAAE,GAAG,EAAE,SAAS;AAAA,MAC5B,GAAG,EAAE;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,iBAAiB,CAACzI,MAAM;AACtB,aAAK,iBAAiBA,CAAC,GAAG,KAAK,kBAAkBA,CAAC;AAAA,MACpD;AAAA,IACN,CAAK;AACD,SAAK,gBAAgB,GAAG,MAAM,EAAE,KAAI,GAAI,KAAK,aAAa,KAAK,cAAa,GAAI,KAAK,0BAAyB;AAAA,EAChH;AAAA,EACA,gBAAgB;AACd,SAAK,oBAAoB,aAAa,KAAK,eAAe,GAAG,KAAK,kBAAkB,OAAO,KAAK,2BAA2B,qBAAqB,KAAK,sBAAsB,GAAG,KAAK,yBAAyB;AAAA,EAC9M;AAAA,EACA,kBAAkB,GAAG;AACnB,UAAM,IAAI,SAAS,cAAc,KAAK;AACtC,MAAE,YAAY;AACd,UAAM,IAAI,EAAE;AAAA,MACV,IAAIH,EAAE,YAAY,OAAO;AAAA,IAC/B;AACI,QAAI,CAAC,EAAG;AACR,UAAM,IAAI,SAAS,cAAc,KAAK;AACtC,MAAE,YAAY,oCAAoC,EAAE,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,KAAK,cAAc,GAAG,KAAK,YAAY,KAAK,0BAAyB;AAAA,EAC7J;AAAA,EACA,iBAAiB,GAAG;AAClB,UAAM,IAAI,SAAS,cAAc,KAAK;AACtC,MAAE,YAAY;AACd,UAAM,IAAI,EAAE;AAAA,MACV,IAAIA,EAAE,YAAY,OAAO;AAAA,IAC/B;AACI,QAAI,CAAC,EAAG;AACR,UAAM,IAAI,KAAK,YAAY,GAAGG,IAAI,KAAK,YAAY,KAAK,MAAM,SAAS;AACvE,MAAE,YAAY;AAAA;AAAA,0CAEwB,KAAK,UAAU,CAAC;AAAA;AAAA,2CAEf,KAAK,MAAM,MAAM;AAAA;AAAA;AAAA,gEAGI,IAAI,aAAa,EAAE;AAAA,UACzE2H,EAAE,EAAE,qBAAqB,CAAC;AAAA;AAAA,QAE5B3H,IAAI,0DAA0D2H,EAAE;AAAA,MAClE;AAAA,IACN,CAAK,cAAc,0DAA0DA,EAAE;AAAA,MACzE;AAAA,IACN,CAAK,WAAW;AAAA;AAAA;AAGZ,UAAMpH,IAAI,EAAE;AAAA,MACV;AAAA,IACN,GAAOC,IAAI,EAAE;AAAA,MACP;AAAA,IACN,GAAOC,IAAI,EAAE;AAAA,MACP;AAAA,IACN;AACI,IAAAF,KAAA,QAAAA,EAAG,iBAAiB,SAAS,KAAK,KAAK,KAAK,IAAI,IAAIC,KAAA,QAAAA,EAAG,iBAAiB,SAAS,KAAK,KAAK,KAAK,IAAI,IAAIC,KAAA,QAAAA,EAAG,iBAAiB,SAAS,KAAK,OAAO,KAAK,IAAI,IAAI,EAAE,YAAY,CAAC;AAAA,EAC/K;AAAA,EACA,OAAO;AACL,SAAK,UAAU,MAAM,KAAK,cAAa,GAAI,KAAK,WAAW,KAAK,SAAS,KAAK,OAAO,GAAG,KAAK;EAC/F;AAAA,EACA,OAAO;AACL,SAAK,UAAU,KAAK,MAAM,SAAS,MAAM,KAAK,cAAa,GAAI,KAAK,WAAW,KAAK,SAAS,KAAK,OAAO,GAAG,KAAK;EACnH;AAAA,EACA,SAAS;AACP,SAAK,cAAa,GAAI,KAAK,kBAAkB,KAAK,cAAc,KAAI,GAAI,KAAK,cAAc,WAAW,KAAK,gBAAgB,OAAO,KAAK,UAAU,GAAG,KAAK,cAAa;AAAA,EACxK;AAAA,EACA,eAAe;AACb,SAAK,WAAW,KAAK,QAAQ;AAAA,MAC3B,GAAG,KAAK,cAAc,IAAI,KAAK,YAAY;AAAA,MAC3C,KAAK;AAAA,IACX;AAAA,EACE;AAAA,EACA,gBAAgB;AACd,KAAC,KAAK,WAAW,CAAC,KAAK,mBAAmB,KAAK,QAAQ,IAAI,GAAG,KAAK,cAAc,IAAI,KAAK,aAAa,IAAI,EAAE,GAAG,KAAK,QAAQ,OAAO,GAAG,KAAK,cAAc,IAAI,KAAK,YAAY,EAAE;AAAA,EACnL;AAAA,EACA,gBAAgB;AACd,KAAC,KAAK,WAAW,CAAC,KAAK,mBAAmB,KAAK,UAAU,GAAG,KAAK,QAAQ,OAAO,GAAG,KAAK,cAAc,IAAI,KAAK,YAAY,EAAE,GAAG,KAAK,QAAQ,OAAO,GAAG,KAAK,cAAc,IAAI,KAAK,aAAa,EAAE;AAAA,EACpM;AACF;AC79EO,MAAMuI,KAAiBC,GAA0C,IAAI;AAMrE,SAASC,KAAgD;AAC9D,SAAOC,GAAWH,EAAc;AAClC;ACKO,SAASI,GAAkBC,GAA0B;AAC1D,QAAMC,IAAaC,EAA8C,IAAI,GAC/DC,IAAgBD,EAAO,EAAK;AAElC,SAAAE,EAAU,MAAM;AACd,QAAI,CAAAD,EAAc,SAElB;AAAA,UAAI;AACF,QAAAF,EAAW,UAAUI,GAAYL,CAAO,GACxCG,EAAc,UAAU;AAAA,MAC1B,SAASG,GAAO;AACd,gBAAQ;AAAA,UACN;AAAA,UACAA;AAAA,QAAA;AAAA,MAEJ;AAEA,aAAO,MAAM;AACX,QAAAH,EAAc,UAAU,IACxBF,EAAW,UAAU;AAAA,MACvB;AAAA;AAAA,EACF,GAAG,CAAA,CAAE,GAEEA,EAAW;AACpB;ACVO,SAASM,GAAgB;AAAA,EAC9B,UAAAC;AAAA,EACA,SAAAR,IAAU,CAAA;AAAA,EACV,aAAAS,IAAc;AAChB,GAAyB;AACvB,SAAIA,KACFV,GAAkBC,CAAO,GAIzB,gBAAAU,GAACf,GAAe,UAAf,EAAwB,OAAO,EAAE,SAAAK,EAAA,GAC/B,UAAAQ,GACH;AAEJ;AC/CO,SAASG,GAAoBX,GAA6B;AAC/D,SAAOY;AAAA,IACL,CAACC,MACQ,CAACC,MAAe;AACrB,MAAAD,KAAA,QAAAA,EAAiBC,IAEbd,KAAA,QAAAA,EAAS,MACXe,EAAU,UAAUf,EAAQ,EAAE;AAAA,IAElC;AAAA,IAEF,CAACA,KAAA,gBAAAA,EAAS,EAAE;AAAA,EAAA;AAEhB;ACIO,SAASgB,GACdC,GACAjB,GACgC;AAChC,QAAMkB,IAAUrB,GAAA,GACVsB,IAAajB,EAAuB,IAAI,GACxCkB,IAAalB,EAA2B,IAAI,GAC5CmB,IAAgBV,GAAoBX,CAAO,GAE3CsB,IAAUV,EAAY,MAAM;AAChC,IAAIO,EAAW,YACbA,EAAW,QAAQ,QAAA,GACnBA,EAAW,UAAU;AAAA,EAEzB,GAAG,CAAA,CAAE,GAECI,IAAcX;AAAA,IAClB,CAACY,MAAgC;AAG/B,UAFAF,EAAA,GAEI,CAACE,KAAWxB,KAAA,QAAAA,EAAS,UAAU;AACjC,QAAAoB,EAAW,UAAU;AACrB;AAAA,MACF;AAEA,MAAAA,EAAW,UAAUI;AAErB,YAAMC,IAAgB;AAAA,QACpB,GAAGP,KAAA,gBAAAA,EAAS;AAAA,QACZ,GAAGlB;AAAA,QACH,QAAQqB,EAAcrB,KAAA,gBAAAA,EAAS,MAAM;AAAA,MAAA;AAGvC,UAAI;AACF,QAAAmB,EAAW,UAAU,IAAIO,EAAQF,GAASP,GAASQ,CAAa;AAAA,MAClE,SAASnB,GAAO;AACd,cAAMA;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAACW,GAASjB,GAASkB,GAASI,CAAO;AAAA,EAAA;AAGrC,SAAAlB,EAAU,MACDkB,GACN,CAACA,CAAO,CAAC,GAELC;AACT;AAqBO,SAASI,GACdV,GACAjB,GACA;AACA,QAAMkB,IAAUrB,GAAA,GACVsB,IAAajB,EAAuB,IAAI,GACxCkB,IAAalB,EAA2B,IAAI,GAC5CmB,IAAgBV,GAAoBX,CAAO,GAE3CsB,IAAUV,EAAY,MAAM;AAChC,IAAIO,EAAW,YACbA,EAAW,QAAQ,QAAA,GACnBA,EAAW,UAAU;AAAA,EAEzB,GAAG,CAAA,CAAE,GAECI,IAAcX;AAAA,IAClB,CAACY,MAAgC;AAG/B,UAFAF,EAAA,GAEI,CAACE,KAAWxB,KAAA,QAAAA,EAAS,UAAU;AACjC,QAAAoB,EAAW,UAAU;AACrB;AAAA,MACF;AAEA,MAAAA,EAAW,UAAUI;AAErB,YAAMC,IAAgB;AAAA,QACpB,GAAGP,KAAA,gBAAAA,EAAS;AAAA,QACZ,GAAGlB;AAAA,QACH,QAAQqB,EAAcrB,KAAA,gBAAAA,EAAS,MAAM;AAAA,MAAA;AAGvC,UAAI;AACF,QAAAmB,EAAW,UAAU,IAAIO,EAAQF,GAASP,GAASQ,CAAa;AAAA,MAClE,SAASnB,GAAO;AACd,cAAMA;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAACW,GAASjB,GAASkB,GAASI,CAAO;AAAA,EAAA;AAGrC,SAAAlB,EAAU,MACDkB,GACN,CAACA,CAAO,CAAC,GAEL;AAAA,IACL,KAAKC;AAAA,IACL,SAASJ,EAAW;AAAA,EAAA;AAExB;AC5HO,SAASO,GAAQ;AAAA,EACtB,SAAAT;AAAA,EACA,UAAAT;AAAA,EACA,WAAAoB;AAAA,EACA,UAAAC;AAAA,EACA,GAAG7B;AACL,GAA0B;AACxB,QAAM8B,IAAgB,OAAOb,KAAY,WAAWA,IAAU,OAAOA,CAAO,GAEtEE,IAAaH,GAAWc,GAAe,EAAE,GAAG9B,GAAS,UAAA6B,GAAU;AAErE,MAAI,CAACE,GAAevB,CAAQ;AAC1B,mBAAQ;AAAA,MACN;AAAA,IAAA,4BAEQ,UAAAA,GAAS;AAGrB,QAAMwB,IAAQxB;AAEd,SAAOyB,GAAaD,GAAO;AAAA,IACzB,KAAKb;AAAA,IACL,WAAWS,IACP,GAAGI,EAAM,MAAM,aAAa,EAAE,IAAIJ,CAAS,GAAG,KAAA,IAC9CI,EAAM,MAAM;AAAA,EAAA,CACjB;AACH;ACTO,SAASE,GAAQC,GAAkC;AACxD,QAAMjB,IAAUrB,GAAA,GACVuC,IAAUlC,EAA6B,IAAI,GAC3C,CAACmC,GAAaC,CAAc,IAAIC,GAAS,CAAC,GAC1C,CAACC,GAAUC,CAAW,IAAIF,GAAS,EAAK;AAE9C,EAAAnC,EAAU,MAAM;AACd,QAAI+B,EAAM,WAAW,EAAG;AAExB,UAAMO,IAAYP,EAAM,IAAI,CAACQ,OAAU;AAAA,MACrC,QAAQ,OAAOA,EAAK,WAAY,WAAWA,EAAK,UAAU;AAAA,MAC1D,SACE,OAAOA,EAAK,WAAY,WAAWA,EAAK,UAAU,OAAOA,EAAK,OAAO;AAAA,MACvE,SAAS;AAAA,QACP,GAAGzB,KAAA,gBAAAA,EAAS;AAAA,QACZ,GAAGyB,EAAK;AAAA,QACR,QAAQ;AAAA,MAAA;AAAA,IACV,EACA;AAEF,QAAI;AACF,MAAAP,EAAQ,UAAU,IAAIQ,GAAc;AAAA,QAClC,OAAOF;AAAA,MAAA,CACR;AAAA,IACH,SAASpC,GAAO;AACd,cAAQ,MAAM,4CAA4CA,CAAK;AAAA,IACjE;AAEA,WAAO,MAAM;AACX,MAAI8B,EAAQ,YACVA,EAAQ,QAAQ,OAAA,GAChBA,EAAQ,UAAU;AAAA,IAEtB;AAAA,EACF,GAAG,CAACD,GAAOjB,CAAO,CAAC;AAEnB,QAAM2B,IAAQjC,EAAY,MAAM;AAC9B,QAAKwB,EAAQ;AAEb,UAAI;AACF,QAAAA,EAAQ,QAAQ,MAAA,GAChBK,EAAY,EAAI,GAChBH,EAAe,CAAC;AAAA,MAClB,SAAShC,GAAO;AACd,gBAAQ,MAAM,2CAA2CA,CAAK;AAAA,MAChE;AAAA,EACF,GAAG,CAAA,CAAE,GAECwC,IAAOlC,EAAY,MAAM;AAC7B,QAAKwB,EAAQ;AAEb,UAAI;AACF,QAAAA,EAAQ,QAAQ,OAAA,GAChBK,EAAY,EAAK,GACjBH,EAAe,CAAC;AAAA,MAClB,SAAShC,GAAO;AACd,gBAAQ,MAAM,0CAA0CA,CAAK;AAAA,MAC/D;AAAA,EACF,GAAG,CAAA,CAAE,GAECyC,IAAOnC,EAAY,MAAM;AAC7B,QAAI,GAACwB,EAAQ,WAAW,CAACI;AAEzB,UAAI;AACF,QAAAJ,EAAQ,QAAQ,KAAA,GAChBE,EAAe,CAACU,MAAS,KAAK,IAAIA,IAAO,GAAGb,EAAM,SAAS,CAAC,CAAC;AAAA,MAC/D,SAAS7B,GAAO;AACd,gBAAQ,MAAM,gDAAgDA,CAAK;AAAA,MACrE;AAAA,EACF,GAAG,CAACkC,GAAUL,EAAM,MAAM,CAAC,GAErBa,IAAOpC,EAAY,MAAM;AAC7B,QAAI,GAACwB,EAAQ,WAAW,CAACI;AAEzB,UAAI;AACF,QAAAJ,EAAQ,QAAQ,KAAA,GAChBE,EAAe,CAACU,MAAS,KAAK,IAAIA,IAAO,GAAG,CAAC,CAAC;AAAA,MAChD,SAAS1C,GAAO;AACd,gBAAQ,MAAM,oDAAoDA,CAAK;AAAA,MACzE;AAAA,EACF,GAAG,CAACkC,CAAQ,CAAC,GAEPS,IAAOrC;AAAA,IACX,CAACsC,MAAkB;AAEjB,UADI,CAACd,EAAQ,WAAW,CAACI,KACrBU,IAAQ,KAAKA,KAASf,EAAM,OAAQ;AAExC,YAAMgB,IAAOD,IAAQb;AACrB,UAAIc,IAAO;AACT,iBAASzM,IAAI,GAAGA,IAAIyM,GAAMzM;AACxB,UAAA0L,EAAQ,QAAQ,KAAA;AAAA,eAETe,IAAO;AAChB,iBAASzM,IAAI,GAAGA,IAAI,KAAK,IAAIyM,CAAI,GAAGzM;AAClC,UAAA0L,EAAQ,QAAQ,KAAA;AAGpB,MAAAE,EAAeY,CAAK;AAAA,IACtB;AAAA,IACA,CAACV,GAAUH,GAAaF,EAAM,MAAM;AAAA,EAAA;AAGtC,SAAO;AAAA,IACL,OAAAU;AAAA,IACA,MAAAC;AAAA,IACA,MAAAC;AAAA,IACA,MAAAC;AAAA,IACA,MAAAC;AAAA,IACA,aAAAZ;AAAA,IACA,UAAAG;AAAA,EAAA;AAEJ;ACtGO,SAASY,GAAK,EAAE,OAAAjB,GAAO,UAAA3B,KAAuB;AACnD,QAAM6C,IAAOnB,GAAQC,CAAK;AAC1B,SAAO,gBAAAzB,GAAA4C,IAAA,EAAG,UAAA9C,EAAS6C,CAAI,GAAE;AAC3B;ACtBO,SAASE,KAAmB;AACjC,QAAM,CAACC,GAAUC,CAAgB,IAAIlB,GAASmB,EAAK,aAAa;AAEhE,SAAAtD,EAAU,MAAM;AACdsD,IAAAA,EAAK,eAAA,GACLD,EAAiBC,EAAK,aAAa;AAAA,EACrC,GAAG,CAAA,CAAE,GAWE;AAAA,IACL,UAAAF;AAAA,IACA,aAXkB,CAACG,MAAiB;AACpCD,MAAAA,EAAK,YAAYC,CAAI,GACrBF,EAAiBE,CAAI;AAAA,IACvB;AAAA,IASE,GAPQ,CAACC,GAAaC,MACfH,EAAK,EAAEE,GAAKC,CAAQ;AAAA,IAO3B,oBAAoBH,EAAK,sBAAA;AAAA,EAAsB;AAEnD;AC1CO,SAASI,KAAe;AAC7B,QAAM,CAACC,GAAMC,CAAO,IAAIzB,GAAiC,CAAA,CAAE,GAErD0B,IAAUrD,EAAY,MAAM;AAChC,IAAAoD,EAAQjD,EAAU,QAAQ;AAAA,EAC5B,GAAG,CAAA,CAAE;AAEL,EAAAX,EAAU,MAAM;AACd,IAAA6D,EAAA;AAAA,EACF,GAAG,CAACA,CAAO,CAAC;AAEZ,QAAMC,IAAYtD;AAAA,IAChB,CAACE,MAAe;AACdC,MAAAA,EAAU,UAAUD,CAAE,GACtBmD,EAAA;AAAA,IACF;AAAA,IACA,CAACA,CAAO;AAAA,EAAA,GAGJE,IAAWvD,EAAY,CAACE,MACrBC,EAAU,SAASD,CAAE,GAC3B,CAAA,CAAE,GAECsD,IAAWxD,EAAY,MAAM;AACjCG,IAAAA,EAAU,SAAA,GACVkD,EAAA;AAAA,EACF,GAAG,CAACA,CAAO,CAAC;AAEZ,SAAO;AAAA,IACL,MAAAF;AAAA,IACA,UAAAI;AAAA,IACA,WAAAD;AAAA,IACA,UAAAE;AAAA,IACA,SAAAH;AAAA,EAAA;AAEJ;ACfO,SAASI,GAAcpD,GAAiD;AAC7E,QAAMqD,IAAUpE,EAA0B,IAAI,GAExCoB,IAAUV,EAAY,MAAM;AAChC,IAAI0D,EAAQ,YACVA,EAAQ,QAAQ,QAAA,GAChBA,EAAQ,UAAU;AAAA,EAEtB,GAAG,CAAA,CAAE,GAEC/C,IAAcX;AAAA,IAClB,CAACY,MAAgC;AAG/B,UAFAF,EAAA,GAEI,EAACE;AAEL,YAAI;AACF,UAAA8C,EAAQ,UAAU,IAAIC,EAAW/C,GAASP,CAAO;AAAA,QACnD,SAASX,GAAO;AACd,kBAAQ,MAAM,mDAAmDA,CAAK;AAAA,QACxE;AAAA,IACF;AAAA,IACA,CAACW,GAASK,CAAO;AAAA,EAAA;AAGnB,SAAAlB,EAAU,MACDkB,GACN,CAACA,CAAO,CAAC,GAELC;AACT;AAmBO,SAASiD,KAAuB;AACrC,QAAMrE,IAAgBD,EAAO,EAAK;AAElC,EAAAE,EAAU,MAAM;AACd,QAAI,CAAAD,EAAc;AAElB,UAAI;AACFoE,QAAAA,EAAW,YAAA,GACXpE,EAAc,UAAU;AAAA,MAC1B,SAASG,GAAO;AACd,gBAAQ,MAAM,wDAAwDA,CAAK;AAAA,MAC7E;AAAA,EACF,GAAG,CAAA,CAAE;AACP;"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { TooltipOptions, TooltipContentSource } from 'hintorium-core';
|
|
2
|
+
|
|
3
|
+
export type { TooltipOptions, TooltipPosition, TooltipTheme, TooltipAnimation, } from 'hintorium-core';
|
|
4
|
+
export interface UseTooltipOptions extends TooltipOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Whether the tooltip is disabled
|
|
7
|
+
* @default false
|
|
8
|
+
*/
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface TooltipComponentProps extends UseTooltipOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Tooltip content - can be string or React node
|
|
14
|
+
*/
|
|
15
|
+
content: TooltipContentSource;
|
|
16
|
+
/**
|
|
17
|
+
* Child element that triggers the tooltip
|
|
18
|
+
*/
|
|
19
|
+
children: React.ReactElement;
|
|
20
|
+
/**
|
|
21
|
+
* Additional className for the trigger element
|
|
22
|
+
*/
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface TourStep {
|
|
26
|
+
/**
|
|
27
|
+
* CSS selector or HTMLElement for the target
|
|
28
|
+
*/
|
|
29
|
+
element: string | HTMLElement;
|
|
30
|
+
/**
|
|
31
|
+
* Content to display in the tour step
|
|
32
|
+
*/
|
|
33
|
+
content: string | React.ReactNode;
|
|
34
|
+
/**
|
|
35
|
+
* Optional step-specific options
|
|
36
|
+
*/
|
|
37
|
+
options?: TooltipOptions;
|
|
38
|
+
}
|
|
39
|
+
export interface UseTourReturn {
|
|
40
|
+
/**
|
|
41
|
+
* Start the tour
|
|
42
|
+
*/
|
|
43
|
+
start: () => void;
|
|
44
|
+
/**
|
|
45
|
+
* Stop/exit the tour
|
|
46
|
+
*/
|
|
47
|
+
stop: () => void;
|
|
48
|
+
/**
|
|
49
|
+
* Go to next step
|
|
50
|
+
*/
|
|
51
|
+
next: () => void;
|
|
52
|
+
/**
|
|
53
|
+
* Go to previous step
|
|
54
|
+
*/
|
|
55
|
+
prev: () => void;
|
|
56
|
+
/**
|
|
57
|
+
* Go to specific step by index
|
|
58
|
+
*/
|
|
59
|
+
goTo: (index: number) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Current step index
|
|
62
|
+
*/
|
|
63
|
+
currentStep: number;
|
|
64
|
+
/**
|
|
65
|
+
* Whether tour is currently active
|
|
66
|
+
*/
|
|
67
|
+
isActive: boolean;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,YAAY,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAC;IAC9B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB"}
|