Hacked By AnonymousFox
{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/sunburst\n * @requires highcharts\n *\n * (c) 2016-2024 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"Templating\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"SVGElement\"], root[\"_Highcharts\"][\"Series\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/sunburst\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"Templating\"],amd1[\"Color\"],amd1[\"SeriesRegistry\"],amd1[\"SVGElement\"],amd1[\"Series\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/sunburst\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"Templating\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"SVGElement\"], root[\"_Highcharts\"][\"Series\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Templating\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"SVGElement\"], root[\"Highcharts\"][\"Series\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__984__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__820__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 620:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 28:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\n\n/***/ }),\n\n/***/ 820:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__820__;\n\n/***/ }),\n\n/***/ 512:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 984:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__984__;\n\n/***/ }),\n\n/***/ 944:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t(() => {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = (module) => {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\t() => (module['default']) :\n/******/ \t\t\t\t() => (module);\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => (/* binding */ sunburst_src)\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n;// ./code/es-modules/Extensions/Breadcrumbs/BreadcrumbsDefaults.js\n/* *\n *\n * Highcharts Breadcrumbs module\n *\n * Authors: Grzegorz Blachlinski, Karol Kolodziej\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Constants\n *\n * */\n/**\n * @optionparent lang\n */\nconst lang = {\n /**\n * @since 10.0.0\n * @product highcharts highmaps\n *\n * @private\n */\n mainBreadcrumb: 'Main'\n};\n/**\n * Options for breadcrumbs. Breadcrumbs general options are defined in\n * `navigation.breadcrumbs`. Specific options for drilldown are set in\n * `drilldown.breadcrumbs` and for tree-like series traversing, in\n * `plotOptions[series].breadcrumbs`.\n *\n * @since 10.0.0\n * @product highcharts\n * @optionparent navigation.breadcrumbs\n */\nconst options = {\n /**\n * A collection of attributes for the buttons. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,\n * a collection of CSS properties for the text.\n *\n * The object can also be extended with states, so you can set\n * presentational options for `hover`, `select` or `disabled` button\n * states.\n *\n * @sample {highcharts} highcharts/breadcrumbs/single-button\n * Themed, single button\n *\n * @type {Highcharts.SVGAttributes}\n * @since 10.0.0\n * @product highcharts\n */\n buttonTheme: {\n /** @ignore */\n fill: 'none',\n /** @ignore */\n height: 18,\n /** @ignore */\n padding: 2,\n /** @ignore */\n 'stroke-width': 0,\n /** @ignore */\n zIndex: 7,\n /** @ignore */\n states: {\n select: {\n fill: 'none'\n }\n },\n style: {\n color: \"#334eff\" /* Palette.highlightColor80 */\n }\n },\n /**\n * The default padding for each button and separator in each direction.\n *\n * @type {number}\n * @since 10.0.0\n */\n buttonSpacing: 5,\n /**\n * Fires when clicking on the breadcrumbs button. Two arguments are\n * passed to the function. First breadcrumb button as an SVG element.\n * Second is the breadcrumbs class, containing reference to the chart,\n * series etc.\n *\n * ```js\n * click: function(button, breadcrumbs) {\n * console.log(button);\n * }\n * ```\n *\n * Return false to stop default buttons click action.\n *\n * @type {Highcharts.BreadcrumbsClickCallbackFunction}\n * @since 10.0.0\n * @apioption navigation.breadcrumbs.events.click\n */\n /**\n * When the breadcrumbs are floating, the plot area will not move to\n * make space for it. By default, the chart will not make space for the\n * buttons. This property won't work when positioned in the middle.\n *\n * @sample highcharts/breadcrumbs/single-button\n * Floating button\n *\n * @type {boolean}\n * @since 10.0.0\n */\n floating: false,\n /**\n * A format string for the breadcrumbs button. Variables are enclosed by\n * curly brackets. Available values are passed in the declared point\n * options.\n *\n * @type {string|undefined}\n * @since 10.0.0\n * @default undefined\n * @sample {highcharts} highcharts/breadcrumbs/format Display custom\n * values in breadcrumb button.\n */\n format: void 0,\n /**\n * Callback function to format the breadcrumb text from scratch.\n *\n * @type {Highcharts.BreadcrumbsFormatterCallbackFunction}\n * @since 10.0.0\n * @default undefined\n * @apioption navigation.breadcrumbs.formatter\n */\n /**\n * What box to align the button to. Can be either `plotBox` or\n * `spacingBox`.\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plotBox\n * @since 10.0.0\n * @product highcharts highmaps\n */\n relativeTo: 'plotBox',\n /**\n * Whether to reverse the order of buttons. This is common in Arabic\n * and Hebrew.\n *\n * @sample {highcharts} highcharts/breadcrumbs/rtl\n * Breadcrumbs in RTL\n *\n * @type {boolean}\n * @since 10.2.0\n */\n rtl: false,\n /**\n * Positioning for the button row. The breadcrumbs buttons will be\n * aligned properly for the default chart layout (title, subtitle,\n * legend, range selector) for the custom chart layout set the position\n * properties.\n *\n * @sample {highcharts} highcharts/breadcrumbs/single-button\n * Single, right aligned button\n *\n * @type {Highcharts.BreadcrumbsAlignOptions}\n * @since 10.0.0\n * @product highcharts highmaps\n */\n position: {\n /**\n * Horizontal alignment of the breadcrumbs buttons.\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'left',\n /**\n * Vertical alignment of the breadcrumbs buttons.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'top',\n /**\n * The X offset of the breadcrumbs button group.\n *\n * @type {number}\n */\n x: 0,\n /**\n * The Y offset of the breadcrumbs button group. When `undefined`,\n * and `floating` is `false`, the `y` position is adapted so that\n * the breadcrumbs are rendered outside the target area.\n *\n * @type {number|undefined}\n */\n y: void 0\n },\n /**\n * Options object for Breadcrumbs separator.\n *\n * @since 10.0.0\n */\n separator: {\n /**\n * @type {string}\n * @since 10.0.0\n * @product highcharts\n */\n text: '/',\n /**\n * CSS styles for the breadcrumbs separator.\n *\n * In styled mode, the breadcrumbs separators are styled by the\n * `.highcharts-separator` rule with its different states.\n * @type {Highcharts.CSSObject}\n * @since 10.0.0\n */\n style: {\n color: \"#666666\" /* Palette.neutralColor60 */,\n fontSize: '0.8em'\n }\n },\n /**\n * Show full path or only a single button.\n *\n * @sample {highcharts} highcharts/breadcrumbs/single-button\n * Single, styled button\n *\n * @type {boolean}\n * @since 10.0.0\n */\n showFullPath: true,\n /**\n * CSS styles for all breadcrumbs.\n *\n * In styled mode, the breadcrumbs buttons are styled by the\n * `.highcharts-breadcrumbs-buttons .highcharts-button` rule with its\n * different states.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 10.0.0\n */\n style: {},\n /**\n * Whether to use HTML to render the breadcrumbs items texts.\n *\n * @type {boolean}\n * @since 10.0.0\n */\n useHTML: false,\n /**\n * The z index of the breadcrumbs group.\n *\n * @type {number}\n * @since 10.0.0\n */\n zIndex: 7\n};\n/* *\n *\n * Default Export\n *\n * */\nconst BreadcrumbsDefaults = {\n lang,\n options\n};\n/* harmony default export */ const Breadcrumbs_BreadcrumbsDefaults = (BreadcrumbsDefaults);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Templating\"],\"commonjs\":[\"highcharts\",\"Templating\"],\"commonjs2\":[\"highcharts\",\"Templating\"],\"root\":[\"Highcharts\",\"Templating\"]}\nvar highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_ = __webpack_require__(984);\nvar highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default = /*#__PURE__*/__webpack_require__.n(highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_);\n;// ./code/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js\n/* *\n *\n * Highcharts Breadcrumbs module\n *\n * Authors: Grzegorz Blachlinski, Karol Kolodziej\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { format } = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default());\n\nconst { composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent, defined, extend, fireEvent, isString, merge, objectEach, pick, pushUnique } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * Shift the drillUpButton to make the space for resetZoomButton, #8095.\n * @private\n */\nfunction onChartAfterShowResetZoom() {\n const chart = this;\n if (chart.breadcrumbs) {\n const bbox = chart.resetZoomButton &&\n chart.resetZoomButton.getBBox(), breadcrumbsOptions = chart.breadcrumbs.options;\n if (bbox &&\n breadcrumbsOptions.position.align === 'right' &&\n breadcrumbsOptions.relativeTo === 'plotBox') {\n chart.breadcrumbs.alignBreadcrumbsGroup(-bbox.width - breadcrumbsOptions.buttonSpacing);\n }\n }\n}\n/**\n * Remove resize/afterSetExtremes at chart destroy.\n * @private\n */\nfunction onChartDestroy() {\n if (this.breadcrumbs) {\n this.breadcrumbs.destroy();\n this.breadcrumbs = void 0;\n }\n}\n/**\n * Logic for making space for the buttons above the plot area\n * @private\n */\nfunction onChartGetMargins() {\n const breadcrumbs = this.breadcrumbs;\n if (breadcrumbs &&\n !breadcrumbs.options.floating &&\n breadcrumbs.level) {\n const breadcrumbsOptions = breadcrumbs.options, buttonTheme = breadcrumbsOptions.buttonTheme, breadcrumbsHeight = ((buttonTheme.height || 0) +\n 2 * (buttonTheme.padding || 0) +\n breadcrumbsOptions.buttonSpacing), verticalAlign = breadcrumbsOptions.position.verticalAlign;\n if (verticalAlign === 'bottom') {\n this.marginBottom = (this.marginBottom || 0) + breadcrumbsHeight;\n breadcrumbs.yOffset = breadcrumbsHeight;\n }\n else if (verticalAlign !== 'middle') {\n this.plotTop += breadcrumbsHeight;\n breadcrumbs.yOffset = -breadcrumbsHeight;\n }\n else {\n breadcrumbs.yOffset = void 0;\n }\n }\n}\n/**\n * @private\n */\nfunction onChartRedraw() {\n this.breadcrumbs && this.breadcrumbs.redraw();\n}\n/**\n * After zooming out, shift the drillUpButton to the previous position, #8095.\n * @private\n */\nfunction onChartSelection(event) {\n if (event.resetSelection === true &&\n this.breadcrumbs) {\n this.breadcrumbs.alignBreadcrumbsGroup();\n }\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * The Breadcrumbs class\n *\n * @private\n * @class\n * @name Highcharts.Breadcrumbs\n *\n * @param {Highcharts.Chart} chart\n * Chart object\n * @param {Highcharts.Options} userOptions\n * User options\n */\nclass Breadcrumbs {\n /* *\n *\n * Functions\n *\n * */\n static compose(ChartClass, highchartsDefaultOptions) {\n if (pushUnique(composed, 'Breadcrumbs')) {\n addEvent(ChartClass, 'destroy', onChartDestroy);\n addEvent(ChartClass, 'afterShowResetZoom', onChartAfterShowResetZoom);\n addEvent(ChartClass, 'getMargins', onChartGetMargins);\n addEvent(ChartClass, 'redraw', onChartRedraw);\n addEvent(ChartClass, 'selection', onChartSelection);\n // Add language support.\n extend(highchartsDefaultOptions.lang, Breadcrumbs_BreadcrumbsDefaults.lang);\n }\n }\n /* *\n *\n * Constructor\n *\n * */\n constructor(chart, userOptions) {\n this.elementList = {};\n this.isDirty = true;\n this.level = 0;\n this.list = [];\n const chartOptions = merge(chart.options.drilldown &&\n chart.options.drilldown.drillUpButton, Breadcrumbs.defaultOptions, chart.options.navigation && chart.options.navigation.breadcrumbs, userOptions);\n this.chart = chart;\n this.options = chartOptions || {};\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Update Breadcrumbs properties, like level and list.\n *\n * @function Highcharts.Breadcrumbs#updateProperties\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n updateProperties(list) {\n this.setList(list);\n this.setLevel();\n this.isDirty = true;\n }\n /**\n * Set breadcrumbs list.\n * @function Highcharts.Breadcrumbs#setList\n *\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n * @param {Highcharts.BreadcrumbsOptions} list\n * Breadcrumbs list.\n */\n setList(list) {\n this.list = list;\n }\n /**\n * Calculate level on which chart currently is.\n *\n * @function Highcharts.Breadcrumbs#setLevel\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n setLevel() {\n this.level = this.list.length && this.list.length - 1;\n }\n /**\n * Get Breadcrumbs level\n *\n * @function Highcharts.Breadcrumbs#getLevel\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n getLevel() {\n return this.level;\n }\n /**\n * Default button text formatter.\n *\n * @function Highcharts.Breadcrumbs#getButtonText\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n * @param {Highcharts.Breadcrumbs} breadcrumb\n * Breadcrumb.\n * @return {string}\n * Formatted text.\n */\n getButtonText(breadcrumb) {\n const breadcrumbs = this, chart = breadcrumbs.chart, breadcrumbsOptions = breadcrumbs.options, lang = chart.options.lang, textFormat = pick(breadcrumbsOptions.format, breadcrumbsOptions.showFullPath ?\n '{level.name}' : '← {level.name}'), defaultText = lang && pick(lang.drillUpText, lang.mainBreadcrumb);\n let returnText = breadcrumbsOptions.formatter &&\n breadcrumbsOptions.formatter(breadcrumb) ||\n format(textFormat, { level: breadcrumb.levelOptions }, chart) || '';\n if (((isString(returnText) &&\n !returnText.length) ||\n returnText === '← ') &&\n defined(defaultText)) {\n returnText = !breadcrumbsOptions.showFullPath ?\n '← ' + defaultText :\n defaultText;\n }\n return returnText;\n }\n /**\n * Redraw.\n *\n * @function Highcharts.Breadcrumbs#redraw\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n redraw() {\n if (this.isDirty) {\n this.render();\n }\n if (this.group) {\n this.group.align();\n }\n this.isDirty = false;\n }\n /**\n * Create a group, then draw breadcrumbs together with the separators.\n *\n * @function Highcharts.Breadcrumbs#render\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n render() {\n const breadcrumbs = this, chart = breadcrumbs.chart, breadcrumbsOptions = breadcrumbs.options;\n // A main group for the breadcrumbs.\n if (!breadcrumbs.group && breadcrumbsOptions) {\n breadcrumbs.group = chart.renderer\n .g('breadcrumbs-group')\n .addClass('highcharts-no-tooltip highcharts-breadcrumbs')\n .attr({\n zIndex: breadcrumbsOptions.zIndex\n })\n .add();\n }\n // Draw breadcrumbs.\n if (breadcrumbsOptions.showFullPath) {\n this.renderFullPathButtons();\n }\n else {\n this.renderSingleButton();\n }\n this.alignBreadcrumbsGroup();\n }\n /**\n * Draw breadcrumbs together with the separators.\n *\n * @function Highcharts.Breadcrumbs#renderFullPathButtons\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n renderFullPathButtons() {\n // Make sure that only one type of button is visible.\n this.destroySingleButton();\n this.resetElementListState();\n this.updateListElements();\n this.destroyListElements();\n }\n /**\n * Render Single button - when showFullPath is not used. The button is\n * similar to the old drillUpButton\n *\n * @function Highcharts.Breadcrumbs#renderSingleButton\n * @param {Highcharts.Breadcrumbs} this Breadcrumbs class.\n */\n renderSingleButton() {\n const breadcrumbs = this, chart = breadcrumbs.chart, list = breadcrumbs.list, breadcrumbsOptions = breadcrumbs.options, buttonSpacing = breadcrumbsOptions.buttonSpacing;\n // Make sure that only one type of button is visible.\n this.destroyListElements();\n // Draw breadcrumbs. Initial position for calculating the breadcrumbs\n // group.\n const posX = breadcrumbs.group ?\n breadcrumbs.group.getBBox().width :\n buttonSpacing, posY = buttonSpacing;\n const previousBreadcrumb = list[list.length - 2];\n if (!chart.drillUpButton && (this.level > 0)) {\n chart.drillUpButton = breadcrumbs.renderButton(previousBreadcrumb, posX, posY);\n }\n else if (chart.drillUpButton) {\n if (this.level > 0) {\n // Update button.\n this.updateSingleButton();\n }\n else {\n this.destroySingleButton();\n }\n }\n }\n /**\n * Update group position based on align and it's width.\n *\n * @function Highcharts.Breadcrumbs#renderSingleButton\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n alignBreadcrumbsGroup(xOffset) {\n const breadcrumbs = this;\n if (breadcrumbs.group) {\n const breadcrumbsOptions = breadcrumbs.options, buttonTheme = breadcrumbsOptions.buttonTheme, positionOptions = breadcrumbsOptions.position, alignTo = (breadcrumbsOptions.relativeTo === 'chart' ||\n breadcrumbsOptions.relativeTo === 'spacingBox' ?\n void 0 :\n 'plotBox'), bBox = breadcrumbs.group.getBBox(), additionalSpace = 2 * (buttonTheme.padding || 0) +\n breadcrumbsOptions.buttonSpacing;\n // Store positionOptions\n positionOptions.width = bBox.width + additionalSpace;\n positionOptions.height = bBox.height + additionalSpace;\n const newPositions = merge(positionOptions);\n // Add x offset if specified.\n if (xOffset) {\n newPositions.x += xOffset;\n }\n if (breadcrumbs.options.rtl) {\n newPositions.x += positionOptions.width;\n }\n newPositions.y = pick(newPositions.y, this.yOffset, 0);\n breadcrumbs.group.align(newPositions, true, alignTo);\n }\n }\n /**\n * Render a button.\n *\n * @function Highcharts.Breadcrumbs#renderButton\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n * @param {Highcharts.Breadcrumbs} breadcrumb\n * Current breadcrumb\n * @param {Highcharts.Breadcrumbs} posX\n * Initial horizontal position\n * @param {Highcharts.Breadcrumbs} posY\n * Initial vertical position\n * @return {SVGElement|void}\n * Returns the SVG button\n */\n renderButton(breadcrumb, posX, posY) {\n const breadcrumbs = this, chart = this.chart, breadcrumbsOptions = breadcrumbs.options, buttonTheme = merge(breadcrumbsOptions.buttonTheme);\n const button = chart.renderer\n .button(breadcrumbs.getButtonText(breadcrumb), posX, posY, function (e) {\n // Extract events from button object and call\n const buttonEvents = breadcrumbsOptions.events &&\n breadcrumbsOptions.events.click;\n let callDefaultEvent;\n if (buttonEvents) {\n callDefaultEvent = buttonEvents.call(breadcrumbs, e, breadcrumb);\n }\n // (difference in behaviour of showFullPath and drillUp)\n if (callDefaultEvent !== false) {\n // For single button we are not going to the button\n // level, but the one level up\n if (!breadcrumbsOptions.showFullPath) {\n e.newLevel = breadcrumbs.level - 1;\n }\n else {\n e.newLevel = breadcrumb.level;\n }\n fireEvent(breadcrumbs, 'up', e);\n }\n }, buttonTheme)\n .addClass('highcharts-breadcrumbs-button')\n .add(breadcrumbs.group);\n if (!chart.styledMode) {\n button.attr(breadcrumbsOptions.style);\n }\n return button;\n }\n /**\n * Render a separator.\n *\n * @function Highcharts.Breadcrumbs#renderSeparator\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n * @param {Highcharts.Breadcrumbs} posX\n * Initial horizontal position\n * @param {Highcharts.Breadcrumbs} posY\n * Initial vertical position\n * @return {Highcharts.SVGElement}\n * Returns the SVG button\n */\n renderSeparator(posX, posY) {\n const breadcrumbs = this, chart = this.chart, breadcrumbsOptions = breadcrumbs.options, separatorOptions = breadcrumbsOptions.separator;\n const separator = chart.renderer\n .label(separatorOptions.text, posX, posY, void 0, void 0, void 0, false)\n .addClass('highcharts-breadcrumbs-separator')\n .add(breadcrumbs.group);\n if (!chart.styledMode) {\n separator.css(separatorOptions.style);\n }\n return separator;\n }\n /**\n * Update.\n * @function Highcharts.Breadcrumbs#update\n *\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n * @param {Highcharts.BreadcrumbsOptions} options\n * Breadcrumbs class.\n * @param {boolean} redraw\n * Redraw flag\n */\n update(options) {\n merge(true, this.options, options);\n this.destroy();\n this.isDirty = true;\n }\n /**\n * Update button text when the showFullPath set to false.\n * @function Highcharts.Breadcrumbs#updateSingleButton\n *\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n updateSingleButton() {\n const chart = this.chart, currentBreadcrumb = this.list[this.level - 1];\n if (chart.drillUpButton) {\n chart.drillUpButton.attr({\n text: this.getButtonText(currentBreadcrumb)\n });\n }\n }\n /**\n * Destroy the chosen breadcrumbs group\n *\n * @function Highcharts.Breadcrumbs#destroy\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n destroy() {\n this.destroySingleButton();\n // Destroy elements one by one. It's necessary because\n // g().destroy() does not remove added HTML\n this.destroyListElements(true);\n // Then, destroy the group itself.\n if (this.group) {\n this.group.destroy();\n }\n this.group = void 0;\n }\n /**\n * Destroy the elements' buttons and separators.\n *\n * @function Highcharts.Breadcrumbs#destroyListElements\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n destroyListElements(force) {\n const elementList = this.elementList;\n objectEach(elementList, (element, level) => {\n if (force ||\n !elementList[level].updated) {\n element = elementList[level];\n element.button && element.button.destroy();\n element.separator && element.separator.destroy();\n delete element.button;\n delete element.separator;\n delete elementList[level];\n }\n });\n if (force) {\n this.elementList = {};\n }\n }\n /**\n * Destroy the single button if exists.\n *\n * @function Highcharts.Breadcrumbs#destroySingleButton\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n destroySingleButton() {\n if (this.chart.drillUpButton) {\n this.chart.drillUpButton.destroy();\n this.chart.drillUpButton = void 0;\n }\n }\n /**\n * Reset state for all buttons in elementList.\n *\n * @function Highcharts.Breadcrumbs#resetElementListState\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n resetElementListState() {\n objectEach(this.elementList, (element) => {\n element.updated = false;\n });\n }\n /**\n * Update rendered elements inside the elementList.\n *\n * @function Highcharts.Breadcrumbs#updateListElements\n *\n * @param {Highcharts.Breadcrumbs} this\n * Breadcrumbs class.\n */\n updateListElements() {\n const breadcrumbs = this, elementList = breadcrumbs.elementList, buttonSpacing = breadcrumbs.options.buttonSpacing, posY = buttonSpacing, list = breadcrumbs.list, rtl = breadcrumbs.options.rtl, rtlFactor = rtl ? -1 : 1, updateXPosition = function (element, spacing) {\n return rtlFactor * element.getBBox().width +\n rtlFactor * spacing;\n }, adjustToRTL = function (element, posX, posY) {\n element.translate(posX - element.getBBox().width, posY);\n };\n // Initial position for calculating the breadcrumbs group.\n let posX = breadcrumbs.group ?\n updateXPosition(breadcrumbs.group, buttonSpacing) :\n buttonSpacing, currentBreadcrumb, breadcrumb;\n for (let i = 0, iEnd = list.length; i < iEnd; ++i) {\n const isLast = i === iEnd - 1;\n let button, separator;\n breadcrumb = list[i];\n if (elementList[breadcrumb.level]) {\n currentBreadcrumb = elementList[breadcrumb.level];\n button = currentBreadcrumb.button;\n // Render a separator if it was not created before.\n if (!currentBreadcrumb.separator &&\n !isLast) {\n // Add spacing for the next separator\n posX += rtlFactor * buttonSpacing;\n currentBreadcrumb.separator =\n breadcrumbs.renderSeparator(posX, posY);\n if (rtl) {\n adjustToRTL(currentBreadcrumb.separator, posX, posY);\n }\n posX += updateXPosition(currentBreadcrumb.separator, buttonSpacing);\n }\n else if (currentBreadcrumb.separator &&\n isLast) {\n currentBreadcrumb.separator.destroy();\n delete currentBreadcrumb.separator;\n }\n elementList[breadcrumb.level].updated = true;\n }\n else {\n // Render a button.\n button = breadcrumbs.renderButton(breadcrumb, posX, posY);\n if (rtl) {\n adjustToRTL(button, posX, posY);\n }\n posX += updateXPosition(button, buttonSpacing);\n // Render a separator.\n if (!isLast) {\n separator = breadcrumbs.renderSeparator(posX, posY);\n if (rtl) {\n adjustToRTL(separator, posX, posY);\n }\n posX += updateXPosition(separator, buttonSpacing);\n }\n elementList[breadcrumb.level] = {\n button,\n separator,\n updated: true\n };\n }\n if (button) {\n button.setState(isLast ? 2 : 0);\n }\n }\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nBreadcrumbs.defaultOptions = Breadcrumbs_BreadcrumbsDefaults.options;\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Breadcrumbs_Breadcrumbs = (Breadcrumbs);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * Callback function to react on button clicks.\n *\n * @callback Highcharts.BreadcrumbsClickCallbackFunction\n *\n * @param {Highcharts.Event} event\n * Event.\n *\n * @param {Highcharts.BreadcrumbOptions} options\n * Breadcrumb options.\n *\n * @param {global.Event} e\n * Event arguments.\n */\n/**\n * Callback function to format the breadcrumb text from scratch.\n *\n * @callback Highcharts.BreadcrumbsFormatterCallbackFunction\n *\n * @param {Highcharts.Event} event\n * Event.\n *\n * @param {Highcharts.BreadcrumbOptions} options\n * Breadcrumb options.\n *\n * @return {string}\n * Formatted text or false\n */\n/**\n * Options for the one breadcrumb.\n *\n * @interface Highcharts.BreadcrumbOptions\n */\n/**\n * Level connected to a specific breadcrumb.\n * @name Highcharts.BreadcrumbOptions#level\n * @type {number}\n */\n/**\n * Options for series or point connected to a specific breadcrumb.\n * @name Highcharts.BreadcrumbOptions#levelOptions\n * @type {SeriesOptions|PointOptionsObject}\n */\n/**\n * Options for aligning breadcrumbs group.\n *\n * @interface Highcharts.BreadcrumbsAlignOptions\n */\n/**\n * Align of a Breadcrumb group.\n * @default right\n * @name Highcharts.BreadcrumbsAlignOptions#align\n * @type {AlignValue}\n */\n/**\n * Vertical align of a Breadcrumb group.\n * @default top\n * @name Highcharts.BreadcrumbsAlignOptions#verticalAlign\n * @type {VerticalAlignValue}\n */\n/**\n * X offset of a Breadcrumbs group.\n * @name Highcharts.BreadcrumbsAlignOptions#x\n * @type {number}\n */\n/**\n * Y offset of a Breadcrumbs group.\n * @name Highcharts.BreadcrumbsAlignOptions#y\n * @type {number}\n */\n/**\n * Options for all breadcrumbs.\n *\n * @interface Highcharts.BreadcrumbsOptions\n */\n/**\n * Button theme.\n * @name Highcharts.BreadcrumbsOptions#buttonTheme\n * @type { SVGAttributes | undefined }\n */\n(''); // Keeps doclets above in JS file\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(620);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGElement\"],\"commonjs\":[\"highcharts\",\"SVGElement\"],\"commonjs2\":[\"highcharts\",\"SVGElement\"],\"root\":[\"Highcharts\",\"SVGElement\"]}\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_ = __webpack_require__(28);\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_);\n;// ./code/es-modules/Series/ColorMapComposition.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { column: { prototype: columnProto } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\n\nconst { addEvent: ColorMapComposition_addEvent, defined: ColorMapComposition_defined } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Composition\n *\n * */\nvar ColorMapComposition;\n(function (ColorMapComposition) {\n /* *\n *\n * Constants\n *\n * */\n ColorMapComposition.pointMembers = {\n dataLabelOnNull: true,\n moveToTopOnHover: true,\n isValid: pointIsValid\n };\n ColorMapComposition.seriesMembers = {\n colorKey: 'value',\n axisTypes: ['xAxis', 'yAxis', 'colorAxis'],\n parallelArrays: ['x', 'y', 'value'],\n pointArrayMap: ['value'],\n trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n colorAttribs: seriesColorAttribs,\n pointAttribs: columnProto.pointAttribs\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(SeriesClass) {\n const PointClass = SeriesClass.prototype.pointClass;\n ColorMapComposition_addEvent(PointClass, 'afterSetState', onPointAfterSetState);\n return SeriesClass;\n }\n ColorMapComposition.compose = compose;\n /**\n * Move points to the top of the z-index order when hovered.\n * @private\n */\n function onPointAfterSetState(e) {\n const point = this, series = point.series, renderer = series.chart.renderer;\n if (point.moveToTopOnHover && point.graphic) {\n if (!series.stateMarkerGraphic) {\n // Create a `use` element and add it to the end of the group,\n // which would make it appear on top of the other elements. This\n // deals with z-index without reordering DOM elements (#13049).\n series.stateMarkerGraphic = new (highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default())(renderer, 'use')\n .css({\n pointerEvents: 'none'\n })\n .add(point.graphic.parentGroup);\n }\n if (e?.state === 'hover') {\n // Give the graphic DOM element the same id as the Point\n // instance\n point.graphic.attr({\n id: this.id\n });\n series.stateMarkerGraphic.attr({\n href: `${renderer.url}#${this.id}`,\n visibility: 'visible'\n });\n }\n else {\n series.stateMarkerGraphic.attr({\n href: ''\n });\n }\n }\n }\n /**\n * Color points have a value option that determines whether or not it is\n * a null point\n * @private\n */\n function pointIsValid() {\n return (this.value !== null &&\n this.value !== Infinity &&\n this.value !== -Infinity &&\n // Undefined is allowed, but NaN is not (#17279)\n (this.value === void 0 || !isNaN(this.value)));\n }\n /**\n * Get the color attributes to apply on the graphic\n * @private\n * @function Highcharts.colorMapSeriesMixin.colorAttribs\n * @param {Highcharts.Point} point\n * @return {Highcharts.SVGAttributes}\n * The SVG attributes\n */\n function seriesColorAttribs(point) {\n const ret = {};\n if (ColorMapComposition_defined(point.color) &&\n (!point.state || point.state === 'normal') // #15746\n ) {\n ret[this.colorProp || 'fill'] = point.color;\n }\n return ret;\n }\n})(ColorMapComposition || (ColorMapComposition = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Series_ColorMapComposition = (ColorMapComposition);\n\n;// ./code/es-modules/Series/Treemap/TreemapAlgorithmGroup.js\n/* *\n *\n * (c) 2014-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Class\n *\n * */\nclass TreemapAlgorithmGroup {\n /* *\n *\n * Constructor\n *\n * */\n constructor(h, w, d, p) {\n this.height = h;\n this.width = w;\n this.plot = p;\n this.direction = d;\n this.startDirection = d;\n this.total = 0;\n this.nW = 0;\n this.lW = 0;\n this.nH = 0;\n this.lH = 0;\n this.elArr = [];\n this.lP = {\n total: 0,\n lH: 0,\n nH: 0,\n lW: 0,\n nW: 0,\n nR: 0,\n lR: 0,\n aspectRatio: function (w, h) {\n return Math.max((w / h), (h / w));\n }\n };\n }\n /* *\n *\n * Functions\n *\n * */\n addElement(el) {\n this.lP.total = this.elArr[this.elArr.length - 1];\n this.total = this.total + el;\n if (this.direction === 0) {\n // Calculate last point old aspect ratio\n this.lW = this.nW;\n this.lP.lH = this.lP.total / this.lW;\n this.lP.lR = this.lP.aspectRatio(this.lW, this.lP.lH);\n // Calculate last point new aspect ratio\n this.nW = this.total / this.height;\n this.lP.nH = this.lP.total / this.nW;\n this.lP.nR = this.lP.aspectRatio(this.nW, this.lP.nH);\n }\n else {\n // Calculate last point old aspect ratio\n this.lH = this.nH;\n this.lP.lW = this.lP.total / this.lH;\n this.lP.lR = this.lP.aspectRatio(this.lP.lW, this.lH);\n // Calculate last point new aspect ratio\n this.nH = this.total / this.width;\n this.lP.nW = this.lP.total / this.nH;\n this.lP.nR = this.lP.aspectRatio(this.lP.nW, this.nH);\n }\n this.elArr.push(el);\n }\n reset() {\n this.nW = 0;\n this.lW = 0;\n this.elArr = [];\n this.total = 0;\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapAlgorithmGroup = (TreemapAlgorithmGroup);\n\n;// ./code/es-modules/Series/Treemap/TreemapNode.js\n/* *\n *\n * (c) 2010-2024 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Class\n *\n * */\nclass TreemapNode {\n constructor() {\n /* *\n *\n * Properties\n *\n * */\n this.childrenTotal = 0;\n this.visible = false;\n }\n /* *\n *\n * Functions\n *\n * */\n init(id, i, children, height, level, series, parent) {\n this.id = id;\n this.i = i;\n this.children = children;\n this.height = height;\n this.level = level;\n this.series = series;\n this.parent = parent;\n return this;\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapNode = (TreemapNode);\n\n;// ./code/es-modules/Series/DrawPointUtilities.js\n/* *\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Functions\n *\n * */\n/**\n * Handles the drawing of a component.\n * Can be used for any type of component that reserves the graphic property,\n * and provides a shouldDraw on its context.\n *\n * @private\n *\n * @todo add type checking.\n * @todo export this function to enable usage\n */\nfunction draw(point, params) {\n const { animatableAttribs, onComplete, css, renderer } = params;\n const animation = (point.series && point.series.chart.hasRendered) ?\n // Chart-level animation on updates\n void 0 :\n // Series-level animation on new points\n (point.series &&\n point.series.options.animation);\n let graphic = point.graphic;\n params.attribs = {\n ...params.attribs,\n 'class': point.getClassName()\n } || {};\n if ((point.shouldDraw())) {\n if (!graphic) {\n if (params.shapeType === 'text') {\n graphic = renderer.text();\n }\n else if (params.shapeType === 'image') {\n graphic = renderer.image(params.imageUrl || '')\n .attr(params.shapeArgs || {});\n }\n else {\n graphic = renderer[params.shapeType](params.shapeArgs || {});\n }\n point.graphic = graphic;\n graphic.add(params.group);\n }\n if (css) {\n graphic.css(css);\n }\n graphic\n .attr(params.attribs)\n .animate(animatableAttribs, params.isNew ? false : animation, onComplete);\n }\n else if (graphic) {\n const destroy = () => {\n point.graphic = graphic = (graphic && graphic.destroy());\n if (typeof onComplete === 'function') {\n onComplete();\n }\n };\n // Animate only runs complete callback if something was animated.\n if (Object.keys(animatableAttribs).length) {\n graphic.animate(animatableAttribs, void 0, () => destroy());\n }\n else {\n destroy();\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nconst DrawPointUtilities = {\n draw\n};\n/* harmony default export */ const Series_DrawPointUtilities = (DrawPointUtilities);\n\n;// ./code/es-modules/Series/Treemap/TreemapPoint.js\n/* *\n *\n * (c) 2014-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { pie: { prototype: { pointClass: PiePoint } }, scatter: { prototype: { pointClass: ScatterPoint } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { extend: TreemapPoint_extend, isNumber, pick: TreemapPoint_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\nclass TreemapPoint extends ScatterPoint {\n constructor() {\n /* *\n *\n * Properties\n *\n * */\n super(...arguments);\n this.groupedPointsAmount = 0;\n this.shapeType = 'rect';\n }\n /* *\n *\n * Functions\n *\n * */\n draw(params) {\n Series_DrawPointUtilities.draw(this, params);\n }\n getClassName() {\n const series = this.series, options = series.options;\n let className = super.getClassName();\n // Above the current level\n if (this.node.level <= series.nodeMap[series.rootNode].level &&\n this.node.children.length) {\n className += ' highcharts-above-level';\n }\n else if (!this.node.isGroup &&\n !this.node.isLeaf &&\n !series.nodeMap[series.rootNode].isGroup &&\n !TreemapPoint_pick(options.interactByLeaf, !options.allowTraversingTree)) {\n className += ' highcharts-internal-node-interactive';\n }\n else if (!this.node.isGroup &&\n !this.node.isLeaf &&\n !series.nodeMap[series.rootNode].isGroup) {\n className += ' highcharts-internal-node';\n }\n return className;\n }\n /**\n * A tree point is valid if it has han id too, assume it may be a parent\n * item.\n *\n * @private\n * @function Highcharts.Point#isValid\n */\n isValid() {\n return Boolean(this.id || isNumber(this.value));\n }\n setState(state) {\n super.setState.apply(this, arguments);\n // Graphic does not exist when point is not visible.\n if (this.graphic) {\n this.graphic.attr({\n zIndex: state === 'hover' ? 1 : 0\n });\n }\n }\n shouldDraw() {\n return isNumber(this.plotY) && this.y !== null;\n }\n}\nTreemapPoint_extend(TreemapPoint.prototype, {\n setVisible: PiePoint.prototype.setVisible\n});\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapPoint = (TreemapPoint);\n\n;// ./code/es-modules/Series/Treemap/TreemapSeriesDefaults.js\n/* *\n *\n * (c) 2014-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { isString: TreemapSeriesDefaults_isString } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * API Options\n *\n * */\n/**\n * A treemap displays hierarchical data using nested rectangles. The data\n * can be laid out in varying ways depending on options.\n *\n * @sample highcharts/demo/treemap-large-dataset/\n * Treemap\n *\n * @extends plotOptions.scatter\n * @excluding connectEnds, connectNulls, dataSorting, dragDrop, jitter, marker\n * @product highcharts\n * @requires modules/treemap\n * @optionparent plotOptions.treemap\n */\nconst TreemapSeriesDefaults = {\n /**\n * When enabled the user can click on a point which is a parent and\n * zoom in on its children. Deprecated and replaced by\n * [allowTraversingTree](#plotOptions.treemap.allowTraversingTree).\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-allowdrilltonode/\n * Enabled\n *\n * @deprecated\n * @type {boolean}\n * @default false\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.allowDrillToNode\n */\n /**\n * When enabled the user can click on a point which is a parent and\n * zoom in on its children.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-allowtraversingtree/\n * Enabled\n * @sample {highcharts} highcharts/plotoptions/treemap-grouping-traversing/\n * Traversing to Grouped Points node\n *\n * @since 7.0.3\n * @product highcharts\n */\n allowTraversingTree: false,\n animationLimit: 250,\n /**\n * The border radius for each treemap item.\n */\n borderRadius: 0,\n /**\n * Options for the breadcrumbs, the navigation at the top leading the\n * way up through the traversed levels.\n *\n *\n * @since 10.0.0\n * @product highcharts\n * @extends navigation.breadcrumbs\n * @apioption plotOptions.treemap.breadcrumbs\n */\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, event if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @type {number}\n * @default 300\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.cropThreshold\n */\n /**\n * Fires on a request for change of root node for the tree, before the\n * update is made. An event object is passed to the function, containing\n * additional properties `newRootId`, `previousRootId`, `redraw` and\n * `trigger`.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-events-setrootnode/\n * Alert update information on setRootNode event.\n *\n * @type {Function}\n * @default undefined\n * @since 7.0.3\n * @product highcharts\n * @apioption plotOptions.treemap.events.setRootNode\n */\n /**\n * This option decides if the user can interact with the parent nodes\n * or just the leaf nodes. When this option is undefined, it will be\n * true by default. However when allowTraversingTree is true, then it\n * will be false by default.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-interactbyleaf-false/\n * False\n * @sample {highcharts} highcharts/plotoptions/treemap-interactbyleaf-true-and-allowtraversingtree/\n * InteractByLeaf and allowTraversingTree is true\n *\n * @type {boolean}\n * @since 4.1.2\n * @product highcharts\n * @apioption plotOptions.treemap.interactByLeaf\n */\n /**\n * The sort index of the point inside the treemap level.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-sortindex/\n * Sort by years\n *\n * @type {number}\n * @since 4.1.10\n * @product highcharts\n * @apioption plotOptions.treemap.sortIndex\n */\n /**\n * A series specific or series type specific color set to apply instead\n * of the global [colors](#colors) when\n * [colorByPoint](#plotOptions.treemap.colorByPoint) is true.\n *\n * @type {Array<Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject>}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.treemap.colors\n */\n /**\n * Whether to display this series type or specific series item in the\n * legend.\n */\n showInLegend: false,\n /**\n * @ignore-option\n */\n marker: void 0,\n /**\n * When using automatic point colors pulled from the `options.colors`\n * collection, this option determines whether the chart should receive\n * one color per series or one color per point.\n *\n * @see [series colors](#plotOptions.treemap.colors)\n *\n * @since 2.0\n * @product highcharts\n * @apioption plotOptions.treemap.colorByPoint\n */\n colorByPoint: false,\n /**\n * @since 4.1.0\n */\n dataLabels: {\n defer: false,\n enabled: true,\n formatter: function () {\n const point = this && this.point ?\n this.point :\n {}, name = TreemapSeriesDefaults_isString(point.name) ? point.name : '';\n return name;\n },\n inside: true,\n padding: 2,\n verticalAlign: 'middle',\n style: {\n textOverflow: 'ellipsis'\n }\n },\n tooltip: {\n headerFormat: '',\n pointFormat: '<b>{point.name}</b>: {point.value}<br/>',\n /**\n * The HTML of the grouped point's nodes in the tooltip. Works only for\n * Treemap series grouping and analogously to\n * [pointFormat](#tooltip.pointFormat).\n *\n * The grouped nodes point tooltip can be also formatted using\n * `tooltip.formatter` callback function and `point.isGroupNode` flag.\n *\n * @type {string}\n * @default '+ {point.groupedPointsAmount} more...'\n * @apioption tooltip.clusterFormat\n */\n clusterFormat: '+ {point.groupedPointsAmount} more...<br/>'\n },\n /**\n * Whether to ignore hidden points when the layout algorithm runs.\n * If `false`, hidden points will leave open spaces.\n *\n * @since 5.0.8\n */\n ignoreHiddenPoint: true,\n /**\n * This option decides which algorithm is used for setting position\n * and dimensions of the points.\n *\n * @see [How to write your own algorithm](https://www.highcharts.com/docs/chart-and-series-types/treemap)\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-sliceanddice/\n * SliceAndDice by default\n * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-stripes/\n * Stripes\n * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-squarified/\n * Squarified\n * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-strip/\n * Strip\n *\n * @since 4.1.0\n * @validvalue [\"sliceAndDice\", \"stripes\", \"squarified\", \"strip\"]\n */\n layoutAlgorithm: 'sliceAndDice',\n /**\n * Defines which direction the layout algorithm will start drawing.\n *\n * @since 4.1.0\n * @validvalue [\"vertical\", \"horizontal\"]\n */\n layoutStartingDirection: 'vertical',\n /**\n * Enabling this option will make the treemap alternate the drawing\n * direction between vertical and horizontal. The next levels starting\n * direction will always be the opposite of the previous.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-alternatestartingdirection-true/\n * Enabled\n *\n * @since 4.1.0\n */\n alternateStartingDirection: false,\n /**\n * Used together with the levels and allowTraversingTree options. When\n * set to false the first level visible to be level one, which is\n * dynamic when traversing the tree. Otherwise the level will be the\n * same as the tree structure.\n *\n * @since 4.1.0\n */\n levelIsConstant: true,\n /**\n * Options for the button appearing when traversing down in a treemap.\n *\n * Since v9.3.3 the `traverseUpButton` is replaced by `breadcrumbs`.\n *\n * @deprecated\n */\n traverseUpButton: {\n /**\n * The position of the button.\n */\n position: {\n /**\n * Vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @product highcharts\n * @apioption plotOptions.treemap.traverseUpButton.position.verticalAlign\n */\n /**\n * Horizontal alignment of the button.\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'right',\n /**\n * Horizontal offset of the button.\n */\n x: -10,\n /**\n * Vertical offset of the button.\n */\n y: 10\n }\n },\n /**\n * Set options on specific levels. Takes precedence over series options,\n * but not point options.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-levels/\n * Styling dataLabels and borders\n * @sample {highcharts} highcharts/demo/treemap-with-levels/\n * Different layoutAlgorithm\n *\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels\n */\n /**\n * Can set a `borderColor` on all points which lies on the same level.\n *\n * @type {Highcharts.ColorString}\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels.borderColor\n */\n /**\n * Set the dash style of the border of all the point which lies on the\n * level. See\n * [plotOptions.scatter.dashStyle](#plotoptions.scatter.dashstyle)\n * for possible options.\n *\n * @type {Highcharts.DashStyleValue}\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels.borderDashStyle\n */\n /**\n * Can set the borderWidth on all points which lies on the same level.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels.borderWidth\n */\n /**\n * Can set a color on all points which lies on the same level.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels.color\n */\n /**\n * A configuration object to define how the color of a child varies from\n * the parent's color. The variation is distributed among the children\n * of node. For example when setting brightness, the brightness change\n * will range from the parent's original brightness on the first child,\n * to the amount set in the `to` setting on the last node. This allows a\n * gradient-like color scheme that sets children out from each other\n * while highlighting the grouping on treemaps and sectors on sunburst\n * charts.\n *\n * @sample highcharts/demo/sunburst/\n * Sunburst with color variation\n *\n * @sample highcharts/series-treegraph/color-variation\n * Treegraph nodes with color variation\n *\n * @since 6.0.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels.colorVariation\n */\n /**\n * The key of a color variation. Currently supports `brightness` only.\n *\n * @type {string}\n * @since 6.0.0\n * @product highcharts\n * @validvalue [\"brightness\"]\n * @apioption plotOptions.treemap.levels.colorVariation.key\n */\n /**\n * The ending value of a color variation. The last sibling will receive\n * this value.\n *\n * @type {number}\n * @since 6.0.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels.colorVariation.to\n */\n /**\n * Can set the options of dataLabels on each point which lies on the\n * level.\n * [plotOptions.treemap.dataLabels](#plotOptions.treemap.dataLabels) for\n * possible values.\n *\n * @extends plotOptions.treemap.dataLabels\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels.dataLabels\n */\n /**\n * Can set the layoutAlgorithm option on a specific level.\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts\n * @validvalue [\"sliceAndDice\", \"stripes\", \"squarified\", \"strip\"]\n * @apioption plotOptions.treemap.levels.layoutAlgorithm\n */\n /**\n * Can set the layoutStartingDirection option on a specific level.\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts\n * @validvalue [\"vertical\", \"horizontal\"]\n * @apioption plotOptions.treemap.levels.layoutStartingDirection\n */\n /**\n * Decides which level takes effect from the options set in the levels\n * object.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-levels/\n * Styling of both levels\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts\n * @apioption plotOptions.treemap.levels.level\n */\n // Presentational options\n /**\n * The color of the border surrounding each tree map item.\n *\n * @type {Highcharts.ColorString}\n */\n borderColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The width of the border surrounding each tree map item.\n */\n borderWidth: 1,\n colorKey: 'colorValue',\n /**\n * The opacity of a point in treemap. When a point has children, the\n * visibility of the children is determined by the opacity.\n *\n * @since 4.2.4\n */\n opacity: 0.15,\n /**\n * A wrapper object for all the series options in specific states.\n *\n * @extends plotOptions.heatmap.states\n */\n states: {\n /**\n * Options for the hovered series\n *\n * @extends plotOptions.heatmap.states.hover\n * @excluding halo\n */\n hover: {\n /**\n * The border color for the hovered state.\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * Brightness for the hovered point. Defaults to 0 if the\n * heatmap series is loaded first, otherwise 0.1.\n *\n * @type {number}\n * @default undefined\n */\n brightness: (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.heatmap ? 0 : 0.1,\n /**\n * @extends plotOptions.heatmap.states.hover.halo\n */\n halo: false,\n /**\n * The opacity of a point in treemap. When a point has children,\n * the visibility of the children is determined by the opacity.\n *\n * @since 4.2.4\n */\n opacity: 0.75,\n /**\n * The shadow option for hovered state.\n */\n shadow: false\n }\n },\n legendSymbol: 'rectangle',\n /**\n * This option enables automatic traversing to the last child level upon\n * node interaction. This feature simplifies navigation by immediately\n * focusing on the deepest layer of the data structure without intermediate\n * steps.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-traverse-to-leaf/\n * Traverse to leaf enabled\n *\n * @since 11.4.4\n *\n * @product highcharts\n */\n traverseToLeaf: false,\n /**\n * An option to optimize treemap series rendering by grouping smaller leaf\n * nodes below a certain square area threshold in pixels. If the square area\n * of a point becomes smaller than the specified threshold, determined by\n * the `pixelWidth` and/or `pixelHeight` options, then this point is moved\n * into one group point per series.\n *\n * @sample {highcharts} highcharts/plotoptions/treemap-grouping-simple\n * Simple demo of Treemap grouping\n * @sample {highcharts} highcharts/plotoptions/treemap-grouping-multiple-parents\n * Treemap grouping with multiple parents\n * @sample {highcharts} highcharts/plotoptions/treemap-grouping-advanced\n * Advanced demo of Treemap grouping\n *\n * @since 12.1.0\n *\n * @excluding allowOverlap, animation, dataLabels, drillToCluster, events,\n * layoutAlgorithm, marker, states, zones\n *\n * @product highcharts\n */\n cluster: {\n /**\n * An additional, individual class name for the grouped point's graphic\n * representation.\n *\n * @type string\n * @product highcharts\n */\n className: void 0,\n /**\n * Individual color for the grouped point. By default the color is\n * pulled from the parent color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts\n */\n color: void 0,\n /**\n * Enable or disable Treemap grouping.\n *\n * @type {boolean}\n * @since 12.1.0\n * @product highcharts\n */\n enabled: false,\n /**\n * The pixel threshold width of area, which is used in Treemap grouping.\n *\n * @type {number}\n * @since 12.1.0\n * @product highcharts\n */\n pixelWidth: void 0,\n /**\n * The pixel threshold height of area, which is used in Treemap\n * grouping.\n *\n * @type {number}\n * @since 12.1.0\n * @product highcharts\n */\n pixelHeight: void 0,\n /**\n * The name of the point of grouped nodes shown in the tooltip,\n * dataLabels, etc. By default it is set to '+ n', where n is number of\n * grouped points.\n *\n * @type {string}\n * @since 12.1.0\n * @product highcharts\n */\n name: void 0,\n /**\n * A configuration property that specifies the factor by which the value\n * and size of a grouped node are reduced. This can be particularly\n * useful when a grouped node occupies a disproportionately large\n * portion of the graph, ensuring better visual balance and readability.\n *\n * @type {number}\n * @since 12.1.0\n * @product highcharts\n */\n reductionFactor: void 0,\n /**\n * Defines the minimum number of child nodes required to create a group\n * of small nodes.\n *\n * @type {number}\n * @since 12.1.0\n * @product highcharts\n */\n minimumClusterSize: 5,\n layoutAlgorithm: {\n distance: 0,\n gridSize: 0,\n kmeansThreshold: 0\n },\n marker: {\n lineWidth: 0,\n radius: 0\n }\n }\n};\n/**\n * A `treemap` series. If the [type](#series.treemap.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.treemap\n * @excluding dataParser, dataURL, stack, dataSorting\n * @product highcharts\n * @requires modules/treemap\n * @apioption series.treemap\n */\n/**\n * An array of data points for the series. For the `treemap` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `value` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.treemap.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * value: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * value: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|null|*>}\n * @extends series.heatmap.data\n * @excluding x, y, pointPadding\n * @product highcharts\n * @apioption series.treemap.data\n */\n/**\n * The value of the point, resulting in a relative area of the point\n * in the treemap.\n *\n * @type {number|null}\n * @product highcharts\n * @apioption series.treemap.data.value\n */\n/**\n * Serves a purpose only if a `colorAxis` object is defined in the chart\n * options. This value will decide which color the point gets from the\n * scale of the colorAxis.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts\n * @apioption series.treemap.data.colorValue\n */\n/**\n * Only for treemap. Use this option to build a tree structure. The\n * value should be the id of the point which is the parent. If no points\n * has a matching id, or this option is undefined, then the parent will\n * be set to the root.\n *\n * @sample {highcharts} highcharts/point/parent/\n * Point parent\n * @sample {highcharts} highcharts/demo/treemap-with-levels/\n * Example where parent id is not matching\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts\n * @apioption series.treemap.data.parent\n */\n''; // Keeps doclets above detached\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapSeriesDefaults = (TreemapSeriesDefaults);\n\n;// ./code/es-modules/Series/Treemap/TreemapUtilities.js\n/* *\n *\n * (c) 2014-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Namespace\n *\n * */\nvar TreemapUtilities;\n(function (TreemapUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * @todo find correct name for this function.\n * @todo Similar to reduce, this function is likely redundant\n */\n function recursive(item, func, context) {\n const next = func.call(context || this, item);\n if (next !== false) {\n recursive(next, func, context);\n }\n }\n TreemapUtilities.recursive = recursive;\n})(TreemapUtilities || (TreemapUtilities = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapUtilities = (TreemapUtilities);\n\n;// ./code/es-modules/Series/TreeUtilities.js\n/* *\n *\n * (c) 2014-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { extend: TreeUtilities_extend, isArray, isNumber: TreeUtilities_isNumber, isObject, merge: TreeUtilities_merge, pick: TreeUtilities_pick, relativeLength } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction getColor(node, options) {\n const index = options.index, mapOptionsToLevel = options.mapOptionsToLevel, parentColor = options.parentColor, parentColorIndex = options.parentColorIndex, series = options.series, colors = options.colors, siblings = options.siblings, points = series.points, chartOptionsChart = series.chart.options.chart;\n let getColorByPoint, point, level, colorByPoint, colorIndexByPoint, color, colorIndex;\n /**\n * @private\n */\n const variateColor = (color) => {\n const colorVariation = level && level.colorVariation;\n if (colorVariation &&\n colorVariation.key === 'brightness' &&\n index &&\n siblings) {\n return highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default().parse(color).brighten(colorVariation.to * (index / siblings)).get();\n }\n return color;\n };\n if (node) {\n point = points[node.i];\n level = mapOptionsToLevel[node.level] || {};\n getColorByPoint = point && level.colorByPoint;\n if (getColorByPoint) {\n colorIndexByPoint = point.index % (colors ?\n colors.length :\n chartOptionsChart.colorCount);\n colorByPoint = colors && colors[colorIndexByPoint];\n }\n // Select either point color, level color or inherited color.\n if (!series.chart.styledMode) {\n color = TreeUtilities_pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);\n }\n colorIndex = TreeUtilities_pick(point && point.options.colorIndex, level && level.colorIndex, colorIndexByPoint, parentColorIndex, options.colorIndex);\n }\n return {\n color: color,\n colorIndex: colorIndex\n };\n}\n/**\n * Creates a map from level number to its given options.\n *\n * @private\n *\n * @param {Object} params\n * Object containing parameters.\n * - `defaults` Object containing default options. The default options are\n * merged with the userOptions to get the final options for a specific\n * level.\n * - `from` The lowest level number.\n * - `levels` User options from series.levels.\n * - `to` The highest level number.\n *\n * @return {Highcharts.Dictionary<object>|null}\n * Returns a map from level number to its given options.\n */\nfunction getLevelOptions(params) {\n const result = {};\n let defaults, converted, i, from, to, levels;\n if (isObject(params)) {\n from = TreeUtilities_isNumber(params.from) ? params.from : 1;\n levels = params.levels;\n converted = {};\n defaults = isObject(params.defaults) ? params.defaults : {};\n if (isArray(levels)) {\n converted = levels.reduce((obj, item) => {\n let level, levelIsConstant, options;\n if (isObject(item) && TreeUtilities_isNumber(item.level)) {\n options = TreeUtilities_merge({}, item);\n levelIsConstant = TreeUtilities_pick(options.levelIsConstant, defaults.levelIsConstant);\n // Delete redundant properties.\n delete options.levelIsConstant;\n delete options.level;\n // Calculate which level these options apply to.\n level = item.level + (levelIsConstant ? 0 : from - 1);\n if (isObject(obj[level])) {\n TreeUtilities_merge(true, obj[level], options); // #16329\n }\n else {\n obj[level] = options;\n }\n }\n return obj;\n }, {});\n }\n to = TreeUtilities_isNumber(params.to) ? params.to : 1;\n for (i = 0; i <= to; i++) {\n result[i] = TreeUtilities_merge({}, defaults, isObject(converted[i]) ? converted[i] : {});\n }\n }\n return result;\n}\n/**\n * @private\n * @todo Combine buildTree and buildNode with setTreeValues\n * @todo Remove logic from Treemap and make it utilize this mixin.\n */\nfunction setTreeValues(tree, options) {\n const before = options.before, idRoot = options.idRoot, mapIdToNode = options.mapIdToNode, nodeRoot = mapIdToNode[idRoot], levelIsConstant = (options.levelIsConstant !== false), points = options.points, point = points[tree.i], optionsPoint = point && point.options || {}, children = [];\n let childrenTotal = 0;\n tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);\n tree.name = TreeUtilities_pick(point && point.name, '');\n tree.visible = (idRoot === tree.id ||\n options.visible === true);\n if (typeof before === 'function') {\n tree = before(tree, options);\n }\n // First give the children some values\n tree.children.forEach((child, i) => {\n const newOptions = TreeUtilities_extend({}, options);\n TreeUtilities_extend(newOptions, {\n index: i,\n siblings: tree.children.length,\n visible: tree.visible\n });\n child = setTreeValues(child, newOptions);\n children.push(child);\n if (child.visible) {\n childrenTotal += child.val;\n }\n });\n // Set the values\n const value = TreeUtilities_pick(optionsPoint.value, childrenTotal);\n tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);\n tree.children = children;\n tree.childrenTotal = childrenTotal;\n tree.isLeaf = tree.visible && !childrenTotal;\n tree.val = value;\n return tree;\n}\n/**\n * Update the rootId property on the series. Also makes sure that it is\n * accessible to exporting.\n *\n * @private\n *\n * @param {Object} series\n * The series to operate on.\n *\n * @return {string}\n * Returns the resulting rootId after update.\n */\nfunction updateRootId(series) {\n let rootId, options;\n if (isObject(series)) {\n // Get the series options.\n options = isObject(series.options) ? series.options : {};\n // Calculate the rootId.\n rootId = TreeUtilities_pick(series.rootNode, options.rootId, '');\n // Set rootId on series.userOptions to pick it up in exporting.\n if (isObject(series.userOptions)) {\n series.userOptions.rootId = rootId;\n }\n // Set rootId on series to pick it up on next update.\n series.rootNode = rootId;\n }\n return rootId;\n}\n/**\n * Get the node width, which relies on the plot width and the nodeDistance\n * option.\n *\n * @private\n */\nfunction getNodeWidth(series, columnCount) {\n const { chart, options } = series, { nodeDistance = 0, nodeWidth = 0 } = options, { plotSizeX = 1 } = chart;\n // Node width auto means they are evenly distributed along the width of\n // the plot area\n if (nodeWidth === 'auto') {\n if (typeof nodeDistance === 'string' && /%$/.test(nodeDistance)) {\n const fraction = parseFloat(nodeDistance) / 100, total = columnCount + fraction * (columnCount - 1);\n return plotSizeX / total;\n }\n const nDistance = Number(nodeDistance);\n return ((plotSizeX + nDistance) /\n (columnCount || 1)) - nDistance;\n }\n return relativeLength(nodeWidth, plotSizeX);\n}\n/* *\n *\n * Default Export\n *\n * */\nconst TreeUtilities = {\n getColor,\n getLevelOptions,\n getNodeWidth,\n setTreeValues,\n updateRootId\n};\n/* harmony default export */ const Series_TreeUtilities = (TreeUtilities);\n\n;// ./code/es-modules/Series/Treemap/TreemapSeries.js\n/* *\n *\n * (c) 2014-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { parse: color } = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default());\n\n\nconst { composed: TreemapSeries_composed, noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { column: ColumnSeries, scatter: ScatterSeries } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\n\n\n\n\n\nconst { getColor: TreemapSeries_getColor, getLevelOptions: TreemapSeries_getLevelOptions, updateRootId: TreemapSeries_updateRootId } = Series_TreeUtilities;\n\nconst { addEvent: TreemapSeries_addEvent, correctFloat, crisp, defined: TreemapSeries_defined, error, extend: TreemapSeries_extend, fireEvent: TreemapSeries_fireEvent, isArray: TreemapSeries_isArray, isObject: TreemapSeries_isObject, isString: TreemapSeries_isString, merge: TreemapSeries_merge, pick: TreemapSeries_pick, pushUnique: TreemapSeries_pushUnique, splat, stableSort } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Constants\n *\n * */\nconst axisMax = 100;\n/* *\n *\n * Variables\n *\n * */\nlet treemapAxisDefaultValues = false;\n/* *\n *\n * Functions\n *\n * */\n/** @private */\nfunction onSeriesAfterBindAxes() {\n const series = this, xAxis = series.xAxis, yAxis = series.yAxis;\n let treeAxis;\n if (xAxis && yAxis) {\n if (series.is('treemap')) {\n treeAxis = {\n endOnTick: false,\n gridLineWidth: 0,\n lineWidth: 0,\n min: 0,\n minPadding: 0,\n max: axisMax,\n maxPadding: 0,\n startOnTick: false,\n title: void 0,\n tickPositions: []\n };\n TreemapSeries_extend(yAxis.options, treeAxis);\n TreemapSeries_extend(xAxis.options, treeAxis);\n treemapAxisDefaultValues = true;\n }\n else if (treemapAxisDefaultValues) {\n yAxis.setOptions(yAxis.userOptions);\n xAxis.setOptions(xAxis.userOptions);\n treemapAxisDefaultValues = false;\n }\n }\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.treemap\n *\n * @augments Highcharts.Series\n */\nclass TreemapSeries extends ScatterSeries {\n /* *\n *\n * Static Functions\n *\n * */\n static compose(SeriesClass) {\n if (TreemapSeries_pushUnique(TreemapSeries_composed, 'TreemapSeries')) {\n TreemapSeries_addEvent(SeriesClass, 'afterBindAxes', onSeriesAfterBindAxes);\n }\n }\n /* *\n *\n * Function\n *\n * */\n /* eslint-disable valid-jsdoc */\n algorithmCalcPoints(directionChange, last, group, childrenArea) {\n const plot = group.plot, end = group.elArr.length - 1;\n let pX, pY, pW, pH, gW = group.lW, gH = group.lH, keep, i = 0;\n if (last) {\n gW = group.nW;\n gH = group.nH;\n }\n else {\n keep = group.elArr[end];\n }\n for (const p of group.elArr) {\n if (last || (i < end)) {\n if (group.direction === 0) {\n pX = plot.x;\n pY = plot.y;\n pW = gW;\n pH = p / pW;\n }\n else {\n pX = plot.x;\n pY = plot.y;\n pH = gH;\n pW = p / pH;\n }\n childrenArea.push({\n x: pX,\n y: pY,\n width: pW,\n height: correctFloat(pH)\n });\n if (group.direction === 0) {\n plot.y = plot.y + pH;\n }\n else {\n plot.x = plot.x + pW;\n }\n }\n i = i + 1;\n }\n // Reset variables\n group.reset();\n if (group.direction === 0) {\n group.width = group.width - gW;\n }\n else {\n group.height = group.height - gH;\n }\n plot.y = plot.parent.y + (plot.parent.height - group.height);\n plot.x = plot.parent.x + (plot.parent.width - group.width);\n if (directionChange) {\n group.direction = 1 - group.direction;\n }\n // If not last, then add uncalculated element\n if (!last) {\n group.addElement(keep);\n }\n }\n algorithmFill(directionChange, parent, children) {\n const childrenArea = [];\n let pTot, direction = parent.direction, x = parent.x, y = parent.y, width = parent.width, height = parent.height, pX, pY, pW, pH;\n for (const child of children) {\n pTot =\n (parent.width * parent.height) * (child.val / parent.val);\n pX = x;\n pY = y;\n if (direction === 0) {\n pH = height;\n pW = pTot / pH;\n width = width - pW;\n x = x + pW;\n }\n else {\n pW = width;\n pH = pTot / pW;\n height = height - pH;\n y = y + pH;\n }\n childrenArea.push({\n x: pX,\n y: pY,\n width: pW,\n height: pH,\n direction: 0,\n val: 0\n });\n if (directionChange) {\n direction = 1 - direction;\n }\n }\n return childrenArea;\n }\n algorithmLowAspectRatio(directionChange, parent, children) {\n const series = this, childrenArea = [], plot = {\n x: parent.x,\n y: parent.y,\n parent: parent\n }, direction = parent.direction, end = children.length - 1, group = new Treemap_TreemapAlgorithmGroup(parent.height, parent.width, direction, plot);\n let pTot, i = 0;\n // Loop through and calculate all areas\n for (const child of children) {\n pTot =\n (parent.width * parent.height) * (child.val / parent.val);\n group.addElement(pTot);\n if (group.lP.nR > group.lP.lR) {\n series.algorithmCalcPoints(directionChange, false, group, childrenArea, plot // @todo no supported\n );\n }\n // If last child, then calculate all remaining areas\n if (i === end) {\n series.algorithmCalcPoints(directionChange, true, group, childrenArea, plot // @todo not supported\n );\n }\n ++i;\n }\n return childrenArea;\n }\n /**\n * Over the alignment method by setting z index.\n * @private\n */\n alignDataLabel(point, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataLabel, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n labelOptions) {\n ColumnSeries.prototype.alignDataLabel.apply(this, arguments);\n if (point.dataLabel) {\n // `point.node.zIndex` could be undefined (#6956)\n point.dataLabel.attr({ zIndex: (point.node.zIndex || 0) + 1 });\n }\n }\n applyTreeGrouping() {\n const series = this, parentList = series.parentList || {}, { cluster } = series.options, minimumClusterSize = cluster?.minimumClusterSize || 5;\n if (cluster?.enabled) {\n const parentGroups = {};\n const checkIfHide = (node) => {\n if (node?.point?.shapeArgs) {\n const { width = 0, height = 0 } = node.point.shapeArgs, area = width * height;\n const { pixelWidth = 0, pixelHeight = 0 } = cluster, compareHeight = TreemapSeries_defined(pixelHeight), thresholdArea = pixelHeight ?\n pixelWidth * pixelHeight :\n pixelWidth * pixelWidth;\n if (width < pixelWidth ||\n height < (compareHeight ? pixelHeight : pixelWidth) ||\n area < thresholdArea) {\n if (!node.isGroup && TreemapSeries_defined(node.parent)) {\n if (!parentGroups[node.parent]) {\n parentGroups[node.parent] = [];\n }\n parentGroups[node.parent].push(node);\n }\n }\n }\n node?.children.forEach((child) => {\n checkIfHide(child);\n });\n };\n checkIfHide(series.tree);\n for (const parent in parentGroups) {\n if (parentGroups[parent]) {\n if (parentGroups[parent].length > minimumClusterSize) {\n parentGroups[parent].forEach((node) => {\n const index = parentList[parent].indexOf(node.i);\n if (index !== -1) {\n parentList[parent].splice(index, 1);\n const id = `highcharts-grouped-treemap-points-${node.parent || 'root'}`;\n let groupPoint = series.points\n .find((p) => p.id === id);\n if (!groupPoint) {\n const PointClass = series.pointClass, pointIndex = series.points.length;\n groupPoint = new PointClass(series, {\n className: cluster.className,\n color: cluster.color,\n id,\n index: pointIndex,\n isGroup: true,\n value: 0\n });\n TreemapSeries_extend(groupPoint, {\n formatPrefix: 'cluster'\n });\n series.points.push(groupPoint);\n parentList[parent].push(pointIndex);\n parentList[id] = [];\n }\n const amount = groupPoint.groupedPointsAmount + 1, val = series.points[groupPoint.index]\n .options.value || 0, name = cluster.name ||\n `+ ${amount}`;\n // Update the point directly in points array to\n // prevent wrong instance update\n series.points[groupPoint.index]\n .groupedPointsAmount = amount;\n series.points[groupPoint.index].options.value =\n val + (node.point.value || 0);\n series.points[groupPoint.index].name = name;\n parentList[id].push(node.point.index);\n }\n });\n }\n }\n }\n series.nodeMap = {};\n series.nodeList = [];\n series.parentList = parentList;\n const tree = series.buildTree('', -1, 0, series.parentList);\n series.translate(tree);\n }\n }\n /**\n * Recursive function which calculates the area for all children of a\n * node.\n *\n * @private\n * @function Highcharts.Series#calculateChildrenAreas\n *\n * @param {Object} parent\n * The node which is parent to the children.\n *\n * @param {Object} area\n * The rectangular area of the parent.\n */\n calculateChildrenAreas(parent, area) {\n const series = this, options = series.options, mapOptionsToLevel = series.mapOptionsToLevel, level = mapOptionsToLevel[parent.level + 1], algorithm = TreemapSeries_pick((level?.layoutAlgorithm &&\n series[level?.layoutAlgorithm] &&\n level.layoutAlgorithm), series.options.layoutAlgorithm), alternate = options.alternateStartingDirection, \n // Collect all children which should be included\n children = parent.children.filter((n) => parent.isGroup || !n.ignore);\n if (!algorithm) {\n return;\n }\n let childrenValues = [];\n if (level && level.layoutStartingDirection) {\n area.direction = level.layoutStartingDirection === 'vertical' ?\n 0 :\n 1;\n }\n childrenValues = series[algorithm](area, children);\n let i = -1;\n for (const child of children) {\n const values = childrenValues[++i];\n child.values = TreemapSeries_merge(values, {\n val: child.childrenTotal,\n direction: (alternate ? 1 - area.direction : area.direction)\n });\n child.pointValues = TreemapSeries_merge(values, {\n x: (values.x / series.axisRatio),\n // Flip y-values to avoid visual regression with csvCoord in\n // Axis.translate at setPointValues. #12488\n y: axisMax - values.y - values.height,\n width: (values.width / series.axisRatio)\n });\n // If node has children, then call method recursively\n if (child.children.length) {\n series.calculateChildrenAreas(child, child.values);\n }\n }\n }\n /**\n * Create level list.\n * @private\n */\n createList(e) {\n const chart = this.chart, breadcrumbs = chart.breadcrumbs, list = [];\n if (breadcrumbs) {\n let currentLevelNumber = 0;\n list.push({\n level: currentLevelNumber,\n levelOptions: chart.series[0]\n });\n let node = e.target.nodeMap[e.newRootId];\n const extraNodes = [];\n // When the root node is set and has parent,\n // recreate the path from the node tree.\n while (node.parent || node.parent === '') {\n extraNodes.push(node);\n node = e.target.nodeMap[node.parent];\n }\n for (const node of extraNodes.reverse()) {\n list.push({\n level: ++currentLevelNumber,\n levelOptions: node\n });\n }\n // If the list has only first element, we should clear it\n if (list.length <= 1) {\n list.length = 0;\n }\n }\n return list;\n }\n /**\n * Extend drawDataLabels with logic to handle custom options related to\n * the treemap series:\n *\n * - Points which is not a leaf node, has dataLabels disabled by\n * default.\n *\n * - Options set on series.levels is merged in.\n *\n * - Width of the dataLabel is set to match the width of the point\n * shape.\n *\n * @private\n */\n drawDataLabels() {\n const series = this, mapOptionsToLevel = series.mapOptionsToLevel, points = series.points.filter(function (n) {\n return n.node.visible || TreemapSeries_defined(n.dataLabel);\n }), padding = splat(series.options.dataLabels || {})[0]?.padding;\n let options, level;\n for (const point of points) {\n level = mapOptionsToLevel[point.node.level];\n // Set options to new object to avoid problems with scope\n options = { style: {} };\n // If not a leaf, then label should be disabled as default\n if (!point.node.isLeaf &&\n !point.node.isGroup ||\n (point.node.isGroup &&\n point.node.level <= series.nodeMap[series.rootNode].level)) {\n options.enabled = false;\n }\n // If options for level exists, include them as well\n if (level && level.dataLabels) {\n options = TreemapSeries_merge(options, level.dataLabels);\n series.hasDataLabels = () => true;\n }\n // Set dataLabel width to the width of the point shape minus the\n // padding\n if (point.shapeArgs) {\n const css = {\n width: ((point.shapeArgs.width || 0) -\n 2 * (options.padding || padding || 0)) + 'px',\n lineClamp: Math.floor((point.shapeArgs.height || 0) / 16)\n };\n TreemapSeries_extend(options.style, css);\n point.dataLabel?.css(css);\n }\n // Merge custom options with point options\n point.dlOptions = TreemapSeries_merge(options, point.options.dataLabels);\n }\n super.drawDataLabels(points);\n }\n /**\n * Override drawPoints\n * @private\n */\n drawPoints(points = this.points) {\n const series = this, chart = series.chart, renderer = chart.renderer, styledMode = chart.styledMode, options = series.options, shadow = styledMode ? {} : options.shadow, borderRadius = options.borderRadius, withinAnimationLimit = chart.pointCount < options.animationLimit, allowTraversingTree = options.allowTraversingTree;\n for (const point of points) {\n const levelDynamic = point.node.levelDynamic, animatableAttribs = {}, attribs = {}, css = {}, groupKey = 'level-group-' + point.node.level, hasGraphic = !!point.graphic, shouldAnimate = withinAnimationLimit && hasGraphic, shapeArgs = point.shapeArgs;\n // Don't bother with calculate styling if the point is not drawn\n if (point.shouldDraw()) {\n point.isInside = true;\n if (borderRadius) {\n attribs.r = borderRadius;\n }\n TreemapSeries_merge(true, // Extend object\n // Which object to extend\n shouldAnimate ? animatableAttribs : attribs, \n // Add shapeArgs to animate/attr if graphic exists\n hasGraphic ? shapeArgs : {}, \n // Add style attribs if !styleMode\n styledMode ?\n {} :\n series.pointAttribs(point, point.selected ? 'select' : void 0));\n // In styled mode apply point.color. Use CSS, otherwise the\n // fill used in the style sheet will take precedence over\n // the fill attribute.\n if (series.colorAttribs && styledMode) {\n // Heatmap is loaded\n TreemapSeries_extend(css, series.colorAttribs(point));\n }\n if (!series[groupKey]) {\n series[groupKey] = renderer.g(groupKey)\n .attr({\n // @todo Set the zIndex based upon the number of\n // levels, instead of using 1000\n zIndex: 1000 - (levelDynamic || 0)\n })\n .add(series.group);\n series[groupKey].survive = true;\n }\n }\n // Draw the point\n point.draw({\n animatableAttribs,\n attribs,\n css,\n group: series[groupKey],\n imageUrl: point.imageUrl,\n renderer,\n shadow,\n shapeArgs,\n shapeType: point.shapeType\n });\n // If setRootNode is allowed, set a point cursor on clickables &\n // add drillId to point\n if (allowTraversingTree && point.graphic) {\n point.drillId = options.interactByLeaf ?\n series.drillToByLeaf(point) :\n series.drillToByGroup(point);\n }\n }\n }\n /**\n * Finds the drill id for a parent node. Returns false if point should\n * not have a click event.\n * @private\n */\n drillToByGroup(point) {\n let drillId = false;\n if ((!point.node.isLeaf ||\n point.node.isGroup) &&\n (point.node.level - this.nodeMap[this.rootNode].level) === 1) {\n drillId = point.id;\n }\n return drillId;\n }\n /**\n * Finds the drill id for a leaf node. Returns false if point should not\n * have a click event\n * @private\n */\n drillToByLeaf(point) {\n const { traverseToLeaf } = point.series.options;\n let drillId = false, nodeParent;\n if ((point.node.parent !== this.rootNode) &&\n point.node.isLeaf) {\n if (traverseToLeaf) {\n drillId = point.id;\n }\n else {\n nodeParent = point.node;\n while (!drillId) {\n if (typeof nodeParent.parent !== 'undefined') {\n nodeParent = this.nodeMap[nodeParent.parent];\n }\n if (nodeParent.parent === this.rootNode) {\n drillId = nodeParent.id;\n }\n }\n }\n }\n return drillId;\n }\n /**\n * @todo remove this function at a suitable version.\n * @private\n */\n drillToNode(id, redraw) {\n error(32, false, void 0, { 'treemap.drillToNode': 'use treemap.setRootNode' });\n this.setRootNode(id, redraw);\n }\n drillUp() {\n const series = this, node = series.nodeMap[series.rootNode];\n if (node && TreemapSeries_isString(node.parent)) {\n series.setRootNode(node.parent, true, { trigger: 'traverseUpButton' });\n }\n }\n getExtremes() {\n // Get the extremes from the value data\n const { dataMin, dataMax } = super.getExtremes(this.colorValueData);\n this.valueMin = dataMin;\n this.valueMax = dataMax;\n // Get the extremes from the y data\n return super.getExtremes();\n }\n /**\n * Creates an object map from parent id to childrens index.\n *\n * @private\n * @function Highcharts.Series#getListOfParents\n *\n * @param {Highcharts.SeriesTreemapDataOptions} [data]\n * List of points set in options.\n *\n * @param {Array<string>} [existingIds]\n * List of all point ids.\n *\n * @return {Object}\n * Map from parent id to children index in data.\n */\n getListOfParents(data, existingIds) {\n const arr = TreemapSeries_isArray(data) ? data : [], ids = TreemapSeries_isArray(existingIds) ? existingIds : [], listOfParents = arr.reduce(function (prev, curr, i) {\n const parent = TreemapSeries_pick(curr.parent, '');\n if (typeof prev[parent] === 'undefined') {\n prev[parent] = [];\n }\n prev[parent].push(i);\n return prev;\n }, {\n '': [] // Root of tree\n });\n // If parent does not exist, hoist parent to root of tree.\n for (const parent of Object.keys(listOfParents)) {\n const children = listOfParents[parent];\n if ((parent !== '') && (ids.indexOf(parent) === -1)) {\n for (const child of children) {\n listOfParents[''].push(child);\n }\n delete listOfParents[parent];\n }\n }\n return listOfParents;\n }\n /**\n * Creates a tree structured object from the series points.\n * @private\n */\n getTree() {\n const series = this, allIds = this.data.map(function (d) {\n return d.id;\n });\n series.parentList = series.getListOfParents(this.data, allIds);\n series.nodeMap = {};\n series.nodeList = [];\n return series.buildTree('', -1, 0, series.parentList || {});\n }\n buildTree(id, index, level, list, parent) {\n const series = this, children = [], point = series.points[index];\n let height = 0, child;\n // Actions\n for (const i of (list[id] || [])) {\n child = series.buildTree(series.points[i].id, i, level + 1, list, id);\n height = Math.max(child.height + 1, height);\n children.push(child);\n }\n const node = new series.NodeClass().init(id, index, children, height, level, series, parent);\n for (const child of children) {\n child.parentNode = node;\n }\n series.nodeMap[node.id] = node;\n series.nodeList.push(node);\n if (point) {\n point.node = node;\n node.point = point;\n }\n return node;\n }\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n hasData() {\n return !!this.dataTable.rowCount;\n }\n init(chart, options) {\n const series = this, breadcrumbsOptions = TreemapSeries_merge(options.drillUpButton, options.breadcrumbs), setOptionsEvent = TreemapSeries_addEvent(series, 'setOptions', (event) => {\n const options = event.userOptions;\n if (TreemapSeries_defined(options.allowDrillToNode) &&\n !TreemapSeries_defined(options.allowTraversingTree)) {\n options.allowTraversingTree = options.allowDrillToNode;\n delete options.allowDrillToNode;\n }\n if (TreemapSeries_defined(options.drillUpButton) &&\n !TreemapSeries_defined(options.traverseUpButton)) {\n options.traverseUpButton = options.drillUpButton;\n delete options.drillUpButton;\n }\n });\n super.init(chart, options);\n // Treemap's opacity is a different option from other series\n delete series.opacity;\n // Handle deprecated options.\n series.eventsToUnbind.push(setOptionsEvent);\n if (series.options.allowTraversingTree) {\n series.eventsToUnbind.push(TreemapSeries_addEvent(series, 'click', series.onClickDrillToNode));\n series.eventsToUnbind.push(TreemapSeries_addEvent(series, 'setRootNode', function (e) {\n const chart = series.chart;\n if (chart.breadcrumbs) {\n // Create a list using the event after drilldown.\n chart.breadcrumbs.updateProperties(series.createList(e));\n }\n }));\n series.eventsToUnbind.push(TreemapSeries_addEvent(series, 'update', \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function (e, redraw) {\n const breadcrumbs = this.chart.breadcrumbs;\n if (breadcrumbs && e.options.breadcrumbs) {\n breadcrumbs.update(e.options.breadcrumbs);\n }\n }));\n series.eventsToUnbind.push(TreemapSeries_addEvent(series, 'destroy', function destroyEvents(e) {\n const chart = this.chart;\n if (chart.breadcrumbs && !e.keepEventsForUpdate) {\n chart.breadcrumbs.destroy();\n chart.breadcrumbs = void 0;\n }\n }));\n }\n if (!chart.breadcrumbs) {\n chart.breadcrumbs = new Breadcrumbs_Breadcrumbs(chart, breadcrumbsOptions);\n }\n series.eventsToUnbind.push(TreemapSeries_addEvent(chart.breadcrumbs, 'up', function (e) {\n const drillUpsNumber = this.level - e.newLevel;\n for (let i = 0; i < drillUpsNumber; i++) {\n series.drillUp();\n }\n }));\n }\n /**\n * Add drilling on the suitable points.\n * @private\n */\n onClickDrillToNode(event) {\n const series = this, point = event.point, drillId = point && point.drillId;\n // If a drill id is returned, add click event and cursor.\n if (TreemapSeries_isString(drillId)) {\n point.setState(''); // Remove hover\n series.setRootNode(drillId, true, { trigger: 'click' });\n }\n }\n /**\n * Get presentational attributes\n * @private\n */\n pointAttribs(point, state) {\n const series = this, mapOptionsToLevel = (TreemapSeries_isObject(series.mapOptionsToLevel) ?\n series.mapOptionsToLevel :\n {}), level = point && mapOptionsToLevel[point.node.level] || {}, options = this.options, stateOptions = state && options.states && options.states[state] || {}, className = (point && point.getClassName()) || '', \n // Set attributes by precedence. Point trumps level trumps series.\n // Stroke width uses pick because it can be 0.\n attr = {\n 'stroke': (point && point.borderColor) ||\n level.borderColor ||\n stateOptions.borderColor ||\n options.borderColor,\n 'stroke-width': TreemapSeries_pick(point && point.borderWidth, level.borderWidth, stateOptions.borderWidth, options.borderWidth),\n 'dashstyle': (point && point.borderDashStyle) ||\n level.borderDashStyle ||\n stateOptions.borderDashStyle ||\n options.borderDashStyle,\n 'fill': (point && point.color) || this.color\n };\n let opacity;\n // Hide levels above the current view\n if (className.indexOf('highcharts-above-level') !== -1) {\n attr.fill = 'none';\n attr['stroke-width'] = 0;\n // Nodes with children that accept interaction\n }\n else if (className.indexOf('highcharts-internal-node-interactive') !== -1) {\n opacity = TreemapSeries_pick(stateOptions.opacity, options.opacity);\n attr.fill = color(attr.fill).setOpacity(opacity).get();\n attr.cursor = 'pointer';\n // Hide nodes that have children\n }\n else if (className.indexOf('highcharts-internal-node') !== -1) {\n attr.fill = 'none';\n }\n else if (state) {\n // Brighten and hoist the hover nodes\n attr.fill = color(attr.fill)\n .brighten(stateOptions.brightness)\n .get();\n }\n return attr;\n }\n /**\n * Set the node's color recursively, from the parent down.\n * @private\n */\n setColorRecursive(node, parentColor, colorIndex, index, siblings) {\n const series = this, chart = series && series.chart, colors = chart && chart.options && chart.options.colors;\n if (node) {\n const colorInfo = TreemapSeries_getColor(node, {\n colors: colors,\n index: index,\n mapOptionsToLevel: series.mapOptionsToLevel,\n parentColor: parentColor,\n parentColorIndex: colorIndex,\n series: series,\n siblings: siblings\n }), point = series.points[node.i];\n if (point) {\n point.color = colorInfo.color;\n point.colorIndex = colorInfo.colorIndex;\n }\n let i = -1;\n // Do it all again with the children\n for (const child of (node.children || [])) {\n series.setColorRecursive(child, colorInfo.color, colorInfo.colorIndex, ++i, node.children.length);\n }\n }\n }\n setPointValues() {\n const series = this;\n const { points, xAxis, yAxis } = series;\n const styledMode = series.chart.styledMode;\n // Get the crisp correction in classic mode. For this to work in\n // styled mode, we would need to first add the shape (without x,\n // y, width and height), then read the rendered stroke width\n // using point.graphic.strokeWidth(), then modify and apply the\n // shapeArgs. This applies also to column series, but the\n // downside is performance and code complexity.\n const getStrokeWidth = (point) => (styledMode ?\n 0 :\n (series.pointAttribs(point)['stroke-width'] || 0));\n for (const point of points) {\n const { pointValues: values, visible } = point.node;\n // Points which is ignored, have no values.\n if (values && visible) {\n const { height, width, x, y } = values;\n const strokeWidth = getStrokeWidth(point);\n const x1 = crisp(xAxis.toPixels(x, true), strokeWidth, true);\n const x2 = crisp(xAxis.toPixels(x + width, true), strokeWidth, true);\n const y1 = crisp(yAxis.toPixels(y, true), strokeWidth, true);\n const y2 = crisp(yAxis.toPixels(y + height, true), strokeWidth, true);\n // Set point values\n const shapeArgs = {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n point.plotX = shapeArgs.x + (shapeArgs.width / 2);\n point.plotY = shapeArgs.y + (shapeArgs.height / 2);\n point.shapeArgs = shapeArgs;\n }\n else {\n // Reset visibility\n delete point.plotX;\n delete point.plotY;\n }\n }\n }\n /**\n * Sets a new root node for the series.\n *\n * @private\n * @function Highcharts.Series#setRootNode\n *\n * @param {string} id\n * The id of the new root node.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or not.\n *\n * @param {Object} [eventArguments]\n * Arguments to be accessed in event handler.\n *\n * @param {string} [eventArguments.newRootId]\n * Id of the new root.\n *\n * @param {string} [eventArguments.previousRootId]\n * Id of the previous root.\n *\n * @param {boolean} [eventArguments.redraw]\n * Whether to redraw the chart after.\n *\n * @param {Object} [eventArguments.series]\n * The series to update the root of.\n *\n * @param {string} [eventArguments.trigger]\n * The action which triggered the event. Undefined if the setRootNode is\n * called directly.\n *\n * @emits Highcharts.Series#event:setRootNode\n */\n setRootNode(id, redraw, eventArguments) {\n const series = this, eventArgs = TreemapSeries_extend({\n newRootId: id,\n previousRootId: series.rootNode,\n redraw: TreemapSeries_pick(redraw, true),\n series: series\n }, eventArguments);\n /**\n * The default functionality of the setRootNode event.\n *\n * @private\n * @param {Object} args The event arguments.\n * @param {string} args.newRootId Id of the new root.\n * @param {string} args.previousRootId Id of the previous root.\n * @param {boolean} args.redraw Whether to redraw the chart after.\n * @param {Object} args.series The series to update the root of.\n * @param {string} [args.trigger=undefined] The action which\n * triggered the event. Undefined if the setRootNode is called\n * directly.\n */\n const defaultFn = function (args) {\n const series = args.series;\n // Store previous and new root ids on the series.\n series.idPreviousRoot = args.previousRootId;\n series.rootNode = args.newRootId;\n // Redraw the chart\n series.isDirty = true; // Force redraw\n if (args.redraw) {\n series.chart.redraw();\n }\n };\n // Fire setRootNode event.\n TreemapSeries_fireEvent(series, 'setRootNode', eventArgs, defaultFn);\n }\n /**\n * Workaround for `inactive` state. Since `series.opacity` option is\n * already reserved, don't use that state at all by disabling\n * `inactiveOtherPoints` and not inheriting states by points.\n * @private\n */\n setState(state) {\n this.options.inactiveOtherPoints = true;\n super.setState(state, false);\n this.options.inactiveOtherPoints = false;\n }\n setTreeValues(tree) {\n const series = this, options = series.options, idRoot = series.rootNode, mapIdToNode = series.nodeMap, nodeRoot = mapIdToNode[idRoot], levelIsConstant = (typeof options.levelIsConstant === 'boolean' ?\n options.levelIsConstant :\n true), children = [], point = series.points[tree.i];\n // First give the children some values\n let childrenTotal = 0;\n for (let child of tree.children) {\n child = series.setTreeValues(child);\n children.push(child);\n if (!child.ignore) {\n childrenTotal += child.val;\n }\n }\n // Sort the children\n stableSort(children, (a, b) => ((a.sortIndex || 0) - (b.sortIndex || 0)));\n // Set the values\n let val = TreemapSeries_pick(point && point.options.value, childrenTotal);\n if (point) {\n point.value = val;\n }\n if (point?.isGroup && options.cluster?.reductionFactor) {\n val /= options.cluster.reductionFactor;\n }\n if (tree.parentNode?.point?.isGroup && series.rootNode !== tree.parent) {\n tree.visible = false;\n }\n TreemapSeries_extend(tree, {\n children: children,\n childrenTotal: childrenTotal,\n // Ignore this node if point is not visible\n ignore: !(TreemapSeries_pick(point && point.visible, true) && (val > 0)),\n isLeaf: tree.visible && !childrenTotal,\n isGroup: point?.isGroup,\n levelDynamic: (tree.level - (levelIsConstant ? 0 : nodeRoot.level)),\n name: TreemapSeries_pick(point && point.name, ''),\n sortIndex: TreemapSeries_pick(point && point.sortIndex, -val),\n val: val\n });\n return tree;\n }\n sliceAndDice(parent, children) {\n return this.algorithmFill(true, parent, children);\n }\n squarified(parent, children) {\n return this.algorithmLowAspectRatio(true, parent, children);\n }\n strip(parent, children) {\n return this.algorithmLowAspectRatio(false, parent, children);\n }\n stripes(parent, children) {\n return this.algorithmFill(false, parent, children);\n }\n translate(tree) {\n const series = this, options = series.options, applyGrouping = !tree;\n let // NOTE: updateRootId modifies series.\n rootId = TreemapSeries_updateRootId(series), rootNode, pointValues, seriesArea, val;\n if (!tree && !rootId.startsWith('highcharts-grouped-treemap-points-')) {\n // Group points are removed, but not destroyed during generatePoints\n (this.points || []).forEach((point) => {\n if (point.isGroup) {\n point.destroy();\n }\n });\n // Call prototype function\n super.translate();\n // @todo Only if series.isDirtyData is true\n tree = series.getTree();\n }\n // Ensure `tree` and `series.tree` are synchronized\n series.tree = tree = tree || series.tree;\n rootNode = series.nodeMap[rootId];\n if (rootId !== '' && !rootNode) {\n series.setRootNode('', false);\n rootId = series.rootNode;\n rootNode = series.nodeMap[rootId];\n }\n if (!rootNode.point?.isGroup) {\n series.mapOptionsToLevel = TreemapSeries_getLevelOptions({\n from: rootNode.level + 1,\n levels: options.levels,\n to: tree.height,\n defaults: {\n levelIsConstant: series.options.levelIsConstant,\n colorByPoint: options.colorByPoint\n }\n });\n }\n // Parents of the root node is by default visible\n Treemap_TreemapUtilities.recursive(series.nodeMap[series.rootNode], (node) => {\n const p = node.parent;\n let next = false;\n node.visible = true;\n if (p || p === '') {\n next = series.nodeMap[p];\n }\n return next;\n });\n // Children of the root node is by default visible\n Treemap_TreemapUtilities.recursive(series.nodeMap[series.rootNode].children, (children) => {\n let next = false;\n for (const child of children) {\n child.visible = true;\n if (child.children.length) {\n next = (next || []).concat(child.children);\n }\n }\n return next;\n });\n series.setTreeValues(tree);\n // Calculate plotting values.\n series.axisRatio = (series.xAxis.len / series.yAxis.len);\n series.nodeMap[''].pointValues = pointValues = {\n x: 0,\n y: 0,\n width: axisMax,\n height: axisMax\n };\n series.nodeMap[''].values = seriesArea = TreemapSeries_merge(pointValues, {\n width: (pointValues.width * series.axisRatio),\n direction: (options.layoutStartingDirection === 'vertical' ? 0 : 1),\n val: tree.val\n });\n series.calculateChildrenAreas(tree, seriesArea);\n // Logic for point colors\n if (!series.colorAxis &&\n !options.colorByPoint) {\n series.setColorRecursive(series.tree);\n }\n // Update axis extremes according to the root node.\n if (options.allowTraversingTree) {\n if (rootNode.pointValues) {\n val = rootNode.pointValues;\n series.xAxis.setExtremes(val.x, val.x + val.width, false);\n series.yAxis.setExtremes(val.y, val.y + val.height, false);\n series.xAxis.setScale();\n series.yAxis.setScale();\n }\n }\n // Assign values to points.\n series.setPointValues();\n if (applyGrouping) {\n series.applyTreeGrouping();\n }\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nTreemapSeries.defaultOptions = TreemapSeries_merge(ScatterSeries.defaultOptions, Treemap_TreemapSeriesDefaults);\nTreemapSeries_extend(TreemapSeries.prototype, {\n buildKDTree: noop,\n colorAttribs: Series_ColorMapComposition.seriesMembers.colorAttribs,\n colorKey: 'colorValue', // Point color option key\n directTouch: true,\n getExtremesFromAll: true,\n getSymbol: noop,\n optionalAxis: 'colorAxis',\n parallelArrays: ['x', 'y', 'value', 'colorValue'],\n pointArrayMap: ['value', 'colorValue'],\n pointClass: Treemap_TreemapPoint,\n NodeClass: Treemap_TreemapNode,\n trackerGroups: ['group', 'dataLabelsGroup'],\n utils: Treemap_TreemapUtilities\n});\nSeries_ColorMapComposition.compose(TreemapSeries);\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('treemap', TreemapSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapSeries = ((/* unused pure expression or super */ null && (TreemapSeries)));\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Series\"],\"commonjs\":[\"highcharts\",\"Series\"],\"commonjs2\":[\"highcharts\",\"Series\"],\"root\":[\"Highcharts\",\"Series\"]}\nvar highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_ = __webpack_require__(820);\nvar highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default = /*#__PURE__*/__webpack_require__.n(highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_);\n;// ./code/es-modules/Series/CenteredUtilities.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { deg2rad } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nconst { fireEvent: CenteredUtilities_fireEvent, isNumber: CenteredUtilities_isNumber, pick: CenteredUtilities_pick, relativeLength: CenteredUtilities_relativeLength } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/**\n * @private\n */\nvar CenteredUtilities;\n(function (CenteredUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the center of the pie based on the size and center options relative\n * to the plot area. Borrowed by the polar and gauge series types.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getCenter\n */\n function getCenter() {\n const options = this.options, chart = this.chart, slicingRoom = 2 * (options.slicedOffset || 0), plotWidth = chart.plotWidth - 2 * slicingRoom, plotHeight = chart.plotHeight - 2 * slicingRoom, centerOption = options.center, smallestSize = Math.min(plotWidth, plotHeight), thickness = options.thickness;\n let handleSlicingRoom, size = options.size, innerSize = options.innerSize || 0, i, value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n const positions = [\n CenteredUtilities_pick(centerOption?.[0], '50%'),\n CenteredUtilities_pick(centerOption?.[1], '50%'),\n // Prevent from negative values\n CenteredUtilities_pick(size && size < 0 ? void 0 : options.size, '100%'),\n CenteredUtilities_pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')\n ];\n // No need for inner size in angular (gauges) series but still required\n // for pie series\n if (chart.angular && !(this instanceof (highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default()))) {\n positions[3] = 0;\n }\n for (i = 0; i < 4; ++i) {\n value = positions[i];\n handleSlicingRoom = i < 2 || (i === 2 && /%$/.test(value));\n // I == 0: centerX, relative to width\n // i == 1: centerY, relative to height\n // i == 2: size, relative to smallestSize\n // i == 3: innerSize, relative to size\n positions[i] = CenteredUtilities_relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);\n }\n // Inner size cannot be larger than size (#3632)\n if (positions[3] > positions[2]) {\n positions[3] = positions[2];\n }\n // Thickness overrides innerSize, need to be less than pie size (#6647)\n if (CenteredUtilities_isNumber(thickness) &&\n thickness * 2 < positions[2] && thickness > 0) {\n positions[3] = positions[2] - thickness * 2;\n }\n CenteredUtilities_fireEvent(this, 'afterGetCenter', { positions });\n return positions;\n }\n CenteredUtilities.getCenter = getCenter;\n /**\n * GetStartAndEndRadians - Calculates start and end angles in radians.\n * Used in series types such as pie and sunburst.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians\n *\n * @param {number} [start]\n * Start angle in degrees.\n *\n * @param {number} [end]\n * Start angle in degrees.\n *\n * @return {Highcharts.RadianAngles}\n * Returns an object containing start and end angles as radians.\n */\n function getStartAndEndRadians(start, end) {\n const startAngle = CenteredUtilities_isNumber(start) ? start : 0, // Must be a number\n endAngle = ((CenteredUtilities_isNumber(end) && // Must be a number\n end > startAngle && // Must be larger than the start angle\n // difference must be less than 360 degrees\n (end - startAngle) < 360) ?\n end :\n startAngle + 360), correction = -90;\n return {\n start: deg2rad * (startAngle + correction),\n end: deg2rad * (endAngle + correction)\n };\n }\n CenteredUtilities.getStartAndEndRadians = getStartAndEndRadians;\n})(CenteredUtilities || (CenteredUtilities = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * @private\n * @interface Highcharts.RadianAngles\n */ /**\n* @name Highcharts.RadianAngles#end\n* @type {number}\n*/ /**\n* @name Highcharts.RadianAngles#start\n* @type {number}\n*/\n''; // Keeps doclets above in JS file\n\n;// ./code/es-modules/Series/Sunburst/SunburstPoint.js\n/* *\n *\n * This module implements sunburst charts in Highcharts.\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { series: { prototype: { pointClass: Point } }, seriesTypes: { treemap: { prototype: { pointClass: SunburstPoint_TreemapPoint } } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { correctFloat: SunburstPoint_correctFloat, extend: SunburstPoint_extend, pInt } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\nclass SunburstPoint extends SunburstPoint_TreemapPoint {\n /* *\n *\n * Functions\n *\n * */\n getDataLabelPath(label) {\n const renderer = this.series.chart.renderer, shapeArgs = this.shapeExisting, r = shapeArgs.r + pInt(label.options?.distance || 0);\n let start = shapeArgs.start, end = shapeArgs.end;\n const angle = start + (end - start) / 2; // Arc middle value\n let upperHalf = angle < 0 &&\n angle > -Math.PI ||\n angle > Math.PI, moreThanHalf;\n // Check if point is a full circle\n if (start === -Math.PI / 2 &&\n SunburstPoint_correctFloat(end) === SunburstPoint_correctFloat(Math.PI * 1.5)) {\n start = -Math.PI + Math.PI / 360;\n end = -Math.PI / 360;\n upperHalf = true;\n }\n // Check if dataLabels should be render in the upper half of the circle\n if (end - start > Math.PI) {\n upperHalf = false;\n moreThanHalf = true;\n // Close to the full circle, add some padding so that the SVG\n // renderer treats it as separate points (#18884).\n if ((end - start) > 2 * Math.PI - 0.01) {\n start += 0.01;\n end -= 0.01;\n }\n }\n if (this.dataLabelPath) {\n this.dataLabelPath = this.dataLabelPath.destroy();\n }\n // All times\n this.dataLabelPath = renderer\n .arc({\n open: true,\n longArc: moreThanHalf ? 1 : 0\n })\n .attr({\n start: (upperHalf ? start : end),\n end: (upperHalf ? end : start),\n clockwise: +upperHalf,\n x: shapeArgs.x,\n y: shapeArgs.y,\n r: (r + shapeArgs.innerR) / 2\n })\n .add(renderer.defs);\n return this.dataLabelPath;\n }\n isValid() {\n return true;\n }\n}\nSunburstPoint_extend(SunburstPoint.prototype, {\n getClassName: Point.prototype.getClassName,\n haloPath: Point.prototype.haloPath,\n setState: Point.prototype.setState\n});\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Sunburst_SunburstPoint = (SunburstPoint);\n\n;// ./code/es-modules/Series/Sunburst/SunburstUtilities.js\n/* *\n *\n * This module implements sunburst charts in Highcharts.\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { seriesTypes: { treemap: SunburstUtilities_TreemapSeries } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { isNumber: SunburstUtilities_isNumber, isObject: SunburstUtilities_isObject, merge: SunburstUtilities_merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n * @function calculateLevelSizes\n *\n * @param {Object} levelOptions\n * Map of level to its options.\n *\n * @param {Highcharts.Dictionary<number>} params\n * Object containing number parameters `innerRadius` and `outerRadius`.\n *\n * @return {Highcharts.SunburstSeriesLevelsOptions|undefined}\n * Returns the modified options, or undefined.\n */\nfunction calculateLevelSizes(levelOptions, params) {\n const p = SunburstUtilities_isObject(params) ? params : {};\n let result, totalWeight = 0, diffRadius, levels, levelsNotIncluded, remainingSize, from, to;\n if (SunburstUtilities_isObject(levelOptions)) {\n result = SunburstUtilities_merge({}, levelOptions);\n from = SunburstUtilities_isNumber(p.from) ? p.from : 0;\n to = SunburstUtilities_isNumber(p.to) ? p.to : 0;\n levels = range(from, to);\n levelsNotIncluded = Object.keys(result).filter((key) => (levels.indexOf(+key) === -1));\n diffRadius = remainingSize = SunburstUtilities_isNumber(p.diffRadius) ?\n p.diffRadius : 0;\n // Convert percentage to pixels.\n // Calculate the remaining size to divide between \"weight\" levels.\n // Calculate total weight to use in conversion from weight to\n // pixels.\n for (const level of levels) {\n const options = result[level], unit = options.levelSize.unit, value = options.levelSize.value;\n if (unit === 'weight') {\n totalWeight += value;\n }\n else if (unit === 'percentage') {\n options.levelSize = {\n unit: 'pixels',\n value: (value / 100) * diffRadius\n };\n remainingSize -= options.levelSize.value;\n }\n else if (unit === 'pixels') {\n remainingSize -= value;\n }\n }\n // Convert weight to pixels.\n for (const level of levels) {\n const options = result[level];\n if (options.levelSize.unit === 'weight') {\n const weight = options.levelSize.value;\n result[level].levelSize = {\n unit: 'pixels',\n value: (weight / totalWeight) * remainingSize\n };\n }\n }\n // Set all levels not included in interval [from,to] to have 0\n // pixels.\n for (const level of levelsNotIncluded) {\n result[level].levelSize = {\n value: 0,\n unit: 'pixels'\n };\n }\n }\n return result;\n}\n/**\n * @private\n */\nfunction getLevelFromAndTo({ level, height }) {\n // Never displays level below 1\n const from = level > 0 ? level : 1;\n const to = level + height;\n return { from, to };\n}\n/**\n * TODO introduce step, which should default to 1.\n * @private\n */\nfunction range(from, to) {\n const result = [];\n if (SunburstUtilities_isNumber(from) && SunburstUtilities_isNumber(to) && from <= to) {\n for (let i = from; i <= to; i++) {\n result.push(i);\n }\n }\n return result;\n}\n/* *\n *\n * Default Export\n *\n * */\nconst SunburstUtilities = {\n calculateLevelSizes,\n getLevelFromAndTo,\n range,\n recursive: SunburstUtilities_TreemapSeries.prototype.utils.recursive\n};\n/* harmony default export */ const Sunburst_SunburstUtilities = (SunburstUtilities);\n\n;// ./code/es-modules/Series/Sunburst/SunburstNode.js\n/* *\n *\n * (c) 2010-2024 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n/* *\n *\n * Class\n *\n * */\nclass SunburstNode extends Treemap_TreemapNode {\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Sunburst_SunburstNode = (SunburstNode);\n\n;// ./code/es-modules/Series/Sunburst/SunburstSeriesDefaults.js\n/* *\n *\n * This module implements sunburst charts in Highcharts.\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * API Options\n *\n * */\n/**\n * A Sunburst displays hierarchical data, where a level in the hierarchy is\n * represented by a circle. The center represents the root node of the tree.\n * The visualization bears a resemblance to both treemap and pie charts.\n *\n * @sample highcharts/demo/sunburst\n * Sunburst chart\n *\n * @extends plotOptions.pie\n * @excluding allAreas, clip, colorAxis, colorKey, compare, compareBase,\n * dataGrouping, depth, dragDrop, endAngle, gapSize, gapUnit,\n * ignoreHiddenPoint, innerSize, joinBy, legendType, linecap,\n * minSize, navigatorOptions, pointRange\n * @product highcharts\n * @requires modules/sunburst\n * @optionparent plotOptions.sunburst\n *\n * @private\n */\nconst SunburstSeriesDefaults = {\n /**\n * Options for the breadcrumbs, the navigation at the top leading the\n * way up through the traversed levels.\n *\n * @since 10.0.0\n * @product highcharts\n * @extends navigation.breadcrumbs\n * @apioption plotOptions.sunburst.breadcrumbs\n */\n /**\n * Set options on specific levels. Takes precedence over series options,\n * but not point options.\n *\n * @sample highcharts/demo/sunburst\n * Sunburst chart\n *\n * @type {Array<*>}\n * @apioption plotOptions.sunburst.levels\n */\n /**\n * Can set a `borderColor` on all points which lies on the same level.\n *\n * @type {Highcharts.ColorString}\n * @apioption plotOptions.sunburst.levels.borderColor\n */\n /**\n * Can set a `borderWidth` on all points which lies on the same level.\n *\n * @type {number}\n * @apioption plotOptions.sunburst.levels.borderWidth\n */\n /**\n * Can set a `borderDashStyle` on all points which lies on the same\n * level.\n *\n * @type {Highcharts.DashStyleValue}\n * @apioption plotOptions.sunburst.levels.borderDashStyle\n */\n /**\n * Can set a `color` on all points which lies on the same level.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.sunburst.levels.color\n */\n /**\n * Determines whether the chart should receive one color per point based\n * on this level.\n *\n * @type {boolean}\n * @apioption plotOptions.sunburst.levels.colorByPoint\n */\n /**\n * Can set a `colorVariation` on all points which lies on the same\n * level.\n *\n * @apioption plotOptions.sunburst.levels.colorVariation\n */\n /**\n * The key of a color variation. Currently supports `brightness` only.\n *\n * @type {string}\n * @apioption plotOptions.sunburst.levels.colorVariation.key\n */\n /**\n * The ending value of a color variation. The last sibling will receive\n * this value.\n *\n * @type {number}\n * @apioption plotOptions.sunburst.levels.colorVariation.to\n */\n /**\n * Can set `dataLabels` on all points which lies on the same level.\n *\n * @extends plotOptions.sunburst.dataLabels\n * @apioption plotOptions.sunburst.levels.dataLabels\n */\n /**\n * Decides which level takes effect from the options set in the levels\n * object.\n *\n * @sample highcharts/demo/sunburst\n * Sunburst chart\n *\n * @type {number}\n * @apioption plotOptions.sunburst.levels.level\n */\n /**\n * Can set a `levelSize` on all points which lies on the same level.\n *\n * @type {Object}\n * @apioption plotOptions.sunburst.levels.levelSize\n */\n /**\n * When enabled the user can click on a point which is a parent and\n * zoom in on its children. Deprecated and replaced by\n * [allowTraversingTree](#plotOptions.sunburst.allowTraversingTree).\n *\n * @deprecated\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @product highcharts\n * @apioption plotOptions.sunburst.allowDrillToNode\n */\n /**\n * When enabled the user can click on a point which is a parent and\n * zoom in on its children.\n *\n * @type {boolean}\n * @default false\n * @since 7.0.3\n * @product highcharts\n * @apioption plotOptions.sunburst.allowTraversingTree\n */\n /**\n * The center of the sunburst chart relative to the plot area. Can be\n * percentages or pixel values.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-center/\n * Centered at 100, 100\n *\n * @type {Array<number|string>}\n * @default [\"50%\", \"50%\"]\n * @product highcharts\n *\n * @private\n */\n center: ['50%', '50%'],\n /**\n * @product highcharts\n *\n * @private\n */\n clip: false,\n colorByPoint: false,\n /**\n * Disable inherited opacity from Treemap series.\n *\n * @ignore-option\n *\n * @private\n */\n opacity: 1,\n /**\n * @declare Highcharts.SeriesSunburstDataLabelsOptionsObject\n *\n * @private\n */\n dataLabels: {\n allowOverlap: true,\n defer: true,\n /**\n * Decides how the data label will be rotated relative to the\n * perimeter of the sunburst. Valid values are `circular`, `auto`,\n * `parallel` and `perpendicular`. When `circular`, the best fit\n * will be computed for the point, so that the label is curved\n * around the center when there is room for it, otherwise\n * perpendicular. The legacy `auto` option works similar to\n * `circular`, but instead of curving the labels they are tangent to\n * the perimeter.\n *\n * The `rotation` option takes precedence over `rotationMode`.\n *\n * @type {string}\n * @sample {highcharts}\n * highcharts/plotoptions/sunburst-datalabels-rotationmode-circular/\n * Circular rotation mode\n * @validvalue [\"auto\", \"perpendicular\", \"parallel\", \"circular\"]\n * @since 6.0.0\n */\n rotationMode: 'circular',\n style: {\n /** @internal */\n textOverflow: 'ellipsis'\n }\n },\n /**\n * Which point to use as a root in the visualization.\n *\n * @type {string}\n *\n * @private\n */\n rootId: void 0,\n /**\n * Used together with the levels and `allowDrillToNode` options. When\n * set to false the first level visible when drilling is considered\n * to be level one. Otherwise the level will be the same as the tree\n * structure.\n *\n * @private\n */\n levelIsConstant: true,\n /**\n * Determines the width of the ring per level.\n *\n * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/\n * Sunburst with various sizes per level\n *\n * @since 6.0.5\n *\n * @private\n */\n levelSize: {\n /**\n * The value used for calculating the width of the ring. Its' affect\n * is determined by `levelSize.unit`.\n *\n * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/\n * Sunburst with various sizes per level\n */\n value: 1,\n /**\n * How to interpret `levelSize.value`.\n *\n * - `percentage` gives a width relative to result of outer radius\n * minus inner radius.\n *\n * - `pixels` gives the ring a fixed width in pixels.\n *\n * - `weight` takes the remaining width after percentage and pixels,\n * and distributes it across all \"weighted\" levels. The value\n * relative to the sum of all weights determines the width.\n *\n * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/\n * Sunburst with various sizes per level\n *\n * @validvalue [\"percentage\", \"pixels\", \"weight\"]\n */\n unit: 'weight'\n },\n /**\n * Options for the button appearing when traversing down in a sunburst.\n * Since v9.3.3 the `traverseUpButton` is replaced by `breadcrumbs`.\n *\n * @extends plotOptions.treemap.traverseUpButton\n * @since 6.0.0\n * @deprecated\n * @apioption plotOptions.sunburst.traverseUpButton\n *\n */\n /**\n * If a point is sliced, moved out from the center, how many pixels\n * should it be moved?.\n *\n * @sample highcharts/plotoptions/sunburst-sliced\n * Sliced sunburst\n *\n * @since 6.0.4\n *\n * @private\n */\n slicedOffset: 10\n};\n/**\n * A `sunburst` series. If the [type](#series.sunburst.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.sunburst\n * @excluding dataParser, dataURL, stack, dataSorting, boostThreshold,\n * boostBlending\n * @product highcharts\n * @requires modules/sunburst\n * @apioption series.sunburst\n */\n/**\n * @type {Array<number|null|*>}\n * @extends series.treemap.data\n * @excluding x, y\n * @product highcharts\n * @apioption series.sunburst.data\n */\n/**\n * @type {Highcharts.SeriesSunburstDataLabelsOptionsObject|Array<Highcharts.SeriesSunburstDataLabelsOptionsObject>}\n * @product highcharts\n * @apioption series.sunburst.data.dataLabels\n */\n/**\n * The value of the point, resulting in a relative area of the point\n * in the sunburst.\n *\n * @type {number|null}\n * @since 6.0.0\n * @product highcharts\n * @apioption series.sunburst.data.value\n */\n/**\n * Use this option to build a tree structure. The value should be the id of the\n * point which is the parent. If no points has a matching id, or this option is\n * undefined, then the parent will be set to the root.\n *\n * @type {string}\n * @since 6.0.0\n * @product highcharts\n * @apioption series.sunburst.data.parent\n */\n/**\n * Whether to display a slice offset from the center. When a sunburst point is\n * sliced, its children are also offset.\n *\n * @sample highcharts/plotoptions/sunburst-sliced\n * Sliced sunburst\n *\n * @type {boolean}\n * @default false\n * @since 6.0.4\n * @product highcharts\n * @apioption series.sunburst.data.sliced\n */\n''; // Detach doclets above\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Sunburst_SunburstSeriesDefaults = (SunburstSeriesDefaults);\n\n;// ./code/es-modules/Extensions/TextPath.js\n/* *\n *\n * Highcharts module with textPath functionality.\n *\n * (c) 2009-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { deg2rad: TextPath_deg2rad } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nconst { addEvent: TextPath_addEvent, merge: TextPath_merge, uniqueKey, defined: TextPath_defined, extend: TextPath_extend } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * Text path support is not bundled into `highcharts.js`, and requires the\n * `modules/textpath.js` file. However, it is included in the script files of\n * those series types that use it by default\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n * Path to follow. If undefined, it allows changing options for the\n * existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n * Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\nfunction setTextPath(path, textPathOptions) {\n // Defaults\n textPathOptions = TextPath_merge(true, {\n enabled: true,\n attributes: {\n dy: -5,\n startOffset: '50%',\n textAnchor: 'middle'\n }\n }, textPathOptions);\n const url = this.renderer.url, textWrapper = this.text || this, textPath = textWrapper.textPath, { attributes, enabled } = textPathOptions;\n path = path || (textPath && textPath.path);\n // Remove previously added event\n if (textPath) {\n textPath.undo();\n }\n if (path && enabled) {\n const undo = TextPath_addEvent(textWrapper, 'afterModifyTree', (e) => {\n if (path && enabled) {\n // Set ID for the path\n let textPathId = path.attr('id');\n if (!textPathId) {\n path.attr('id', textPathId = uniqueKey());\n }\n // Set attributes for the <text>\n const textAttribs = {\n // `dx`/`dy` options must by set on <text> (parent), the\n // rest should be set on <textPath>\n x: 0,\n y: 0\n };\n if (TextPath_defined(attributes.dx)) {\n textAttribs.dx = attributes.dx;\n delete attributes.dx;\n }\n if (TextPath_defined(attributes.dy)) {\n textAttribs.dy = attributes.dy;\n delete attributes.dy;\n }\n textWrapper.attr(textAttribs);\n // Handle label properties\n this.attr({ transform: '' });\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Wrap the nodes in a textPath\n const children = e.nodes.slice(0);\n e.nodes.length = 0;\n e.nodes[0] = {\n tagName: 'textPath',\n attributes: TextPath_extend(attributes, {\n 'text-anchor': attributes.textAnchor,\n href: `${url}#${textPathId}`\n }),\n children\n };\n }\n });\n // Set the reference\n textWrapper.textPath = { path, undo };\n }\n else {\n textWrapper.attr({ dx: 0, dy: 0 });\n delete textWrapper.textPath;\n }\n if (this.added) {\n // Rebuild text after added\n textWrapper.textCache = '';\n this.renderer.buildText(textWrapper);\n }\n return this;\n}\n/**\n * Attach a polygon to a bounding box if the element contains a textPath.\n *\n * @function Highcharts.SVGElement#setPolygon\n *\n * @param {any} event\n * An event containing a bounding box object\n *\n * @return {Highcharts.BBoxObject} Returns the bounding box object.\n */\nfunction setPolygon(event) {\n const bBox = event.bBox, tp = this.element?.querySelector('textPath');\n if (tp) {\n const polygon = [], { b, h } = this.renderer.fontMetrics(this.element), descender = h - b, lineCleanerRegex = new RegExp('(<tspan>|' +\n '<tspan(?!\\\\sclass=\"highcharts-br\")[^>]*>|' +\n '<\\\\/tspan>)', 'g'), lines = tp\n .innerHTML\n .replace(lineCleanerRegex, '')\n .split(/<tspan class=\"highcharts-br\"[^>]*>/), numOfLines = lines.length;\n // Calculate top and bottom coordinates for\n // either the start or the end of a single\n // character, and append it to the polygon.\n const appendTopAndBottom = (charIndex, positionOfChar) => {\n const { x, y } = positionOfChar, rotation = (tp.getRotationOfChar(charIndex) - 90) * TextPath_deg2rad, cosRot = Math.cos(rotation), sinRot = Math.sin(rotation);\n return [\n [\n x - descender * cosRot,\n y - descender * sinRot\n ],\n [\n x + b * cosRot,\n y + b * sinRot\n ]\n ];\n };\n for (let i = 0, lineIndex = 0; lineIndex < numOfLines; lineIndex++) {\n const line = lines[lineIndex], lineLen = line.length;\n for (let lineCharIndex = 0; lineCharIndex < lineLen; lineCharIndex += 5) {\n try {\n const srcCharIndex = (i +\n lineCharIndex +\n lineIndex), [lower, upper] = appendTopAndBottom(srcCharIndex, tp.getStartPositionOfChar(srcCharIndex));\n if (lineCharIndex === 0) {\n polygon.push(upper);\n polygon.push(lower);\n }\n else {\n if (lineIndex === 0) {\n polygon.unshift(upper);\n }\n if (lineIndex === numOfLines - 1) {\n polygon.push(lower);\n }\n }\n }\n catch (e) {\n // Safari fails on getStartPositionOfChar even if the\n // character is within the `textContent.length`\n break;\n }\n }\n i += lineLen - 1;\n try {\n const srcCharIndex = i + lineIndex, charPos = tp.getEndPositionOfChar(srcCharIndex), [lower, upper] = appendTopAndBottom(srcCharIndex, charPos);\n polygon.unshift(upper);\n polygon.unshift(lower);\n }\n catch (e) {\n // Safari fails on getStartPositionOfChar even if the character\n // is within the `textContent.length`\n break;\n }\n }\n // Close it\n if (polygon.length) {\n polygon.push(polygon[0].slice());\n }\n bBox.polygon = polygon;\n }\n return bBox;\n}\n/**\n * Draw text along a textPath for a dataLabel.\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {any} event\n * An event containing label options\n *\n * @return {void}\n */\nfunction drawTextPath(event) {\n const labelOptions = event.labelOptions, point = event.point, textPathOptions = (labelOptions[point.formatPrefix + 'TextPath'] ||\n labelOptions.textPath);\n if (textPathOptions && !labelOptions.useHTML) {\n this.setTextPath(point.getDataLabelPath?.(this) || point.graphic, textPathOptions);\n if (point.dataLabelPath &&\n !textPathOptions.enabled) {\n // Clean the DOM\n point.dataLabelPath = (point.dataLabelPath.destroy());\n }\n }\n}\nfunction compose(SVGElementClass) {\n TextPath_addEvent(SVGElementClass, 'afterGetBBox', setPolygon);\n TextPath_addEvent(SVGElementClass, 'beforeAddingDataLabel', drawTextPath);\n const svgElementProto = SVGElementClass.prototype;\n if (!svgElementProto.setTextPath) {\n svgElementProto.setTextPath = setTextPath;\n }\n}\nconst TextPath = {\n compose\n};\n/* harmony default export */ const Extensions_TextPath = (TextPath);\n\n;// ./code/es-modules/Series/Sunburst/SunburstSeries.js\n/* *\n *\n * This module implements sunburst charts in Highcharts.\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { getCenter, getStartAndEndRadians } = Series_CenteredUtilities;\n\nconst { noop: SunburstSeries_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { column: SunburstSeries_ColumnSeries, treemap: SunburstSeries_TreemapSeries } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\n\n\nconst { getColor: SunburstSeries_getColor, getLevelOptions: SunburstSeries_getLevelOptions, setTreeValues: SunburstSeries_setTreeValues, updateRootId: SunburstSeries_updateRootId } = Series_TreeUtilities;\n\n\n\nconst { defined: SunburstSeries_defined, error: SunburstSeries_error, extend: SunburstSeries_extend, fireEvent: SunburstSeries_fireEvent, isNumber: SunburstSeries_isNumber, isObject: SunburstSeries_isObject, isString: SunburstSeries_isString, merge: SunburstSeries_merge, splat: SunburstSeries_splat } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nExtensions_TextPath.compose((highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default()));\n/* *\n *\n * Constants\n *\n * */\nconst rad2deg = 180 / Math.PI;\n/* *\n *\n * Functions\n *\n * */\n/** @private */\nfunction isBoolean(x) {\n return typeof x === 'boolean';\n}\n/**\n * Find a set of coordinates given a start coordinates, an angle, and a\n * distance.\n *\n * @private\n * @function getEndPoint\n *\n * @param {number} x\n * Start coordinate x\n *\n * @param {number} y\n * Start coordinate y\n *\n * @param {number} angle\n * Angle in radians\n *\n * @param {number} distance\n * Distance from start to end coordinates\n *\n * @return {Highcharts.SVGAttributes}\n * Returns the end coordinates, x and y.\n */\nconst getEndPoint = function getEndPoint(x, y, angle, distance) {\n return {\n x: x + (Math.cos(angle) * distance),\n y: y + (Math.sin(angle) * distance)\n };\n};\n/** @private */\nfunction getDlOptions(params) {\n // Set options to new object to avoid problems with scope\n const point = params.point, shape = SunburstSeries_isObject(params.shapeArgs) ? params.shapeArgs : {}, optionsPoint = (SunburstSeries_isObject(params.optionsPoint) ?\n params.optionsPoint.dataLabels :\n {}), \n // The splat was used because levels dataLabels\n // options doesn't work as an array\n optionsLevel = SunburstSeries_splat(SunburstSeries_isObject(params.level) ?\n params.level.dataLabels :\n {})[0], options = SunburstSeries_merge({\n style: {}\n }, optionsLevel, optionsPoint), { innerArcLength = 0, outerArcLength = 0 } = point;\n let rotationRad, rotation, rotationMode = options.rotationMode;\n if (!SunburstSeries_isNumber(options.rotation)) {\n if (rotationMode === 'auto' || rotationMode === 'circular') {\n if (options.useHTML &&\n rotationMode === 'circular') {\n // Change rotationMode to 'auto' to avoid using text paths\n // for HTML labels, see #18953\n rotationMode = 'auto';\n }\n if (innerArcLength < 1 &&\n outerArcLength > shape.radius) {\n rotationRad = 0;\n // Trigger setTextPath function to get textOutline etc.\n if (point.dataLabelPath && rotationMode === 'circular') {\n options.textPath = {\n enabled: true\n };\n }\n }\n else if (innerArcLength > 1 &&\n outerArcLength > 1.5 * shape.radius) {\n if (rotationMode === 'circular') {\n options.textPath = {\n enabled: true,\n attributes: {\n dy: 5\n }\n };\n }\n else {\n rotationMode = 'parallel';\n }\n }\n else {\n // Trigger the destroyTextPath function\n if (point.dataLabel?.textPath &&\n rotationMode === 'circular') {\n options.textPath = {\n enabled: false\n };\n }\n rotationMode = 'perpendicular';\n }\n }\n if (rotationMode !== 'auto' && rotationMode !== 'circular') {\n if (point.dataLabel && point.dataLabel.textPath) {\n options.textPath = {\n enabled: false\n };\n }\n rotationRad = (shape.end -\n (shape.end - shape.start) / 2);\n }\n if (rotationMode === 'parallel') {\n options.style.width = Math.min(shape.radius * 2.5, (outerArcLength + innerArcLength) / 2);\n }\n else {\n if (!SunburstSeries_defined(options.style.width) &&\n shape.radius) {\n options.style.width = point.node.level === 1 ?\n 2 * shape.radius :\n shape.radius;\n }\n }\n if (rotationMode === 'perpendicular') {\n // 16 is the inferred line height. We don't know the real line\n // yet because the label is not rendered. A better approach for this\n // would be to hide the label from the `alignDataLabel` function\n // when the actual line height is known.\n if (outerArcLength < 16) {\n options.style.width = 1;\n }\n else {\n options.style.lineClamp = Math.floor(innerArcLength / 16) || 1;\n }\n }\n // Apply padding (#8515)\n options.style.width = Math.max(options.style.width - 2 * (options.padding || 0), 1);\n rotation = (rotationRad * rad2deg) % 180;\n if (rotationMode === 'parallel') {\n rotation -= 90;\n }\n // Prevent text from rotating upside down\n if (rotation > 90) {\n rotation -= 180;\n }\n else if (rotation < -90) {\n rotation += 180;\n }\n options.rotation = rotation;\n }\n if (options.textPath) {\n if (point.shapeExisting.innerR === 0 &&\n options.textPath.enabled) {\n // Enable rotation to render text\n options.rotation = 0;\n // Center dataLabel - disable textPath\n options.textPath.enabled = false;\n // Setting width and padding\n options.style.width = Math.max((point.shapeExisting.r * 2) -\n 2 * (options.padding || 0), 1);\n }\n else if (point.dlOptions &&\n point.dlOptions.textPath &&\n !point.dlOptions.textPath.enabled &&\n (rotationMode === 'circular')) {\n // Bring dataLabel back if was a center dataLabel\n options.textPath.enabled = true;\n }\n if (options.textPath.enabled) {\n // Enable rotation to render text\n options.rotation = 0;\n // Setting width and padding\n options.style.width = Math.max((point.outerArcLength +\n point.innerArcLength) / 2 -\n 2 * (options.padding || 0), 1);\n options.style.whiteSpace = 'nowrap';\n }\n }\n return options;\n}\n/** @private */\nfunction getAnimation(shape, params) {\n const point = params.point, radians = params.radians, innerR = params.innerR, idRoot = params.idRoot, idPreviousRoot = params.idPreviousRoot, shapeExisting = params.shapeExisting, shapeRoot = params.shapeRoot, shapePreviousRoot = params.shapePreviousRoot, visible = params.visible;\n let from = {}, to = {\n end: shape.end,\n start: shape.start,\n innerR: shape.innerR,\n r: shape.r,\n x: shape.x,\n y: shape.y\n };\n if (visible) {\n // Animate points in\n if (!point.graphic && shapePreviousRoot) {\n if (idRoot === point.id) {\n from = {\n start: radians.start,\n end: radians.end\n };\n }\n else {\n from = (shapePreviousRoot.end <= shape.start) ? {\n start: radians.end,\n end: radians.end\n } : {\n start: radians.start,\n end: radians.start\n };\n }\n // Animate from center and outwards.\n from.innerR = from.r = innerR;\n }\n }\n else {\n // Animate points out\n if (point.graphic) {\n if (idPreviousRoot === point.id) {\n to = {\n innerR: innerR,\n r: innerR\n };\n }\n else if (shapeRoot) {\n to = (shapeRoot.end <= shapeExisting.start) ?\n {\n innerR: innerR,\n r: innerR,\n start: radians.end,\n end: radians.end\n } : {\n innerR: innerR,\n r: innerR,\n start: radians.start,\n end: radians.start\n };\n }\n }\n }\n return {\n from: from,\n to: to\n };\n}\n/** @private */\nfunction getDrillId(point, idRoot, mapIdToNode) {\n const node = point.node;\n let drillId, nodeRoot;\n if (!node.isLeaf) {\n // When it is the root node, the drillId should be set to parent.\n if (idRoot === point.id) {\n nodeRoot = mapIdToNode[idRoot];\n drillId = nodeRoot.parent;\n }\n else {\n drillId = point.id;\n }\n }\n return drillId;\n}\n/** @private */\nfunction cbSetTreeValuesBefore(node, options) {\n const mapIdToNode = options.mapIdToNode, parent = node.parent, nodeParent = parent ? mapIdToNode[parent] : void 0, series = options.series, chart = series.chart, points = series.points, point = points[node.i], colors = series.options.colors || chart && chart.options.colors, colorInfo = SunburstSeries_getColor(node, {\n colors: colors,\n colorIndex: series.colorIndex,\n index: options.index,\n mapOptionsToLevel: options.mapOptionsToLevel,\n parentColor: nodeParent && nodeParent.color,\n parentColorIndex: nodeParent && nodeParent.colorIndex,\n series: options.series,\n siblings: options.siblings\n });\n node.color = colorInfo.color;\n node.colorIndex = colorInfo.colorIndex;\n if (point) {\n point.color = node.color;\n point.colorIndex = node.colorIndex;\n // Set slicing on node, but avoid slicing the top node.\n node.sliced = (node.id !== options.idRoot) ? point.sliced : false;\n }\n return node;\n}\n/* *\n *\n * Class\n *\n * */\nclass SunburstSeries extends SunburstSeries_TreemapSeries {\n /* *\n *\n * Functions\n *\n * */\n alignDataLabel(point, dataLabel, labelOptions) {\n if (labelOptions.textPath && labelOptions.textPath.enabled) {\n return;\n }\n return super.alignDataLabel.apply(this, arguments);\n }\n /**\n * Animate the slices in. Similar to the animation of polar charts.\n * @private\n */\n animate(init) {\n const chart = this.chart, center = [\n chart.plotWidth / 2,\n chart.plotHeight / 2\n ], plotLeft = chart.plotLeft, plotTop = chart.plotTop, group = this.group;\n let attribs;\n // Initialize the animation\n if (init) {\n // Scale down the group and place it in the center\n attribs = {\n translateX: center[0] + plotLeft,\n translateY: center[1] + plotTop,\n scaleX: 0.001, // #1499\n scaleY: 0.001,\n rotation: 10,\n opacity: 0.01\n };\n group.attr(attribs);\n // Run the animation\n }\n else {\n attribs = {\n translateX: plotLeft,\n translateY: plotTop,\n scaleX: 1,\n scaleY: 1,\n rotation: 0,\n opacity: 1\n };\n group.animate(attribs, this.options.animation);\n }\n }\n drawPoints() {\n const series = this, mapOptionsToLevel = series.mapOptionsToLevel, shapeRoot = series.shapeRoot, group = series.group, hasRendered = series.hasRendered, idRoot = series.rootNode, idPreviousRoot = series.idPreviousRoot, nodeMap = series.nodeMap, nodePreviousRoot = nodeMap[idPreviousRoot], shapePreviousRoot = nodePreviousRoot && nodePreviousRoot.shapeArgs, points = series.points, radians = series.startAndEndRadians, chart = series.chart, optionsChart = chart && chart.options && chart.options.chart || {}, animation = (isBoolean(optionsChart.animation) ?\n optionsChart.animation :\n true), positions = series.center, center = {\n x: positions[0],\n y: positions[1]\n }, innerR = positions[3] / 2, renderer = series.chart.renderer, hackDataLabelAnimation = !!(animation &&\n hasRendered &&\n idRoot !== idPreviousRoot &&\n series.dataLabelsGroup);\n let animateLabels, animateLabelsCalled = false, addedHack = false;\n if (hackDataLabelAnimation) {\n series.dataLabelsGroup.attr({ opacity: 0 });\n animateLabels = function () {\n const s = series;\n animateLabelsCalled = true;\n if (s.dataLabelsGroup) {\n s.dataLabelsGroup.animate({\n opacity: 1,\n visibility: 'inherit'\n });\n }\n };\n }\n for (const point of points) {\n const node = point.node, level = mapOptionsToLevel[node.level], shapeExisting = (point.shapeExisting || {}), shape = node.shapeArgs || {}, visible = !!(node.visible && node.shapeArgs);\n let animationInfo, onComplete;\n // Border radius requires the border-radius.js module. Adding it\n // here because the SunburstSeries is a mess and I can't find the\n // regular shapeArgs. Usually shapeArgs are created in the series'\n // `translate` function and then passed directly on to the renderer\n // in the `drawPoints` function.\n shape.borderRadius = series.options.borderRadius;\n if (hasRendered && animation) {\n animationInfo = getAnimation(shape, {\n center: center,\n point: point,\n radians: radians,\n innerR: innerR,\n idRoot: idRoot,\n idPreviousRoot: idPreviousRoot,\n shapeExisting: shapeExisting,\n shapeRoot: shapeRoot,\n shapePreviousRoot: shapePreviousRoot,\n visible: visible\n });\n }\n else {\n // When animation is disabled, attr is called from animation.\n animationInfo = {\n to: shape,\n from: {}\n };\n }\n SunburstSeries_extend(point, {\n shapeExisting: shape, // Store for use in animation\n tooltipPos: [shape.plotX, shape.plotY],\n drillId: getDrillId(point, idRoot, nodeMap),\n name: '' + (point.name || point.id || point.index),\n plotX: shape.plotX, // Used for data label position\n plotY: shape.plotY, // Used for data label position\n value: node.val,\n isInside: visible,\n isNull: !visible // Used for dataLabels & point.draw\n });\n point.dlOptions = getDlOptions({\n point: point,\n level: level,\n optionsPoint: point.options,\n shapeArgs: shape\n });\n if (!addedHack && visible) {\n addedHack = true;\n onComplete = animateLabels;\n }\n point.draw({\n animatableAttribs: animationInfo.to,\n attribs: SunburstSeries_extend(animationInfo.from, (!chart.styledMode && series.pointAttribs(point, (point.selected && 'select')))),\n onComplete: onComplete,\n group: group,\n renderer: renderer,\n shapeType: 'arc',\n shapeArgs: shape\n });\n }\n // Draw data labels after points\n // TODO draw labels one by one to avoid additional looping\n if (hackDataLabelAnimation && addedHack) {\n series.hasRendered = false;\n series.options.dataLabels.defer = true;\n SunburstSeries_ColumnSeries.prototype.drawDataLabels.call(series);\n series.hasRendered = true;\n // If animateLabels is called before labels were hidden, then call\n // it again.\n if (animateLabelsCalled) {\n animateLabels();\n }\n }\n else {\n SunburstSeries_ColumnSeries.prototype.drawDataLabels.call(series);\n }\n series.idPreviousRoot = idRoot;\n }\n /**\n * The layout algorithm for the levels.\n * @private\n */\n layoutAlgorithm(parent, children, options) {\n let startAngle = parent.start;\n const range = parent.end - startAngle, total = parent.val, x = parent.x, y = parent.y, radius = ((options &&\n SunburstSeries_isObject(options.levelSize) &&\n SunburstSeries_isNumber(options.levelSize.value)) ?\n options.levelSize.value :\n 0), innerRadius = parent.r, outerRadius = innerRadius + radius, slicedOffset = options && SunburstSeries_isNumber(options.slicedOffset) ?\n options.slicedOffset :\n 0;\n return (children || []).reduce((arr, child) => {\n const percentage = (1 / total) * child.val, radians = percentage * range, radiansCenter = startAngle + (radians / 2), offsetPosition = getEndPoint(x, y, radiansCenter, slicedOffset), values = {\n x: child.sliced ? offsetPosition.x : x,\n y: child.sliced ? offsetPosition.y : y,\n innerR: innerRadius,\n r: outerRadius,\n radius: radius,\n start: startAngle,\n end: startAngle + radians\n };\n arr.push(values);\n startAngle = values.end;\n return arr;\n }, []);\n }\n setRootNode(id, redraw, eventArguments) {\n const series = this;\n if ( // If the target node is the only one at level 1, skip it. (#18658)\n series.nodeMap[id].level === 1 &&\n series.nodeList\n .filter((node) => node.level === 1)\n .length === 1) {\n if (series.idPreviousRoot === '') {\n return;\n }\n id = '';\n }\n super.setRootNode(id, redraw, eventArguments);\n }\n /**\n * Set the shape arguments on the nodes. Recursive from root down.\n * @private\n */\n setShapeArgs(parent, parentValues, mapOptionsToLevel) {\n const level = parent.level + 1, options = mapOptionsToLevel[level], \n // Collect all children which should be included\n children = parent.children.filter(function (n) {\n return n.visible;\n }), twoPi = 6.28; // Two times Pi.\n let childrenValues = [];\n childrenValues = this.layoutAlgorithm(parentValues, children, options);\n let i = -1;\n for (const child of children) {\n const values = childrenValues[++i], angle = values.start + ((values.end - values.start) / 2), radius = values.innerR + ((values.r - values.innerR) / 2), radians = (values.end - values.start), isCircle = (values.innerR === 0 && radians > twoPi), center = (isCircle ?\n { x: values.x, y: values.y } :\n getEndPoint(values.x, values.y, angle, radius)), val = (child.val ?\n (child.childrenTotal > child.val ?\n child.childrenTotal :\n child.val) :\n child.childrenTotal);\n // The inner arc length is a convenience for data label filters.\n if (this.points[child.i]) {\n this.points[child.i].innerArcLength = radians * values.innerR;\n this.points[child.i].outerArcLength = radians * values.r;\n }\n child.shapeArgs = SunburstSeries_merge(values, {\n plotX: center.x,\n plotY: center.y\n });\n child.values = SunburstSeries_merge(values, {\n val: val\n });\n // If node has children, then call method recursively\n if (child.children.length) {\n this.setShapeArgs(child, child.values, mapOptionsToLevel);\n }\n }\n }\n translate() {\n const series = this, options = series.options, positions = series.center = series.getCenter(), radians = series.startAndEndRadians = getStartAndEndRadians(options.startAngle, options.endAngle), innerRadius = positions[3] / 2, outerRadius = positions[2] / 2, diffRadius = outerRadius - innerRadius, \n // NOTE: updateRootId modifies series.\n rootId = SunburstSeries_updateRootId(series);\n let mapIdToNode = series.nodeMap, mapOptionsToLevel, nodeRoot = mapIdToNode && mapIdToNode[rootId], nodeIds = {};\n series.shapeRoot = nodeRoot && nodeRoot.shapeArgs;\n series.generatePoints();\n SunburstSeries_fireEvent(series, 'afterTranslate');\n // @todo Only if series.isDirtyData is true\n const tree = series.tree = series.getTree();\n // Render traverseUpButton, after series.nodeMap i calculated.\n mapIdToNode = series.nodeMap;\n nodeRoot = mapIdToNode[rootId];\n const idTop = SunburstSeries_isString(nodeRoot.parent) ? nodeRoot.parent : '', nodeTop = mapIdToNode[idTop], { from, to } = Sunburst_SunburstUtilities.getLevelFromAndTo(nodeRoot);\n mapOptionsToLevel = SunburstSeries_getLevelOptions({\n from,\n levels: series.options.levels,\n to,\n defaults: {\n colorByPoint: options.colorByPoint,\n dataLabels: options.dataLabels,\n levelIsConstant: options.levelIsConstant,\n levelSize: options.levelSize,\n slicedOffset: options.slicedOffset\n }\n });\n // NOTE consider doing calculateLevelSizes in a callback to\n // getLevelOptions\n mapOptionsToLevel = Sunburst_SunburstUtilities.calculateLevelSizes(mapOptionsToLevel, {\n diffRadius,\n from,\n to\n });\n // TODO Try to combine setTreeValues & setColorRecursive to avoid\n // unnecessary looping.\n SunburstSeries_setTreeValues(tree, {\n before: cbSetTreeValuesBefore,\n idRoot: rootId,\n levelIsConstant: options.levelIsConstant,\n mapOptionsToLevel: mapOptionsToLevel,\n mapIdToNode: mapIdToNode,\n points: series.points,\n series: series\n });\n const values = mapIdToNode[''].shapeArgs = {\n end: radians.end,\n r: innerRadius,\n start: radians.start,\n val: nodeRoot.val,\n x: positions[0],\n y: positions[1]\n };\n this.setShapeArgs(nodeTop, values, mapOptionsToLevel);\n // Set mapOptionsToLevel on series for use in drawPoints.\n series.mapOptionsToLevel = mapOptionsToLevel;\n // #10669 - verify if all nodes have unique ids\n for (const point of series.points) {\n if (nodeIds[point.id]) {\n SunburstSeries_error(31, false, series.chart);\n }\n // Map\n nodeIds[point.id] = true;\n }\n // Reset object\n nodeIds = {};\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nSunburstSeries.defaultOptions = SunburstSeries_merge(SunburstSeries_TreemapSeries.defaultOptions, Sunburst_SunburstSeriesDefaults);\nSunburstSeries_extend(SunburstSeries.prototype, {\n axisTypes: [],\n drawDataLabels: SunburstSeries_noop, // `drawDataLabels` is called in `drawPoints`\n getCenter: getCenter,\n isCartesian: false,\n // Mark that the sunburst is supported by the series on point feature.\n onPointSupported: true,\n pointAttribs: SunburstSeries_ColumnSeries.prototype.pointAttribs,\n pointClass: Sunburst_SunburstPoint,\n NodeClass: Sunburst_SunburstNode,\n utils: Sunburst_SunburstUtilities\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('sunburst', SunburstSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Sunburst_SunburstSeries = ((/* unused pure expression or super */ null && (SunburstSeries)));\n\n;// ./code/es-modules/masters/modules/sunburst.src.js\n\n\n\n\n\n\nconst G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.Breadcrumbs = G.Breadcrumbs || Breadcrumbs_Breadcrumbs;\nG.Breadcrumbs.compose(G.Chart, G.defaultOptions);\n/* harmony default export */ const sunburst_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","define","amd","amd1","window","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__984__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__820__","ColorMapComposition","TreemapUtilities","CenteredUtilities","__webpack_modules__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","__webpack_exports__","sunburst_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","Breadcrumbs_BreadcrumbsDefaults","lang","mainBreadcrumb","options","buttonTheme","fill","height","padding","zIndex","states","select","style","color","buttonSpacing","floating","format","relativeTo","rtl","position","align","verticalAlign","x","y","separator","text","fontSize","showFullPath","useHTML","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default","composed","addEvent","defined","extend","fireEvent","isString","merge","objectEach","pick","pushUnique","onChartAfterShowResetZoom","chart","breadcrumbs","bbox","resetZoomButton","getBBox","breadcrumbsOptions","alignBreadcrumbsGroup","width","onChartDestroy","destroy","onChartGetMargins","level","breadcrumbsHeight","marginBottom","yOffset","plotTop","onChartRedraw","redraw","onChartSelection","event","resetSelection","Breadcrumbs","compose","ChartClass","highchartsDefaultOptions","constructor","userOptions","elementList","isDirty","list","chartOptions","drilldown","drillUpButton","defaultOptions","navigation","updateProperties","setList","setLevel","length","getLevel","getButtonText","breadcrumb","textFormat","defaultText","drillUpText","returnText","formatter","levelOptions","render","group","renderer","g","addClass","attr","add","renderFullPathButtons","renderSingleButton","destroySingleButton","resetElementListState","updateListElements","destroyListElements","posX","previousBreadcrumb","renderButton","updateSingleButton","xOffset","positionOptions","alignTo","bBox","additionalSpace","newPositions","posY","button","e","callDefaultEvent","buttonEvents","events","click","newLevel","styledMode","renderSeparator","separatorOptions","label","css","update","currentBreadcrumb","force","element","updated","rtlFactor","updateXPosition","spacing","adjustToRTL","translate","i","iEnd","isLast","setState","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default","column","columnProto","seriesTypes","ColorMapComposition_addEvent","ColorMapComposition_defined","onPointAfterSetState","series","point","moveToTopOnHover","graphic","stateMarkerGraphic","pointerEvents","parentGroup","state","id","href","url","visibility","pointMembers","dataLabelOnNull","isValid","value","Infinity","isNaN","seriesMembers","colorKey","axisTypes","parallelArrays","pointArrayMap","trackerGroups","colorAttribs","ret","colorProp","pointAttribs","SeriesClass","pointClass","Series_ColorMapComposition","Treemap_TreemapAlgorithmGroup","h","w","p","plot","direction","startDirection","total","nW","lW","nH","lH","elArr","lP","nR","lR","aspectRatio","Math","max","addElement","el","push","reset","Treemap_TreemapNode","childrenTotal","visible","init","children","parent","Series_DrawPointUtilities","draw","params","animatableAttribs","onComplete","animation","hasRendered","attribs","getClassName","shouldDraw","shapeType","image","imageUrl","shapeArgs","animate","isNew","keys","pie","PiePoint","scatter","ScatterPoint","TreemapPoint_extend","isNumber","TreemapPoint_pick","TreemapPoint","arguments","groupedPointsAmount","className","node","nodeMap","rootNode","isGroup","isLeaf","interactByLeaf","allowTraversingTree","Boolean","apply","plotY","setVisible","TreemapSeriesDefaults_isString","TreemapSeriesDefaults","animationLimit","borderRadius","showInLegend","marker","colorByPoint","dataLabels","defer","enabled","name","inside","textOverflow","tooltip","headerFormat","pointFormat","clusterFormat","ignoreHiddenPoint","layoutAlgorithm","layoutStartingDirection","alternateStartingDirection","levelIsConstant","traverseUpButton","borderColor","borderWidth","opacity","hover","brightness","heatmap","halo","shadow","legendSymbol","traverseToLeaf","cluster","pixelWidth","pixelHeight","reductionFactor","minimumClusterSize","distance","gridSize","kmeansThreshold","lineWidth","radius","recursive","item","func","context","next","Treemap_TreemapUtilities","TreeUtilities_extend","isArray","TreeUtilities_isNumber","isObject","TreeUtilities_merge","TreeUtilities_pick","relativeLength","Series_TreeUtilities","getColor","colorIndexByPoint","colorIndex","index","mapOptionsToLevel","parentColor","parentColorIndex","colors","siblings","points","chartOptionsChart","colorCount","variateColor","colorVariation","parse","brighten","to","getLevelOptions","defaults","converted","from","levels","result","reduce","getNodeWidth","columnCount","nodeDistance","nodeWidth","plotSizeX","test","fraction","parseFloat","nDistance","Number","setTreeValues","tree","before","idRoot","nodeRoot","mapIdToNode","optionsPoint","levelDynamic","forEach","child","newOptions","val","updateRootId","rootId","TreemapSeries_composed","noop","ColumnSeries","ScatterSeries","TreemapSeries_getColor","TreemapSeries_getLevelOptions","TreemapSeries_updateRootId","TreemapSeries_addEvent","correctFloat","crisp","TreemapSeries_defined","error","TreemapSeries_extend","TreemapSeries_fireEvent","TreemapSeries_isArray","TreemapSeries_isObject","TreemapSeries_isString","TreemapSeries_merge","TreemapSeries_pick","TreemapSeries_pushUnique","splat","stableSort","treemapAxisDefaultValues","onSeriesAfterBindAxes","treeAxis","xAxis","yAxis","is","endOnTick","gridLineWidth","min","minPadding","maxPadding","startOnTick","title","tickPositions","setOptions","TreemapSeries","algorithmCalcPoints","directionChange","last","childrenArea","end","pX","pY","pW","pH","gW","gH","keep","algorithmFill","pTot","algorithmLowAspectRatio","alignDataLabel","dataLabel","labelOptions","applyTreeGrouping","parentList","parentGroups","checkIfHide","compareHeight","thresholdArea","area","indexOf","splice","groupPoint","find","PointClass","pointIndex","formatPrefix","amount","nodeList","buildTree","calculateChildrenAreas","algorithm","alternate","filter","ignore","childrenValues","values","pointValues","axisRatio","axisMax","createList","currentLevelNumber","target","newRootId","extraNodes","reverse","drawDataLabels","hasDataLabels","lineClamp","floor","dlOptions","drawPoints","withinAnimationLimit","pointCount","groupKey","hasGraphic","shouldAnimate","isInside","r","selected","survive","drillId","drillToByLeaf","drillToByGroup","nodeParent","drillToNode","setRootNode","drillUp","trigger","getExtremes","dataMin","dataMax","colorValueData","valueMin","valueMax","getListOfParents","data","existingIds","arr","ids","listOfParents","prev","curr","getTree","allIds","map","NodeClass","parentNode","hasData","dataTable","rowCount","setOptionsEvent","allowDrillToNode","eventsToUnbind","onClickDrillToNode","keepEventsForUpdate","drillUpsNumber","stateOptions","borderDashStyle","setOpacity","cursor","setColorRecursive","colorInfo","setPointValues","getStrokeWidth","strokeWidth","x1","toPixels","x2","y1","y2","abs","plotX","eventArguments","previousRootId","args","idPreviousRoot","inactiveOtherPoints","b","sortIndex","sliceAndDice","squarified","strip","stripes","applyGrouping","seriesArea","startsWith","concat","len","colorAxis","setExtremes","setScale","buildKDTree","directTouch","getExtremesFromAll","getSymbol","optionalAxis","utils","registerSeriesType","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default","deg2rad","CenteredUtilities_fireEvent","CenteredUtilities_isNumber","CenteredUtilities_pick","CenteredUtilities_relativeLength","getCenter","slicingRoom","slicedOffset","plotWidth","plotHeight","centerOption","center","smallestSize","thickness","handleSlicingRoom","size","innerSize","positions","angular","getStartAndEndRadians","start","startAngle","endAngle","Series_CenteredUtilities","Point","treemap","SunburstPoint_TreemapPoint","SunburstPoint_correctFloat","SunburstPoint_extend","pInt","SunburstPoint","getDataLabelPath","shapeExisting","angle","upperHalf","PI","moreThanHalf","dataLabelPath","arc","open","longArc","clockwise","innerR","defs","haloPath","SunburstUtilities_TreemapSeries","SunburstUtilities_isNumber","SunburstUtilities_isObject","SunburstUtilities_merge","range","SunburstUtilities","calculateLevelSizes","totalWeight","diffRadius","levelsNotIncluded","remainingSize","unit","levelSize","weight","getLevelFromAndTo","TextPath_deg2rad","TextPath_addEvent","TextPath_merge","uniqueKey","TextPath_defined","TextPath_extend","setTextPath","path","textPathOptions","attributes","dy","startOffset","textAnchor","textWrapper","textPath","undo","textPathId","textAttribs","dx","transform","box","nodes","slice","tagName","added","textCache","buildText","setPolygon","tp","querySelector","polygon","fontMetrics","descender","lineCleanerRegex","RegExp","lines","innerHTML","replace","split","numOfLines","appendTopAndBottom","charIndex","positionOfChar","rotation","getRotationOfChar","cosRot","cos","sinRot","sin","lineIndex","lineLen","line","lineCharIndex","srcCharIndex","lower","upper","getStartPositionOfChar","unshift","charPos","getEndPositionOfChar","drawTextPath","SunburstSeries_noop","SunburstSeries_ColumnSeries","SunburstSeries_TreemapSeries","SunburstSeries_getColor","SunburstSeries_getLevelOptions","SunburstSeries_setTreeValues","SunburstSeries_updateRootId","SunburstSeries_defined","SunburstSeries_error","SunburstSeries_extend","SunburstSeries_fireEvent","SunburstSeries_isNumber","SunburstSeries_isObject","SunburstSeries_isString","SunburstSeries_merge","SunburstSeries_splat","Extensions_TextPath","SVGElementClass","svgElementProto","rad2deg","getEndPoint","cbSetTreeValuesBefore","sliced","SunburstSeries","plotLeft","translateX","translateY","scaleX","scaleY","shapeRoot","nodePreviousRoot","shapePreviousRoot","radians","startAndEndRadians","optionsChart","isBoolean","hackDataLabelAnimation","dataLabelsGroup","animateLabels","animateLabelsCalled","addedHack","s","animationInfo","shape","getAnimation","tooltipPos","getDrillId","isNull","getDlOptions","innerArcLength","outerArcLength","rotationRad","rotationMode","whiteSpace","innerRadius","outerRadius","percentage","offsetPosition","setShapeArgs","parentValues","isCircle","nodeIds","generatePoints","idTop","nodeTop","Sunburst_SunburstUtilities","clip","allowOverlap","isCartesian","onPointSupported","G","Chart"],"mappings":"CAUA,AAVA;;;;;;;;;CASC,EACA,SAA0CA,CAAI,CAAEC,CAAO,EACpD,AAAmB,UAAnB,OAAOC,SAAwB,AAAkB,UAAlB,OAAOC,OACxCA,OAAOD,OAAO,CAAGD,EAAQD,EAAK,WAAc,CAAEA,EAAK,WAAc,CAAC,UAAa,CAAEA,EAAK,WAAc,CAAC,KAAQ,CAAEA,EAAK,WAAc,CAAC,cAAiB,CAAEA,EAAK,WAAc,CAAC,UAAa,CAAEA,EAAK,WAAc,CAAC,MAAS,EAC/M,AAAkB,YAAlB,OAAOI,QAAyBA,OAAOC,GAAG,CACjDD,OAAO,8BAA+B,CAAC,wBAAwB,CAAE,SAAUE,CAAI,EAAG,OAAOL,EAAQK,EAAKA,EAAK,UAAa,CAACA,EAAK,KAAQ,CAACA,EAAK,cAAiB,CAACA,EAAK,UAAa,CAACA,EAAK,MAAS,CAAE,GAC1L,AAAmB,UAAnB,OAAOJ,QACdA,OAAO,CAAC,8BAA8B,CAAGD,EAAQD,EAAK,WAAc,CAAEA,EAAK,WAAc,CAAC,UAAa,CAAEA,EAAK,WAAc,CAAC,KAAQ,CAAEA,EAAK,WAAc,CAAC,cAAiB,CAAEA,EAAK,WAAc,CAAC,UAAa,CAAEA,EAAK,WAAc,CAAC,MAAS,EAE9OA,EAAK,UAAa,CAAGC,EAAQD,EAAK,UAAa,CAAEA,EAAK,UAAa,CAAC,UAAa,CAAEA,EAAK,UAAa,CAAC,KAAQ,CAAEA,EAAK,UAAa,CAAC,cAAiB,CAAEA,EAAK,UAAa,CAAC,UAAa,CAAEA,EAAK,UAAa,CAAC,MAAS,CACtN,EAAG,AAAkB,aAAlB,OAAOO,OAAyB,IAAI,CAAGA,OAAQ,CAACC,EAAkCC,EAAkCC,EAAkCC,EAAkCC,EAAiCC,IAC5M,AAAC,CAAA,KACP,aACA,IA+jCNC,EAgnCAC,EAw0CAC,EAv/GUC,EAAuB,CAE/B,IACC,AAACd,IAERA,EAAOD,OAAO,CAAGQ,CAEX,EAEA,GACC,AAACP,IAERA,EAAOD,OAAO,CAAGU,CAEX,EAEA,IACC,AAACT,IAERA,EAAOD,OAAO,CAAGW,CAEX,EAEA,IACC,AAACV,IAERA,EAAOD,OAAO,CAAGS,CAEX,EAEA,IACC,AAACR,IAERA,EAAOD,OAAO,CAAGO,CAEX,EAEA,IACC,AAACN,IAERA,EAAOD,OAAO,CAAGM,CAEX,CAEI,EAGIU,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,CAAQ,EAEpC,IAAIC,EAAeH,CAAwB,CAACE,EAAS,CACrD,GAAIC,AAAiBC,KAAAA,IAAjBD,EACH,OAAOA,EAAanB,OAAO,CAG5B,IAAIC,EAASe,CAAwB,CAACE,EAAS,CAAG,CAGjDlB,QAAS,CAAC,CACX,EAMA,OAHAe,CAAmB,CAACG,EAAS,CAACjB,EAAQA,EAAOD,OAAO,CAAEiB,GAG/ChB,EAAOD,OAAO,AACtB,CAMCiB,EAAoBI,CAAC,CAAG,AAACpB,IACxB,IAAIqB,EAASrB,GAAUA,EAAOsB,UAAU,CACvC,IAAOtB,EAAO,OAAU,CACxB,IAAOA,EAER,OADAgB,EAAoBO,CAAC,CAACF,EAAQ,CAAEG,EAAGH,CAAO,GACnCA,CACR,EAMAL,EAAoBO,CAAC,CAAG,CAACxB,EAAS0B,KACjC,IAAI,IAAIC,KAAOD,EACXT,EAAoBW,CAAC,CAACF,EAAYC,IAAQ,CAACV,EAAoBW,CAAC,CAAC5B,EAAS2B,IAC5EE,OAAOC,cAAc,CAAC9B,EAAS2B,EAAK,CAAEI,WAAY,CAAA,EAAMC,IAAKN,CAAU,CAACC,EAAI,AAAC,EAGhF,EAKAV,EAAoBW,CAAC,CAAG,CAACK,EAAKC,IAAUL,OAAOM,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,EAAKC,GAI7F,IAAII,EAAsB,CAAC,EAG3BrB,EAAoBO,CAAC,CAACc,EAAqB,CACzC,QAAW,IAAqBC,EAClC,GAGA,IAAIC,EAAuEvB,EAAoB,KAC3FwB,EAA2FxB,EAAoBI,CAAC,CAACmB,GA4QxF,IAAME,EAJP,CACxBC,KAnPS,CAOTC,eAAgB,MACpB,EA4OIC,QAjOY,CAiBZC,YAAa,CAETC,KAAM,OAENC,OAAQ,GAERC,QAAS,EAET,eAAgB,EAEhBC,OAAQ,EAERC,OAAQ,CACJC,OAAQ,CACJL,KAAM,MACV,CACJ,EACAM,MAAO,CACHC,MAAO,SACX,CACJ,EAOAC,cAAe,EA8BfC,SAAU,CAAA,EAYVC,OAAQ,KAAK,EAkBbC,WAAY,UAWZC,IAAK,CAAA,EAcLC,SAAU,CAMNC,MAAO,OAMPC,cAAe,MAMfC,EAAG,EAQHC,EAAG,KAAK,CACZ,EAMAC,UAAW,CAMPC,KAAM,IASNb,MAAO,CACHC,MAAO,UACPa,SAAU,OACd,CACJ,EAUAC,aAAc,CAAA,EAWdf,MAAO,CAAC,EAORgB,QAAS,CAAA,EAOTnB,OAAQ,CACZ,CASA,EAIA,IAAIoB,EAAmHrD,EAAoB,KAiB3I,GAAM,CAAEwC,OAAAA,CAAM,CAAE,CAAIc,AAhBuHtD,EAAoBI,CAAC,CAACiD,KAkB3J,CAAEE,SAAAA,CAAQ,CAAE,CAAI/B,IAEhB,CAAEgC,SAAAA,CAAQ,CAAEC,QAAAA,CAAO,CAAEC,OAAAA,CAAM,CAAEC,UAAAA,CAAS,CAAEC,SAAAA,CAAQ,CAAEC,MAAAA,CAAK,CAAEC,WAAAA,CAAU,CAAEC,KAAAA,CAAI,CAAEC,WAAAA,CAAU,CAAE,CAAIxC,IAUjG,SAASyC,IAEL,GAAIC,AADU,IAAI,CACRC,WAAW,CAAE,CACnB,IAAMC,EAAOF,AAFH,IAAI,CAEKG,eAAe,EAC9BH,AAHM,IAAI,CAGJG,eAAe,CAACC,OAAO,GAAIC,EAAqBL,AAHhD,IAAI,CAGkDC,WAAW,CAACvC,OAAO,CAC/EwC,GACAG,AAAsC,UAAtCA,EAAmB5B,QAAQ,CAACC,KAAK,EACjC2B,AAAkC,YAAlCA,EAAmB9B,UAAU,EAC7ByB,AAPM,IAAI,CAOJC,WAAW,CAACK,qBAAqB,CAAC,CAACJ,EAAKK,KAAK,CAAGF,EAAmBjC,aAAa,CAE9F,CACJ,CAKA,SAASoC,IACD,IAAI,CAACP,WAAW,GAChB,IAAI,CAACA,WAAW,CAACQ,OAAO,GACxB,IAAI,CAACR,WAAW,CAAG,KAAK,EAEhC,CAKA,SAASS,IACL,IAAMT,EAAc,IAAI,CAACA,WAAW,CACpC,GAAIA,GACA,CAACA,EAAYvC,OAAO,CAACW,QAAQ,EAC7B4B,EAAYU,KAAK,CAAE,CACnB,IAAMN,EAAqBJ,EAAYvC,OAAO,CAAEC,EAAc0C,EAAmB1C,WAAW,CAAEiD,EAAqB,AAACjD,CAAAA,EAAYE,MAAM,EAAI,CAAA,EACtI,EAAKF,CAAAA,EAAYG,OAAO,EAAI,CAAA,EAC5BuC,EAAmBjC,aAAa,CAAGO,EAAgB0B,EAAmB5B,QAAQ,CAACE,aAAa,AAC5FA,AAAkB,CAAA,WAAlBA,GACA,IAAI,CAACkC,YAAY,CAAG,AAAC,CAAA,IAAI,CAACA,YAAY,EAAI,CAAA,EAAKD,EAC/CX,EAAYa,OAAO,CAAGF,GAEjBjC,AAAkB,WAAlBA,GACL,IAAI,CAACoC,OAAO,EAAIH,EAChBX,EAAYa,OAAO,CAAG,CAACF,GAGvBX,EAAYa,OAAO,CAAG,KAAK,CAEnC,CACJ,CAIA,SAASE,IACL,IAAI,CAACf,WAAW,EAAI,IAAI,CAACA,WAAW,CAACgB,MAAM,EAC/C,CAKA,SAASC,EAAiBC,CAAK,EACE,CAAA,IAAzBA,EAAMC,cAAc,EACpB,IAAI,CAACnB,WAAW,EAChB,IAAI,CAACA,WAAW,CAACK,qBAAqB,EAE9C,CAkBA,MAAMe,EAMF,OAAOC,QAAQC,CAAU,CAAEC,CAAwB,CAAE,CAC7C1B,EAAWT,EAAU,iBACrBC,EAASiC,EAAY,UAAWf,GAChClB,EAASiC,EAAY,qBAAsBxB,GAC3CT,EAASiC,EAAY,aAAcb,GACnCpB,EAASiC,EAAY,SAAUP,GAC/B1B,EAASiC,EAAY,YAAaL,GAElC1B,EAAOgC,EAAyBhE,IAAI,CAAED,EAAgCC,IAAI,EAElF,CAMAiE,YAAYzB,CAAK,CAAE0B,CAAW,CAAE,CAC5B,IAAI,CAACC,WAAW,CAAG,CAAC,EACpB,IAAI,CAACC,OAAO,CAAG,CAAA,EACf,IAAI,CAACjB,KAAK,CAAG,EACb,IAAI,CAACkB,IAAI,CAAG,EAAE,CACd,IAAMC,EAAenC,EAAMK,EAAMtC,OAAO,CAACqE,SAAS,EAC9C/B,EAAMtC,OAAO,CAACqE,SAAS,CAACC,aAAa,CAAEX,EAAYY,cAAc,CAAEjC,EAAMtC,OAAO,CAACwE,UAAU,EAAIlC,EAAMtC,OAAO,CAACwE,UAAU,CAACjC,WAAW,CAAEyB,EACzI,CAAA,IAAI,CAAC1B,KAAK,CAAGA,EACb,IAAI,CAACtC,OAAO,CAAGoE,GAAgB,CAAC,CACpC,CAaAK,iBAAiBN,CAAI,CAAE,CACnB,IAAI,CAACO,OAAO,CAACP,GACb,IAAI,CAACQ,QAAQ,GACb,IAAI,CAACT,OAAO,CAAG,CAAA,CACnB,CAUAQ,QAAQP,CAAI,CAAE,CACV,IAAI,CAACA,IAAI,CAAGA,CAChB,CAQAQ,UAAW,CACP,IAAI,CAAC1B,KAAK,CAAG,IAAI,CAACkB,IAAI,CAACS,MAAM,EAAI,IAAI,CAACT,IAAI,CAACS,MAAM,CAAG,CACxD,CAQAC,UAAW,CACP,OAAO,IAAI,CAAC5B,KAAK,AACrB,CAYA6B,cAAcC,CAAU,CAAE,CACtB,IAA0BzC,EAAQC,AAAd,IAAI,CAAsBD,KAAK,CAAEK,EAAqBJ,AAAtD,IAAI,CAA8DvC,OAAO,CAAEF,EAAOwC,EAAMtC,OAAO,CAACF,IAAI,CAAEkF,EAAa7C,EAAKQ,EAAmB/B,MAAM,CAAE+B,EAAmBpB,YAAY,CAClM,eAAiB,kBAAmB0D,EAAcnF,GAAQqC,EAAKrC,EAAKoF,WAAW,CAAEpF,EAAKC,cAAc,EACpGoF,EAAaxC,EAAmByC,SAAS,EACzCzC,EAAmByC,SAAS,CAACL,IAC7BnE,EAAOoE,EAAY,CAAE/B,MAAO8B,EAAWM,YAAY,AAAC,EAAG/C,IAAU,GASrE,MARK,CAAA,AAACN,EAASmD,IACX,CAACA,EAAWP,MAAM,EAClBO,AAAe,OAAfA,CAAkB,GAClBtD,EAAQoD,IACRE,CAAAA,EAAa,AAACxC,EAAmBpB,YAAY,CAEzC0D,EADA,KAAOA,CACG,EAEXE,CACX,CAQA5B,QAAS,CACD,IAAI,CAACW,OAAO,EACZ,IAAI,CAACoB,MAAM,GAEX,IAAI,CAACC,KAAK,EACV,IAAI,CAACA,KAAK,CAACvE,KAAK,GAEpB,IAAI,CAACkD,OAAO,CAAG,CAAA,CACnB,CAQAoB,QAAS,CACL,IAA0BhD,EAAQC,AAAd,IAAI,CAAsBD,KAAK,CAAEK,EAAqBJ,AAAtD,IAAI,CAA8DvC,OAAO,AAEzF,EAACuC,AAFe,IAAI,CAEPgD,KAAK,EAAI5C,GACtBJ,CAAAA,AAHgB,IAAI,CAGRgD,KAAK,CAAGjD,EAAMkD,QAAQ,CAC7BC,CAAC,CAAC,qBACFC,QAAQ,CAAC,gDACTC,IAAI,CAAC,CACNtF,OAAQsC,EAAmBtC,MAAM,AACrC,GACKuF,GAAG,EAAC,EAGTjD,EAAmBpB,YAAY,CAC/B,IAAI,CAACsE,qBAAqB,GAG1B,IAAI,CAACC,kBAAkB,GAE3B,IAAI,CAAClD,qBAAqB,EAC9B,CAQAiD,uBAAwB,CAEpB,IAAI,CAACE,mBAAmB,GACxB,IAAI,CAACC,qBAAqB,GAC1B,IAAI,CAACC,kBAAkB,GACvB,IAAI,CAACC,mBAAmB,EAC5B,CAQAJ,oBAAqB,CACjB,IAA0BxD,EAAQC,AAAd,IAAI,CAAsBD,KAAK,CAAE6B,EAAO5B,AAAxC,IAAI,CAAgD4B,IAAI,CAA4CzD,EAAgBiC,AAArCJ,AAA/E,IAAI,CAAuFvC,OAAO,CAAqCU,aAAa,CAExK,IAAI,CAACwF,mBAAmB,GAGxB,IAAMC,EAAO5D,AALO,IAAI,CAKCgD,KAAK,CAC1BhD,AANgB,IAAI,CAMRgD,KAAK,CAAC7C,OAAO,GAAGG,KAAK,CACjCnC,EACE0F,EAAqBjC,CAAI,CAACA,EAAKS,MAAM,CAAG,EAAE,AAC5C,EAACtC,EAAMgC,aAAa,EAAK,IAAI,CAACrB,KAAK,CAAG,EACtCX,EAAMgC,aAAa,CAAG/B,AAVN,IAAI,CAUc8D,YAAY,CAACD,EAAoBD,EAH7CzF,GAKjB4B,EAAMgC,aAAa,GACpB,IAAI,CAACrB,KAAK,CAAG,EAEb,IAAI,CAACqD,kBAAkB,GAGvB,IAAI,CAACP,mBAAmB,GAGpC,CAQAnD,sBAAsB2D,CAAO,CAAE,CAE3B,GAAIhE,AADgB,IAAI,CACRgD,KAAK,CAAE,CACnB,IAAM5C,EAAqBJ,AAFX,IAAI,CAEmBvC,OAAO,CAAEC,EAAc0C,EAAmB1C,WAAW,CAAEuG,EAAkB7D,EAAmB5B,QAAQ,CAAE0F,EAAW9D,AAAkC,UAAlCA,EAAmB9B,UAAU,EACjL8B,AAAkC,eAAlCA,EAAmB9B,UAAU,CAC7B,KAAK,EACL,UAAY6F,EAAOnE,AALP,IAAI,CAKegD,KAAK,CAAC7C,OAAO,GAAIiE,EAAkB,EAAK1G,CAAAA,EAAYG,OAAO,EAAI,CAAA,EAC9FuC,EAAmBjC,aAAa,AAEpC8F,CAAAA,EAAgB3D,KAAK,CAAG6D,EAAK7D,KAAK,CAAG8D,EACrCH,EAAgBrG,MAAM,CAAGuG,EAAKvG,MAAM,CAAGwG,EACvC,IAAMC,EAAe3E,EAAMuE,GAEvBD,GACAK,CAAAA,EAAa1F,CAAC,EAAIqF,CAAM,EAExBhE,AAfY,IAAI,CAeJvC,OAAO,CAACc,GAAG,EACvB8F,CAAAA,EAAa1F,CAAC,EAAIsF,EAAgB3D,KAAK,AAAD,EAE1C+D,EAAazF,CAAC,CAAGgB,EAAKyE,EAAazF,CAAC,CAAE,IAAI,CAACiC,OAAO,CAAE,GACpDb,AAnBgB,IAAI,CAmBRgD,KAAK,CAACvE,KAAK,CAAC4F,EAAc,CAAA,EAAMH,EAChD,CACJ,CAgBAJ,aAAatB,CAAU,CAAEoB,CAAI,CAAEU,CAAI,CAAE,CACjC,IAAMtE,EAAc,IAAI,CAAED,EAAQ,IAAI,CAACA,KAAK,CAAEK,EAAqBJ,EAAYvC,OAAO,CAAEC,EAAcgC,EAAMU,EAAmB1C,WAAW,EACpI6G,EAASxE,EAAMkD,QAAQ,CACxBsB,MAAM,CAACvE,EAAYuC,aAAa,CAACC,GAAaoB,EAAMU,EAAM,SAAUE,CAAC,MAIlEC,EAFJ,IAAMC,EAAetE,EAAmBuE,MAAM,EAC1CvE,EAAmBuE,MAAM,CAACC,KAAK,CAE/BF,GACAD,CAAAA,EAAmBC,EAAazH,IAAI,CAAC+C,EAAawE,EAAGhC,EAAU,EAG1C,CAAA,IAArBiC,IAGKrE,EAAmBpB,YAAY,CAIhCwF,EAAEK,QAAQ,CAAGrC,EAAW9B,KAAK,CAH7B8D,EAAEK,QAAQ,CAAG7E,EAAYU,KAAK,CAAG,EAKrClB,EAAUQ,EAAa,KAAMwE,GAErC,EAAG9G,GACEyF,QAAQ,CAAC,iCACTE,GAAG,CAACrD,EAAYgD,KAAK,EAI1B,OAHKjD,EAAM+E,UAAU,EACjBP,EAAOnB,IAAI,CAAChD,EAAmBnC,KAAK,EAEjCsG,CACX,CAcAQ,gBAAgBnB,CAAI,CAAEU,CAAI,CAAE,CACxB,IAA0BvE,EAAQ,IAAI,CAACA,KAAK,CAA4CiF,EAAmB5E,AAAxCJ,AAA/C,IAAI,CAAuDvC,OAAO,CAAwCoB,SAAS,CACjIA,EAAYkB,EAAMkD,QAAQ,CAC3BgC,KAAK,CAACD,EAAiBlG,IAAI,CAAE8E,EAAMU,EAAM,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,CAAA,GACjEnB,QAAQ,CAAC,oCACTE,GAAG,CAACrD,AAJW,IAAI,CAIHgD,KAAK,EAI1B,OAHKjD,EAAM+E,UAAU,EACjBjG,EAAUqG,GAAG,CAACF,EAAiB/G,KAAK,EAEjCY,CACX,CAYAsG,OAAO1H,CAAO,CAAE,CACZiC,EAAM,CAAA,EAAM,IAAI,CAACjC,OAAO,CAAEA,GAC1B,IAAI,CAAC+C,OAAO,GACZ,IAAI,CAACmB,OAAO,CAAG,CAAA,CACnB,CAQAoC,oBAAqB,CACjB,IAAMhE,EAAQ,IAAI,CAACA,KAAK,CAAEqF,EAAoB,IAAI,CAACxD,IAAI,CAAC,IAAI,CAAClB,KAAK,CAAG,EAAE,AACnEX,CAAAA,EAAMgC,aAAa,EACnBhC,EAAMgC,aAAa,CAACqB,IAAI,CAAC,CACrBtE,KAAM,IAAI,CAACyD,aAAa,CAAC6C,EAC7B,EAER,CAQA5E,SAAU,CACN,IAAI,CAACgD,mBAAmB,GAGxB,IAAI,CAACG,mBAAmB,CAAC,CAAA,GAErB,IAAI,CAACX,KAAK,EACV,IAAI,CAACA,KAAK,CAACxC,OAAO,GAEtB,IAAI,CAACwC,KAAK,CAAG,KAAK,CACtB,CAQAW,oBAAoB0B,CAAK,CAAE,CACvB,IAAM3D,EAAc,IAAI,CAACA,WAAW,CACpC/B,EAAW+B,EAAa,CAAC4D,EAAS5E,KAC1B2E,CAAAA,GACA,CAAC3D,CAAW,CAAChB,EAAM,CAAC6E,OAAO,AAAD,IAE1BD,AADAA,CAAAA,EAAU5D,CAAW,CAAChB,EAAM,AAAD,EACnB6D,MAAM,EAAIe,EAAQf,MAAM,CAAC/D,OAAO,GACxC8E,EAAQzG,SAAS,EAAIyG,EAAQzG,SAAS,CAAC2B,OAAO,GAC9C,OAAO8E,EAAQf,MAAM,CACrB,OAAOe,EAAQzG,SAAS,CACxB,OAAO6C,CAAW,CAAChB,EAAM,CAEjC,GACI2E,GACA,CAAA,IAAI,CAAC3D,WAAW,CAAG,CAAC,CAAA,CAE5B,CAQA8B,qBAAsB,CACd,IAAI,CAACzD,KAAK,CAACgC,aAAa,GACxB,IAAI,CAAChC,KAAK,CAACgC,aAAa,CAACvB,OAAO,GAChC,IAAI,CAACT,KAAK,CAACgC,aAAa,CAAG,KAAK,EAExC,CAQA0B,uBAAwB,CACpB9D,EAAW,IAAI,CAAC+B,WAAW,CAAE,AAAC4D,IAC1BA,EAAQC,OAAO,CAAG,CAAA,CACtB,EACJ,CASA7B,oBAAqB,CACjB,IAA0BhC,EAAc1B,AAApB,IAAI,CAA4B0B,WAAW,CAAEvD,EAAgB6B,AAA7D,IAAI,CAAqEvC,OAAO,CAACU,aAAa,CAAwByD,EAAO5B,AAA7H,IAAI,CAAqI4B,IAAI,CAAErD,EAAMyB,AAArJ,IAAI,CAA6JvC,OAAO,CAACc,GAAG,CAAEiH,EAAYjH,EAAM,GAAK,EAAGkH,EAAkB,SAAUH,CAAO,CAAEI,CAAO,EACpQ,OAAOF,EAAYF,EAAQnF,OAAO,GAAGG,KAAK,CACtCkF,EAAYE,CACpB,EAAGC,EAAc,SAAUL,CAAO,CAAE1B,CAAI,CAAEU,CAAI,EAC1CgB,EAAQM,SAAS,CAAChC,EAAO0B,EAAQnF,OAAO,GAAGG,KAAK,CAAEgE,EACtD,EAEIV,EAAO5D,AAPS,IAAI,CAODgD,KAAK,CACxByC,EAAgBzF,AARA,IAAI,CAQQgD,KAAK,CAAE7E,GACnCA,EAAeiH,EAAmB5C,EACtC,IAAK,IAAIqD,EAAI,EAAGC,EAAOlE,EAAKS,MAAM,CAAEwD,EAAIC,EAAM,EAAED,EAAG,KAE3CtB,EAAQ1F,EADZ,IAAMkH,EAASF,IAAMC,EAAO,CAGxBpE,CAAAA,CAAW,CAACc,AADhBA,CAAAA,EAAaZ,CAAI,CAACiE,EAAE,AAAD,EACQnF,KAAK,CAAC,EAE7B6D,EAASa,AADTA,CAAAA,EAAoB1D,CAAW,CAACc,EAAW9B,KAAK,CAAC,AAAD,EACrB6D,MAAM,CAE7B,AAACa,EAAkBvG,SAAS,EAC3BkH,EAUIX,EAAkBvG,SAAS,EAChCkH,IACAX,EAAkBvG,SAAS,CAAC2B,OAAO,GACnC,OAAO4E,EAAkBvG,SAAS,GAXlC+E,GAAQ4B,EAAYrH,EACpBiH,EAAkBvG,SAAS,CACvBmB,AAvBI,IAAI,CAuBI+E,eAAe,CAACnB,EAvB+EzF,GAwB3GI,GACAoH,EAAYP,EAAkBvG,SAAS,CAAE+E,EAzBkEzF,GA2B/GyF,GAAQ6B,EAAgBL,EAAkBvG,SAAS,CAAEV,IAOzDuD,CAAW,CAACc,EAAW9B,KAAK,CAAC,CAAC6E,OAAO,CAAG,CAAA,IAIxChB,EAASvE,AAtCG,IAAI,CAsCK8D,YAAY,CAACtB,EAAYoB,EAtCqEzF,GAuC/GI,GACAoH,EAAYpB,EAAQX,EAxC2FzF,GA0CnHyF,GAAQ6B,EAAgBlB,EAAQpG,GAE3B4H,IACDlH,EAAYmB,AA7CJ,IAAI,CA6CY+E,eAAe,CAACnB,EA7CuEzF,GA8C3GI,GACAoH,EAAY9G,EAAW+E,EA/CoFzF,GAiD/GyF,GAAQ6B,EAAgB5G,EAAWV,IAEvCuD,CAAW,CAACc,EAAW9B,KAAK,CAAC,CAAG,CAC5B6D,OAAAA,EACA1F,UAAAA,EACA0G,QAAS,CAAA,CACb,GAEAhB,GACAA,EAAOyB,QAAQ,CAACD,EAAS,EAAI,EAErC,CACJ,CACJ,CAMA3E,EAAYY,cAAc,CAAG1E,EAAgCG,OAAO,CA+FpE,IAAIwI,EAA+FpK,EAAoB,KACnHqK,EAAmHrK,EAAoBI,CAAC,CAACgK,GAEzIE,EAAmItK,EAAoB,KACvJuK,EAAuJvK,EAAoBI,CAAC,CAACkK,GAE7KE,EAAmHxK,EAAoB,IACvIyK,EAAuIzK,EAAoBI,CAAC,CAACoK,GAajK,GAAM,CAAEE,OAAQ,CAAExJ,UAAWyJ,CAAW,CAAE,CAAE,CAAG,AAACJ,IAA2IK,WAAW,CAGhM,CAAEpH,SAAUqH,CAA4B,CAAEpH,QAASqH,CAA2B,CAAE,CAAItJ,KAO1F,AAAC,SAAU7B,CAAmB,EAsC1B,SAASoL,EAAqBpC,CAAC,EAC3B,IAAoBqC,EAASC,AAAf,IAAI,CAAiBD,MAAM,CAAE5D,EAAW4D,EAAO9G,KAAK,CAACkD,QAAQ,AACvE6D,CADU,IAAI,CACRC,gBAAgB,EAAID,AADhB,IAAI,CACkBE,OAAO,GAClCH,EAAOI,kBAAkB,EAI1BJ,CAAAA,EAAOI,kBAAkB,CAAG,GAAKX,CAAAA,GAAwH,EAAGrD,EAAU,OACjKiC,GAAG,CAAC,CACLgC,cAAe,MACnB,GACK7D,GAAG,CAACyD,AAVH,IAAI,CAUKE,OAAO,CAACG,WAAW,CAAA,EAElC3C,GAAG4C,QAAU,SAGbN,AAfM,IAAI,CAeJE,OAAO,CAAC5D,IAAI,CAAC,CACfiE,GAAI,IAAI,CAACA,EAAE,AACf,GACAR,EAAOI,kBAAkB,CAAC7D,IAAI,CAAC,CAC3BkE,KAAM,CAAC,EAAErE,EAASsE,GAAG,CAAC,CAAC,EAAE,IAAI,CAACF,EAAE,CAAC,CAAC,CAClCG,WAAY,SAChB,IAGAX,EAAOI,kBAAkB,CAAC7D,IAAI,CAAC,CAC3BkE,KAAM,EACV,GAGZ,CA9DA9L,EAAoBiM,YAAY,CAAG,CAC/BC,gBAAiB,CAAA,EACjBX,iBAAkB,CAAA,EAClBY,QAiEJ,WACI,OAAQ,AAAe,OAAf,IAAI,CAACC,KAAK,EACd,IAAI,CAACA,KAAK,GAAKC,KACf,IAAI,CAACD,KAAK,GAAK,CAACC,KAEf,CAAA,AAAe,KAAK,IAApB,IAAI,CAACD,KAAK,EAAe,CAACE,MAAM,IAAI,CAACF,KAAK,CAAA,CACnD,CAtEA,EACApM,EAAoBuM,aAAa,CAAG,CAChCC,SAAU,QACVC,UAAW,CAAC,QAAS,QAAS,YAAY,CAC1CC,eAAgB,CAAC,IAAK,IAAK,QAAQ,CACnCC,cAAe,CAAC,QAAQ,CACxBC,cAAe,CAAC,QAAS,cAAe,kBAAkB,CAC1DC,aAwEJ,SAA4BvB,CAAK,EAC7B,IAAMwB,EAAM,CAAC,EAMb,OALI3B,EAA4BG,EAAM5I,KAAK,GACtC,CAAA,CAAC4I,EAAMM,KAAK,EAAIN,AAAgB,WAAhBA,EAAMM,KAAK,AAAY,GAExCkB,CAAAA,CAAG,CAAC,IAAI,CAACC,SAAS,EAAI,OAAO,CAAGzB,EAAM5I,KAAK,AAAD,EAEvCoK,CACX,EA/EIE,aAAchC,EAAYgC,YAAY,AAC1C,EAcAhN,EAAoB6F,OAAO,CAL3B,SAAiBoH,CAAW,EAGxB,OADA/B,EADmB+B,EAAY1L,SAAS,CAAC2L,UAAU,CACV,gBAAiB9B,GACnD6B,CACX,CAkEJ,EAAGjN,GAAwBA,CAAAA,EAAsB,CAAC,CAAA,GAMrB,IAAMmN,EAA8BnN,EA6F9BoN,EAzEnC,MAMIpH,YAAYqH,CAAC,CAAEC,CAAC,CAAE1M,CAAC,CAAE2M,CAAC,CAAE,CACpB,IAAI,CAACnL,MAAM,CAAGiL,EACd,IAAI,CAACvI,KAAK,CAAGwI,EACb,IAAI,CAACE,IAAI,CAAGD,EACZ,IAAI,CAACE,SAAS,CAAG7M,EACjB,IAAI,CAAC8M,cAAc,CAAG9M,EACtB,IAAI,CAAC+M,KAAK,CAAG,EACb,IAAI,CAACC,EAAE,CAAG,EACV,IAAI,CAACC,EAAE,CAAG,EACV,IAAI,CAACC,EAAE,CAAG,EACV,IAAI,CAACC,EAAE,CAAG,EACV,IAAI,CAACC,KAAK,CAAG,EAAE,CACf,IAAI,CAACC,EAAE,CAAG,CACNN,MAAO,EACPI,GAAI,EACJD,GAAI,EACJD,GAAI,EACJD,GAAI,EACJM,GAAI,EACJC,GAAI,EACJC,YAAa,SAAUd,CAAC,CAAED,CAAC,EACvB,OAAOgB,KAAKC,GAAG,CAAEhB,EAAID,EAAKA,EAAIC,EAClC,CACJ,CACJ,CAMAiB,WAAWC,CAAE,CAAE,CACX,IAAI,CAACP,EAAE,CAACN,KAAK,CAAG,IAAI,CAACK,KAAK,CAAC,IAAI,CAACA,KAAK,CAACnH,MAAM,CAAG,EAAE,CACjD,IAAI,CAAC8G,KAAK,CAAG,IAAI,CAACA,KAAK,CAAGa,EACtB,AAAmB,IAAnB,IAAI,CAACf,SAAS,EAEd,IAAI,CAACI,EAAE,CAAG,IAAI,CAACD,EAAE,CACjB,IAAI,CAACK,EAAE,CAACF,EAAE,CAAG,IAAI,CAACE,EAAE,CAACN,KAAK,CAAG,IAAI,CAACE,EAAE,CACpC,IAAI,CAACI,EAAE,CAACE,EAAE,CAAG,IAAI,CAACF,EAAE,CAACG,WAAW,CAAC,IAAI,CAACP,EAAE,CAAE,IAAI,CAACI,EAAE,CAACF,EAAE,EAEpD,IAAI,CAACH,EAAE,CAAG,IAAI,CAACD,KAAK,CAAG,IAAI,CAACvL,MAAM,CAClC,IAAI,CAAC6L,EAAE,CAACH,EAAE,CAAG,IAAI,CAACG,EAAE,CAACN,KAAK,CAAG,IAAI,CAACC,EAAE,CACpC,IAAI,CAACK,EAAE,CAACC,EAAE,CAAG,IAAI,CAACD,EAAE,CAACG,WAAW,CAAC,IAAI,CAACR,EAAE,CAAE,IAAI,CAACK,EAAE,CAACH,EAAE,IAIpD,IAAI,CAACC,EAAE,CAAG,IAAI,CAACD,EAAE,CACjB,IAAI,CAACG,EAAE,CAACJ,EAAE,CAAG,IAAI,CAACI,EAAE,CAACN,KAAK,CAAG,IAAI,CAACI,EAAE,CACpC,IAAI,CAACE,EAAE,CAACE,EAAE,CAAG,IAAI,CAACF,EAAE,CAACG,WAAW,CAAC,IAAI,CAACH,EAAE,CAACJ,EAAE,CAAE,IAAI,CAACE,EAAE,EAEpD,IAAI,CAACD,EAAE,CAAG,IAAI,CAACH,KAAK,CAAG,IAAI,CAAC7I,KAAK,CACjC,IAAI,CAACmJ,EAAE,CAACL,EAAE,CAAG,IAAI,CAACK,EAAE,CAACN,KAAK,CAAG,IAAI,CAACG,EAAE,CACpC,IAAI,CAACG,EAAE,CAACC,EAAE,CAAG,IAAI,CAACD,EAAE,CAACG,WAAW,CAAC,IAAI,CAACH,EAAE,CAACL,EAAE,CAAE,IAAI,CAACE,EAAE,GAExD,IAAI,CAACE,KAAK,CAACS,IAAI,CAACD,EACpB,CACAE,OAAQ,CACJ,IAAI,CAACd,EAAE,CAAG,EACV,IAAI,CAACC,EAAE,CAAG,EACV,IAAI,CAACG,KAAK,CAAG,EAAE,CACf,IAAI,CAACL,KAAK,CAAG,CACjB,CACJ,EAuDmCgB,EA/BnC,MACI3I,aAAc,CAMV,IAAI,CAAC4I,aAAa,CAAG,EACrB,IAAI,CAACC,OAAO,CAAG,CAAA,CACnB,CAMAC,KAAKjD,CAAE,CAAExB,CAAC,CAAE0E,CAAQ,CAAE3M,CAAM,CAAE8C,CAAK,CAAEmG,CAAM,CAAE2D,CAAM,CAAE,CAQjD,OAPA,IAAI,CAACnD,EAAE,CAAGA,EACV,IAAI,CAACxB,CAAC,CAAGA,EACT,IAAI,CAAC0E,QAAQ,CAAGA,EAChB,IAAI,CAAC3M,MAAM,CAAGA,EACd,IAAI,CAAC8C,KAAK,CAAGA,EACb,IAAI,CAACmG,MAAM,CAAGA,EACd,IAAI,CAAC2D,MAAM,CAAGA,EACP,IAAI,AACf,CACJ,EAyFmCC,EAHR,CACvBC,KAzDJ,SAAc5D,CAAK,CAAE6D,CAAM,EACvB,GAAM,CAAEC,kBAAAA,CAAiB,CAAEC,WAAAA,CAAU,CAAE3F,IAAAA,CAAG,CAAEjC,SAAAA,CAAQ,CAAE,CAAG0H,EACnDG,EAAY,AAAChE,EAAMD,MAAM,EAAIC,EAAMD,MAAM,CAAC9G,KAAK,CAACgL,WAAW,CAE7D,KAAK,EAEJjE,EAAMD,MAAM,EACTC,EAAMD,MAAM,CAACpJ,OAAO,CAACqN,SAAS,CAClC9D,EAAUF,EAAME,OAAO,CAK3B,GAJA2D,EAAOK,OAAO,CAAG,CACb,GAAGL,EAAOK,OAAO,CACjB,MAASlE,EAAMmE,YAAY,EAC/B,EACKnE,EAAMoE,UAAU,GACZlE,IAEGA,EADA2D,AAAqB,SAArBA,EAAOQ,SAAS,CACNlI,EAASnE,IAAI,GAElB6L,AAAqB,UAArBA,EAAOQ,SAAS,CACXlI,EAASmI,KAAK,CAACT,EAAOU,QAAQ,EAAI,IACvCjI,IAAI,CAACuH,EAAOW,SAAS,EAAI,CAAC,GAGrBrI,CAAQ,CAAC0H,EAAOQ,SAAS,CAAC,CAACR,EAAOW,SAAS,EAAI,CAAC,GAE9DxE,EAAME,OAAO,CAAGA,EAChBA,EAAQ3D,GAAG,CAACsH,EAAO3H,KAAK,GAExBkC,GACA8B,EAAQ9B,GAAG,CAACA,GAEhB8B,EACK5D,IAAI,CAACuH,EAAOK,OAAO,EACnBO,OAAO,CAACX,EAAmBD,CAAAA,EAAOa,KAAK,EAAWV,EAAWD,QAEjE,GAAI7D,EAAS,CACd,IAAMxG,EAAU,KACZsG,EAAME,OAAO,CAAGA,EAAWA,GAAWA,EAAQxG,OAAO,GAC3B,YAAtB,OAAOqK,GACPA,GAER,CAEIpO,CAAAA,OAAOgP,IAAI,CAACb,GAAmBvI,MAAM,CACrC2E,EAAQuE,OAAO,CAACX,EAAmB,KAAK,EAAG,IAAMpK,KAGjDA,GAER,CACJ,CAQA,EAkBM,CAAEkL,IAAK,CAAE3O,UAAW,CAAE2L,WAAYiD,CAAQ,CAAE,CAAE,CAAEC,QAAS,CAAE7O,UAAW,CAAE2L,WAAYmD,CAAY,CAAE,CAAE,CAAE,CAAG,AAACzF,IAA2IK,WAAW,CAEhQ,CAAElH,OAAQuM,CAAmB,CAAEC,SAAAA,CAAQ,CAAEnM,KAAMoM,CAAiB,CAAE,CAAI3O,GAM5E,OAAM4O,UAAqBJ,EACvBrK,aAAc,CAMV,KAAK,IAAI0K,WACT,IAAI,CAACC,mBAAmB,CAAG,EAC3B,IAAI,CAAChB,SAAS,CAAG,MACrB,CAMAT,KAAKC,CAAM,CAAE,CACTF,EAA0BC,IAAI,CAAC,IAAI,CAAEC,EACzC,CACAM,cAAe,CACX,IAAMpE,EAAS,IAAI,CAACA,MAAM,CAAEpJ,EAAUoJ,EAAOpJ,OAAO,CAChD2O,EAAY,KAAK,CAACnB,eAiBtB,OAfI,IAAI,CAACoB,IAAI,CAAC3L,KAAK,EAAImG,EAAOyF,OAAO,CAACzF,EAAO0F,QAAQ,CAAC,CAAC7L,KAAK,EACxD,IAAI,CAAC2L,IAAI,CAAC9B,QAAQ,CAAClI,MAAM,CACzB+J,GAAa,0BAER,AAAC,IAAI,CAACC,IAAI,CAACG,OAAO,EACtB,IAAI,CAACH,IAAI,CAACI,MAAM,EAChB5F,EAAOyF,OAAO,CAACzF,EAAO0F,QAAQ,CAAC,CAACC,OAAO,EACvCR,EAAkBvO,EAAQiP,cAAc,CAAE,CAACjP,EAAQkP,mBAAmB,EAGjE,IAAI,CAACN,IAAI,CAACG,OAAO,EACtB,IAAI,CAACH,IAAI,CAACI,MAAM,EAChB5F,EAAOyF,OAAO,CAACzF,EAAO0F,QAAQ,CAAC,CAACC,OAAO,EACxCJ,CAAAA,GAAa,2BAA0B,EALvCA,GAAa,wCAOVA,CACX,CAQAzE,SAAU,CACN,MAAOiF,CAAAA,CAAQ,CAAA,IAAI,CAACvF,EAAE,EAAI0E,EAAS,IAAI,CAACnE,KAAK,CAAA,CACjD,CACA5B,SAASoB,CAAK,CAAE,CACZ,KAAK,CAACpB,SAAS6G,KAAK,CAAC,IAAI,CAAEX,WAEvB,IAAI,CAAClF,OAAO,EACZ,IAAI,CAACA,OAAO,CAAC5D,IAAI,CAAC,CACdtF,OAAQsJ,AAAU,UAAVA,EAAoB,EAAI,CACpC,EAER,CACA8D,YAAa,CACT,OAAOa,EAAS,IAAI,CAACe,KAAK,GAAK,AAAW,OAAX,IAAI,CAAClO,CAAC,AACzC,CACJ,CACAkN,EAAoBG,EAAalP,SAAS,CAAE,CACxCgQ,WAAYpB,EAAS5O,SAAS,CAACgQ,UAAU,AAC7C,GAuBA,GAAM,CAAEtN,SAAUuN,CAA8B,CAAE,CAAI3P,IAmBhD4P,GAAwB,CA4B1BN,oBAAqB,CAAA,EACrBO,eAAgB,IAIhBC,aAAc,EAmFdC,aAAc,CAAA,EAIdC,OAAQ,KAAK,EAYbC,aAAc,CAAA,EAIdC,WAAY,CACRC,MAAO,CAAA,EACPC,QAAS,CAAA,EACT5K,UAAW,WACP,IAAMiE,EAAQ,IAAI,EAAI,IAAI,CAACA,KAAK,CAC5B,IAAI,CAACA,KAAK,CACV,CAAC,EACL,OADekG,EAA+BlG,EAAM4G,IAAI,EAAI5G,EAAM4G,IAAI,CAAG,EAE7E,EACAC,OAAQ,CAAA,EACR9P,QAAS,EACTa,cAAe,SACfT,MAAO,CACH2P,aAAc,UAClB,CACJ,EACAC,QAAS,CACLC,aAAc,GACdC,YAAa,0CAabC,cAAe,4CACnB,EAOAC,kBAAmB,CAAA,EAmBnBC,gBAAiB,eAOjBC,wBAAyB,WAWzBC,2BAA4B,CAAA,EAS5BC,gBAAiB,CAAA,EAQjBC,iBAAkB,CAId9P,SAAU,CAcNC,MAAO,QAIPE,EAAG,IAIHC,EAAG,EACP,CACJ,EAuIA2P,YAAa,UAIbC,YAAa,EACbxG,SAAU,aAOVyG,QAAS,IAMT1Q,OAAQ,CAOJ2Q,MAAO,CAIHH,YAAa,UAQbI,WAAY,AAACvI,IAA2IK,WAAW,CAACmI,OAAO,CAAG,EAAI,GAIlLC,KAAM,CAAA,EAONJ,QAAS,IAITK,OAAQ,CAAA,CACZ,CACJ,EACAC,aAAc,YAcdC,eAAgB,CAAA,EAsBhBC,QAAS,CAQL7C,UAAW,KAAK,EAQhBlO,MAAO,KAAK,EAQZuP,QAAS,CAAA,EAQTyB,WAAY,KAAK,EASjBC,YAAa,KAAK,EAUlBzB,KAAM,KAAK,EAWX0B,gBAAiB,KAAK,EAStBC,mBAAoB,EACpBnB,gBAAiB,CACboB,SAAU,EACVC,SAAU,EACVC,gBAAiB,CACrB,EACAnC,OAAQ,CACJoC,UAAW,EACXC,OAAQ,CACZ,CACJ,CACJ,CAmIIjU,CACDA,CAAAA,GAAqBA,CAAAA,EAAmB,CAAC,CAAA,CAAC,EADxBkU,SAAS,CAN1B,SAASA,EAAUC,CAAI,CAAEC,CAAI,CAAEC,CAAO,EAClC,IAAMC,EAAOF,EAAK5S,IAAI,CAAC6S,GAAW,IAAI,CAAEF,EAC3B,EAAA,IAATG,GACAJ,EAAUI,EAAMF,EAAMC,EAE9B,EAQyB,IAAME,GAA4BvU,EAiBzD,CAAE8D,OAAQ0Q,EAAoB,CAAEC,QAAAA,EAAO,CAAEnE,SAAUoE,EAAsB,CAAEC,SAAAA,EAAQ,CAAE1Q,MAAO2Q,EAAmB,CAAEzQ,KAAM0Q,EAAkB,CAAEC,eAAAA,EAAc,CAAE,CAAIlT,IAuMlImT,GAPb,CAClBC,SAvLJ,SAAkBpE,CAAI,CAAE5O,CAAO,MAENqJ,EAAOpG,EAAO4M,EAAcoD,EAAmBxS,EAAOyS,EAD3E,IAAMC,EAAQnT,EAAQmT,KAAK,CAAEC,EAAoBpT,EAAQoT,iBAAiB,CAAEC,EAAcrT,EAAQqT,WAAW,CAAEC,EAAmBtT,EAAQsT,gBAAgB,CAAElK,EAASpJ,EAAQoJ,MAAM,CAAEmK,EAASvT,EAAQuT,MAAM,CAAEC,EAAWxT,EAAQwT,QAAQ,CAAEC,EAASrK,EAAOqK,MAAM,CAAEC,EAAoBtK,EAAO9G,KAAK,CAACtC,OAAO,CAACsC,KAAK,CA+BjT,OAhBIsM,IACAvF,EAAQoK,CAAM,CAAC7E,EAAKxG,CAAC,CAAC,CACtBnF,EAAQmQ,CAAiB,CAACxE,EAAK3L,KAAK,CAAC,EAAI,CAAC,EACxBoG,GAASpG,EAAM4M,YAAY,GAEzCoD,EAAoB5J,EAAM8J,KAAK,CAAII,CAAAA,EAC/BA,EAAO3O,MAAM,CACb8O,EAAkBC,UAAU,AAAD,EAC/B9D,EAAe0D,GAAUA,CAAM,CAACN,EAAkB,EAGjD7J,EAAO9G,KAAK,CAAC+E,UAAU,EACxB5G,CAAAA,EAAQoS,GAAmBxJ,GAASA,EAAMrJ,OAAO,CAACS,KAAK,CAAEwC,GAASA,EAAMxC,KAAK,CAAEoP,EAAcwD,GAAeO,AAtB/F,CAAA,AAACnT,IAClB,IAAMoT,EAAiB5Q,GAASA,EAAM4Q,cAAc,QACpD,AAAIA,GACAA,AAAuB,eAAvBA,EAAe/U,GAAG,EAClBqU,GACAK,EACO/K,IAAsGqL,KAAK,CAACrT,GAAOsT,QAAQ,CAACF,EAAeG,EAAE,CAAIb,CAAAA,EAAQK,CAAO,GAAIrU,GAAG,GAE3KsB,CACX,CAAA,EAaiI4S,GAAcjK,EAAO3I,KAAK,CAAA,EAEvJyS,EAAaL,GAAmBxJ,GAASA,EAAMrJ,OAAO,CAACkT,UAAU,CAAEjQ,GAASA,EAAMiQ,UAAU,CAAED,EAAmBK,EAAkBtT,EAAQkT,UAAU,GAElJ,CACHzS,MAAOA,EACPyS,WAAYA,CAChB,CACJ,EAoJIe,gBAlIJ,SAAyB/G,CAAM,MAEvBgH,EAAUC,EAAW/L,EAAGgM,EAAMJ,EAAIK,EADtC,IAAMC,EAAS,CAAC,EAEhB,GAAI3B,GAASzF,GA2BT,IA1BAkH,EAAO1B,GAAuBxF,EAAOkH,IAAI,EAAIlH,EAAOkH,IAAI,CAAG,EAC3DC,EAASnH,EAAOmH,MAAM,CACtBF,EAAY,CAAC,EACbD,EAAWvB,GAASzF,EAAOgH,QAAQ,EAAIhH,EAAOgH,QAAQ,CAAG,CAAC,EACtDzB,GAAQ4B,IACRF,CAAAA,EAAYE,EAAOE,MAAM,CAAC,CAACnV,EAAK+S,KAC5B,IAAIlP,EAAO2N,EAAiB5Q,EAgB5B,OAfI2S,GAASR,IAASO,GAAuBP,EAAKlP,KAAK,IAEnD2N,EAAkBiC,GAAmB7S,AADrCA,CAAAA,EAAU4S,GAAoB,CAAC,EAAGT,EAAI,EACOvB,eAAe,CAAEsD,EAAStD,eAAe,EAEtF,OAAO5Q,EAAQ4Q,eAAe,CAC9B,OAAO5Q,EAAQiD,KAAK,CAGhB0P,GAASvT,CAAG,CADhB6D,EAAQkP,EAAKlP,KAAK,CAAI2N,CAAAA,EAAkB,EAAIwD,EAAO,CAAA,EAC5B,EACnBxB,GAAoB,CAAA,EAAMxT,CAAG,CAAC6D,EAAM,CAAEjD,GAGtCZ,CAAG,CAAC6D,EAAM,CAAGjD,GAGdZ,CACX,EAAG,CAAC,EAAC,EAET4U,EAAKtB,GAAuBxF,EAAO8G,EAAE,EAAI9G,EAAO8G,EAAE,CAAG,EAChD5L,EAAI,EAAGA,GAAK4L,EAAI5L,IACjBkM,CAAM,CAAClM,EAAE,CAAGwK,GAAoB,CAAC,EAAGsB,EAAUvB,GAASwB,CAAS,CAAC/L,EAAE,EAAI+L,CAAS,CAAC/L,EAAE,CAAG,CAAC,GAG/F,OAAOkM,CACX,EAgGIE,aAvBJ,SAAsBpL,CAAM,CAAEqL,CAAW,EACrC,GAAM,CAAEnS,MAAAA,CAAK,CAAEtC,QAAAA,CAAO,CAAE,CAAGoJ,EAAQ,CAAEsL,aAAAA,EAAe,CAAC,CAAEC,UAAAA,EAAY,CAAC,CAAE,CAAG3U,EAAS,CAAE4U,UAAAA,EAAY,CAAC,CAAE,CAAGtS,EAGtG,GAAIqS,AAAc,SAAdA,EAAsB,CACtB,GAAI,AAAwB,UAAxB,OAAOD,GAA6B,KAAKG,IAAI,CAACH,GAE9C,OAAOE,EADkDH,CAAAA,EAAcK,AAAtDC,WAAWL,GAAgB,IAAuCD,CAAAA,EAAc,CAAA,CAAC,EAGtG,IAAMO,EAAYC,OAAOP,GACzB,MAAO,AAAEE,CAAAA,EAAYI,CAAQ,EACxBP,CAAAA,GAAe,CAAA,EAAMO,CAC9B,CACA,OAAOlC,GAAe6B,EAAWC,EACrC,EAUIM,cA3FJ,SAASA,EAAcC,CAAI,CAAEnV,CAAO,EAChC,IAAMoV,EAASpV,EAAQoV,MAAM,CAAEC,EAASrV,EAAQqV,MAAM,CAAqCC,EAAWC,AAAhCvV,EAAQuV,WAAW,AAAwB,CAACF,EAAO,CAAEzE,EAAmB5Q,AAA4B,CAAA,IAA5BA,EAAQ4Q,eAAe,CAAsCvH,EAAQoK,AAAxBzT,EAAQyT,MAAM,AAAgB,CAAC0B,EAAK/M,CAAC,CAAC,CAAEoN,EAAenM,GAASA,EAAMrJ,OAAO,EAAI,CAAC,EAAG8M,EAAW,EAAE,CACzRH,EAAgB,CACpBwI,CAAAA,EAAKM,YAAY,CAAGN,EAAKlS,KAAK,CAAI2N,CAAAA,EAAkB,EAAI0E,EAASrS,KAAK,AAAD,EACrEkS,EAAKlF,IAAI,CAAG4C,GAAmBxJ,GAASA,EAAM4G,IAAI,CAAE,IACpDkF,EAAKvI,OAAO,CAAIyI,IAAWF,EAAKvL,EAAE,EAC9B5J,AAAoB,CAAA,IAApBA,EAAQ4M,OAAO,CACG,YAAlB,OAAOwI,GACPD,CAAAA,EAAOC,EAAOD,EAAMnV,EAAO,EAG/BmV,EAAKrI,QAAQ,CAAC4I,OAAO,CAAC,CAACC,EAAOvN,KAC1B,IAAMwN,EAAapD,GAAqB,CAAC,EAAGxS,GAC5CwS,GAAqBoD,EAAY,CAC7BzC,MAAO/K,EACPoL,SAAU2B,EAAKrI,QAAQ,CAAClI,MAAM,CAC9BgI,QAASuI,EAAKvI,OAAO,AACzB,GACA+I,EAAQT,EAAcS,EAAOC,GAC7B9I,EAASN,IAAI,CAACmJ,GACVA,EAAM/I,OAAO,EACbD,CAAAA,GAAiBgJ,EAAME,GAAG,AAAD,CAEjC,GAEA,IAAM1L,EAAQ0I,GAAmB2C,EAAarL,KAAK,CAAEwC,GAMrD,OALAwI,EAAKvI,OAAO,CAAGzC,GAAS,GAAMwC,CAAAA,EAAgB,GAAKwI,EAAKvI,OAAO,AAAD,EAC9DuI,EAAKrI,QAAQ,CAAGA,EAChBqI,EAAKxI,aAAa,CAAGA,EACrBwI,EAAKnG,MAAM,CAAGmG,EAAKvI,OAAO,EAAI,CAACD,EAC/BwI,EAAKU,GAAG,CAAG1L,EACJgL,CACX,EA4DIW,aA/CJ,SAAsB1M,CAAM,EACxB,IAAI2M,EAAQ/V,EAaZ,OAZI2S,GAASvJ,KAETpJ,EAAU2S,GAASvJ,EAAOpJ,OAAO,EAAIoJ,EAAOpJ,OAAO,CAAG,CAAC,EAEvD+V,EAASlD,GAAmBzJ,EAAO0F,QAAQ,CAAE9O,EAAQ+V,MAAM,CAAE,IAEzDpD,GAASvJ,EAAOpF,WAAW,GAC3BoF,CAAAA,EAAOpF,WAAW,CAAC+R,MAAM,CAAGA,CAAK,EAGrC3M,EAAO0F,QAAQ,CAAGiH,GAEfA,CACX,CAiCA,EAkBM,CAAEjC,MAAOrT,EAAK,CAAE,CAAIgI,IAGpB,CAAE9G,SAAUqU,EAAsB,CAAEC,KAAAA,EAAI,CAAE,CAAIrW,IAE9C,CAAEkJ,OAAQoN,EAAY,CAAE/H,QAASgI,EAAa,CAAE,CAAG,AAACxN,IAA2IK,WAAW,CAO1M,CAAEgK,SAAUoD,EAAsB,CAAEnC,gBAAiBoC,EAA6B,CAAEP,aAAcQ,EAA0B,CAAE,CAAGvD,GAEjI,CAAEnR,SAAU2U,EAAsB,CAAEC,aAAAA,EAAY,CAAEC,MAAAA,EAAK,CAAE5U,QAAS6U,EAAqB,CAAEC,MAAAA,EAAK,CAAE7U,OAAQ8U,EAAoB,CAAE7U,UAAW8U,EAAuB,CAAEpE,QAASqE,EAAqB,CAAEnE,SAAUoE,EAAsB,CAAE/U,SAAUgV,EAAsB,CAAE/U,MAAOgV,EAAmB,CAAE9U,KAAM+U,EAAkB,CAAE9U,WAAY+U,EAAwB,CAAEC,MAAAA,EAAK,CAAEC,WAAAA,EAAU,CAAE,CAAIzX,IAY3X0X,GAA2B,CAAA,EAO/B,SAASC,SAEDC,EADJ,IAAqBC,EAAQrO,AAAd,IAAI,CAAiBqO,KAAK,CAAEC,EAAQtO,AAApC,IAAI,CAAuCsO,KAAK,CAE3DD,GAASC,IACLtO,AAHO,IAAI,CAGJuO,EAAE,CAAC,YACVH,EAAW,CACPI,UAAW,CAAA,EACXC,cAAe,EACf7F,UAAW,EACX8F,IAAK,EACLC,WAAY,EACZ1L,IAxBA,IAyBA2L,WAAY,EACZC,YAAa,CAAA,EACbC,MAAO,KAAK,EACZC,cAAe,EAAE,AACrB,EACAvB,GAAqBc,EAAM1X,OAAO,CAAEwX,GACpCZ,GAAqBa,EAAMzX,OAAO,CAAEwX,GACpCF,GAA2B,CAAA,GAEtBA,KACLI,EAAMU,UAAU,CAACV,EAAM1T,WAAW,EAClCyT,EAAMW,UAAU,CAACX,EAAMzT,WAAW,EAClCsT,GAA2B,CAAA,GAGvC,CAaA,MAAMe,WAAsBlC,GAMxB,OAAOvS,QAAQoH,CAAW,CAAE,CACpBmM,GAAyBnB,GAAwB,kBACjDO,GAAuBvL,EAAa,gBAAiBuM,GAE7D,CAOAe,oBAAoBC,CAAe,CAAEC,CAAI,CAAEjT,CAAK,CAAEkT,CAAY,CAAE,CAC5D,IAAMlN,EAAOhG,EAAMgG,IAAI,CAAEmN,EAAMnT,EAAMwG,KAAK,CAACnH,MAAM,CAAG,EAChD+T,EAAIC,EAAIC,EAAIC,EAAIC,EAAKxT,EAAMqG,EAAE,CAAEoN,EAAKzT,EAAMuG,EAAE,CAAEmN,EAAM7Q,EAAI,EAQ5D,IAAK,IAAMkD,KAPPkN,GACAO,EAAKxT,EAAMoG,EAAE,CACbqN,EAAKzT,EAAMsG,EAAE,EAGboN,EAAO1T,EAAMwG,KAAK,CAAC2M,EAAI,CAEXnT,EAAMwG,KAAK,EACnByM,CAAAA,GAASpQ,EAAIsQ,CAAG,IACZnT,AAAoB,IAApBA,EAAMiG,SAAS,EACfmN,EAAKpN,EAAKrK,CAAC,CACX0X,EAAKrN,EAAKpK,CAAC,CAEX2X,EAAKxN,EADLuN,CAAAA,EAAKE,CAAC,IAINJ,EAAKpN,EAAKrK,CAAC,CACX0X,EAAKrN,EAAKpK,CAAC,CAEX0X,EAAKvN,EADLwN,CAAAA,EAAKE,CAAC,GAGVP,EAAajM,IAAI,CAAC,CACdtL,EAAGyX,EACHxX,EAAGyX,EACH/V,MAAOgW,EACP1Y,OAAQqW,GAAasC,EACzB,GACIvT,AAAoB,IAApBA,EAAMiG,SAAS,CACfD,EAAKpK,CAAC,CAAGoK,EAAKpK,CAAC,CAAG2X,EAGlBvN,EAAKrK,CAAC,CAAGqK,EAAKrK,CAAC,CAAG2X,GAG1BzQ,GAAQ,EAGZ7C,EAAMkH,KAAK,GACPlH,AAAoB,IAApBA,EAAMiG,SAAS,CACfjG,EAAM1C,KAAK,CAAG0C,EAAM1C,KAAK,CAAGkW,EAG5BxT,EAAMpF,MAAM,CAAGoF,EAAMpF,MAAM,CAAG6Y,EAElCzN,EAAKpK,CAAC,CAAGoK,EAAKwB,MAAM,CAAC5L,CAAC,CAAIoK,CAAAA,EAAKwB,MAAM,CAAC5M,MAAM,CAAGoF,EAAMpF,MAAM,AAAD,EAC1DoL,EAAKrK,CAAC,CAAGqK,EAAKwB,MAAM,CAAC7L,CAAC,CAAIqK,CAAAA,EAAKwB,MAAM,CAAClK,KAAK,CAAG0C,EAAM1C,KAAK,AAAD,EACpD0V,GACAhT,CAAAA,EAAMiG,SAAS,CAAG,EAAIjG,EAAMiG,SAAS,AAAD,EAGnCgN,GACDjT,EAAM+G,UAAU,CAAC2M,EAEzB,CACAC,cAAcX,CAAe,CAAExL,CAAM,CAAED,CAAQ,CAAE,CAC7C,IAAM2L,EAAe,EAAE,CACnBU,EAAM3N,EAAYuB,EAAOvB,SAAS,CAAEtK,EAAI6L,EAAO7L,CAAC,CAAEC,EAAI4L,EAAO5L,CAAC,CAAE0B,EAAQkK,EAAOlK,KAAK,CAAE1C,EAAS4M,EAAO5M,MAAM,CAAEwY,EAAIC,EAAIC,EAAIC,EAC9H,IAAK,IAAMnD,KAAS7I,EAChBqM,EACI,AAACpM,EAAOlK,KAAK,CAAGkK,EAAO5M,MAAM,CAAKwV,CAAAA,EAAME,GAAG,CAAG9I,EAAO8I,GAAG,AAAD,EAC3D8C,EAAKzX,EACL0X,EAAKzX,EACDqK,AAAc,IAAdA,GAGA3I,GADAgW,EAAKM,EADLL,CAAAA,EAAK3Y,CAAK,EAGVe,GAAQ2X,IAKR1Y,GADA2Y,EAAKK,EADLN,CAAAA,EAAKhW,CAAI,EAGT1B,GAAQ2X,GAEZL,EAAajM,IAAI,CAAC,CACdtL,EAAGyX,EACHxX,EAAGyX,EACH/V,MAAOgW,EACP1Y,OAAQ2Y,EACRtN,UAAW,EACXqK,IAAK,CACT,GACI0C,GACA/M,CAAAA,EAAY,EAAIA,CAAQ,EAGhC,OAAOiN,CACX,CACAW,wBAAwBb,CAAe,CAAExL,CAAM,CAAED,CAAQ,CAAE,CACvD,IAAqB2L,EAAe,EAAE,CAAElN,EAAO,CAC3CrK,EAAG6L,EAAO7L,CAAC,CACXC,EAAG4L,EAAO5L,CAAC,CACX4L,OAAQA,CACZ,EAAGvB,EAAYuB,EAAOvB,SAAS,CAAEkN,EAAM5L,EAASlI,MAAM,CAAG,EAAGW,EAAQ,IAAI4F,EAA8B4B,EAAO5M,MAAM,CAAE4M,EAAOlK,KAAK,CAAE2I,EAAWD,GAC1I4N,EAAM/Q,EAAI,EAEd,IAAK,IAAMuN,KAAS7I,EAChBqM,EACI,AAACpM,EAAOlK,KAAK,CAAGkK,EAAO5M,MAAM,CAAKwV,CAAAA,EAAME,GAAG,CAAG9I,EAAO8I,GAAG,AAAD,EAC3DtQ,EAAM+G,UAAU,CAAC6M,GACb5T,EAAMyG,EAAE,CAACC,EAAE,CAAG1G,EAAMyG,EAAE,CAACE,EAAE,EACzB9C,AAZO,IAAI,CAYJkP,mBAAmB,CAACC,EAAiB,CAAA,EAAOhT,EAAOkT,EAAclN,GAIxEnD,IAAMsQ,GACNtP,AAjBO,IAAI,CAiBJkP,mBAAmB,CAACC,EAAiB,CAAA,EAAMhT,EAAOkT,EAAclN,GAG3E,EAAEnD,EAEN,OAAOqQ,CACX,CAKAY,eAAehQ,CAAK,CAEpBiQ,CAAS,CAETC,CAAY,CAAE,CACVrD,GAAa5W,SAAS,CAAC+Z,cAAc,CAACjK,KAAK,CAAC,IAAI,CAAEX,WAC9CpF,EAAMiQ,SAAS,EAEfjQ,EAAMiQ,SAAS,CAAC3T,IAAI,CAAC,CAAEtF,OAAQ,AAACgJ,CAAAA,EAAMuF,IAAI,CAACvO,MAAM,EAAI,CAAA,EAAK,CAAE,EAEpE,CACAmZ,mBAAoB,CAChB,IAAMpQ,EAAS,IAAI,CAAEqQ,EAAarQ,EAAOqQ,UAAU,EAAI,CAAC,EAAG,CAAEjI,QAAAA,CAAO,CAAE,CAAGpI,EAAOpJ,OAAO,CAAE4R,EAAqBJ,GAASI,oBAAsB,EAC7I,GAAIJ,GAASxB,QAAS,CAClB,IAAM0J,EAAe,CAAC,EAChBC,EAAc,AAAC/K,IACjB,GAAIA,GAAMvF,OAAOwE,UAAW,CACxB,GAAM,CAAEhL,MAAAA,EAAQ,CAAC,CAAE1C,OAAAA,EAAS,CAAC,CAAE,CAAGyO,EAAKvF,KAAK,CAACwE,SAAS,CAChD,CAAE4D,WAAAA,EAAa,CAAC,CAAEC,YAAAA,EAAc,CAAC,CAAE,CAAGF,EAASoI,EAAgBlD,GAAsBhF,GAAcmI,EAAgBnI,EACrHD,EAAaC,EACbD,EAAaA,EACb5O,CAAAA,EAAQ4O,GACRtR,EAAUyZ,CAAAA,EAAgBlI,EAAcD,CAAS,GACjDqI,AAN2DjX,EAAQ1C,EAM5D0Z,CAAY,GACf,CAACjL,EAAKG,OAAO,EAAI2H,GAAsB9H,EAAK7B,MAAM,IAC7C2M,CAAY,CAAC9K,EAAK7B,MAAM,CAAC,EAC1B2M,CAAAA,CAAY,CAAC9K,EAAK7B,MAAM,CAAC,CAAG,EAAE,AAAD,EAEjC2M,CAAY,CAAC9K,EAAK7B,MAAM,CAAC,CAACP,IAAI,CAACoC,GAG3C,CACAA,GAAM9B,SAAS4I,QAAQ,AAACC,IACpBgE,EAAYhE,EAChB,EACJ,EAEA,IAAK,IAAM5I,KADX4M,EAAYvQ,EAAO+L,IAAI,EACFuE,EACbA,CAAY,CAAC3M,EAAO,EAChB2M,CAAY,CAAC3M,EAAO,CAACnI,MAAM,CAAGgN,GAC9B8H,CAAY,CAAC3M,EAAO,CAAC2I,OAAO,CAAC,AAAC9G,IAC1B,IAAMuE,EAAQsG,CAAU,CAAC1M,EAAO,CAACgN,OAAO,CAACnL,EAAKxG,CAAC,EAC/C,GAAI+K,AAAU,KAAVA,EAAc,CACdsG,CAAU,CAAC1M,EAAO,CAACiN,MAAM,CAAC7G,EAAO,GACjC,IAAMvJ,EAAK,CAAC,kCAAkC,EAAEgF,EAAK7B,MAAM,EAAI,OAAO,CAAC,CACnEkN,EAAa7Q,EAAOqK,MAAM,CACzByG,IAAI,CAAC,AAAC5O,GAAMA,EAAE1B,EAAE,GAAKA,GAC1B,GAAI,CAACqQ,EAAY,CACb,IAAME,EAAa/Q,EAAO6B,UAAU,CAAEmP,EAAahR,EAAOqK,MAAM,CAAC7O,MAAM,CASvEgS,GARAqD,EAAa,IAAIE,EAAW/Q,EAAQ,CAChCuF,UAAW6C,EAAQ7C,SAAS,CAC5BlO,MAAO+Q,EAAQ/Q,KAAK,CACpBmJ,GAAAA,EACAuJ,MAAOiH,EACPrL,QAAS,CAAA,EACT5E,MAAO,CACX,GACiC,CAC7BkQ,aAAc,SAClB,GACAjR,EAAOqK,MAAM,CAACjH,IAAI,CAACyN,GACnBR,CAAU,CAAC1M,EAAO,CAACP,IAAI,CAAC4N,GACxBX,CAAU,CAAC7P,EAAG,CAAG,EAAE,AACvB,CACA,IAAM0Q,EAASL,EAAWvL,mBAAmB,CAAG,EAAGmH,EAAMzM,EAAOqK,MAAM,CAACwG,EAAW9G,KAAK,CAAC,CACnFnT,OAAO,CAACmK,KAAK,EAAI,EAAG8F,EAAOuB,EAAQvB,IAAI,EACxC,CAAC,EAAE,EAAEqK,EAAO,CAAC,AAGjBlR,CAAAA,EAAOqK,MAAM,CAACwG,EAAW9G,KAAK,CAAC,CAC1BzE,mBAAmB,CAAG4L,EAC3BlR,EAAOqK,MAAM,CAACwG,EAAW9G,KAAK,CAAC,CAACnT,OAAO,CAACmK,KAAK,CACzC0L,EAAOjH,CAAAA,EAAKvF,KAAK,CAACc,KAAK,EAAI,CAAA,EAC/Bf,EAAOqK,MAAM,CAACwG,EAAW9G,KAAK,CAAC,CAAClD,IAAI,CAAGA,EACvCwJ,CAAU,CAAC7P,EAAG,CAAC4C,IAAI,CAACoC,EAAKvF,KAAK,CAAC8J,KAAK,CACxC,CACJ,EAIZ/J,CAAAA,EAAOyF,OAAO,CAAG,CAAC,EAClBzF,EAAOmR,QAAQ,CAAG,EAAE,CACpBnR,EAAOqQ,UAAU,CAAGA,EACpB,IAAMtE,EAAO/L,EAAOoR,SAAS,CAAC,GAAI,GAAI,EAAGpR,EAAOqQ,UAAU,EAC1DrQ,EAAOjB,SAAS,CAACgN,EACrB,CACJ,CAcAsF,uBAAuB1N,CAAM,CAAE+M,CAAI,CAAE,CACjC,IAAqB9Z,EAAUoJ,AAAhB,IAAI,CAAmBpJ,OAAO,CAAgDiD,EAAQmQ,AAAlChK,AAApD,IAAI,CAAuDgK,iBAAiB,AAA2B,CAACrG,EAAO9J,KAAK,CAAG,EAAE,CAAEyX,EAAYxD,GAAoBjU,GAAOwN,iBAC7KrH,AADW,IAAI,AACT,CAACnG,GAAOwN,gBAAgB,EAC9BxN,EAAMwN,eAAe,CAAGrH,AAFb,IAAI,CAEgBpJ,OAAO,CAACyQ,eAAe,EAAGkK,EAAY3a,EAAQ2Q,0BAA0B,CAE3G7D,EAAWC,EAAOD,QAAQ,CAAC8N,MAAM,CAAC,AAACpc,GAAMuO,EAAOgC,OAAO,EAAI,CAACvQ,EAAEqc,MAAM,EACpE,GAAI,CAACH,EACD,OAEJ,IAAII,EAAiB,EAAE,CACnB7X,GAASA,EAAMyN,uBAAuB,EACtCoJ,CAAAA,EAAKtO,SAAS,CAAGvI,AAAkC,aAAlCA,EAAMyN,uBAAuB,CAC1C,EACA,CAAA,EAERoK,EAAiB1R,AAdF,IAAI,AAcI,CAACsR,EAAU,CAACZ,EAAMhN,GACzC,IAAI1E,EAAI,GACR,IAAK,IAAMuN,KAAS7I,EAAU,CAC1B,IAAMiO,EAASD,CAAc,CAAC,EAAE1S,EAAE,AAClCuN,CAAAA,EAAMoF,MAAM,CAAG9D,GAAoB8D,EAAQ,CACvClF,IAAKF,EAAMhJ,aAAa,CACxBnB,UAAYmP,EAAY,EAAIb,EAAKtO,SAAS,CAAGsO,EAAKtO,SAAS,AAC/D,GACAmK,EAAMqF,WAAW,CAAG/D,GAAoB8D,EAAQ,CAC5C7Z,EAAI6Z,EAAO7Z,CAAC,CAAGkI,AAvBR,IAAI,CAuBW6R,SAAS,CAG/B9Z,EAAG+Z,AA7TH,IA6TaH,EAAO5Z,CAAC,CAAG4Z,EAAO5a,MAAM,CACrC0C,MAAQkY,EAAOlY,KAAK,CAAGuG,AA3BhB,IAAI,CA2BmB6R,SAAS,AAC3C,GAEItF,EAAM7I,QAAQ,CAAClI,MAAM,EACrBwE,AA/BO,IAAI,CA+BJqR,sBAAsB,CAAC9E,EAAOA,EAAMoF,MAAM,CAEzD,CACJ,CAKAI,WAAWpU,CAAC,CAAE,CACV,IAAMzE,EAAQ,IAAI,CAACA,KAAK,CAAEC,EAAcD,EAAMC,WAAW,CAAE4B,EAAO,EAAE,CACpE,GAAI5B,EAAa,CACb,IAAI6Y,EAAqB,EACzBjX,EAAKqI,IAAI,CAAC,CACNvJ,MAAOmY,EACP/V,aAAc/C,EAAM8G,MAAM,CAAC,EAAE,AACjC,GACA,IAAIwF,EAAO7H,EAAEsU,MAAM,CAACxM,OAAO,CAAC9H,EAAEuU,SAAS,CAAC,CAClCC,EAAa,EAAE,CAGrB,KAAO3M,EAAK7B,MAAM,EAAI6B,AAAgB,KAAhBA,EAAK7B,MAAM,EAC7BwO,EAAW/O,IAAI,CAACoC,GAChBA,EAAO7H,EAAEsU,MAAM,CAACxM,OAAO,CAACD,EAAK7B,MAAM,CAAC,CAExC,IAAK,IAAM6B,KAAQ2M,EAAWC,OAAO,GACjCrX,EAAKqI,IAAI,CAAC,CACNvJ,MAAO,EAAEmY,EACT/V,aAAcuJ,CAClB,EAGAzK,CAAAA,EAAKS,MAAM,EAAI,GACfT,CAAAA,EAAKS,MAAM,CAAG,CAAA,CAEtB,CACA,OAAOT,CACX,CAeAsX,gBAAiB,KAITzb,EAASiD,EAHb,IAAqBmQ,EAAoBhK,AAA1B,IAAI,CAA6BgK,iBAAiB,CAAEK,EAASrK,AAA7D,IAAI,CAAgEqK,MAAM,CAACmH,MAAM,CAAC,SAAUpc,CAAC,EACxG,OAAOA,EAAEoQ,IAAI,CAAChC,OAAO,EAAI8J,GAAsBlY,EAAE8a,SAAS,CAC9D,GAAIlZ,EAAUgX,GAAMhO,AAFL,IAAI,CAEQpJ,OAAO,CAAC8P,UAAU,EAAI,CAAC,EAAE,CAAC,EAAE,EAAE1P,QAEzD,IAAK,IAAMiJ,KAASoK,EAAQ,CAkBxB,GAjBAxQ,EAAQmQ,CAAiB,CAAC/J,EAAMuF,IAAI,CAAC3L,KAAK,CAAC,CAE3CjD,EAAU,CAAEQ,MAAO,CAAC,CAAE,EAElB,CAAA,CAAC6I,EAAMuF,IAAI,CAACI,MAAM,EAClB,CAAC3F,EAAMuF,IAAI,CAACG,OAAO,EAClB1F,EAAMuF,IAAI,CAACG,OAAO,EACf1F,EAAMuF,IAAI,CAAC3L,KAAK,EAAImG,AAZjB,IAAI,CAYoByF,OAAO,CAACzF,AAZhC,IAAI,CAYmC0F,QAAQ,CAAC,CAAC7L,KAAK,GAC7DjD,CAAAA,EAAQgQ,OAAO,CAAG,CAAA,CAAI,EAGtB/M,GAASA,EAAM6M,UAAU,GACzB9P,EAAUiX,GAAoBjX,EAASiD,EAAM6M,UAAU,EACvD1G,AAlBO,IAAI,CAkBJsS,aAAa,CAAG,IAAM,CAAA,GAI7BrS,EAAMwE,SAAS,CAAE,CACjB,IAAMpG,EAAM,CACR5E,MAAO,AAAEwG,CAAAA,EAAMwE,SAAS,CAAChL,KAAK,EAAI,CAAA,EAC9B,EAAK7C,CAAAA,EAAQI,OAAO,EAAIA,GAAW,CAAA,EAAM,KAC7Cub,UAAWvP,KAAKwP,KAAK,CAAC,AAACvS,CAAAA,EAAMwE,SAAS,CAAC1N,MAAM,EAAI,CAAA,EAAK,GAC1D,EACAyW,GAAqB5W,EAAQQ,KAAK,CAAEiH,GACpC4B,EAAMiQ,SAAS,EAAE7R,IAAIA,EACzB,CAEA4B,EAAMwS,SAAS,CAAG5E,GAAoBjX,EAASqJ,EAAMrJ,OAAO,CAAC8P,UAAU,CAC3E,CACA,KAAK,CAAC2L,eAAehI,EACzB,CAKAqI,WAAWrI,EAAS,IAAI,CAACA,MAAM,CAAE,CAC7B,IAAqBnR,EAAQ8G,AAAd,IAAI,CAAiB9G,KAAK,CAAEkD,EAAWlD,EAAMkD,QAAQ,CAAE6B,EAAa/E,EAAM+E,UAAU,CAAErH,EAAUoJ,AAAhG,IAAI,CAAmGpJ,OAAO,CAAEqR,EAAShK,EAAa,CAAC,EAAIrH,EAAQqR,MAAM,CAAE3B,EAAe1P,EAAQ0P,YAAY,CAAEqM,EAAuBzZ,EAAM0Z,UAAU,CAAGhc,EAAQyP,cAAc,CAAEP,EAAsBlP,EAAQkP,mBAAmB,CAClU,IAAK,IAAM7F,KAASoK,EAAQ,CACxB,IAAMgC,EAAepM,EAAMuF,IAAI,CAAC6G,YAAY,CAAEtI,EAAoB,CAAC,EAAGI,EAAU,CAAC,EAAG9F,EAAM,CAAC,EAAGwU,EAAW,eAAiB5S,EAAMuF,IAAI,CAAC3L,KAAK,CAAEiZ,EAAa,CAAC,CAAC7S,EAAME,OAAO,CAAE4S,EAAgBJ,GAAwBG,EAAYrO,EAAYxE,EAAMwE,SAAS,CAErPxE,EAAMoE,UAAU,KAChBpE,EAAM+S,QAAQ,CAAG,CAAA,EACb1M,GACAnC,CAAAA,EAAQ8O,CAAC,CAAG3M,CAAW,EAE3BuH,GAAoB,CAAA,EAEpBkF,EAAgBhP,EAAoBI,EAEpC2O,EAAarO,EAAY,CAAC,EAE1BxG,EACI,CAAC,EACD+B,AAjBG,IAAI,CAiBA2B,YAAY,CAAC1B,EAAOA,EAAMiT,QAAQ,CAAG,SAAW,KAAK,IAI5DlT,AArBG,IAAI,CAqBAwB,YAAY,EAAIvD,GAEvBuP,GAAqBnP,EAAK2B,AAvBvB,IAAI,CAuB0BwB,YAAY,CAACvB,IAE7CD,AAzBE,IAAI,AAyBA,CAAC6S,EAAS,GACjB7S,AA1BG,IAAI,AA0BD,CAAC6S,EAAS,CAAGzW,EAASC,CAAC,CAACwW,GACzBtW,IAAI,CAAC,CAGNtF,OAAQ,IAAQoV,CAAAA,GAAgB,CAAA,CACpC,GACK7P,GAAG,CAACwD,AAhCN,IAAI,CAgCS7D,KAAK,EACrB6D,AAjCG,IAAI,AAiCD,CAAC6S,EAAS,CAACM,OAAO,CAAG,CAAA,IAInClT,EAAM4D,IAAI,CAAC,CACPE,kBAAAA,EACAI,QAAAA,EACA9F,IAAAA,EACAlC,MAAO6D,AAzCA,IAAI,AAyCE,CAAC6S,EAAS,CACvBrO,SAAUvE,EAAMuE,QAAQ,CACxBpI,SAAAA,EACA6L,OAAAA,EACAxD,UAAAA,EACAH,UAAWrE,EAAMqE,SAAS,AAC9B,GAGIwB,GAAuB7F,EAAME,OAAO,EACpCF,CAAAA,EAAMmT,OAAO,CAAGxc,EAAQiP,cAAc,CAClC7F,AApDG,IAAI,CAoDAqT,aAAa,CAACpT,GACrBD,AArDG,IAAI,CAqDAsT,cAAc,CAACrT,EAAK,CAEvC,CACJ,CAMAqT,eAAerT,CAAK,CAAE,CAClB,IAAImT,EAAU,CAAA,EAMd,MALK,CAAA,CAACnT,EAAMuF,IAAI,CAACI,MAAM,EACnB3F,EAAMuF,IAAI,CAACG,OAAO,AAAD,GACjB,AAAC1F,EAAMuF,IAAI,CAAC3L,KAAK,CAAG,IAAI,CAAC4L,OAAO,CAAC,IAAI,CAACC,QAAQ,CAAC,CAAC7L,KAAK,EAAM,GAC3DuZ,CAAAA,EAAUnT,EAAMO,EAAE,AAAD,EAEd4S,CACX,CAMAC,cAAcpT,CAAK,CAAE,CACjB,GAAM,CAAEkI,eAAAA,CAAc,CAAE,CAAGlI,EAAMD,MAAM,CAACpJ,OAAO,CAC3Cwc,EAAU,CAAA,EAAOG,EACrB,GAAI,AAACtT,EAAMuF,IAAI,CAAC7B,MAAM,GAAK,IAAI,CAAC+B,QAAQ,EACpCzF,EAAMuF,IAAI,CAACI,MAAM,EACjB,GAAIuC,EACAiL,EAAUnT,EAAMO,EAAE,MAIlB,IADA+S,EAAatT,EAAMuF,IAAI,CAChB,CAAC4N,GAC6B,KAAA,IAAtBG,EAAW5P,MAAM,EACxB4P,CAAAA,EAAa,IAAI,CAAC9N,OAAO,CAAC8N,EAAW5P,MAAM,CAAC,AAAD,EAE3C4P,EAAW5P,MAAM,GAAK,IAAI,CAAC+B,QAAQ,EACnC0N,CAAAA,EAAUG,EAAW/S,EAAE,AAAD,EAKtC,OAAO4S,CACX,CAKAI,YAAYhT,CAAE,CAAErG,CAAM,CAAE,CACpBoT,GAAM,GAAI,CAAA,EAAO,KAAK,EAAG,CAAE,sBAAuB,yBAA0B,GAC5E,IAAI,CAACkG,WAAW,CAACjT,EAAIrG,EACzB,CACAuZ,SAAU,CACN,IAAqBlO,EAAOxF,AAAb,IAAI,CAAgByF,OAAO,CAACzF,AAA5B,IAAI,CAA+B0F,QAAQ,CAAC,CACvDF,GAAQoI,GAAuBpI,EAAK7B,MAAM,GAC1C3D,AAFW,IAAI,CAERyT,WAAW,CAACjO,EAAK7B,MAAM,CAAE,CAAA,EAAM,CAAEgQ,QAAS,kBAAmB,EAE5E,CACAC,aAAc,CAEV,GAAM,CAAEC,QAAAA,CAAO,CAAEC,QAAAA,CAAO,CAAE,CAAG,KAAK,CAACF,YAAY,IAAI,CAACG,cAAc,EAIlE,OAHA,IAAI,CAACC,QAAQ,CAAGH,EAChB,IAAI,CAACI,QAAQ,CAAGH,EAET,KAAK,CAACF,aACjB,CAgBAM,iBAAiBC,CAAI,CAAEC,CAAW,CAAE,CAChC,IAAMC,EAAM3G,GAAsByG,GAAQA,EAAO,EAAE,CAAEG,EAAM5G,GAAsB0G,GAAeA,EAAc,EAAE,CAAEG,EAAgBF,EAAIlJ,MAAM,CAAC,SAAUqJ,CAAI,CAAEC,CAAI,CAAEzV,CAAC,EAChK,IAAM2E,EAASmK,GAAmB2G,EAAK9Q,MAAM,CAAE,IAK/C,OAJ4B,KAAA,IAAjB6Q,CAAI,CAAC7Q,EAAO,EACnB6Q,CAAAA,CAAI,CAAC7Q,EAAO,CAAG,EAAE,AAAD,EAEpB6Q,CAAI,CAAC7Q,EAAO,CAACP,IAAI,CAACpE,GACXwV,CACX,EAAG,CACC,GAAI,EAAE,AACV,GAEA,IAAK,IAAM7Q,KAAU/N,OAAOgP,IAAI,CAAC2P,GAAgB,CAC7C,IAAM7Q,EAAW6Q,CAAa,CAAC5Q,EAAO,CACtC,GAAI,AAAY,KAAXA,GAAmB2Q,AAAwB,KAAxBA,EAAI3D,OAAO,CAAChN,GAAiB,CACjD,IAAK,IAAM4I,KAAS7I,EAChB6Q,CAAa,CAAC,GAAG,CAACnR,IAAI,CAACmJ,EAE3B,QAAOgI,CAAa,CAAC5Q,EAAO,AAChC,CACJ,CACA,OAAO4Q,CACX,CAKAG,SAAU,CACN,IAAqBC,EAAS,IAAI,CAACR,IAAI,CAACS,GAAG,CAAC,SAAUrf,CAAC,EACnD,OAAOA,EAAEiL,EAAE,AACf,GAIA,OAHAR,AAHe,IAAI,CAGZqQ,UAAU,CAAGrQ,AAHL,IAAI,CAGQkU,gBAAgB,CAAC,IAAI,CAACC,IAAI,CAAEQ,GACvD3U,AAJe,IAAI,CAIZyF,OAAO,CAAG,CAAC,EAClBzF,AALe,IAAI,CAKZmR,QAAQ,CAAG,EAAE,CACbnR,AANQ,IAAI,CAMLoR,SAAS,CAAC,GAAI,GAAI,EAAGpR,AANpB,IAAI,CAMuBqQ,UAAU,EAAI,CAAC,EAC7D,CACAe,UAAU5Q,CAAE,CAAEuJ,CAAK,CAAElQ,CAAK,CAAEkB,CAAI,CAAE4I,CAAM,CAAE,CACtC,IAAqBD,EAAW,EAAE,CAAEzD,EAAQD,AAA7B,IAAI,CAAgCqK,MAAM,CAACN,EAAM,CAC5DhT,EAAS,EAAGwV,EAEhB,IAAK,IAAMvN,KAAMjE,CAAI,CAACyF,EAAG,EAAI,EAAE,CAE3BzJ,EAASiM,KAAKC,GAAG,CAACsJ,AADlBA,CAAAA,EAAQvM,AAJG,IAAI,CAIAoR,SAAS,CAACpR,AAJd,IAAI,CAIiBqK,MAAM,CAACrL,EAAE,CAACwB,EAAE,CAAExB,EAAGnF,EAAQ,EAAGkB,EAAMyF,EAAE,EAC5CzJ,MAAM,CAAG,EAAGA,GACpC2M,EAASN,IAAI,CAACmJ,GAElB,IAAM/G,EAAO,IAAIxF,AARF,IAAI,CAQK6U,SAAS,GAAGpR,IAAI,CAACjD,EAAIuJ,EAAOrG,EAAU3M,EAAQ8C,EARvD,IAAI,CAQkE8J,GACrF,IAAK,IAAM4I,KAAS7I,EAChB6I,EAAMuI,UAAU,CAAGtP,EAQvB,OANAxF,AAZe,IAAI,CAYZyF,OAAO,CAACD,EAAKhF,EAAE,CAAC,CAAGgF,EAC1BxF,AAbe,IAAI,CAaZmR,QAAQ,CAAC/N,IAAI,CAACoC,GACjBvF,IACAA,EAAMuF,IAAI,CAAGA,EACbA,EAAKvF,KAAK,CAAGA,GAEVuF,CACX,CAMAuP,SAAU,CACN,MAAO,CAAC,CAAC,IAAI,CAACC,SAAS,CAACC,QAAQ,AACpC,CACAxR,KAAKvK,CAAK,CAAEtC,CAAO,CAAE,CACjB,IAAMoJ,EAAS,IAAI,CAAEzG,EAAqBsU,GAAoBjX,EAAQsE,aAAa,CAAEtE,EAAQuC,WAAW,EAAG+b,EAAkB/H,GAAuBnN,EAAQ,aAAc,AAAC3F,IACvK,IAAMzD,EAAUyD,EAAMO,WAAW,CAC7B0S,GAAsB1W,EAAQue,gBAAgB,GAC9C,CAAC7H,GAAsB1W,EAAQkP,mBAAmB,IAClDlP,EAAQkP,mBAAmB,CAAGlP,EAAQue,gBAAgB,CACtD,OAAOve,EAAQue,gBAAgB,EAE/B7H,GAAsB1W,EAAQsE,aAAa,GAC3C,CAACoS,GAAsB1W,EAAQ6Q,gBAAgB,IAC/C7Q,EAAQ6Q,gBAAgB,CAAG7Q,EAAQsE,aAAa,CAChD,OAAOtE,EAAQsE,aAAa,CAEpC,GACA,KAAK,CAACuI,KAAKvK,EAAOtC,GAElB,OAAOoJ,EAAO4H,OAAO,CAErB5H,EAAOoV,cAAc,CAAChS,IAAI,CAAC8R,GACvBlV,EAAOpJ,OAAO,CAACkP,mBAAmB,GAClC9F,EAAOoV,cAAc,CAAChS,IAAI,CAAC+J,GAAuBnN,EAAQ,QAASA,EAAOqV,kBAAkB,GAC5FrV,EAAOoV,cAAc,CAAChS,IAAI,CAAC+J,GAAuBnN,EAAQ,cAAe,SAAUrC,CAAC,EAChF,IAAMzE,EAAQ8G,EAAO9G,KAAK,AACtBA,CAAAA,EAAMC,WAAW,EAEjBD,EAAMC,WAAW,CAACkC,gBAAgB,CAAC2E,EAAO+R,UAAU,CAACpU,GAE7D,IACAqC,EAAOoV,cAAc,CAAChS,IAAI,CAAC+J,GAAuBnN,EAAQ,SAE1D,SAAUrC,CAAC,CAAExD,CAAM,EACf,IAAMhB,EAAc,IAAI,CAACD,KAAK,CAACC,WAAW,CACtCA,GAAewE,EAAE/G,OAAO,CAACuC,WAAW,EACpCA,EAAYmF,MAAM,CAACX,EAAE/G,OAAO,CAACuC,WAAW,CAEhD,IACA6G,EAAOoV,cAAc,CAAChS,IAAI,CAAC+J,GAAuBnN,EAAQ,UAAW,SAAuBrC,CAAC,EACzF,IAAMzE,EAAQ,IAAI,CAACA,KAAK,AACpBA,CAAAA,EAAMC,WAAW,EAAI,CAACwE,EAAE2X,mBAAmB,GAC3Cpc,EAAMC,WAAW,CAACQ,OAAO,GACzBT,EAAMC,WAAW,CAAG,KAAK,EAEjC,KAECD,EAAMC,WAAW,EAClBD,CAAAA,EAAMC,WAAW,CAAG,IAppE8BoB,EAopEFrB,EAAOK,EAAkB,EAE7EyG,EAAOoV,cAAc,CAAChS,IAAI,CAAC+J,GAAuBjU,EAAMC,WAAW,CAAE,KAAM,SAAUwE,CAAC,EAClF,IAAM4X,EAAiB,IAAI,CAAC1b,KAAK,CAAG8D,EAAEK,QAAQ,CAC9C,IAAK,IAAIgB,EAAI,EAAGA,EAAIuW,EAAgBvW,IAChCgB,EAAO0T,OAAO,EAEtB,GACJ,CAKA2B,mBAAmBhb,CAAK,CAAE,CACtB,IAAqB4F,EAAQ5F,EAAM4F,KAAK,CAAEmT,EAAUnT,GAASA,EAAMmT,OAAO,CAEtExF,GAAuBwF,KACvBnT,EAAMd,QAAQ,CAAC,IACfa,AAJW,IAAI,CAIRyT,WAAW,CAACL,EAAS,CAAA,EAAM,CAAEO,QAAS,OAAQ,GAE7D,CAKAhS,aAAa1B,CAAK,CAAEM,CAAK,CAAE,KAkBnBqH,EAjBJ,IAAqBoC,EAAqB2D,GAAuB3N,AAAlD,IAAI,CAAqDgK,iBAAiB,EACrFhK,AADW,IAAI,CACRgK,iBAAiB,CACxB,CAAC,EAAInQ,EAAQoG,GAAS+J,CAAiB,CAAC/J,EAAMuF,IAAI,CAAC3L,KAAK,CAAC,EAAI,CAAC,EAAGjD,EAAU,IAAI,CAACA,OAAO,CAAE4e,EAAejV,GAAS3J,EAAQM,MAAM,EAAIN,EAAQM,MAAM,CAACqJ,EAAM,EAAI,CAAC,EAAGgF,EAAY,AAACtF,GAASA,EAAMmE,YAAY,IAAO,GAGnN7H,EAAO,CACH,OAAU,AAAC0D,GAASA,EAAMyH,WAAW,EACjC7N,EAAM6N,WAAW,EACjB8N,EAAa9N,WAAW,EACxB9Q,EAAQ8Q,WAAW,CACvB,eAAgBoG,GAAmB7N,GAASA,EAAM0H,WAAW,CAAE9N,EAAM8N,WAAW,CAAE6N,EAAa7N,WAAW,CAAE/Q,EAAQ+Q,WAAW,EAC/H,UAAa,AAAC1H,GAASA,EAAMwV,eAAe,EACxC5b,EAAM4b,eAAe,EACrBD,EAAaC,eAAe,EAC5B7e,EAAQ6e,eAAe,CAC3B,KAAQ,AAACxV,GAASA,EAAM5I,KAAK,EAAK,IAAI,CAACA,KAAK,AAChD,EAuBA,OApBIkO,AAAgD,KAAhDA,EAAUoL,OAAO,CAAC,2BAClBpU,EAAKzF,IAAI,CAAG,OACZyF,CAAI,CAAC,eAAe,CAAG,GAGlBgJ,AAA8D,KAA9DA,EAAUoL,OAAO,CAAC,yCACvB/I,EAAUkG,GAAmB0H,EAAa5N,OAAO,CAAEhR,EAAQgR,OAAO,EAClErL,EAAKzF,IAAI,CAAGO,GAAMkF,EAAKzF,IAAI,EAAE4e,UAAU,CAAC9N,GAAS7R,GAAG,GACpDwG,EAAKoZ,MAAM,CAAG,WAGTpQ,AAAkD,KAAlDA,EAAUoL,OAAO,CAAC,4BACvBpU,EAAKzF,IAAI,CAAG,OAEPyJ,GAELhE,CAAAA,EAAKzF,IAAI,CAAGO,GAAMkF,EAAKzF,IAAI,EACtB6T,QAAQ,CAAC6K,EAAa1N,UAAU,EAChC/R,GAAG,EAAC,EAENwG,CACX,CAKAqZ,kBAAkBpQ,CAAI,CAAEyE,CAAW,CAAEH,CAAU,CAAEC,CAAK,CAAEK,CAAQ,CAAE,CAC9D,IAAqBlR,EAAQ8G,AAAd,IAAI,EAAoBA,AAAxB,IAAI,CAA2B9G,KAAK,CAAEiR,EAASjR,GAASA,EAAMtC,OAAO,EAAIsC,EAAMtC,OAAO,CAACuT,MAAM,CAC5G,GAAI3E,EAAM,CACN,IAAMqQ,EAAY7I,GAAuBxH,EAAM,CAC3C2E,OAAQA,EACRJ,MAAOA,EACPC,kBAAmBhK,AALZ,IAAI,CAKegK,iBAAiB,CAC3CC,YAAaA,EACbC,iBAAkBJ,EAClB9J,OARO,IAAI,CASXoK,SAAUA,CACd,GAAInK,EAAQD,AAVD,IAAI,CAUIqK,MAAM,CAAC7E,EAAKxG,CAAC,CAAC,CAC7BiB,IACAA,EAAM5I,KAAK,CAAGwe,EAAUxe,KAAK,CAC7B4I,EAAM6J,UAAU,CAAG+L,EAAU/L,UAAU,EAE3C,IAAI9K,EAAI,GAER,IAAK,IAAMuN,KAAU/G,EAAK9B,QAAQ,EAAI,EAAE,CACpC1D,AAlBO,IAAI,CAkBJ4V,iBAAiB,CAACrJ,EAAOsJ,EAAUxe,KAAK,CAAEwe,EAAU/L,UAAU,CAAE,EAAE9K,EAAGwG,EAAK9B,QAAQ,CAAClI,MAAM,CAExG,CACJ,CACAsa,gBAAiB,CACb,IAAM9V,EAAS,IAAI,CACb,CAAEqK,OAAAA,CAAM,CAAEgE,MAAAA,CAAK,CAAEC,MAAAA,CAAK,CAAE,CAAGtO,EAC3B/B,EAAa+B,EAAO9G,KAAK,CAAC+E,UAAU,CAOpC8X,EAAiB,AAAC9V,GAAWhC,EAC/B,EACC+B,EAAO2B,YAAY,CAAC1B,EAAM,CAAC,eAAe,EAAI,EACnD,IAAK,IAAMA,KAASoK,EAAQ,CACxB,GAAM,CAAEuH,YAAaD,CAAM,CAAEnO,QAAAA,CAAO,CAAE,CAAGvD,EAAMuF,IAAI,CAEnD,GAAImM,GAAUnO,EAAS,CACnB,GAAM,CAAEzM,OAAAA,CAAM,CAAE0C,MAAAA,CAAK,CAAE3B,EAAAA,CAAC,CAAEC,EAAAA,CAAC,CAAE,CAAG4Z,EAC1BqE,EAAcD,EAAe9V,GAC7BgW,EAAK5I,GAAMgB,EAAM6H,QAAQ,CAACpe,EAAG,CAAA,GAAOke,EAAa,CAAA,GACjDG,EAAK9I,GAAMgB,EAAM6H,QAAQ,CAACpe,EAAI2B,EAAO,CAAA,GAAOuc,EAAa,CAAA,GACzDI,EAAK/I,GAAMiB,EAAM4H,QAAQ,CAACne,EAAG,CAAA,GAAOie,EAAa,CAAA,GACjDK,EAAKhJ,GAAMiB,EAAM4H,QAAQ,CAACne,EAAIhB,EAAQ,CAAA,GAAOif,EAAa,CAAA,GAE1DvR,EAAY,CACd3M,EAAGkL,KAAK0L,GAAG,CAACuH,EAAIE,GAChBpe,EAAGiL,KAAK0L,GAAG,CAAC0H,EAAIC,GAChB5c,MAAOuJ,KAAKsT,GAAG,CAACH,EAAKF,GACrBlf,OAAQiM,KAAKsT,GAAG,CAACD,EAAKD,EAC1B,CACAnW,CAAAA,EAAMsW,KAAK,CAAG9R,EAAU3M,CAAC,CAAI2M,EAAUhL,KAAK,CAAG,EAC/CwG,EAAMgG,KAAK,CAAGxB,EAAU1M,CAAC,CAAI0M,EAAU1N,MAAM,CAAG,EAChDkJ,EAAMwE,SAAS,CAAGA,CACtB,MAGI,OAAOxE,EAAMsW,KAAK,CAClB,OAAOtW,EAAMgG,KAAK,AAE1B,CACJ,CAkCAwN,YAAYjT,CAAE,CAAErG,CAAM,CAAEqc,CAAc,CAAE,CAgCpC/I,GA/Be,IAAI,CA+Ba,cA/BCD,GAAqB,CAClD0E,UAAW1R,EACXiW,eAAgBzW,AAFL,IAAI,CAEQ0F,QAAQ,CAC/BvL,OAAQ2T,GAAmB3T,EAAQ,CAAA,GACnC6F,OAJW,IAAI,AAKnB,EAAGwW,GAce,SAAUE,CAAI,EAC5B,IAAM1W,EAAS0W,EAAK1W,MAAM,AAE1BA,CAAAA,EAAO2W,cAAc,CAAGD,EAAKD,cAAc,CAC3CzW,EAAO0F,QAAQ,CAAGgR,EAAKxE,SAAS,CAEhClS,EAAOlF,OAAO,CAAG,CAAA,EACb4b,EAAKvc,MAAM,EACX6F,EAAO9G,KAAK,CAACiB,MAAM,EAE3B,EAGJ,CAOAgF,SAASoB,CAAK,CAAE,CACZ,IAAI,CAAC3J,OAAO,CAACggB,mBAAmB,CAAG,CAAA,EACnC,KAAK,CAACzX,SAASoB,EAAO,CAAA,GACtB,IAAI,CAAC3J,OAAO,CAACggB,mBAAmB,CAAG,CAAA,CACvC,CACA9K,cAAcC,CAAI,CAAE,CAChB,IAAqBnV,EAAUoJ,AAAhB,IAAI,CAAmBpJ,OAAO,CAAEqV,EAASjM,AAAzC,IAAI,CAA4C0F,QAAQ,CAAgCwG,EAAWC,AAA3BnM,AAAxE,IAAI,CAA2EyF,OAAO,AAAwB,CAACwG,EAAO,CAAEzE,EAAmB,AAAmC,WAAnC,OAAO5Q,EAAQ4Q,eAAe,EACpL5Q,EAAQ4Q,eAAe,CAChB9D,EAAW,EAAE,CAAEzD,EAAQD,AAFnB,IAAI,CAEsBqK,MAAM,CAAC0B,EAAK/M,CAAC,CAAC,CAEnDuE,EAAgB,EACpB,IAAK,IAAIgJ,KAASR,EAAKrI,QAAQ,CAC3B6I,EAAQvM,AANG,IAAI,CAMA8L,aAAa,CAACS,GAC7B7I,EAASN,IAAI,CAACmJ,GACTA,EAAMkF,MAAM,EACblO,CAAAA,GAAiBgJ,EAAME,GAAG,AAAD,EAIjCwB,GAAWvK,EAAU,CAAClO,EAAGqhB,IAAO,AAACrhB,CAAAA,EAAEshB,SAAS,EAAI,CAAA,EAAMD,CAAAA,EAAEC,SAAS,EAAI,CAAA,GAErE,IAAIrK,EAAMqB,GAAmB7N,GAASA,EAAMrJ,OAAO,CAACmK,KAAK,CAAEwC,GAsB3D,OArBItD,GACAA,CAAAA,EAAMc,KAAK,CAAG0L,CAAE,EAEhBxM,GAAO0F,SAAW/O,EAAQwR,OAAO,EAAEG,iBACnCkE,CAAAA,GAAO7V,EAAQwR,OAAO,CAACG,eAAe,AAAD,EAErCwD,EAAK+I,UAAU,EAAE7U,OAAO0F,SAAW3F,AAtBxB,IAAI,CAsB2B0F,QAAQ,GAAKqG,EAAKpI,MAAM,EAClEoI,CAAAA,EAAKvI,OAAO,CAAG,CAAA,CAAI,EAEvBgK,GAAqBzB,EAAM,CACvBrI,SAAUA,EACVH,cAAeA,EAEfkO,OAAQ,CAAE3D,CAAAA,GAAmB7N,GAASA,EAAMuD,OAAO,CAAE,CAAA,IAAUiJ,EAAM,CAAC,EACtE7G,OAAQmG,EAAKvI,OAAO,EAAI,CAACD,EACzBoC,QAAS1F,GAAO0F,QAChB0G,aAAeN,EAAKlS,KAAK,CAAI2N,CAAAA,EAAkB,EAAI0E,EAASrS,KAAK,AAAD,EAChEgN,KAAMiH,GAAmB7N,GAASA,EAAM4G,IAAI,CAAE,IAC9CiQ,UAAWhJ,GAAmB7N,GAASA,EAAM6W,SAAS,CAAE,CAACrK,GACzDA,IAAKA,CACT,GACOV,CACX,CACAgL,aAAapT,CAAM,CAAED,CAAQ,CAAE,CAC3B,OAAO,IAAI,CAACoM,aAAa,CAAC,CAAA,EAAMnM,EAAQD,EAC5C,CACAsT,WAAWrT,CAAM,CAAED,CAAQ,CAAE,CACzB,OAAO,IAAI,CAACsM,uBAAuB,CAAC,CAAA,EAAMrM,EAAQD,EACtD,CACAuT,MAAMtT,CAAM,CAAED,CAAQ,CAAE,CACpB,OAAO,IAAI,CAACsM,uBAAuB,CAAC,CAAA,EAAOrM,EAAQD,EACvD,CACAwT,QAAQvT,CAAM,CAAED,CAAQ,CAAE,CACtB,OAAO,IAAI,CAACoM,aAAa,CAAC,CAAA,EAAOnM,EAAQD,EAC7C,CACA3E,UAAUgN,CAAI,CAAE,CACZ,IAAM/L,EAAS,IAAI,CAAEpJ,EAAUoJ,EAAOpJ,OAAO,CAAEugB,EAAgB,CAACpL,EAEhEY,EAASO,GAA2BlN,GAAS0F,EAAUkM,EAAawF,EAAY3K,EAC3EV,GAASY,EAAO0K,UAAU,CAAC,wCAE5B,AAAC,CAAA,IAAI,CAAChN,MAAM,EAAI,EAAE,AAAD,EAAGiC,OAAO,CAAC,AAACrM,IACrBA,EAAM0F,OAAO,EACb1F,EAAMtG,OAAO,EAErB,GAEA,KAAK,CAACoF,YAENgN,EAAO/L,EAAO0U,OAAO,IAGzB1U,EAAO+L,IAAI,CAAGA,EAAOA,GAAQ/L,EAAO+L,IAAI,CACxCrG,EAAW1F,EAAOyF,OAAO,CAACkH,EAAO,CAClB,KAAXA,GAAkBjH,IAClB1F,EAAOyT,WAAW,CAAC,GAAI,CAAA,GACvB9G,EAAS3M,EAAO0F,QAAQ,CACxBA,EAAW1F,EAAOyF,OAAO,CAACkH,EAAO,EAEhCjH,EAASzF,KAAK,EAAE0F,SACjB3F,CAAAA,EAAOgK,iBAAiB,CAAGiD,GAA8B,CACrDjC,KAAMtF,EAAS7L,KAAK,CAAG,EACvBoR,OAAQrU,EAAQqU,MAAM,CACtBL,GAAImB,EAAKhV,MAAM,CACf+T,SAAU,CACNtD,gBAAiBxH,EAAOpJ,OAAO,CAAC4Q,eAAe,CAC/Cf,aAAc7P,EAAQ6P,YAAY,AACtC,CACJ,EAAC,EAGL0C,GAAyBL,SAAS,CAAC9I,EAAOyF,OAAO,CAACzF,EAAO0F,QAAQ,CAAC,CAAE,AAACF,IACjE,IAAMtD,EAAIsD,EAAK7B,MAAM,CACjBuF,EAAO,CAAA,EAKX,OAJA1D,EAAKhC,OAAO,CAAG,CAAA,EACXtB,CAAAA,GAAKA,AAAM,KAANA,CAAO,GACZgH,CAAAA,EAAOlJ,EAAOyF,OAAO,CAACvD,EAAE,AAAD,EAEpBgH,CACX,GAEAC,GAAyBL,SAAS,CAAC9I,EAAOyF,OAAO,CAACzF,EAAO0F,QAAQ,CAAC,CAAChC,QAAQ,CAAE,AAACA,IAC1E,IAAIwF,EAAO,CAAA,EACX,IAAK,IAAMqD,KAAS7I,EAChB6I,EAAM/I,OAAO,CAAG,CAAA,EACZ+I,EAAM7I,QAAQ,CAAClI,MAAM,EACrB0N,CAAAA,EAAO,AAACA,CAAAA,GAAQ,EAAE,AAAD,EAAGoO,MAAM,CAAC/K,EAAM7I,QAAQ,CAAA,EAGjD,OAAOwF,CACX,GACAlJ,EAAO8L,aAAa,CAACC,GAErB/L,EAAO6R,SAAS,CAAI7R,EAAOqO,KAAK,CAACkJ,GAAG,CAAGvX,EAAOsO,KAAK,CAACiJ,GAAG,CACvDvX,EAAOyF,OAAO,CAAC,GAAG,CAACmM,WAAW,CAAGA,EAAc,CAC3C9Z,EAAG,EACHC,EAAG,EACH0B,MA39BI,IA49BJ1C,OA59BI,GA69BR,EACAiJ,EAAOyF,OAAO,CAAC,GAAG,CAACkM,MAAM,CAAGyF,EAAavJ,GAAoB+D,EAAa,CACtEnY,MAAQmY,EAAYnY,KAAK,CAAGuG,EAAO6R,SAAS,CAC5CzP,UAAYxL,AAAoC,aAApCA,EAAQ0Q,uBAAuB,CAAkB,EAAI,EACjEmF,IAAKV,EAAKU,GAAG,AACjB,GACAzM,EAAOqR,sBAAsB,CAACtF,EAAMqL,GAE/BpX,EAAOwX,SAAS,EAChB5gB,EAAQ6P,YAAY,EACrBzG,EAAO4V,iBAAiB,CAAC5V,EAAO+L,IAAI,EAGpCnV,EAAQkP,mBAAmB,EACvBJ,EAASkM,WAAW,GACpBnF,EAAM/G,EAASkM,WAAW,CAC1B5R,EAAOqO,KAAK,CAACoJ,WAAW,CAAChL,EAAI3U,CAAC,CAAE2U,EAAI3U,CAAC,CAAG2U,EAAIhT,KAAK,CAAE,CAAA,GACnDuG,EAAOsO,KAAK,CAACmJ,WAAW,CAAChL,EAAI1U,CAAC,CAAE0U,EAAI1U,CAAC,CAAG0U,EAAI1V,MAAM,CAAE,CAAA,GACpDiJ,EAAOqO,KAAK,CAACqJ,QAAQ,GACrB1X,EAAOsO,KAAK,CAACoJ,QAAQ,IAI7B1X,EAAO8V,cAAc,GACjBqB,GACAnX,EAAOoQ,iBAAiB,EAEhC,CACJ,CAMAnB,GAAc9T,cAAc,CAAG0S,GAAoBd,GAAc5R,cAAc,CA7yCXiL,IA8yCpEoH,GAAqByB,GAAc/Y,SAAS,CAAE,CAC1CyhB,YAAa9K,GACbrL,aAAcM,EAA2BZ,aAAa,CAACM,YAAY,CACnEL,SAAU,aACVyW,YAAa,CAAA,EACbC,mBAAoB,CAAA,EACpBC,UAAWjL,GACXkL,aAAc,YACd1W,eAAgB,CAAC,IAAK,IAAK,QAAS,aAAa,CACjDC,cAAe,CAAC,QAAS,aAAa,CACtCO,WA1+DuDuD,EA2+DvDyP,UAAWvR,EACX/B,cAAe,CAAC,QAAS,kBAAkB,CAC3CyW,MAAO7O,EACX,GACArH,EAA2BtH,OAAO,CAACyU,IACnC1P,IAA0I0Y,kBAAkB,CAAC,UAAWhJ,IASxK,IAAIiJ,GAAmGljB,EAAoB,KACvHmjB,GAAuHnjB,EAAoBI,CAAC,CAAC8iB,IAajJ,GAAM,CAAEE,QAAAA,EAAO,CAAE,CAAI5hB,IAGf,CAAEmC,UAAW0f,EAA2B,CAAEnT,SAAUoT,EAA0B,CAAEvf,KAAMwf,EAAsB,CAAE7O,eAAgB8O,EAAgC,CAAE,CAAIhiB,KAK1K,AAAC,SAAU3B,CAAiB,EA6DxBA,EAAkB4jB,SAAS,CA1C3B,WACI,IAAM7hB,EAAU,IAAI,CAACA,OAAO,CAAEsC,EAAQ,IAAI,CAACA,KAAK,CAAEwf,EAAc,EAAK9hB,CAAAA,EAAQ+hB,YAAY,EAAI,CAAA,EAAIC,EAAY1f,EAAM0f,SAAS,CAAG,EAAIF,EAAaG,EAAa3f,EAAM2f,UAAU,CAAG,EAAIH,EAAaI,EAAeliB,EAAQmiB,MAAM,CAAEC,EAAehW,KAAK0L,GAAG,CAACkK,EAAWC,GAAaI,EAAYriB,EAAQqiB,SAAS,CACzSC,EAAmBC,EAAOviB,EAAQuiB,IAAI,CAAEC,EAAYxiB,EAAQwiB,SAAS,EAAI,EAAGpa,EAAG+B,CAC/D,CAAA,UAAhB,OAAOoY,GACPA,CAAAA,EAAOxN,WAAWwN,EAAI,EAED,UAArB,OAAOC,GACPA,CAAAA,EAAYzN,WAAWyN,EAAS,EAEpC,IAAMC,EAAY,CACdd,GAAuBO,GAAc,CAAC,EAAE,CAAE,OAC1CP,GAAuBO,GAAc,CAAC,EAAE,CAAE,OAE1CP,GAAuBY,GAAQA,EAAO,EAAI,KAAK,EAAIviB,EAAQuiB,IAAI,CAAE,QACjEZ,GAAuBa,GAAaA,EAAY,EAAI,KAAK,EAAIxiB,EAAQwiB,SAAS,EAAI,EAAG,MACxF,CAMD,KAHIlgB,EAAMogB,OAAO,EAAM,IAAI,YAAanB,MACpCkB,CAAAA,CAAS,CAAC,EAAE,CAAG,CAAA,EAEdra,EAAI,EAAGA,EAAI,EAAG,EAAEA,EACjB+B,EAAQsY,CAAS,CAACra,EAAE,CACpBka,EAAoBla,EAAI,GAAMA,AAAM,IAANA,GAAW,KAAKyM,IAAI,CAAC1K,GAKnDsY,CAAS,CAACra,EAAE,CAAGwZ,GAAiCzX,EAAO,CAAC6X,EAAWC,EAAYG,EAAcK,CAAS,CAAC,EAAE,CAAC,CAACra,EAAE,EAAKka,CAAAA,EAAoBR,EAAc,CAAA,EAYxJ,OATIW,CAAS,CAAC,EAAE,CAAGA,CAAS,CAAC,EAAE,EAC3BA,CAAAA,CAAS,CAAC,EAAE,CAAGA,CAAS,CAAC,EAAE,AAAD,EAG1Bf,GAA2BW,IAC3BA,AAAY,EAAZA,EAAgBI,CAAS,CAAC,EAAE,EAAIJ,EAAY,GAC5CI,CAAAA,CAAS,CAAC,EAAE,CAAGA,CAAS,CAAC,EAAE,CAAGJ,AAAY,EAAZA,CAAY,EAE9CZ,GAA4B,IAAI,CAAE,iBAAkB,CAAEgB,UAAAA,CAAU,GACzDA,CACX,EA+BAxkB,EAAkB0kB,qBAAqB,CAbvC,SAA+BC,CAAK,CAAElK,CAAG,EACrC,IAAMmK,EAAanB,GAA2BkB,GAASA,EAAQ,EAC/DE,EAAY,AAACpB,GAA2BhJ,IACpCA,EAAMmK,GAEN,AAACnK,EAAMmK,EAAc,IACrBnK,EACAmK,EAAa,IACjB,MAAO,CACHD,MAAOpB,GAAWqB,CAAAA,EAFc,GAEQ,EACxCnK,IAAK8I,GAAWsB,CAAAA,EAHgB,GAGI,CACxC,CACJ,CAEJ,EAAG7kB,GAAsBA,CAAAA,EAAoB,CAAC,CAAA,GAMjB,IAAM8kB,GAA4B9kB,EAkCzD,CAAEmL,OAAQ,CAAE9J,UAAW,CAAE2L,WAAY+X,EAAK,CAAE,CAAE,CAAEha,YAAa,CAAEia,QAAS,CAAE3jB,UAAW,CAAE2L,WAAYiY,EAA0B,CAAE,CAAE,CAAE,CAAE,CAAIva,IAEzI,CAAE6N,aAAc2M,EAA0B,CAAErhB,OAAQshB,EAAoB,CAAEC,KAAAA,EAAI,CAAE,CAAIzjB,GAM1F,OAAM0jB,WAAsBJ,GAMxBK,iBAAiB/b,CAAK,CAAE,CACpB,IAAMhC,EAAW,IAAI,CAAC4D,MAAM,CAAC9G,KAAK,CAACkD,QAAQ,CAAEqI,EAAY,IAAI,CAAC2V,aAAa,CAAEnH,EAAIxO,EAAUwO,CAAC,CAAGgH,GAAK7b,EAAMxH,OAAO,EAAE6R,UAAY,GAC3H+Q,EAAQ/U,EAAU+U,KAAK,CAAElK,EAAM7K,EAAU6K,GAAG,CAC1C+K,EAAQb,EAAQ,AAAClK,CAAAA,EAAMkK,CAAI,EAAK,EAClCc,EAAYD,EAAQ,GACpBA,EAAQ,CAACrX,KAAKuX,EAAE,EAChBF,EAAQrX,KAAKuX,EAAE,CAAEC,EAqCrB,OAnCIhB,IAAU,CAACxW,KAAKuX,EAAE,CAAG,GACrBR,GAA2BzK,KAASyK,GAA2B/W,AAAU,IAAVA,KAAKuX,EAAE,IACtEf,EAAQ,CAACxW,KAAKuX,EAAE,CAAGvX,KAAKuX,EAAE,CAAG,IAC7BjL,EAAM,CAACtM,KAAKuX,EAAE,CAAG,IACjBD,EAAY,CAAA,GAGZhL,EAAMkK,EAAQxW,KAAKuX,EAAE,GACrBD,EAAY,CAAA,EACZE,EAAe,CAAA,EAGVlL,EAAMkK,EAAS,EAAIxW,KAAKuX,EAAE,CAAG,MAC9Bf,GAAS,IACTlK,GAAO,MAGX,IAAI,CAACmL,aAAa,EAClB,CAAA,IAAI,CAACA,aAAa,CAAG,IAAI,CAACA,aAAa,CAAC9gB,OAAO,EAAC,EAGpD,IAAI,CAAC8gB,aAAa,CAAGre,EAChBse,GAAG,CAAC,CACLC,KAAM,CAAA,EACNC,QAASJ,EAAe,EAAI,CAChC,GACKje,IAAI,CAAC,CACNid,MAAQc,EAAYd,EAAQlK,EAC5BA,IAAMgL,EAAYhL,EAAMkK,EACxBqB,UAAW,CAACP,EACZxiB,EAAG2M,EAAU3M,CAAC,CACdC,EAAG0M,EAAU1M,CAAC,CACdkb,EAAG,AAACA,CAAAA,EAAIxO,EAAUqW,MAAM,AAAD,EAAK,CAChC,GACKte,GAAG,CAACJ,EAAS2e,IAAI,EACf,IAAI,CAACN,aAAa,AAC7B,CACA3Z,SAAU,CACN,MAAO,CAAA,CACX,CACJ,CACAkZ,GAAqBE,GAAchkB,SAAS,CAAE,CAC1CkO,aAAcwV,GAAM1jB,SAAS,CAACkO,YAAY,CAC1C4W,SAAUpB,GAAM1jB,SAAS,CAAC8kB,QAAQ,CAClC7b,SAAUya,GAAM1jB,SAAS,CAACiJ,QAAQ,AACtC,GAwBA,GAAM,CAAES,YAAa,CAAEia,QAASoB,EAA+B,CAAE,CAAE,CAAI1b,IAEjE,CAAE2F,SAAUgW,EAA0B,CAAE3R,SAAU4R,EAA0B,CAAEtiB,MAAOuiB,EAAuB,CAAE,CAAI5kB,IAqFxH,SAAS6kB,GAAMrQ,CAAI,CAAEJ,CAAE,EACnB,IAAMM,EAAS,EAAE,CACjB,GAAIgQ,GAA2BlQ,IAASkQ,GAA2BtQ,IAAOI,GAAQJ,EAC9E,IAAK,IAAI5L,EAAIgM,EAAMhM,GAAK4L,EAAI5L,IACxBkM,EAAO9H,IAAI,CAACpE,GAGpB,OAAOkM,CACX,CAMA,IAAMoQ,GAAoB,CACtBC,oBAjFJ,SAA6Btf,CAAY,CAAE6H,CAAM,EAC7C,IAAM5B,EAAIiZ,GAA2BrX,GAAUA,EAAS,CAAC,EACrDoH,EAAQsQ,EAAc,EAAGC,EAAYxQ,EAAQyQ,EAAmBC,EACpE,GAAIR,GAA2Blf,GAAe,CAY1C,IAAK,IAAMpC,KAXXqR,EAASkQ,GAAwB,CAAC,EAAGnf,GAGrCgP,EAASoQ,GAFFH,GAA2BhZ,EAAE8I,IAAI,EAAI9I,EAAE8I,IAAI,CAAG,EAChDkQ,GAA2BhZ,EAAE0I,EAAE,EAAI1I,EAAE0I,EAAE,CAAG,GAE/C8Q,EAAoB9lB,OAAOgP,IAAI,CAACsG,GAAQsG,MAAM,CAAC,AAAC9b,GAASuV,AAAyB,KAAzBA,EAAO0F,OAAO,CAAC,CAACjb,IACzE+lB,EAAaE,EAAgBT,GAA2BhZ,EAAEuZ,UAAU,EAChEvZ,EAAEuZ,UAAU,CAAG,EAKCxQ,GAAQ,CACxB,IAAMrU,EAAUsU,CAAM,CAACrR,EAAM,CAAE+hB,EAAOhlB,EAAQilB,SAAS,CAACD,IAAI,CAAE7a,EAAQnK,EAAQilB,SAAS,CAAC9a,KAAK,AACzF6a,AAAS,CAAA,WAATA,EACAJ,GAAeza,EAEV6a,AAAS,eAATA,GACLhlB,EAAQilB,SAAS,CAAG,CAChBD,KAAM,SACN7a,MAAO,AAACA,EAAQ,IAAO0a,CAC3B,EACAE,GAAiB/kB,EAAQilB,SAAS,CAAC9a,KAAK,EAE1B,WAAT6a,GACLD,CAAAA,GAAiB5a,CAAI,CAE7B,CAEA,IAAK,IAAMlH,KAASoR,EAAQ,CACxB,IAAMrU,EAAUsU,CAAM,CAACrR,EAAM,CAC7B,GAAIjD,AAA2B,WAA3BA,EAAQilB,SAAS,CAACD,IAAI,CAAe,CACrC,IAAME,EAASllB,EAAQilB,SAAS,CAAC9a,KAAK,AACtCmK,CAAAA,CAAM,CAACrR,EAAM,CAACgiB,SAAS,CAAG,CACtBD,KAAM,SACN7a,MAAO,AAAC+a,EAASN,EAAeG,CACpC,CACJ,CACJ,CAGA,IAAK,IAAM9hB,KAAS6hB,EAChBxQ,CAAM,CAACrR,EAAM,CAACgiB,SAAS,CAAG,CACtB9a,MAAO,EACP6a,KAAM,QACV,CAER,CACA,OAAO1Q,CACX,EA8BI6Q,kBA1BJ,SAA2B,CAAEliB,MAAAA,CAAK,CAAE9C,OAAAA,CAAM,CAAE,EAIxC,MAAO,CAAEiU,KAFInR,EAAQ,EAAIA,EAAQ,EAElB+Q,GADJ/Q,EAAQ9C,CACD,CACtB,EAsBIskB,MAAAA,GACAvS,UAAWmS,GAAgC/kB,SAAS,CAAC8hB,KAAK,CAAClP,SAAS,AACxE,EAiZM,CAAEsP,QAAS4D,EAAgB,CAAE,CAAIxlB,IACjC,CAAEgC,SAAUyjB,EAAiB,CAAEpjB,MAAOqjB,EAAc,CAAEC,UAAAA,EAAS,CAAE1jB,QAAS2jB,EAAgB,CAAE1jB,OAAQ2jB,EAAe,CAAE,CAAI7lB,IAyB/H,SAAS8lB,GAAYC,CAAI,CAAEC,CAAe,EAEtCA,EAAkBN,GAAe,CAAA,EAAM,CACnCtV,QAAS,CAAA,EACT6V,WAAY,CACRC,GAAI,GACJC,YAAa,MACbC,WAAY,QAChB,CACJ,EAAGJ,GACH,IAAM9b,EAAM,IAAI,CAACtE,QAAQ,CAACsE,GAAG,CAAEmc,EAAc,IAAI,CAAC5kB,IAAI,EAAI,IAAI,CAAE6kB,EAAWD,EAAYC,QAAQ,CAAE,CAAEL,WAAAA,CAAU,CAAE7V,QAAAA,CAAO,CAAE,CAAG4V,EAM3H,GALAD,EAAOA,GAASO,GAAYA,EAASP,IAAI,CAErCO,GACAA,EAASC,IAAI,GAEbR,GAAQ3V,EAAS,CACjB,IAAMmW,EAAOd,GAAkBY,EAAa,kBAAmB,AAAClf,IAC5D,GAAI4e,GAAQ3V,EAAS,CAEjB,IAAIoW,EAAaT,EAAKhgB,IAAI,CAAC,MACtBygB,GACDT,EAAKhgB,IAAI,CAAC,KAAMygB,EAAab,MAGjC,IAAMc,EAAc,CAGhBnlB,EAAG,EACHC,EAAG,CACP,EACIqkB,GAAiBK,EAAWS,EAAE,IAC9BD,EAAYC,EAAE,CAAGT,EAAWS,EAAE,CAC9B,OAAOT,EAAWS,EAAE,EAEpBd,GAAiBK,EAAWC,EAAE,IAC9BO,EAAYP,EAAE,CAAGD,EAAWC,EAAE,CAC9B,OAAOD,EAAWC,EAAE,EAExBG,EAAYtgB,IAAI,CAAC0gB,GAEjB,IAAI,CAAC1gB,IAAI,CAAC,CAAE4gB,UAAW,EAAG,GACtB,IAAI,CAACC,GAAG,EACR,CAAA,IAAI,CAACA,GAAG,CAAG,IAAI,CAACA,GAAG,CAACzjB,OAAO,EAAC,EAGhC,IAAM+J,EAAW/F,EAAE0f,KAAK,CAACC,KAAK,CAAC,EAC/B3f,CAAAA,EAAE0f,KAAK,CAAC7hB,MAAM,CAAG,EACjBmC,EAAE0f,KAAK,CAAC,EAAE,CAAG,CACTE,QAAS,WACTd,WAAYJ,GAAgBI,EAAY,CACpC,cAAeA,EAAWG,UAAU,CACpCnc,KAAM,CAAC,EAAEC,EAAI,CAAC,EAAEsc,EAAW,CAAC,AAChC,GACAtZ,SAAAA,CACJ,CACJ,CACJ,EAEAmZ,CAAAA,EAAYC,QAAQ,CAAG,CAAEP,KAAAA,EAAMQ,KAAAA,CAAK,CACxC,MAEIF,EAAYtgB,IAAI,CAAC,CAAE2gB,GAAI,EAAGR,GAAI,CAAE,GAChC,OAAOG,EAAYC,QAAQ,CAO/B,OALI,IAAI,CAACU,KAAK,GAEVX,EAAYY,SAAS,CAAG,GACxB,IAAI,CAACrhB,QAAQ,CAACshB,SAAS,CAACb,IAErB,IAAI,AACf,CAWA,SAASc,GAAWtjB,CAAK,EACrB,IAAMiD,EAAOjD,EAAMiD,IAAI,CAAEsgB,EAAK,IAAI,CAACnf,OAAO,EAAEof,cAAc,YAC1D,GAAID,EAAI,CACJ,IAAME,EAAU,EAAE,CAAE,CAAEjH,EAAAA,CAAC,CAAE7U,EAAAA,CAAC,CAAE,CAAG,IAAI,CAAC5F,QAAQ,CAAC2hB,WAAW,CAAC,IAAI,CAACtf,OAAO,EAAGuf,EAAYhc,EAAI6U,EAAGoH,EAAmB,AAAIC,OAAO,gEAEtG,KAAMC,EAAQP,EAC5BQ,SAAS,CACTC,OAAO,CAACJ,EAAkB,IAC1BK,KAAK,CAAC,sCAAuCC,EAAaJ,EAAM3iB,MAAM,CAIrEgjB,EAAqB,CAACC,EAAWC,KACnC,GAAM,CAAE5mB,EAAAA,CAAC,CAAEC,EAAAA,CAAC,CAAE,CAAG2mB,EAAgBC,EAAW,AAACf,CAAAA,EAAGgB,iBAAiB,CAACH,GAAa,EAAC,EAAKzC,GAAkB6C,EAAS7b,KAAK8b,GAAG,CAACH,GAAWI,EAAS/b,KAAKgc,GAAG,CAACL,GACtJ,MAAO,CACH,CACI7mB,EAAIkmB,EAAYa,EAChB9mB,EAAIimB,EAAYe,EACnB,CACD,CACIjnB,EAAI+e,EAAIgI,EACR9mB,EAAI8e,EAAIkI,EACX,CACJ,AACL,EACA,IAAK,IAAI/f,EAAI,EAAGigB,EAAY,EAAGA,EAAYV,EAAYU,IAAa,CAChE,IAA+BC,EAAUC,AAA5BhB,CAAK,CAACc,EAAU,CAAiBzjB,MAAM,CACpD,IAAK,IAAI4jB,EAAgB,EAAGA,EAAgBF,EAASE,GAAiB,EAClE,GAAI,CACA,IAAMC,EAAgBrgB,EAClBogB,EACAH,EAAY,CAACK,EAAOC,EAAM,CAAGf,EAAmBa,EAAczB,EAAG4B,sBAAsB,CAACH,GACxFD,AAAkB,CAAA,IAAlBA,GACAtB,EAAQ1a,IAAI,CAACmc,GACbzB,EAAQ1a,IAAI,CAACkc,KAGK,IAAdL,GACAnB,EAAQ2B,OAAO,CAACF,GAEhBN,IAAcV,EAAa,GAC3BT,EAAQ1a,IAAI,CAACkc,GAGzB,CACA,MAAO3hB,EAAG,CAGN,KACJ,CAEJqB,GAAKkgB,EAAU,EACf,GAAI,CACA,IAAMG,EAAergB,EAAIigB,EAAWS,EAAU9B,EAAG+B,oBAAoB,CAACN,GAAe,CAACC,EAAOC,EAAM,CAAGf,EAAmBa,EAAcK,GACvI5B,EAAQ2B,OAAO,CAACF,GAChBzB,EAAQ2B,OAAO,CAACH,EACpB,CACA,MAAO3hB,EAAG,CAGN,KACJ,CACJ,CAEImgB,EAAQtiB,MAAM,EACdsiB,EAAQ1a,IAAI,CAAC0a,CAAO,CAAC,EAAE,CAACR,KAAK,IAEjChgB,EAAKwgB,OAAO,CAAGA,CACnB,CACA,OAAOxgB,CACX,CAWA,SAASsiB,GAAavlB,CAAK,EACvB,IAAM8V,EAAe9V,EAAM8V,YAAY,CAAElQ,EAAQ5F,EAAM4F,KAAK,CAAEuc,EAAmBrM,CAAY,CAAClQ,EAAMgR,YAAY,CAAG,WAAW,EAC1Hd,EAAa2M,QAAQ,CACrBN,GAAmB,CAACrM,EAAa/X,OAAO,GACxC,IAAI,CAACkkB,WAAW,CAACrc,EAAMka,gBAAgB,GAAG,IAAI,GAAKla,EAAME,OAAO,CAAEqc,GAC9Dvc,EAAMwa,aAAa,EACnB,CAAC+B,EAAgB5V,OAAO,EAExB3G,CAAAA,EAAMwa,aAAa,CAAIxa,EAAMwa,aAAa,CAAC9gB,OAAO,EAAE,EAGhE,CA8BA,GAAM,CAAE8e,UAAAA,EAAS,CAAEc,sBAAAA,EAAqB,CAAE,CAAGI,GAEvC,CAAE9M,KAAMgT,EAAmB,CAAE,CAAIrpB,IAEjC,CAAEkJ,OAAQogB,EAA2B,CAAEjG,QAASkG,EAA4B,CAAE,CAAG,AAACxgB,IAA2IK,WAAW,CAIxO,CAAEgK,SAAUoW,EAAuB,CAAEnV,gBAAiBoV,EAA8B,CAAEnU,cAAeoU,EAA4B,CAAExT,aAAcyT,EAA2B,CAAE,CAAGxW,GAIjL,CAAElR,QAAS2nB,EAAsB,CAAE7S,MAAO8S,EAAoB,CAAE3nB,OAAQ4nB,EAAqB,CAAE3nB,UAAW4nB,EAAwB,CAAErb,SAAUsb,EAAuB,CAAEjX,SAAUkX,EAAuB,CAAE7nB,SAAU8nB,EAAuB,CAAE7nB,MAAO8nB,EAAoB,CAAE3S,MAAO4S,EAAoB,CAAE,CAAIpqB,IAGjTqqB,AApCiB,CAAA,CACbrmB,QATJ,SAAiBsmB,CAAe,EAC5B7E,GAAkB6E,EAAiB,eAAgBnD,IACnD1B,GAAkB6E,EAAiB,wBAAyBlB,IAC5D,IAAMmB,EAAkBD,EAAgB5qB,SAAS,AAC5C6qB,CAAAA,EAAgBzE,WAAW,EAC5ByE,CAAAA,EAAgBzE,WAAW,CAAGA,EAAU,CAEhD,CAGA,CAAA,EAkCoB9hB,OAAO,CAAEiF,KAM7B,IAAMuhB,GAAU,IAAMhe,KAAKuX,EAAE,CAgCvB0G,GAAc,SAAqBnpB,CAAC,CAAEC,CAAC,CAAEsiB,CAAK,CAAE5R,CAAQ,EAC1D,MAAO,CACH3Q,EAAGA,EAAKkL,KAAK8b,GAAG,CAACzE,GAAS5R,EAC1B1Q,EAAGA,EAAKiL,KAAKgc,GAAG,CAAC3E,GAAS5R,CAC9B,CACJ,EAuNA,SAASyY,GAAsB1b,CAAI,CAAE5O,CAAO,EACxC,IAAMuV,EAAcvV,EAAQuV,WAAW,CAAExI,EAAS6B,EAAK7B,MAAM,CAAE4P,EAAa5P,EAASwI,CAAW,CAACxI,EAAO,CAAG,KAAK,EAAG3D,EAASpJ,EAAQoJ,MAAM,CAAE9G,EAAQ8G,EAAO9G,KAAK,CAA0B+G,EAAQoK,AAAvBrK,EAAOqK,MAAM,AAAgB,CAAC7E,EAAKxG,CAAC,CAAC,CAAmE6W,EAAYmK,GAAwBxa,EAAM,CACzT2E,OADuNnK,EAAOpJ,OAAO,CAACuT,MAAM,EAAIjR,GAASA,EAAMtC,OAAO,CAACuT,MAAM,CAE7QL,WAAY9J,EAAO8J,UAAU,CAC7BC,MAAOnT,EAAQmT,KAAK,CACpBC,kBAAmBpT,EAAQoT,iBAAiB,CAC5CC,YAAasJ,GAAcA,EAAWlc,KAAK,CAC3C6S,iBAAkBqJ,GAAcA,EAAWzJ,UAAU,CACrD9J,OAAQpJ,EAAQoJ,MAAM,CACtBoK,SAAUxT,EAAQwT,QAAQ,AAC9B,GASA,OARA5E,EAAKnO,KAAK,CAAGwe,EAAUxe,KAAK,CAC5BmO,EAAKsE,UAAU,CAAG+L,EAAU/L,UAAU,CAClC7J,IACAA,EAAM5I,KAAK,CAAGmO,EAAKnO,KAAK,CACxB4I,EAAM6J,UAAU,CAAGtE,EAAKsE,UAAU,CAElCtE,EAAK2b,MAAM,CAAG,AAAC3b,EAAKhF,EAAE,GAAK5J,EAAQqV,MAAM,EAAIhM,EAAMkhB,MAAM,EAEtD3b,CACX,CAMA,MAAM4b,WAAuBrB,GAMzB9P,eAAehQ,CAAK,CAAEiQ,CAAS,CAAEC,CAAY,CAAE,CAC3C,GAAIA,CAAAA,EAAa2M,QAAQ,GAAI3M,EAAa2M,QAAQ,CAAClW,OAAO,CAG1D,OAAO,KAAK,CAACqJ,eAAejK,KAAK,CAAC,IAAI,CAAEX,UAC5C,CAKAX,QAAQjB,CAAI,CAAE,KAKNU,EAJJ,IAAMjL,EAAQ,IAAI,CAACA,KAAK,CAAE6f,EAAS,CAC/B7f,EAAM0f,SAAS,CAAG,EAClB1f,EAAM2f,UAAU,CAAG,EACtB,CAAEwI,EAAWnoB,EAAMmoB,QAAQ,CAAEpnB,EAAUf,EAAMe,OAAO,CAAEkC,EAAQ,IAAI,CAACA,KAAK,CAGrEsH,GAEAU,EAAU,CACNmd,WAAYvI,CAAM,CAAC,EAAE,CAAGsI,EACxBE,WAAYxI,CAAM,CAAC,EAAE,CAAG9e,EACxBunB,OAAQ,KACRC,OAAQ,KACR9C,SAAU,GACV/W,QAAS,GACb,EACAzL,EAAMI,IAAI,CAAC4H,KAIXA,EAAU,CACNmd,WAAYD,EACZE,WAAYtnB,EACZunB,OAAQ,EACRC,OAAQ,EACR9C,SAAU,EACV/W,QAAS,CACb,EACAzL,EAAMuI,OAAO,CAACP,EAAS,IAAI,CAACvN,OAAO,CAACqN,SAAS,EAErD,CACAyO,YAAa,CACT,IAAM1S,EAAS,IAAI,CAAEgK,EAAoBhK,EAAOgK,iBAAiB,CAAE0X,EAAY1hB,EAAO0hB,SAAS,CAAEvlB,EAAQ6D,EAAO7D,KAAK,CAAE+H,EAAclE,EAAOkE,WAAW,CAAE+H,EAASjM,EAAO0F,QAAQ,CAAEiR,EAAiB3W,EAAO2W,cAAc,CAAElR,EAAUzF,EAAOyF,OAAO,CAAEkc,EAAmBlc,CAAO,CAACkR,EAAe,CAAEiL,EAAoBD,GAAoBA,EAAiBld,SAAS,CAAE4F,EAASrK,EAAOqK,MAAM,CAAEwX,EAAU7hB,EAAO8hB,kBAAkB,CAAE5oB,EAAQ8G,EAAO9G,KAAK,CAAE6oB,EAAe7oB,GAASA,EAAMtC,OAAO,EAAIsC,EAAMtC,OAAO,CAACsC,KAAK,EAAI,CAAC,EAAG+K,EAAa+d,AA/Tzf,WAAb,OA+TghBD,EAAa9d,SAAS,EACriB8d,EAAa9d,SAAS,CACfoV,EAAYrZ,EAAO+Y,MAAM,CAAEA,EAAS,CAC3CjhB,EAAGuhB,CAAS,CAAC,EAAE,CACfthB,EAAGshB,CAAS,CAAC,EAAE,AACnB,EAAGyB,EAASzB,CAAS,CAAC,EAAE,CAAG,EAAGjd,EAAW4D,EAAO9G,KAAK,CAACkD,QAAQ,CAAE6lB,EAAyB,CAAC,CAAEhe,CAAAA,GACxFC,GACA+H,IAAW0K,GACX3W,EAAOkiB,eAAe,AAAD,EACrBC,EAAeC,EAAsB,CAAA,EAAOC,EAAY,CAAA,EAc5D,IAAK,IAAMpiB,KAbPgiB,IACAjiB,EAAOkiB,eAAe,CAAC3lB,IAAI,CAAC,CAAEqL,QAAS,CAAE,GACzCua,EAAgB,WAEZC,EAAsB,CAAA,EAClBE,AAFMtiB,EAEJkiB,eAAe,EACjBI,AAHMtiB,EAGJkiB,eAAe,CAACxd,OAAO,CAAC,CACtBkD,QAAS,EACTjH,WAAY,SAChB,EAER,GAEgB0J,GAAQ,KAEpBkY,EAAeve,EADnB,IAAMwB,EAAOvF,EAAMuF,IAAI,CAAE3L,EAAQmQ,CAAiB,CAACxE,EAAK3L,KAAK,CAAC,CAAEugB,EAAiBna,EAAMma,aAAa,EAAI,CAAC,EAAIoI,EAAQhd,EAAKf,SAAS,EAAI,CAAC,EAAGjB,EAAU,CAAC,CAAEgC,CAAAA,EAAKhC,OAAO,EAAIgC,EAAKf,SAAS,AAAD,CAOrL+d,CAAAA,EAAMlc,YAAY,CAAGtG,EAAOpJ,OAAO,CAAC0P,YAAY,CAE5Cic,EADAre,GAAeD,EACCwe,AA3LhC,SAAsBD,CAAK,CAAE1e,CAAM,EAC/B,IAAM7D,EAAQ6D,EAAO7D,KAAK,CAAE4hB,EAAU/d,EAAO+d,OAAO,CAAE/G,EAAShX,EAAOgX,MAAM,CAAE7O,EAASnI,EAAOmI,MAAM,CAAE0K,EAAiB7S,EAAO6S,cAAc,CAAEyD,EAAgBtW,EAAOsW,aAAa,CAAEsH,EAAY5d,EAAO4d,SAAS,CAAEE,EAAoB9d,EAAO8d,iBAAiB,CAAEpe,EAAUM,EAAON,OAAO,CACpRwH,EAAO,CAAC,EAAGJ,EAAK,CAChB0E,IAAKkT,EAAMlT,GAAG,CACdkK,MAAOgJ,EAAMhJ,KAAK,CAClBsB,OAAQ0H,EAAM1H,MAAM,CACpB7H,EAAGuP,EAAMvP,CAAC,CACVnb,EAAG0qB,EAAM1qB,CAAC,CACVC,EAAGyqB,EAAMzqB,CAAC,AACd,EAgDA,OA/CIyL,EAEI,CAACvD,EAAME,OAAO,EAAIyhB,GAiBlB5W,CAAAA,CAfIA,EADAiB,IAAWhM,EAAMO,EAAE,CACZ,CACHgZ,MAAOqI,EAAQrI,KAAK,CACpBlK,IAAKuS,EAAQvS,GAAG,AACpB,EAGO,AAACsS,EAAkBtS,GAAG,EAAIkT,EAAMhJ,KAAK,CAAI,CAC5CA,MAAOqI,EAAQvS,GAAG,CAClBA,IAAKuS,EAAQvS,GAAG,AACpB,EAAI,CACAkK,MAAOqI,EAAQrI,KAAK,CACpBlK,IAAKuS,EAAQrI,KAAK,AACtB,GAGCsB,MAAM,CAAG9P,EAAKiI,CAAC,CAAG6H,CAAK,EAK5B7a,EAAME,OAAO,GACTwW,IAAmB1W,EAAMO,EAAE,CAC3BoK,EAAK,CACDkQ,OAAQA,EACR7H,EAAG6H,CACP,EAEK4G,GACL9W,CAAAA,EAAK,AAAC8W,EAAUpS,GAAG,EAAI8K,EAAcZ,KAAK,CACtC,CACIsB,OAAQA,EACR7H,EAAG6H,EACHtB,MAAOqI,EAAQvS,GAAG,CAClBA,IAAKuS,EAAQvS,GAAG,AACpB,EAAI,CACJwL,OAAQA,EACR7H,EAAG6H,EACHtB,MAAOqI,EAAQrI,KAAK,CACpBlK,IAAKuS,EAAQrI,KAAK,AACtB,CAAA,GAIL,CACHxO,KAAMA,EACNJ,GAAIA,CACR,CACJ,EA8H6C4X,EAAO,CAChCzJ,OAAQA,EACR9Y,MAAOA,EACP4hB,QAASA,EACT/G,OAAQA,EACR7O,OAAQA,EACR0K,eAAgBA,EAChByD,cAAeA,EACfsH,UAAWA,EACXE,kBAAmBA,EACnBpe,QAASA,CACb,GAIgB,CACZoH,GAAI4X,EACJxX,KAAM,CAAC,CACX,EAEJsV,GAAsBrgB,EAAO,CACzBma,cAAeoI,EACfE,WAAY,CAACF,EAAMjM,KAAK,CAAEiM,EAAMvc,KAAK,CAAC,CACtCmN,QAASuP,AAnJzB,SAAoB1iB,CAAK,CAAEgM,CAAM,CAAEE,CAAW,MAEtCiH,EAWJ,OAVK5N,AAFQvF,EAAMuF,IAAI,CAEbI,MAAM,GAIRwN,EAFAnH,IAAWhM,EAAMO,EAAE,CAET0L,AADCC,CAAW,CAACF,EAAO,CACXtI,MAAM,CAGf1D,EAAMO,EAAE,EAGnB4S,CACX,EAqIoCnT,EAAOgM,EAAQxG,GACnCoB,KAAM,GAAM5G,CAAAA,EAAM4G,IAAI,EAAI5G,EAAMO,EAAE,EAAIP,EAAM8J,KAAK,AAAD,EAChDwM,MAAOiM,EAAMjM,KAAK,CAClBtQ,MAAOuc,EAAMvc,KAAK,CAClBlF,MAAOyE,EAAKiH,GAAG,CACfuG,SAAUxP,EACVof,OAAQ,CAACpf,CACb,GACAvD,EAAMwS,SAAS,CAAGoQ,AAhW9B,SAAsB/e,CAAM,EAExB,IAAM7D,EAAQ6D,EAAO7D,KAAK,CAAEuiB,EAAQ/B,GAAwB3c,EAAOW,SAAS,EAAIX,EAAOW,SAAS,CAAG,CAAC,EAAG2H,EAAgBqU,GAAwB3c,EAAOsI,YAAY,EAC9JtI,EAAOsI,YAAY,CAAC1F,UAAU,CAC9B,CAAC,EAKO9P,EAAU+pB,GAAqB,CACvCvpB,MAAO,CAAC,CACZ,EAJewpB,GAAqBH,GAAwB3c,EAAOjK,KAAK,EACpEiK,EAAOjK,KAAK,CAAC6M,UAAU,CACvB,CAAC,EAAE,CAAC,EAAE,CAEO0F,GAAe,CAAE0W,eAAAA,EAAiB,CAAC,CAAEC,eAAAA,EAAiB,CAAC,CAAE,CAAG9iB,EACzE+iB,EAAarE,EAAUsE,EAAersB,EAAQqsB,YAAY,CAuH9D,OAtHKzC,GAAwB5pB,EAAQ+nB,QAAQ,IACrCsE,CAAAA,AAAiB,SAAjBA,GAA2BA,AAAiB,aAAjBA,CAA0B,IACjDrsB,EAAQwB,OAAO,EACf6qB,AAAiB,aAAjBA,GAGAA,CAAAA,EAAe,MAAK,EAEpBH,EAAiB,GACjBC,EAAiBP,EAAM3Z,MAAM,EAC7Bma,EAAc,EAEV/iB,EAAMwa,aAAa,EAAIwI,AAAiB,aAAjBA,GACvBrsB,CAAAA,EAAQkmB,QAAQ,CAAG,CACflW,QAAS,CAAA,CACb,CAAA,GAGCkc,EAAiB,GACtBC,EAAiB,IAAMP,EAAM3Z,MAAM,CAC/Boa,AAAiB,aAAjBA,EACArsB,EAAQkmB,QAAQ,CAAG,CACflW,QAAS,CAAA,EACT6V,WAAY,CACRC,GAAI,CACR,CACJ,EAGAuG,EAAe,YAKfhjB,EAAMiQ,SAAS,EAAE4M,UACjBmG,AAAiB,aAAjBA,GACArsB,CAAAA,EAAQkmB,QAAQ,CAAG,CACflW,QAAS,CAAA,CACb,CAAA,EAEJqc,EAAe,kBAGF,SAAjBA,GAA2BA,AAAiB,aAAjBA,IACvBhjB,EAAMiQ,SAAS,EAAIjQ,EAAMiQ,SAAS,CAAC4M,QAAQ,EAC3ClmB,CAAAA,EAAQkmB,QAAQ,CAAG,CACflW,QAAS,CAAA,CACb,CAAA,EAEJoc,EAAeR,EAAMlT,GAAG,CACpB,AAACkT,CAAAA,EAAMlT,GAAG,CAAGkT,EAAMhJ,KAAK,AAAD,EAAK,GAEhCyJ,AAAiB,aAAjBA,EACArsB,EAAQQ,KAAK,CAACqC,KAAK,CAAGuJ,KAAK0L,GAAG,CAAC8T,AAAe,IAAfA,EAAM3Z,MAAM,CAAQ,AAACka,CAAAA,EAAiBD,CAAa,EAAK,GAGnF,CAAC1C,GAAuBxpB,EAAQQ,KAAK,CAACqC,KAAK,GAC3C+oB,EAAM3Z,MAAM,EACZjS,CAAAA,EAAQQ,KAAK,CAACqC,KAAK,CAAGwG,AAAqB,IAArBA,EAAMuF,IAAI,CAAC3L,KAAK,CAClC,EAAI2oB,EAAM3Z,MAAM,CAChB2Z,EAAM3Z,MAAM,AAAD,EAGF,kBAAjBoa,IAKIF,EAAiB,GACjBnsB,EAAQQ,KAAK,CAACqC,KAAK,CAAG,EAGtB7C,EAAQQ,KAAK,CAACmb,SAAS,CAAGvP,KAAKwP,KAAK,CAACsQ,EAAiB,KAAO,GAIrElsB,EAAQQ,KAAK,CAACqC,KAAK,CAAGuJ,KAAKC,GAAG,CAACrM,EAAQQ,KAAK,CAACqC,KAAK,CAAG,EAAK7C,CAAAA,EAAQI,OAAO,EAAI,CAAA,EAAI,GACjF2nB,EAAW,AAACqE,EAAchC,GAAW,IAChB,aAAjBiC,GACAtE,CAAAA,GAAY,EAAC,EAGbA,EAAW,GACXA,GAAY,IAEPA,EAAW,KAChBA,CAAAA,GAAY,GAAE,EAElB/nB,EAAQ+nB,QAAQ,CAAGA,GAEnB/nB,EAAQkmB,QAAQ,GACZ7c,AAA+B,IAA/BA,EAAMma,aAAa,CAACU,MAAM,EAC1BlkB,EAAQkmB,QAAQ,CAAClW,OAAO,EAExBhQ,EAAQ+nB,QAAQ,CAAG,EAEnB/nB,EAAQkmB,QAAQ,CAAClW,OAAO,CAAG,CAAA,EAE3BhQ,EAAQQ,KAAK,CAACqC,KAAK,CAAGuJ,KAAKC,GAAG,CAAC,AAAyB,EAAxBhD,EAAMma,aAAa,CAACnH,CAAC,CACjD,EAAKrc,CAAAA,EAAQI,OAAO,EAAI,CAAA,EAAI,IAE3BiJ,EAAMwS,SAAS,EACpBxS,EAAMwS,SAAS,CAACqK,QAAQ,EACxB,CAAC7c,EAAMwS,SAAS,CAACqK,QAAQ,CAAClW,OAAO,EAChCqc,AAAiB,aAAjBA,GAEDrsB,CAAAA,EAAQkmB,QAAQ,CAAClW,OAAO,CAAG,CAAA,CAAG,EAE9BhQ,EAAQkmB,QAAQ,CAAClW,OAAO,GAExBhQ,EAAQ+nB,QAAQ,CAAG,EAEnB/nB,EAAQQ,KAAK,CAACqC,KAAK,CAAGuJ,KAAKC,GAAG,CAAC,AAAChD,CAAAA,EAAM8iB,cAAc,CAChD9iB,EAAM6iB,cAAc,AAAD,EAAK,EACxB,EAAKlsB,CAAAA,EAAQI,OAAO,EAAI,CAAA,EAAI,GAChCJ,EAAQQ,KAAK,CAAC8rB,UAAU,CAAG,WAG5BtsB,CACX,EA4N2C,CAC3BqJ,MAAOA,EACPpG,MAAOA,EACPuS,aAAcnM,EAAMrJ,OAAO,CAC3B6N,UAAW+d,CACf,GACI,CAACH,GAAa7e,IACd6e,EAAY,CAAA,EACZre,EAAame,GAEjBliB,EAAM4D,IAAI,CAAC,CACPE,kBAAmBwe,EAAc3X,EAAE,CACnCzG,QAASmc,GAAsBiC,EAAcvX,IAAI,CAAG,CAAC9R,EAAM+E,UAAU,EAAI+B,EAAO2B,YAAY,CAAC1B,EAAQA,EAAMiT,QAAQ,EAAI,WACvHlP,WAAYA,EACZ7H,MAAOA,EACPC,SAAUA,EACVkI,UAAW,MACXG,UAAW+d,CACf,EACJ,CAGIP,GAA0BI,GAC1BriB,EAAOkE,WAAW,CAAG,CAAA,EACrBlE,EAAOpJ,OAAO,CAAC8P,UAAU,CAACC,KAAK,CAAG,CAAA,EAClCmZ,GAA4B5pB,SAAS,CAACmc,cAAc,CAACjc,IAAI,CAAC4J,GAC1DA,EAAOkE,WAAW,CAAG,CAAA,EAGjBke,GACAD,KAIJrC,GAA4B5pB,SAAS,CAACmc,cAAc,CAACjc,IAAI,CAAC4J,GAE9DA,EAAO2W,cAAc,CAAG1K,CAC5B,CAKA5E,gBAAgB1D,CAAM,CAAED,CAAQ,CAAE9M,CAAO,CAAE,CACvC,IAAI6iB,EAAa9V,EAAO6V,KAAK,CACvB6B,EAAQ1X,EAAO2L,GAAG,CAAGmK,EAAYnX,EAAQqB,EAAO8I,GAAG,CAAE3U,EAAI6L,EAAO7L,CAAC,CAAEC,EAAI4L,EAAO5L,CAAC,CAAE8Q,EAAU,AAACjS,GAC9F6pB,GAAwB7pB,EAAQilB,SAAS,GACzC2E,GAAwB5pB,EAAQilB,SAAS,CAAC9a,KAAK,EAC/CnK,EAAQilB,SAAS,CAAC9a,KAAK,CACvB,EAAIoiB,EAAcxf,EAAOsP,CAAC,CAAEmQ,EAAcD,EAActa,EAAQ8P,EAAe/hB,GAAW4pB,GAAwB5pB,EAAQ+hB,YAAY,EACtI/hB,EAAQ+hB,YAAY,CACpB,EACJ,MAAO,AAACjV,CAAAA,GAAY,EAAE,AAAD,EAAGyH,MAAM,CAAC,CAACkJ,EAAK9H,KACjC,IAA4CsV,EAAUwB,AAAlC,EAAI/gB,EAASiK,EAAME,GAAG,CAAyB4O,EAAmDiI,EAAiBrC,GAAYnpB,EAAGC,EAA5D0hB,EAAcoI,EAAU,EAAsDlJ,GAAehH,EAAS,CAC5L7Z,EAAGyU,EAAM4U,MAAM,CAAGmC,EAAexrB,CAAC,CAAGA,EACrCC,EAAGwU,EAAM4U,MAAM,CAAGmC,EAAevrB,CAAC,CAAGA,EACrC+iB,OAAQqI,EACRlQ,EAAGmQ,EACHva,OAAQA,EACR2Q,MAAOC,EACPnK,IAAKmK,EAAaoI,CACtB,EAGA,OAFAxN,EAAIjR,IAAI,CAACuO,GACT8H,EAAa9H,EAAOrC,GAAG,CAChB+E,CACX,EAAG,EAAE,CACT,CACAZ,YAAYjT,CAAE,CAAErG,CAAM,CAAEqc,CAAc,CAAE,CAEpC,GACAxW,AAA6B,IAA7BA,AAFe,IAAI,CAEZyF,OAAO,CAACjF,EAAG,CAAC3G,KAAK,EACpBmG,AAEgB,IAFhBA,AAHW,IAAI,CAGRmR,QAAQ,CACVK,MAAM,CAAC,AAAChM,GAASA,AAAe,IAAfA,EAAK3L,KAAK,EAC3B2B,MAAM,CAAQ,CACnB,GAAIwE,AAA0B,KAA1BA,AANO,IAAI,CAMJ2W,cAAc,CACrB,OAEJnW,EAAK,EACT,CACA,KAAK,CAACiT,YAAYjT,EAAIrG,EAAQqc,EAClC,CAKA+M,aAAa5f,CAAM,CAAE6f,CAAY,CAAExZ,CAAiB,CAAE,CAClD,IAAgCpT,EAAUoT,CAAiB,CAA7CrG,EAAO9J,KAAK,CAAG,EAAqC,CAElE6J,EAAWC,EAAOD,QAAQ,CAAC8N,MAAM,CAAC,SAAUpc,CAAC,EACzC,OAAOA,EAAEoO,OAAO,AACpB,GACIkO,EAAiB,EAAE,CACvBA,EAAiB,IAAI,CAACrK,eAAe,CAACmc,EAAc9f,EAAU9M,GAC9D,IAAIoI,EAAI,GACR,IAAK,IAAMuN,KAAS7I,EAAU,CAC1B,IAAMiO,EAASD,CAAc,CAAC,EAAE1S,EAAE,CAAEqb,EAAQ1I,EAAO6H,KAAK,CAAI,AAAC7H,CAAAA,EAAOrC,GAAG,CAAGqC,EAAO6H,KAAK,AAAD,EAAK,EAAI3Q,EAAS8I,EAAOmJ,MAAM,CAAI,AAACnJ,CAAAA,EAAOsB,CAAC,CAAGtB,EAAOmJ,MAAM,AAAD,EAAK,EAAI+G,EAAWlQ,EAAOrC,GAAG,CAAGqC,EAAO6H,KAAK,CAAwDT,EAAU0K,AAAnD9R,AAAkB,IAAlBA,EAAOmJ,MAAM,EAAU+G,EAL3N,KAMJ,CAAE/pB,EAAG6Z,EAAO7Z,CAAC,CAAEC,EAAG4Z,EAAO5Z,CAAC,AAAC,EAC3BkpB,GAAYtP,EAAO7Z,CAAC,CAAE6Z,EAAO5Z,CAAC,CAAEsiB,EAAOxR,GAAU4D,EAAOF,EAAME,GAAG,CAChEF,EAAMhJ,aAAa,CAAGgJ,EAAME,GAAG,CAC5BF,EAAMhJ,aAAa,CACnBgJ,EAAME,GAAG,CACbF,EAAMhJ,aAAa,AAEnB,CAAA,IAAI,CAAC8G,MAAM,CAACkC,EAAMvN,CAAC,CAAC,GACpB,IAAI,CAACqL,MAAM,CAACkC,EAAMvN,CAAC,CAAC,CAAC8jB,cAAc,CAAGjB,EAAUlQ,EAAOmJ,MAAM,CAC7D,IAAI,CAACzQ,MAAM,CAACkC,EAAMvN,CAAC,CAAC,CAAC+jB,cAAc,CAAGlB,EAAUlQ,EAAOsB,CAAC,EAE5D1G,EAAM9H,SAAS,CAAGkc,GAAqBhP,EAAQ,CAC3C4E,MAAOwC,EAAOjhB,CAAC,CACfmO,MAAO8S,EAAOhhB,CAAC,AACnB,GACAwU,EAAMoF,MAAM,CAAGgP,GAAqBhP,EAAQ,CACxClF,IAAKA,CACT,GAEIF,EAAM7I,QAAQ,CAAClI,MAAM,EACrB,IAAI,CAAC+nB,YAAY,CAAChX,EAAOA,EAAMoF,MAAM,CAAE3H,EAE/C,CACJ,CACAjL,WAAY,CACR,IAAqBnI,EAAUoJ,AAAhB,IAAI,CAAmBpJ,OAAO,CAAEyiB,EAAYrZ,AAA5C,IAAI,CAA+C+Y,MAAM,CAAG/Y,AAA5D,IAAI,CAA+DyY,SAAS,GAAIoJ,EAAU7hB,AAA1F,IAAI,CAA6F8hB,kBAAkB,CAAGvI,GAAsB3iB,EAAQ6iB,UAAU,CAAE7iB,EAAQ8iB,QAAQ,EAAGyJ,EAAc9J,CAAS,CAAC,EAAE,CAAG,EAAG+J,EAAc/J,CAAS,CAAC,EAAE,CAAG,EAE/P1M,EAASwT,GAFM,IAAI,EAGfhU,EAAcnM,AAHH,IAAI,CAGMyF,OAAO,CAAEuE,EAAmBkC,EAAWC,GAAeA,CAAW,CAACQ,EAAO,CAAE+W,EAAU,CAAC,CAC/G1jB,CAJe,IAAI,CAIZ0hB,SAAS,CAAGxV,GAAYA,EAASzH,SAAS,CACjDzE,AALe,IAAI,CAKZ2jB,cAAc,GACrBpD,GANe,IAAI,CAMc,kBAEjC,IAAMxU,EAAO/L,AARE,IAAI,CAQC+L,IAAI,CAAG/L,AARZ,IAAI,CAQe0U,OAAO,GAInCkP,EAAQlD,GAAwBxU,AADtCA,CAAAA,EAAWC,AADXA,CAAAA,EAAcnM,AAVC,IAAI,CAUEyF,OAAO,AAAD,CACL,CAACkH,EAAO,AAAD,EACkBhJ,MAAM,EAAIuI,EAASvI,MAAM,CAAG,GAAIkgB,EAAU1X,CAAW,CAACyX,EAAM,CAAE,CAAE5Y,KAAAA,CAAI,CAAEJ,GAAAA,CAAE,CAAE,CAAGkZ,AAtpCnExI,GAspC8FS,iBAAiB,CAAC7P,GACzKlC,EAAoBiW,GAA+B,CAC/CjV,KAAAA,EACAC,OAAQjL,AAfG,IAAI,CAeApJ,OAAO,CAACqU,MAAM,CAC7BL,GAAAA,EACAE,SAAU,CACNrE,aAAc7P,EAAQ6P,YAAY,CAClCC,WAAY9P,EAAQ8P,UAAU,CAC9Bc,gBAAiB5Q,EAAQ4Q,eAAe,CACxCqU,UAAWjlB,EAAQilB,SAAS,CAC5BlD,aAAc/hB,EAAQ+hB,YAAY,AACtC,CACJ,GAGA3O,EAAoB8Z,AArqCqCxI,GAqqCVC,mBAAmB,CAACvR,EAAmB,CAClFyR,WA5B2Q2H,EAAcD,EA6BzRnY,KAAAA,EACAJ,GAAAA,CACJ,GAGAsV,GAA6BnU,EAAM,CAC/BC,OAAQkV,GACRjV,OAAQU,EACRnF,gBAAiB5Q,EAAQ4Q,eAAe,CACxCwC,kBAAmBA,EACnBmC,YAAaA,EACb9B,OAAQrK,AAxCG,IAAI,CAwCAqK,MAAM,CACrBrK,OAzCW,IAAI,AA0CnB,GACA,IAAM2R,EAASxF,CAAW,CAAC,GAAG,CAAC1H,SAAS,CAAG,CACvC6K,IAAKuS,EAAQvS,GAAG,CAChB2D,EAAGkQ,EACH3J,MAAOqI,EAAQrI,KAAK,CACpB/M,IAAKP,EAASO,GAAG,CACjB3U,EAAGuhB,CAAS,CAAC,EAAE,CACfthB,EAAGshB,CAAS,CAAC,EAAE,AACnB,EAKA,IAAK,IAAMpZ,KAJX,IAAI,CAACsjB,YAAY,CAACM,EAASlS,EAAQ3H,GAEnChK,AArDe,IAAI,CAqDZgK,iBAAiB,CAAGA,EAEPhK,AAvDL,IAAI,CAuDQqK,MAAM,EACzBqZ,CAAO,CAACzjB,EAAMO,EAAE,CAAC,EACjB6f,GAAqB,GAAI,CAAA,EAAOrgB,AAzDzB,IAAI,CAyD4B9G,KAAK,EAGhDwqB,CAAO,CAACzjB,EAAMO,EAAE,CAAC,CAAG,CAAA,CAI5B,CACJ,CAMA4gB,GAAejmB,cAAc,CAAGwlB,GAAqBZ,GAA6B5kB,cAAc,CA9oCjE,CAgI3B4d,OAAQ,CAAC,MAAO,MAAM,CAMtBgL,KAAM,CAAA,EACNtd,aAAc,CAAA,EAQdmB,QAAS,EAMTlB,WAAY,CACRsd,aAAc,CAAA,EACdrd,MAAO,CAAA,EAoBPsc,aAAc,WACd7rB,MAAO,CAEH2P,aAAc,UAClB,CACJ,EAQA4F,OAAQ,KAAK,EASbnF,gBAAiB,CAAA,EAWjBqU,UAAW,CAQP9a,MAAO,EAkBP6a,KAAM,QACV,EAsBAjD,aAAc,EAClB,GAi5BA2H,GAAsBc,GAAelrB,SAAS,CAAE,CAC5CkL,UAAW,EAAE,CACbiR,eAAgBwN,GAChBpH,UAAWA,GACXwL,YAAa,CAAA,EAEbC,iBAAkB,CAAA,EAClBviB,aAAcme,GAA4B5pB,SAAS,CAACyL,YAAY,CAChEE,WAv1CyDqY,GAw1CzDrF,UAxsCJ,cAA2BvR,EAC3B,EAwsCI0U,MA5tC6DsD,EA6tCjE,GACA/b,IAA0I0Y,kBAAkB,CAAC,WAAYmJ,IAezK,IAAM+C,GAAK3tB,GACX2tB,CAAAA,GAAE5pB,WAAW,CAAG4pB,GAAE5pB,WAAW,EAvmIiCA,EAwmI9D4pB,GAAE5pB,WAAW,CAACC,OAAO,CAAC2pB,GAAEC,KAAK,CAAED,GAAEhpB,cAAc,EAClB,IAAM7E,GAAiBE,IAG1C,OADYH,EAAoB,OAAU,AAE3C,CAAA"}
Hacked By AnonymousFox1.0, Coded By AnonymousFox