{"version":3,"sources":[""],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/export-data\n * @requires highcharts\n * @requires highcharts/modules/exporting\n *\n * Exporting module\n *\n * (c) 2010-2024 Torstein Honsi\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\"][\"AST\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/export-data\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"AST\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/export-data\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"AST\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"AST\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__660__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 660:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__660__;\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 */ export_data_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/DownloadURL.js\n/* *\n *\n * (c) 2015-2024 Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Mixin for downloading content in the browser\n *\n * */\n\n/* *\n *\n * Imports\n *\n * */\n\nconst { isSafari, win, win: { document: doc } } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Constants\n *\n * */\nconst domurl = win.URL || win.webkitURL || win;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Convert base64 dataURL to Blob if supported, otherwise returns undefined.\n * @private\n * @function Highcharts.dataURLtoBlob\n * @param {string} dataURL\n * URL to convert\n * @return {string|undefined}\n * Blob\n */\nfunction dataURLtoBlob(dataURL) {\n const parts = dataURL\n .replace(/filename=.*;/, '')\n .match(/data:([^;]*)(;base64)?,([A-Z+\\d\\/]+)/i);\n if (parts &&\n parts.length > 3 &&\n (win.atob) &&\n win.ArrayBuffer &&\n win.Uint8Array &&\n win.Blob &&\n (domurl.createObjectURL)) {\n // Try to convert data URL to Blob\n const binStr = win.atob(parts[3]), buf = new win.ArrayBuffer(binStr.length), binary = new win.Uint8Array(buf);\n for (let i = 0; i < binary.length; ++i) {\n binary[i] = binStr.charCodeAt(i);\n }\n return domurl\n .createObjectURL(new win.Blob([binary], { 'type': parts[1] }));\n }\n}\n/**\n * Download a data URL in the browser. Can also take a blob as first param.\n *\n * @private\n * @function Highcharts.downloadURL\n * @param {string|global.URL} dataURL\n * The dataURL/Blob to download\n * @param {string} filename\n * The name of the resulting file (w/extension)\n * @return {void}\n */\nfunction downloadURL(dataURL, filename) {\n const nav = win.navigator, a = doc.createElement('a');\n // IE specific blob implementation\n // Don't use for normal dataURLs\n if (typeof dataURL !== 'string' &&\n !(dataURL instanceof String) &&\n nav.msSaveOrOpenBlob) {\n nav.msSaveOrOpenBlob(dataURL, filename);\n return;\n }\n dataURL = '' + dataURL;\n if (nav.userAgent.length > 1000 /* RegexLimits.shortLimit */) {\n throw new Error('Input too long');\n }\n const // Some browsers have limitations for data URL lengths. Try to convert\n // to Blob or fall back. Edge always needs that blob.\n isOldEdgeBrowser = /Edge\\/\\d+/.test(nav.userAgent), \n // Safari on iOS needs Blob in order to download PDF\n safariBlob = (isSafari &&\n typeof dataURL === 'string' &&\n dataURL.indexOf('data:application/pdf') === 0);\n if (safariBlob || isOldEdgeBrowser || dataURL.length > 2000000) {\n dataURL = dataURLtoBlob(dataURL) || '';\n if (!dataURL) {\n throw new Error('Failed to convert to blob');\n }\n }\n // Try HTML5 download attr if supported\n if (typeof a.download !== 'undefined') {\n a.href = dataURL;\n a.download = filename; // HTML5 download attribute\n doc.body.appendChild(a);\n a.click();\n doc.body.removeChild(a);\n }\n else {\n // No download attr, just opening data URI\n try {\n if (!win.open(dataURL, 'chart')) {\n throw new Error('Failed to open window');\n }\n }\n catch {\n // If window.open failed, try location.href\n win.location.href = dataURL;\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nconst DownloadURL = {\n dataURLtoBlob,\n downloadURL\n};\n/* harmony default export */ const Extensions_DownloadURL = (DownloadURL);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"AST\"],\"commonjs\":[\"highcharts\",\"AST\"],\"commonjs2\":[\"highcharts\",\"AST\"],\"root\":[\"Highcharts\",\"AST\"]}\nvar highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_ = __webpack_require__(660);\nvar highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default = /*#__PURE__*/__webpack_require__.n(highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_);\n;// ./code/es-modules/Extensions/ExportData/ExportDataDefaults.js\n/* *\n *\n * Experimental data export module for Highcharts\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/* *\n *\n * Constants\n *\n * */\n/**\n * @optionparent exporting\n * @private\n */\nconst exporting = {\n /**\n * Caption for the data table. Same as chart title by default. Set to\n * `false` to disable.\n *\n * @sample highcharts/export-data/multilevel-table\n * Multiple table headers\n *\n * @type {boolean|string}\n * @since 6.0.4\n * @requires modules/export-data\n * @apioption exporting.tableCaption\n */\n /**\n * Options for exporting data to CSV or ExCel, or displaying the data\n * in a HTML table or a JavaScript structure.\n *\n * This module adds data export options to the export menu and provides\n * functions like `Chart.getCSV`, `Chart.getTable`, `Chart.getDataRows`\n * and `Chart.viewData`.\n *\n * The XLS converter is limited and only creates a HTML string that is\n * passed for download, which works but creates a warning before\n * opening. The workaround for this is to use a third party XLSX\n * converter, as demonstrated in the sample below.\n *\n * @sample highcharts/export-data/categorized/ Categorized data\n * @sample highcharts/export-data/stock-timeaxis/ Highcharts Stock time axis\n * @sample highcharts/export-data/xlsx/\n * Using a third party XLSX converter\n *\n * @since 6.0.0\n * @requires modules/export-data\n */\n csv: {\n /**\n *\n * Options for annotations in the export-data table.\n *\n * @since 8.2.0\n * @requires modules/export-data\n * @requires modules/annotations\n *\n *\n */\n annotations: {\n /**\n * The way to mark the separator for annotations\n * combined in one export-data table cell.\n *\n * @since 8.2.0\n * @requires modules/annotations\n */\n itemDelimiter: '; ',\n /**\n * When several labels are assigned to a specific point,\n * they will be displayed in one field in the table.\n *\n * @sample highcharts/export-data/join-annotations/\n * Concatenate point annotations with itemDelimiter set.\n *\n * @since 8.2.0\n * @requires modules/annotations\n */\n join: false\n },\n /**\n * Formatter callback for the column headers. Parameters are:\n * - `item` - The series or axis object)\n * - `key` - The point key, for example y or z\n * - `keyLength` - The amount of value keys for this item, for\n * example a range series has the keys `low` and `high` so the\n * key length is 2.\n *\n * If [useMultiLevelHeaders](#exporting.useMultiLevelHeaders) is\n * true, columnHeaderFormatter by default returns an object with\n * columnTitle and topLevelColumnTitle for each key. Columns with\n * the same topLevelColumnTitle have their titles merged into a\n * single cell with colspan for table/Excel export.\n *\n * If `useMultiLevelHeaders` is false, or for CSV export, it returns\n * the series name, followed by the key if there is more than one\n * key.\n *\n * For the axis it returns the axis title or \"Category\" or\n * \"DateTime\" by default.\n *\n * Return `false` to use Highcharts' proposed header.\n *\n * @sample highcharts/export-data/multilevel-table\n * Multiple table headers\n *\n * @type {Function|null}\n */\n columnHeaderFormatter: null,\n /**\n * Which date format to use for exported dates on a datetime X axis.\n * See `Highcharts.dateFormat`.\n */\n dateFormat: '%Y-%m-%d %H:%M:%S',\n /**\n * Which decimal point to use for exported CSV. Defaults to the same\n * as the browser locale, typically `.` (English) or `,` (German,\n * French etc).\n *\n * @type {string|null}\n * @since 6.0.4\n */\n decimalPoint: null,\n /**\n * The item delimiter in the exported data. Use `;` for direct\n * exporting to Excel. Defaults to a best guess based on the browser\n * locale. If the locale _decimal point_ is `,`, the `itemDelimiter`\n * defaults to `;`, otherwise the `itemDelimiter` defaults to `,`.\n *\n * @type {string|null}\n */\n itemDelimiter: null,\n /**\n * The line delimiter in the exported data, defaults to a newline.\n */\n lineDelimiter: '\\n'\n },\n /**\n * Show a HTML table below the chart with the chart's current data.\n *\n * @sample highcharts/export-data/showtable/\n * Show the table\n * @sample highcharts/studies/exporting-table-html\n * Experiment with putting the table inside the subtitle to\n * allow exporting it.\n *\n * @since 6.0.0\n * @requires modules/export-data\n */\n showTable: false,\n /**\n * Use multi level headers in data table. If [csv.columnHeaderFormatter\n * ](#exporting.csv.columnHeaderFormatter) is defined, it has to return\n * objects in order for multi level headers to work.\n *\n * @sample highcharts/export-data/multilevel-table\n * Multiple table headers\n *\n * @since 6.0.4\n * @requires modules/export-data\n */\n useMultiLevelHeaders: true,\n /**\n * If using multi level table headers, use rowspans for headers that\n * have only one level.\n *\n * @sample highcharts/export-data/multilevel-table\n * Multiple table headers\n *\n * @since 6.0.4\n * @requires modules/export-data\n */\n useRowspanHeaders: true,\n /**\n * Display a message when export is in progress.\n * Uses [Chart.setLoading()](/class-reference/Highcharts.Chart#setLoading)\n *\n * The message can be altered by changing [](#lang.exporting.exportInProgress)\n *\n * @since 11.3.0\n * @requires modules/export-data\n */\n showExportInProgress: true\n};\n/**\n * @optionparent lang\n * @private\n */\nconst lang = {\n /**\n * The text for the menu item.\n *\n * @since 6.0.0\n * @requires modules/export-data\n */\n downloadCSV: 'Download CSV',\n /**\n * The text for the menu item.\n *\n * @since 6.0.0\n * @requires modules/export-data\n */\n downloadXLS: 'Download XLS',\n /**\n * The text for exported table.\n *\n * @since 8.1.0\n * @requires modules/export-data\n */\n exportData: {\n /**\n * The annotation column title.\n */\n annotationHeader: 'Annotations',\n /**\n * The category column title.\n */\n categoryHeader: 'Category',\n /**\n * The category column title when axis type set to \"datetime\".\n */\n categoryDatetimeHeader: 'DateTime'\n },\n /**\n * The text for the menu item.\n *\n * @since 6.0.0\n * @requires modules/export-data\n */\n viewData: 'View data table',\n /**\n * The text for the menu item.\n *\n * @since 8.2.0\n * @requires modules/export-data\n */\n hideData: 'Hide data table',\n /**\n * Text to show when export is in progress.\n *\n * @since 11.3.0\n * @requires modules/export-data\n */\n exportInProgress: 'Exporting...'\n};\n/* *\n *\n * Default Export\n *\n * */\nconst ExportDataDefaults = {\n exporting,\n lang\n};\n/* harmony default export */ const ExportData_ExportDataDefaults = (ExportDataDefaults);\n/* *\n *\n * API Options\n *\n * */\n/**\n * Callback that fires while exporting data. This allows the modification of\n * data rows before processed into the final format.\n *\n * @type {Highcharts.ExportDataCallbackFunction}\n * @context Highcharts.Chart\n * @requires modules/export-data\n * @apioption chart.events.exportData\n */\n/**\n * When set to `false` will prevent the series data from being included in\n * any form of data export.\n *\n * Since version 6.0.0 until 7.1.0 the option was existing undocumented\n * as `includeInCSVExport`.\n *\n * @type {boolean}\n * @since 7.1.0\n * @requires modules/export-data\n * @apioption plotOptions.series.includeInDataExport\n */\n(''); // Keep doclets above in JS file\n\n;// ./code/es-modules/Extensions/ExportData/ExportData.js\n/* *\n *\n * Experimental data export module for Highcharts\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// @todo\n// - Set up systematic tests for all series types, paired with tests of the data\n// module importing the same data.\n\n\n\nconst { getOptions, setOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { downloadURL: ExportData_downloadURL } = Extensions_DownloadURL;\n\n\nconst { doc: ExportData_doc, win: ExportData_win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent, defined, extend, find, fireEvent, isNumber, pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * Wrapper function for the download functions, which handles showing and hiding\n * the loading message\n *\n * @private\n *\n */\nfunction wrapLoading(fn) {\n const showMessage = Boolean(this.options.exporting?.showExportInProgress);\n // Prefer requestAnimationFrame if available\n const timeoutFn = ExportData_win.requestAnimationFrame || setTimeout;\n // Outer timeout avoids menu freezing on click\n timeoutFn(() => {\n showMessage && this.showLoading(this.options.lang.exportInProgress);\n timeoutFn(() => {\n try {\n fn.call(this);\n }\n finally {\n showMessage && this.hideLoading();\n }\n });\n });\n}\n/**\n * Generates a data URL of CSV for local download in the browser. This is the\n * default action for a click on the 'Download CSV' button.\n *\n * See {@link Highcharts.Chart#getCSV} to get the CSV data itself.\n *\n * @function Highcharts.Chart#downloadCSV\n *\n * @requires modules/exporting\n */\nfunction chartDownloadCSV() {\n wrapLoading.call(this, () => {\n const csv = this.getCSV(true);\n ExportData_downloadURL(getBlobFromContent(csv, 'text/csv') ||\n 'data:text/csv,\\uFEFF' + encodeURIComponent(csv), this.getFilename() + '.csv');\n });\n}\n/**\n * Generates a data URL of an XLS document for local download in the browser.\n * This is the default action for a click on the 'Download XLS' button.\n *\n * See {@link Highcharts.Chart#getTable} to get the table data itself.\n *\n * @function Highcharts.Chart#downloadXLS\n *\n * @requires modules/exporting\n */\nfunction chartDownloadXLS() {\n wrapLoading.call(this, () => {\n const uri = 'data:application/vnd.ms-excel;base64,', template = '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n this.getTable(true) +\n '', base64 = function (s) {\n return ExportData_win.btoa(unescape(encodeURIComponent(s))); // #50\n };\n ExportData_downloadURL(getBlobFromContent(template, 'application/vnd.ms-excel') ||\n uri + base64(template), this.getFilename() + '.xls');\n });\n}\n/**\n * Export-data module required. Returns the current chart data as a CSV string.\n *\n * @function Highcharts.Chart#getCSV\n *\n * @param {boolean} [useLocalDecimalPoint]\n * Whether to use the local decimal point as detected from the browser.\n * This makes it easier to export data to Excel in the same locale as the\n * user is.\n *\n * @return {string}\n * CSV representation of the data\n */\nfunction chartGetCSV(useLocalDecimalPoint) {\n let csv = '';\n const rows = this.getDataRows(), csvOptions = this.options.exporting.csv, decimalPoint = pick(csvOptions.decimalPoint, csvOptions.itemDelimiter !== ',' && useLocalDecimalPoint ?\n (1.1).toLocaleString()[1] :\n '.'), \n // Use ';' for direct to Excel\n itemDelimiter = pick(csvOptions.itemDelimiter, decimalPoint === ',' ? ';' : ','), \n // '\\n' isn't working with the js csv data extraction\n lineDelimiter = csvOptions.lineDelimiter;\n // Transform the rows to CSV\n rows.forEach((row, i) => {\n let val = '', j = row.length;\n while (j--) {\n val = row[j];\n if (typeof val === 'string') {\n val = `\"${val}\"`;\n }\n if (typeof val === 'number') {\n if (decimalPoint !== '.') {\n val = val.toString().replace('.', decimalPoint);\n }\n }\n row[j] = val;\n }\n // The first row is the header - it defines the number of columns.\n // Empty columns between not-empty cells are covered in the getDataRows\n // method.\n // Now add empty values only to the end of the row so all rows have\n // the same number of columns, #17186\n row.length = rows.length ? rows[0].length : 0;\n // Add the values\n csv += row.join(itemDelimiter);\n // Add the line delimiter\n if (i < rows.length - 1) {\n csv += lineDelimiter;\n }\n });\n return csv;\n}\n/**\n * Export-data module required. Returns a two-dimensional array containing the\n * current chart data.\n *\n * @function Highcharts.Chart#getDataRows\n *\n * @param {boolean} [multiLevelHeaders]\n * Use multilevel headers for the rows by default. Adds an extra row with\n * top level headers. If a custom columnHeaderFormatter is defined, this\n * can override the behavior.\n *\n * @return {Array>}\n * The current chart data\n *\n * @emits Highcharts.Chart#event:exportData\n */\nfunction chartGetDataRows(multiLevelHeaders) {\n const hasParallelCoords = this.hasParallelCoordinates, time = this.time, csvOptions = ((this.options.exporting && this.options.exporting.csv) || {}), xAxes = this.xAxis, rows = {}, rowArr = [], topLevelColumnTitles = [], columnTitles = [], langOptions = this.options.lang, exportDataOptions = langOptions.exportData, categoryHeader = exportDataOptions.categoryHeader, categoryDatetimeHeader = exportDataOptions.categoryDatetimeHeader, \n // Options\n columnHeaderFormatter = function (item, key, keyLength) {\n if (csvOptions.columnHeaderFormatter) {\n const s = csvOptions.columnHeaderFormatter(item, key, keyLength);\n if (s !== false) {\n return s;\n }\n }\n if (!item) {\n return categoryHeader;\n }\n if (!item.bindAxes) {\n return (item.options.title &&\n item.options.title.text) || (item.dateTime ?\n categoryDatetimeHeader :\n categoryHeader);\n }\n if (multiLevelHeaders) {\n return {\n columnTitle: keyLength > 1 ?\n key :\n item.name,\n topLevelColumnTitle: item.name\n };\n }\n return item.name + (keyLength > 1 ? ' (' + key + ')' : '');\n }, \n // Map the categories for value axes\n getCategoryAndDateTimeMap = function (series, pointArrayMap, pIdx) {\n const categoryMap = {}, dateTimeValueAxisMap = {};\n pointArrayMap.forEach(function (prop) {\n const axisName = ((series.keyToAxis && series.keyToAxis[prop]) ||\n prop) + 'Axis', \n // Points in parallel coordinates refers to all yAxis\n // not only `series.yAxis`\n axis = isNumber(pIdx) ?\n series.chart[axisName][pIdx] :\n series[axisName];\n categoryMap[prop] = (axis && axis.categories) || [];\n dateTimeValueAxisMap[prop] = (axis && axis.dateTime);\n });\n return {\n categoryMap: categoryMap,\n dateTimeValueAxisMap: dateTimeValueAxisMap\n };\n }, \n // Create point array depends if xAxis is category\n // or point.name is defined #13293\n getPointArray = function (series, xAxis) {\n const pointArrayMap = series.pointArrayMap || ['y'], namedPoints = series.data.some((d) => (typeof d.y !== 'undefined') && d.name);\n // If there are points with a name, we also want the x value in the\n // table\n if (namedPoints &&\n xAxis &&\n !xAxis.categories &&\n series.exportKey !== 'name') {\n return ['x', ...pointArrayMap];\n }\n return pointArrayMap;\n }, xAxisIndices = [];\n let xAxis, dataRows, columnTitleObj, i = 0, // Loop the series and index values\n x, xTitle;\n this.series.forEach(function (series) {\n const keys = series.options.keys, xAxis = series.xAxis, pointArrayMap = keys || getPointArray(series, xAxis), valueCount = pointArrayMap.length, xTaken = !series.requireSorting && {}, xAxisIndex = xAxes.indexOf(xAxis);\n let categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap), mockSeries, j;\n if (series.options.includeInDataExport !== false &&\n !series.options.isInternal &&\n series.visible !== false // #55\n ) {\n // Build a lookup for X axis index and the position of the first\n // series that belongs to that X axis. Includes -1 for non-axis\n // series types like pies.\n if (!find(xAxisIndices, function (index) {\n return index[0] === xAxisIndex;\n })) {\n xAxisIndices.push([xAxisIndex, i]);\n }\n // Compute the column headers and top level headers, usually the\n // same as series names\n j = 0;\n while (j < valueCount) {\n columnTitleObj = columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length);\n columnTitles.push(columnTitleObj.columnTitle || columnTitleObj);\n if (multiLevelHeaders) {\n topLevelColumnTitles.push(columnTitleObj.topLevelColumnTitle ||\n columnTitleObj);\n }\n j++;\n }\n mockSeries = {\n chart: series.chart,\n autoIncrement: series.autoIncrement,\n options: series.options,\n pointArrayMap: series.pointArrayMap,\n index: series.index\n };\n // Export directly from options.data because we need the uncropped\n // data (#7913), and we need to support Boost (#7026).\n series.options.data.forEach(function eachData(options, pIdx) {\n const mockPoint = { series: mockSeries };\n let key, prop, val;\n // In parallel coordinates chart, each data point is connected\n // to a separate yAxis, conform this\n if (hasParallelCoords) {\n categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap, pIdx);\n }\n series.pointClass.prototype.applyOptions.apply(mockPoint, [options]);\n const name = series.data[pIdx] && series.data[pIdx].name;\n key = (mockPoint.x ?? '') + ',' + name;\n j = 0;\n // Pies, funnels, geo maps etc. use point name in X row\n if (!xAxis ||\n series.exportKey === 'name' ||\n (!hasParallelCoords && xAxis && xAxis.hasNames) && name) {\n key = name;\n }\n if (xTaken) {\n if (xTaken[key]) {\n key += '|' + pIdx;\n }\n xTaken[key] = true;\n }\n if (!rows[key]) {\n rows[key] = [];\n rows[key].xValues = [];\n // ES5 replacement for Array.from / fill.\n const arr = [];\n for (let i = 0; i < series.chart.series.length; i++) {\n arr[i] = 0;\n }\n // Create pointers array, holding information how many\n // duplicates of specific x occurs in each series.\n // Used for creating rows with duplicates.\n rows[key].pointers = arr;\n rows[key].pointers[series.index] = 1;\n }\n else {\n // Handle duplicates (points with the same x), by creating\n // extra rows based on pointers for better performance.\n const modifiedKey = `${key},${rows[key].pointers[series.index]}`, originalKey = key;\n if (rows[key].pointers[series.index]) {\n if (!rows[modifiedKey]) {\n rows[modifiedKey] = [];\n rows[modifiedKey].xValues = [];\n rows[modifiedKey].pointers = [];\n }\n key = modifiedKey;\n }\n rows[originalKey].pointers[series.index] += 1;\n }\n rows[key].x = mockPoint.x;\n rows[key].name = name;\n rows[key].xValues[xAxisIndex] = mockPoint.x;\n while (j < valueCount) {\n prop = pointArrayMap[j]; // `y`, `z` etc\n val = series.pointClass.prototype.getNestedProperty.apply(mockPoint, [prop]); // Allow values from nested properties (#20470)\n rows[key][i + j] = pick(\n // Y axis category if present\n categoryAndDatetimeMap.categoryMap[prop][val], \n // Datetime yAxis\n categoryAndDatetimeMap.dateTimeValueAxisMap[prop] ?\n time.dateFormat(csvOptions.dateFormat, val) :\n null, \n // Linear/log yAxis\n val);\n j++;\n }\n });\n i = i + j;\n }\n });\n // Make a sortable array\n for (x in rows) {\n if (Object.hasOwnProperty.call(rows, x)) {\n rowArr.push(rows[x]);\n }\n }\n let xAxisIndex, column;\n // Add computed column headers and top level headers to final row set\n dataRows = multiLevelHeaders ? [topLevelColumnTitles, columnTitles] :\n [columnTitles];\n i = xAxisIndices.length;\n while (i--) { // Start from end to splice in\n xAxisIndex = xAxisIndices[i][0];\n column = xAxisIndices[i][1];\n xAxis = xAxes[xAxisIndex];\n // Sort it by X values\n rowArr.sort(function (// eslint-disable-line no-loop-func\n a, b) {\n return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];\n });\n // Add header row\n xTitle = columnHeaderFormatter(xAxis);\n dataRows[0].splice(column, 0, xTitle);\n if (multiLevelHeaders && dataRows[1]) {\n // If using multi level headers, we just added top level header.\n // Also add for sub level\n dataRows[1].splice(column, 0, xTitle);\n }\n // Add the category column\n rowArr.forEach(function (// eslint-disable-line no-loop-func\n row) {\n let category = row.name;\n if (xAxis && !defined(category)) {\n if (xAxis.dateTime) {\n if (row.x instanceof Date) {\n row.x = row.x.getTime();\n }\n category = time.dateFormat(csvOptions.dateFormat, row.x);\n }\n else if (xAxis.categories) {\n category = pick(xAxis.names[row.x], xAxis.categories[row.x], row.x);\n }\n else {\n category = row.x;\n }\n }\n // Add the X/date/category\n row.splice(column, 0, category);\n });\n }\n dataRows = dataRows.concat(rowArr);\n fireEvent(this, 'exportData', { dataRows: dataRows });\n return dataRows;\n}\n/**\n * Export-data module required. Build a HTML table with the chart's current\n * data.\n *\n * @sample highcharts/export-data/viewdata/\n * View the data from the export menu\n *\n * @function Highcharts.Chart#getTable\n *\n * @param {boolean} [useLocalDecimalPoint]\n * Whether to use the local decimal point as detected from the browser.\n * This makes it easier to export data to Excel in the same locale as the\n * user is.\n *\n * @return {string}\n * HTML representation of the data.\n *\n * @emits Highcharts.Chart#event:afterGetTable\n */\nfunction chartGetTable(useLocalDecimalPoint) {\n const serialize = (node) => {\n if (!node.tagName || node.tagName === '#text') {\n // Text node\n return node.textContent || '';\n }\n const attributes = node.attributes;\n let html = `<${node.tagName}`;\n if (attributes) {\n Object.keys(attributes)\n .forEach((key) => {\n const value = attributes[key];\n html += ` ${key}=\"${value}\"`;\n });\n }\n html += '>';\n html += node.textContent || '';\n (node.children || []).forEach((child) => {\n html += serialize(child);\n });\n html += ``;\n return html;\n };\n const tree = this.getTableAST(useLocalDecimalPoint);\n return serialize(tree);\n}\n/**\n * Get the AST of a HTML table representing the chart data.\n *\n * @private\n *\n * @function Highcharts.Chart#getTableAST\n *\n * @param {boolean} [useLocalDecimalPoint]\n * Whether to use the local decimal point as detected from the browser.\n * This makes it easier to export data to Excel in the same locale as the\n * user is.\n *\n * @return {Highcharts.ASTNode}\n * The abstract syntax tree\n */\nfunction chartGetTableAST(useLocalDecimalPoint) {\n let rowLength = 0;\n const treeChildren = [];\n const options = this.options, decimalPoint = useLocalDecimalPoint ? (1.1).toLocaleString()[1] : '.', useMultiLevelHeaders = pick(options.exporting.useMultiLevelHeaders, true), rows = this.getDataRows(useMultiLevelHeaders), topHeaders = useMultiLevelHeaders ? rows.shift() : null, subHeaders = rows.shift(), \n // Compare two rows for equality\n isRowEqual = function (row1, row2) {\n let i = row1.length;\n if (row2.length === i) {\n while (i--) {\n if (row1[i] !== row2[i]) {\n return false;\n }\n }\n }\n else {\n return false;\n }\n return true;\n }, \n // Get table cell HTML from value\n getCellHTMLFromValue = function (tagName, classes, attributes, value) {\n let textContent = pick(value, ''), className = 'highcharts-text' + (classes ? ' ' + classes : '');\n // Convert to string if number\n if (typeof textContent === 'number') {\n textContent = textContent.toString();\n if (decimalPoint === ',') {\n textContent = textContent.replace('.', decimalPoint);\n }\n className = 'highcharts-number';\n }\n else if (!value) {\n className = 'highcharts-empty';\n }\n attributes = extend({ 'class': className }, attributes);\n return {\n tagName,\n attributes,\n textContent\n };\n }, \n // Get table header markup from row data\n getTableHeaderHTML = function (topheaders, subheaders, rowLength) {\n const theadChildren = [];\n let i = 0, len = rowLength || subheaders && subheaders.length, next, cur, curColspan = 0, rowspan;\n // Clean up multiple table headers. Chart.getDataRows() returns two\n // levels of headers when using multilevel, not merged. We need to\n // merge identical headers, remove redundant headers, and keep it\n // all marked up nicely.\n if (useMultiLevelHeaders &&\n topheaders &&\n subheaders &&\n !isRowEqual(topheaders, subheaders)) {\n const trChildren = [];\n for (; i < len; ++i) {\n cur = topheaders[i];\n next = topheaders[i + 1];\n if (cur === next) {\n ++curColspan;\n }\n else if (curColspan) {\n // Ended colspan\n // Add cur to HTML with colspan.\n trChildren.push(getCellHTMLFromValue('th', 'highcharts-table-topheading', {\n scope: 'col',\n colspan: curColspan + 1\n }, cur));\n curColspan = 0;\n }\n else {\n // Cur is standalone. If it is same as sublevel,\n // remove sublevel and add just toplevel.\n if (cur === subheaders[i]) {\n if (options.exporting.useRowspanHeaders) {\n rowspan = 2;\n delete subheaders[i];\n }\n else {\n rowspan = 1;\n subheaders[i] = '';\n }\n }\n else {\n rowspan = 1;\n }\n const cell = getCellHTMLFromValue('th', 'highcharts-table-topheading', { scope: 'col' }, cur);\n if (rowspan > 1 && cell.attributes) {\n cell.attributes.valign = 'top';\n cell.attributes.rowspan = rowspan;\n }\n trChildren.push(cell);\n }\n }\n theadChildren.push({\n tagName: 'tr',\n children: trChildren\n });\n }\n // Add the subheaders (the only headers if not using multilevels)\n if (subheaders) {\n const trChildren = [];\n for (i = 0, len = subheaders.length; i < len; ++i) {\n if (typeof subheaders[i] !== 'undefined') {\n trChildren.push(getCellHTMLFromValue('th', null, { scope: 'col' }, subheaders[i]));\n }\n }\n theadChildren.push({\n tagName: 'tr',\n children: trChildren\n });\n }\n return {\n tagName: 'thead',\n children: theadChildren\n };\n };\n // Add table caption\n if (options.exporting.tableCaption !== false) {\n treeChildren.push({\n tagName: 'caption',\n attributes: {\n 'class': 'highcharts-table-caption'\n },\n textContent: pick(options.exporting.tableCaption, (options.title.text ?\n options.title.text :\n 'Chart'))\n });\n }\n // Find longest row\n for (let i = 0, len = rows.length; i < len; ++i) {\n if (rows[i].length > rowLength) {\n rowLength = rows[i].length;\n }\n }\n // Add header\n treeChildren.push(getTableHeaderHTML(topHeaders, subHeaders, Math.max(rowLength, subHeaders.length)));\n // Transform the rows to HTML\n const trs = [];\n rows.forEach(function (row) {\n const trChildren = [];\n for (let j = 0; j < rowLength; j++) {\n // Make first column a header too. Especially important for\n // category axes, but also might make sense for datetime? Should\n // await user feedback on this.\n trChildren.push(getCellHTMLFromValue(j ? 'td' : 'th', null, j ? {} : { scope: 'row' }, row[j]));\n }\n trs.push({\n tagName: 'tr',\n children: trChildren\n });\n });\n treeChildren.push({\n tagName: 'tbody',\n children: trs\n });\n const e = {\n tree: {\n tagName: 'table',\n id: `highcharts-data-table-${this.index}`,\n children: treeChildren\n }\n };\n fireEvent(this, 'aftergetTableAST', e);\n return e.tree;\n}\n/**\n * Export-data module required. Hide the data table when visible.\n *\n * @function Highcharts.Chart#hideData\n */\nfunction chartHideData() {\n this.toggleDataTable(false);\n}\n/**\n * @private\n */\nfunction chartToggleDataTable(show) {\n show = pick(show, !this.isDataTableVisible);\n // Create the div\n const createContainer = show && !this.dataTableDiv;\n if (createContainer) {\n this.dataTableDiv = ExportData_doc.createElement('div');\n this.dataTableDiv.className = 'highcharts-data-table';\n // Insert after the chart container\n this.renderTo.parentNode.insertBefore(this.dataTableDiv, this.renderTo.nextSibling);\n }\n // Toggle the visibility\n if (this.dataTableDiv) {\n const style = this.dataTableDiv.style, oldDisplay = style.display;\n style.display = show ? 'block' : 'none';\n // Generate the data table\n if (show) {\n this.dataTableDiv.innerHTML = (highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default()).emptyHTML;\n const ast = new (highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default())([this.getTableAST()]);\n ast.addToDOM(this.dataTableDiv);\n fireEvent(this, 'afterViewData', {\n element: this.dataTableDiv,\n wasHidden: createContainer || oldDisplay !== style.display\n });\n }\n else {\n fireEvent(this, 'afterHideData');\n }\n }\n // Set the flag\n this.isDataTableVisible = show;\n // Change the menu item text\n const exportDivElements = this.exportDivElements, options = this.options.exporting, menuItems = options &&\n options.buttons &&\n options.buttons.contextButton.menuItems, lang = this.options.lang;\n if (options &&\n options.menuItemDefinitions &&\n lang &&\n lang.viewData &&\n lang.hideData &&\n menuItems &&\n exportDivElements) {\n const exportDivElement = exportDivElements[menuItems.indexOf('viewData')];\n if (exportDivElement) {\n highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(exportDivElement, this.isDataTableVisible ? lang.hideData : lang.viewData);\n }\n }\n}\n/**\n * Export-data module required. View the data in a table below the chart.\n *\n * @function Highcharts.Chart#viewData\n *\n * @emits Highcharts.Chart#event:afterViewData\n */\nfunction chartViewData() {\n this.toggleDataTable(true);\n}\n/**\n * @private\n */\nfunction compose(ChartClass, SeriesClass) {\n const chartProto = ChartClass.prototype;\n if (!chartProto.getCSV) {\n const exportingOptions = getOptions().exporting;\n // Add an event listener to handle the showTable option\n addEvent(ChartClass, 'afterViewData', onChartAfterViewData);\n addEvent(ChartClass, 'render', onChartRenderer);\n addEvent(ChartClass, 'destroy', onChartDestroy);\n chartProto.downloadCSV = chartDownloadCSV;\n chartProto.downloadXLS = chartDownloadXLS;\n chartProto.getCSV = chartGetCSV;\n chartProto.getDataRows = chartGetDataRows;\n chartProto.getTable = chartGetTable;\n chartProto.getTableAST = chartGetTableAST;\n chartProto.hideData = chartHideData;\n chartProto.toggleDataTable = chartToggleDataTable;\n chartProto.viewData = chartViewData;\n // Add \"Download CSV\" to the exporting menu.\n // @todo consider move to defaults\n if (exportingOptions) {\n extend(exportingOptions.menuItemDefinitions, {\n downloadCSV: {\n textKey: 'downloadCSV',\n onclick: function () {\n this.downloadCSV();\n }\n },\n downloadXLS: {\n textKey: 'downloadXLS',\n onclick: function () {\n this.downloadXLS();\n }\n },\n viewData: {\n textKey: 'viewData',\n onclick: function () {\n wrapLoading.call(this, this.toggleDataTable);\n }\n }\n });\n if (exportingOptions.buttons &&\n exportingOptions.buttons.contextButton.menuItems) {\n exportingOptions.buttons.contextButton.menuItems.push('separator', 'downloadCSV', 'downloadXLS', 'viewData');\n }\n }\n setOptions(ExportData_ExportDataDefaults);\n const { arearange: AreaRangeSeries, gantt: GanttSeries, map: MapSeries, mapbubble: MapBubbleSeries, treemap: TreemapSeries, xrange: XRangeSeries } = SeriesClass.types;\n if (AreaRangeSeries) {\n AreaRangeSeries.prototype.keyToAxis = {\n low: 'y',\n high: 'y'\n };\n }\n if (GanttSeries) {\n GanttSeries.prototype.exportKey = 'name';\n GanttSeries.prototype.keyToAxis = {\n start: 'x',\n end: 'x'\n };\n }\n if (MapSeries) {\n MapSeries.prototype.exportKey = 'name';\n }\n if (MapBubbleSeries) {\n MapBubbleSeries.prototype.exportKey = 'name';\n }\n if (TreemapSeries) {\n TreemapSeries.prototype.exportKey = 'name';\n }\n if (XRangeSeries) {\n XRangeSeries.prototype.keyToAxis = {\n x2: 'x'\n };\n }\n }\n}\n/**\n * Get a blob object from content, if blob is supported\n *\n * @private\n * @param {string} content\n * The content to create the blob from.\n * @param {string} type\n * The type of the content.\n * @return {string|undefined}\n * The blob object, or undefined if not supported.\n */\nfunction getBlobFromContent(content, type) {\n const nav = ExportData_win.navigator, domurl = ExportData_win.URL || ExportData_win.webkitURL || ExportData_win;\n try {\n // MS specific\n if ((nav.msSaveOrOpenBlob) && ExportData_win.MSBlobBuilder) {\n const blob = new ExportData_win.MSBlobBuilder();\n blob.append(content);\n return blob.getBlob('image/svg+xml');\n }\n return domurl.createObjectURL(new ExportData_win.Blob(['\\uFEFF' + content], // #7084\n { type: type }));\n }\n catch (e) {\n // Ignore\n }\n}\n/**\n * @private\n */\nfunction onChartAfterViewData() {\n const chart = this, dataTableDiv = chart.dataTableDiv, getCellValue = (tr, index) => tr.children[index].textContent, comparer = (index, ascending) => (a, b) => {\n const sort = (v1, v2) => (v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ?\n v1 - v2 :\n v1.toString().localeCompare(v2));\n return sort(getCellValue(ascending ? a : b, index), getCellValue(ascending ? b : a, index));\n };\n if (dataTableDiv &&\n chart.options.exporting &&\n chart.options.exporting.allowTableSorting) {\n const row = dataTableDiv.querySelector('thead tr');\n if (row) {\n row.childNodes.forEach((th) => {\n const table = th.closest('table');\n th.addEventListener('click', function () {\n const rows = [...dataTableDiv.querySelectorAll('tr:not(thead tr)')], headers = [...th.parentNode.children];\n rows.sort(comparer(headers.indexOf(th), chart.ascendingOrderInTable =\n !chart.ascendingOrderInTable)).forEach((tr) => {\n table.appendChild(tr);\n });\n headers.forEach((th) => {\n [\n 'highcharts-sort-ascending',\n 'highcharts-sort-descending'\n ].forEach((className) => {\n if (th.classList.contains(className)) {\n th.classList.remove(className);\n }\n });\n });\n th.classList.add(chart.ascendingOrderInTable ?\n 'highcharts-sort-ascending' :\n 'highcharts-sort-descending');\n });\n });\n }\n }\n}\n/**\n * Handle the showTable option\n * @private\n */\nfunction onChartRenderer() {\n if (this.options &&\n this.options.exporting &&\n this.options.exporting.showTable &&\n !this.options.chart.forExport) {\n this.viewData();\n }\n}\n/**\n * Clean up\n * @private\n */\nfunction onChartDestroy() {\n this.dataTableDiv?.remove();\n}\n/* *\n *\n * Default Export\n *\n * */\nconst ExportData = {\n compose\n};\n/* harmony default export */ const ExportData_ExportData = (ExportData);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * Function callback to execute while data rows are processed for exporting.\n * This allows the modification of data rows before processed into the final\n * format.\n *\n * @callback Highcharts.ExportDataCallbackFunction\n * @extends Highcharts.EventCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * Chart context where the event occurred.\n *\n * @param {Highcharts.ExportDataEventObject} event\n * Event object with data rows that can be modified.\n */\n/**\n * Contains information about the export data event.\n *\n * @interface Highcharts.ExportDataEventObject\n */ /**\n* Contains the data rows for the current export task and can be modified.\n* @name Highcharts.ExportDataEventObject#dataRows\n* @type {Array>}\n*/\n(''); // Keeps doclets above in JS file\n\n;// ./code/es-modules/masters/modules/export-data.src.js\n\n\n\n\n\nconst G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n// Compatibility\nG.dataURLtoBlob = G.dataURLtoBlob || Extensions_DownloadURL.dataURLtoBlob;\nG.downloadURL = G.downloadURL || Extensions_DownloadURL.downloadURL;\n// Compose\nExportData_ExportData.compose(G.Chart, G.Series);\n/* harmony default export */ const export_data_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__660__","__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__","export_data_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","isSafari","win","document","doc","domurl","URL","webkitURL","dataURLtoBlob","dataURL","parts","replace","match","length","atob","ArrayBuffer","Uint8Array","Blob","createObjectURL","binStr","buf","binary","i","charCodeAt","Extensions_DownloadURL","downloadURL","filename","nav","navigator","createElement","String","msSaveOrOpenBlob","userAgent","Error","isOldEdgeBrowser","test","safariBlob","indexOf","download","href","body","appendChild","click","removeChild","open","location","highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_","highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default","ExportData_ExportDataDefaults","exporting","csv","annotations","itemDelimiter","join","columnHeaderFormatter","dateFormat","decimalPoint","lineDelimiter","showTable","useMultiLevelHeaders","useRowspanHeaders","showExportInProgress","lang","downloadCSV","downloadXLS","exportData","annotationHeader","categoryHeader","categoryDatetimeHeader","viewData","hideData","exportInProgress","getOptions","setOptions","ExportData_downloadURL","ExportData_doc","ExportData_win","addEvent","defined","extend","find","fireEvent","isNumber","pick","wrapLoading","fn","showMessage","Boolean","options","timeoutFn","requestAnimationFrame","setTimeout","showLoading","hideLoading","chartDownloadCSV","getCSV","getBlobFromContent","encodeURIComponent","getFilename","chartDownloadXLS","template","getTable","uri","btoa","unescape","chartGetCSV","useLocalDecimalPoint","rows","getDataRows","csvOptions","toLocaleString","forEach","row","val","j","toString","chartGetDataRows","multiLevelHeaders","xAxisIndex","column","hasParallelCoords","hasParallelCoordinates","time","xAxes","xAxis","rowArr","topLevelColumnTitles","columnTitles","exportDataOptions","langOptions","item","keyLength","s","bindAxes","columnTitle","name","topLevelColumnTitle","title","text","dateTime","getCategoryAndDateTimeMap","series","pointArrayMap","pIdx","categoryMap","dateTimeValueAxisMap","axisName","keyToAxis","axis","chart","categories","getPointArray","namedPoints","data","some","y","exportKey","xAxisIndices","dataRows","columnTitleObj","x","xTitle","keys","valueCount","xTaken","requireSorting","categoryAndDatetimeMap","mockSeries","includeInDataExport","isInternal","visible","index","push","autoIncrement","mockPoint","pointClass","applyOptions","apply","hasNames","modifiedKey","pointers","originalKey","xValues","arr","getNestedProperty","sort","b","splice","category","Date","getTime","names","concat","chartGetTable","serialize","node","tagName","textContent","attributes","html","value","children","child","getTableAST","chartGetTableAST","rowLength","treeChildren","topHeaders","shift","subHeaders","isRowEqual","row1","row2","getCellHTMLFromValue","classes","className","tableCaption","len","getTableHeaderHTML","topheaders","subheaders","theadChildren","cur","curColspan","rowspan","trChildren","scope","colspan","cell","valign","Math","max","trs","e","tree","id","chartHideData","toggleDataTable","chartToggleDataTable","show","createContainer","isDataTableVisible","dataTableDiv","renderTo","parentNode","insertBefore","nextSibling","style","oldDisplay","display","innerHTML","emptyHTML","ast","addToDOM","element","wasHidden","exportDivElements","menuItems","buttons","contextButton","menuItemDefinitions","exportDivElement","setElementHTML","chartViewData","content","type","MSBlobBuilder","blob","append","getBlob","onChartAfterViewData","getCellValue","tr","comparer","ascending","v1","v2","isNaN","localeCompare","allowTableSorting","querySelector","childNodes","th","table","closest","addEventListener","querySelectorAll","headers","ascendingOrderInTable","classList","contains","remove","add","onChartRenderer","forExport","onChartDestroy","G","ExportData_ExportData","compose","ChartClass","SeriesClass","chartProto","exportingOptions","textKey","onclick","arearange","AreaRangeSeries","gantt","GanttSeries","map","MapSeries","mapbubble","MapBubbleSeries","treemap","TreemapSeries","xrange","XRangeSeries","types","low","high","start","end","x2","Chart","Series"],"mappings":"CAYA,AAZA;;;;;;;;;;;CAWC,EACA,SAA0CA,CAAI,CAAEC,CAAO,EACpD,AAAmB,UAAnB,OAAOC,SAAwB,AAAkB,UAAlB,OAAOC,OACxCA,OAAOD,OAAO,CAAGD,EAAQD,EAAK,WAAc,CAAEA,EAAK,WAAc,CAAC,GAAM,EACjE,AAAkB,YAAlB,OAAOI,QAAyBA,OAAOC,GAAG,CACjDD,OAAO,iCAAkC,CAAC,wBAAwB,CAAE,SAAUE,CAAI,EAAG,OAAOL,EAAQK,EAAKA,EAAK,GAAM,CAAE,GAC/G,AAAmB,UAAnB,OAAOJ,QACdA,OAAO,CAAC,iCAAiC,CAAGD,EAAQD,EAAK,WAAc,CAAEA,EAAK,WAAc,CAAC,GAAM,EAEnGA,EAAK,UAAa,CAAGC,EAAQD,EAAK,UAAa,CAAEA,EAAK,UAAa,CAAC,GAAM,CAC5E,EAAG,AAAkB,aAAlB,OAAOO,OAAyB,IAAI,CAAGA,OAAQ,CAACC,EAAkCC,IACrE,AAAC,CAAA,KACP,aACA,IAAIC,EAAuB,CAE/B,IACC,AAACP,IAERA,EAAOD,OAAO,CAAGO,CAEX,EAEA,IACC,AAACN,IAERA,EAAOD,OAAO,CAAGM,CAEX,CAEI,EAGIG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,CAAQ,EAEpC,IAAIC,EAAeH,CAAwB,CAACE,EAAS,CACrD,GAAIC,AAAiBC,KAAAA,IAAjBD,EACH,OAAOA,EAAaZ,OAAO,CAG5B,IAAIC,EAASQ,CAAwB,CAACE,EAAS,CAAG,CAGjDX,QAAS,CAAC,CACX,EAMA,OAHAQ,CAAmB,CAACG,EAAS,CAACV,EAAQA,EAAOD,OAAO,CAAEU,GAG/CT,EAAOD,OAAO,AACtB,CAMCU,EAAoBI,CAAC,CAAG,AAACb,IACxB,IAAIc,EAASd,GAAUA,EAAOe,UAAU,CACvC,IAAOf,EAAO,OAAU,CACxB,IAAOA,EAER,OADAS,EAAoBO,CAAC,CAACF,EAAQ,CAAEG,EAAGH,CAAO,GACnCA,CACR,EAMAL,EAAoBO,CAAC,CAAG,CAACjB,EAASmB,KACjC,IAAI,IAAIC,KAAOD,EACXT,EAAoBW,CAAC,CAACF,EAAYC,IAAQ,CAACV,EAAoBW,CAAC,CAACrB,EAASoB,IAC5EE,OAAOC,cAAc,CAACvB,EAASoB,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,CAClC,GAGA,IAAIC,EAAuEvB,EAAoB,KAC3FwB,EAA2FxB,EAAoBI,CAAC,CAACmB,GAoBrH,GAAM,CAAEE,SAAAA,CAAQ,CAAEC,IAAAA,CAAG,CAAEA,IAAK,CAAEC,SAAUC,CAAG,CAAE,CAAE,CAAIJ,IAM7CK,EAASH,EAAII,GAAG,EAAIJ,EAAIK,SAAS,EAAIL,EAe3C,SAASM,EAAcC,CAAO,EAC1B,IAAMC,EAAQD,EACTE,OAAO,CAAC,eAAgB,IACxBC,KAAK,CAAC,yCACX,GAAIF,GACAA,EAAMG,MAAM,CAAG,GACdX,EAAIY,IAAI,EACTZ,EAAIa,WAAW,EACfb,EAAIc,UAAU,EACdd,EAAIe,IAAI,EACPZ,EAAOa,eAAe,CAAG,CAE1B,IAAMC,EAASjB,EAAIY,IAAI,CAACJ,CAAK,CAAC,EAAE,EAAGU,EAAM,IAAIlB,EAAIa,WAAW,CAACI,EAAON,MAAM,EAAGQ,EAAS,IAAInB,EAAIc,UAAU,CAACI,GACzG,IAAK,IAAIE,EAAI,EAAGA,EAAID,EAAOR,MAAM,CAAE,EAAES,EACjCD,CAAM,CAACC,EAAE,CAAGH,EAAOI,UAAU,CAACD,GAElC,OAAOjB,EACFa,eAAe,CAAC,IAAIhB,EAAIe,IAAI,CAAC,CAACI,EAAO,CAAE,CAAE,KAAQX,CAAK,CAAC,EAAE,AAAC,GACnE,CACJ,CAqE6B,IAAMc,EAJf,CAChBhB,cAAAA,EACAiB,YAvDJ,SAAqBhB,CAAO,CAAEiB,CAAQ,EAClC,IAAMC,EAAMzB,EAAI0B,SAAS,CAAE5C,EAAIoB,EAAIyB,aAAa,CAAC,KAGjD,GAAI,AAAmB,UAAnB,OAAOpB,GACP,CAAEA,CAAAA,aAAmBqB,MAAK,GAC1BH,EAAII,gBAAgB,CAAE,CACtBJ,EAAII,gBAAgB,CAACtB,EAASiB,GAC9B,MACJ,CAEA,GADAjB,EAAU,GAAKA,EACXkB,EAAIK,SAAS,CAACnB,MAAM,CAAG,IACvB,MAAM,AAAIoB,MAAM,kBAEpB,IAEAC,EAAmB,YAAYC,IAAI,CAACR,EAAIK,SAAS,EAKjD,GAAII,CAAAA,AAHUnC,GACV,AAAmB,UAAnB,OAAOQ,GACPA,AAA4C,IAA5CA,EAAQ4B,OAAO,CAAC,yBACFH,GAAoBzB,EAAQI,MAAM,CAAG,GAAM,GAErD,CADJJ,CAAAA,EAAUD,EAAcC,IAAY,EAAC,EAEjC,MAAM,AAAIwB,MAAM,6BAIxB,GAAI,AAAsB,KAAA,IAAfjD,EAAEsD,QAAQ,CACjBtD,EAAEuD,IAAI,CAAG9B,EACTzB,EAAEsD,QAAQ,CAAGZ,EACbtB,EAAIoC,IAAI,CAACC,WAAW,CAACzD,GACrBA,EAAE0D,KAAK,GACPtC,EAAIoC,IAAI,CAACG,WAAW,CAAC3D,QAIrB,GAAI,CACA,GAAI,CAACkB,EAAI0C,IAAI,CAACnC,EAAS,SACnB,MAAM,AAAIwB,MAAM,wBAExB,CACA,KAAM,CAEF/B,EAAI2C,QAAQ,CAACN,IAAI,CAAG9B,CACxB,CAER,CASA,EAIA,IAAIqC,EAAuFtE,EAAoB,KAC3GuE,EAA2GvE,EAAoBI,CAAC,CAACkE,GAuQxG,IAAME,EAJR,CACvBC,UA7Oc,CAkCdC,IAAK,CAWDC,YAAa,CAQTC,cAAe,KAWfC,KAAM,CAAA,CACV,EA6BAC,sBAAuB,KAKvBC,WAAY,oBASZC,aAAc,KASdJ,cAAe,KAIfK,cAAe,IACnB,EAaAC,UAAW,CAAA,EAYXC,qBAAsB,CAAA,EAWtBC,kBAAmB,CAAA,EAUnBC,qBAAsB,CAAA,CAC1B,EAqEIC,KAhES,CAOTC,YAAa,eAObC,YAAa,eAObC,WAAY,CAIRC,iBAAkB,cAIlBC,eAAgB,WAIhBC,uBAAwB,UAC5B,EAOAC,SAAU,kBAOVC,SAAU,kBAOVC,iBAAkB,cACtB,CASA,EAgDM,CAAEC,WAAAA,CAAU,CAAEC,WAAAA,CAAU,CAAE,CAAIzE,IAE9B,CAAEyB,YAAaiD,CAAsB,CAAE,CAAGlD,EAG1C,CAAEpB,IAAKuE,CAAc,CAAEzE,IAAK0E,CAAc,CAAE,CAAI5E,IAEhD,CAAE6E,SAAAA,CAAQ,CAAEC,QAAAA,CAAO,CAAEC,OAAAA,CAAM,CAAEC,KAAAA,CAAI,CAAEC,UAAAA,CAAS,CAAEC,SAAAA,CAAQ,CAAEC,KAAAA,CAAI,CAAE,CAAInF,IAaxE,SAASoF,EAAYC,CAAE,EACnB,IAAMC,EAAcC,CAAAA,CAAQ,IAAI,CAACC,OAAO,CAACvC,SAAS,EAAEY,qBAE9C4B,EAAYb,EAAec,qBAAqB,EAAIC,WAE1DF,EAAU,KACNH,GAAe,IAAI,CAACM,WAAW,CAAC,IAAI,CAACJ,OAAO,CAAC1B,IAAI,CAACS,gBAAgB,EAClEkB,EAAU,KACN,GAAI,CACAJ,EAAGzF,IAAI,CAAC,IAAI,CAChB,QACQ,CACJ0F,GAAe,IAAI,CAACO,WAAW,EACnC,CACJ,EACJ,EACJ,CAWA,SAASC,IACLV,EAAYxF,IAAI,CAAC,IAAI,CAAE,KACnB,IAAMsD,EAAM,IAAI,CAAC6C,MAAM,CAAC,CAAA,GACxBrB,EAAuBsB,EAAmB9C,EAAK,aAC3C,uBAAyB+C,mBAAmB/C,GAAM,IAAI,CAACgD,WAAW,GAAK,OAC/E,EACJ,CAWA,SAASC,IACLf,EAAYxF,IAAI,CAAC,IAAI,CAAE,KACnB,IAAqDwG,EAAW,qlBAe5D,IAAI,CAACC,QAAQ,CAAC,CAAA,GACd,iBAGJ3B,EAAuBsB,EAAmBI,EAAU,6BAChDE,AApBQ,wCAiBD1B,EAAe2B,IAAI,CAACC,SAASP,mBAGvBG,KAAW,IAAI,CAACF,WAAW,GAAK,OACrD,EACJ,CAcA,SAASO,EAAYC,CAAoB,EACrC,IAAIxD,EAAM,GACJyD,EAAO,IAAI,CAACC,WAAW,GAAIC,EAAa,IAAI,CAACrB,OAAO,CAACvC,SAAS,CAACC,GAAG,CAAEM,EAAe2B,EAAK0B,EAAWrD,YAAY,CAAEqD,AAA6B,MAA7BA,EAAWzD,aAAa,EAAYsD,EACvJ,AAAC,IAAKI,cAAc,EAAE,CAAC,EAAE,CACzB,KAEJ1D,EAAgB+B,EAAK0B,EAAWzD,aAAa,CAAEI,AAAiB,MAAjBA,EAAuB,IAAM,KAE5EC,EAAgBoD,EAAWpD,aAAa,CA6BxC,OA3BAkD,EAAKI,OAAO,CAAC,CAACC,EAAK1F,KACf,IAAI2F,EAAM,GAAIC,EAAIF,EAAInG,MAAM,CAC5B,KAAOqG,KAEgB,UAAf,MADJD,CAAAA,EAAMD,CAAG,CAACE,EAAE,AAAD,GAEPD,CAAAA,EAAM,CAAC,CAAC,EAAEA,EAAI,CAAC,CAAC,AAAD,EAEA,UAAf,OAAOA,GACHzD,AAAiB,MAAjBA,GACAyD,CAAAA,EAAMA,EAAIE,QAAQ,GAAGxG,OAAO,CAAC,IAAK6C,EAAY,EAGtDwD,CAAG,CAACE,EAAE,CAAGD,CAObD,CAAAA,EAAInG,MAAM,CAAG8F,EAAK9F,MAAM,CAAG8F,CAAI,CAAC,EAAE,CAAC9F,MAAM,CAAG,EAE5CqC,GAAO8D,EAAI3D,IAAI,CAACD,GAEZ9B,EAAIqF,EAAK9F,MAAM,CAAG,GAClBqC,CAAAA,GAAOO,CAAY,CAE3B,GACOP,CACX,CAiBA,SAASkE,EAAiBC,CAAiB,MAmLnCC,EAAYC,EAlLhB,IAAMC,EAAoB,IAAI,CAACC,sBAAsB,CAAEC,EAAO,IAAI,CAACA,IAAI,CAAEb,EAAc,AAAC,IAAI,CAACrB,OAAO,CAACvC,SAAS,EAAI,IAAI,CAACuC,OAAO,CAACvC,SAAS,CAACC,GAAG,EAAK,CAAC,EAAIyE,EAAQ,IAAI,CAACC,KAAK,CAAEjB,EAAO,CAAC,EAAGkB,EAAS,EAAE,CAAEC,EAAuB,EAAE,CAAEC,EAAe,EAAE,CAAmCC,EAAoBC,AAAvC,IAAI,CAACzC,OAAO,CAAC1B,IAAI,CAAkCG,UAAU,CAAEE,EAAiB6D,EAAkB7D,cAAc,CAAEC,EAAyB4D,EAAkB5D,sBAAsB,CAEjbd,EAAwB,SAAU4E,CAAI,CAAEhJ,CAAG,CAAEiJ,CAAS,EAClD,GAAItB,EAAWvD,qBAAqB,CAAE,CAClC,IAAM8E,EAAIvB,EAAWvD,qBAAqB,CAAC4E,EAAMhJ,EAAKiJ,GACtD,GAAIC,AAAM,CAAA,IAANA,EACA,OAAOA,CAEf,QACA,AAAKF,EAGAA,EAAKG,QAAQ,CAMdhB,EACO,CACHiB,YAAaH,EAAY,EACrBjJ,EACAgJ,EAAKK,IAAI,CACbC,oBAAqBN,EAAKK,IAAI,AAClC,EAEGL,EAAKK,IAAI,CAAIJ,CAAAA,EAAY,EAAI,KAAOjJ,EAAM,IAAM,EAAC,EAb7C,AAACgJ,EAAK1C,OAAO,CAACiD,KAAK,EACtBP,EAAK1C,OAAO,CAACiD,KAAK,CAACC,IAAI,EAAMR,CAAAA,EAAKS,QAAQ,CAC1CvE,EACAD,CAAa,EANVA,CAiBf,EAEAyE,EAA4B,SAAUC,CAAM,CAAEC,CAAa,CAAEC,CAAI,EAC7D,IAAMC,EAAc,CAAC,EAAGC,EAAuB,CAAC,EAYhD,OAXAH,EAAc/B,OAAO,CAAC,SAAUtH,CAAI,EAChC,IAAMyJ,EAAW,AAAC,CAAA,AAACL,EAAOM,SAAS,EAAIN,EAAOM,SAAS,CAAC1J,EAAK,EACzDA,CAAG,EAAK,OAGZ2J,EAAOlE,EAAS6D,GACZF,EAAOQ,KAAK,CAACH,EAAS,CAACH,EAAK,CAC5BF,CAAM,CAACK,EAAS,AACpBF,CAAAA,CAAW,CAACvJ,EAAK,CAAG,AAAC2J,GAAQA,EAAKE,UAAU,EAAK,EAAE,CACnDL,CAAoB,CAACxJ,EAAK,CAAI2J,GAAQA,EAAKT,QAAQ,AACvD,GACO,CACHK,YAAaA,EACbC,qBAAsBA,CAC1B,CACJ,EAGAM,EAAgB,SAAUV,CAAM,CAAEjB,CAAK,EACnC,IAAMkB,EAAgBD,EAAOC,aAAa,EAAI,CAAC,IAAI,QAGnD,AAAIU,AAH+DX,EAAOY,IAAI,CAACC,IAAI,CAAC,AAAC3K,GAAM,AAAgB,KAAA,IAARA,EAAE4K,CAAC,EAAqB5K,EAAEwJ,IAAI,GAI7HX,GACA,CAACA,EAAM0B,UAAU,EACjBT,AAAqB,SAArBA,EAAOe,SAAS,CACT,CAAC,OAAQd,EAAc,CAE3BA,CACX,EAAGe,EAAe,EAAE,CAChBjC,EAAOkC,EAAUC,EAAgBzI,EAAI,EACzC0I,EAAGC,EA+GH,IAAKD,KA9GL,IAAI,CAACnB,MAAM,CAAC9B,OAAO,CAAC,SAAU8B,CAAM,EAChC,IAAMqB,EAAOrB,EAAOrD,OAAO,CAAC0E,IAAI,CAAEtC,EAAQiB,EAAOjB,KAAK,CAAEkB,EAAgBoB,GAAQX,EAAcV,EAAQjB,GAAQuC,EAAarB,EAAcjI,MAAM,CAAEuJ,EAAS,CAACvB,EAAOwB,cAAc,EAAI,CAAC,EAAG/C,EAAaK,EAAMtF,OAAO,CAACuF,GAC/M0C,EAAyB1B,EAA0BC,EAAQC,GAAgByB,EAAYrD,EAC3F,GAAI2B,AAAuC,CAAA,IAAvCA,EAAOrD,OAAO,CAACgF,mBAAmB,EAClC,CAAC3B,EAAOrD,OAAO,CAACiF,UAAU,EAC1B5B,AAAmB,CAAA,IAAnBA,EAAO6B,OAAO,CAChB,CAYE,IARK1F,EAAK6E,EAAc,SAAUc,CAAK,EACnC,OAAOA,CAAK,CAAC,EAAE,GAAKrD,CACxB,IACIuC,EAAae,IAAI,CAAC,CAACtD,EAAYhG,EAAE,EAIrC4F,EAAI,EACGA,EAAIiD,GACPJ,EAAiBzG,EAAsBuF,EAAQC,CAAa,CAAC5B,EAAE,CAAE4B,EAAcjI,MAAM,EACrFkH,EAAa6C,IAAI,CAACb,EAAezB,WAAW,EAAIyB,GAC5C1C,GACAS,EAAqB8C,IAAI,CAACb,EAAevB,mBAAmB,EACxDuB,GAER7C,IAEJqD,EAAa,CACTlB,MAAOR,EAAOQ,KAAK,CACnBwB,cAAehC,EAAOgC,aAAa,CACnCrF,QAASqD,EAAOrD,OAAO,CACvBsD,cAAeD,EAAOC,aAAa,CACnC6B,MAAO9B,EAAO8B,KAAK,AACvB,EAGA9B,EAAOrD,OAAO,CAACiE,IAAI,CAAC1C,OAAO,CAAC,SAAkBvB,CAAO,CAAEuD,CAAI,MAEnD7J,EAAKO,EAAMwH,EADf,IAAM6D,EAAY,CAAEjC,OAAQ0B,CAAW,EAInC/C,GACA8C,CAAAA,EAAyB1B,EAA0BC,EAAQC,EAAeC,EAAI,EAElFF,EAAOkC,UAAU,CAACrL,SAAS,CAACsL,YAAY,CAACC,KAAK,CAACH,EAAW,CAACtF,EAAQ,EACnE,IAAM+C,EAAOM,EAAOY,IAAI,CAACV,EAAK,EAAIF,EAAOY,IAAI,CAACV,EAAK,CAACR,IAAI,CAexD,GAdArJ,EAAM,AAAC4L,CAAAA,EAAUd,CAAC,EAAI,EAAC,EAAK,IAAMzB,EAClCrB,EAAI,EAEA,CAAA,CAACU,GACDiB,AAAqB,SAArBA,EAAOe,SAAS,EAChB,AAAC,CAACpC,GAAqBI,GAASA,EAAMsD,QAAQ,EAAK3C,CAAG,GACtDrJ,CAAAA,EAAMqJ,CAAG,EAET6B,IACIA,CAAM,CAAClL,EAAI,EACXA,CAAAA,GAAO,IAAM6J,CAAG,EAEpBqB,CAAM,CAAClL,EAAI,CAAG,CAAA,GAEbyH,CAAI,CAACzH,EAAI,CAcT,CAGD,IAAMiM,EAAc,CAAC,EAAEjM,EAAI,CAAC,EAAEyH,CAAI,CAACzH,EAAI,CAACkM,QAAQ,CAACvC,EAAO8B,KAAK,CAAC,CAAC,CAAC,CAAEU,EAAcnM,CAC5EyH,CAAAA,CAAI,CAACzH,EAAI,CAACkM,QAAQ,CAACvC,EAAO8B,KAAK,CAAC,GAC3BhE,CAAI,CAACwE,EAAY,GAClBxE,CAAI,CAACwE,EAAY,CAAG,EAAE,CACtBxE,CAAI,CAACwE,EAAY,CAACG,OAAO,CAAG,EAAE,CAC9B3E,CAAI,CAACwE,EAAY,CAACC,QAAQ,CAAG,EAAE,EAEnClM,EAAMiM,GAEVxE,CAAI,CAAC0E,EAAY,CAACD,QAAQ,CAACvC,EAAO8B,KAAK,CAAC,EAAI,CAChD,KA3BgB,CACZhE,CAAI,CAACzH,EAAI,CAAG,EAAE,CACdyH,CAAI,CAACzH,EAAI,CAACoM,OAAO,CAAG,EAAE,CAEtB,IAAMC,EAAM,EAAE,CACd,IAAK,IAAIjK,EAAI,EAAGA,EAAIuH,EAAOQ,KAAK,CAACR,MAAM,CAAChI,MAAM,CAAES,IAC5CiK,CAAG,CAACjK,EAAE,CAAG,CAKbqF,CAAAA,CAAI,CAACzH,EAAI,CAACkM,QAAQ,CAAGG,EACrB5E,CAAI,CAACzH,EAAI,CAACkM,QAAQ,CAACvC,EAAO8B,KAAK,CAAC,CAAG,CACvC,CAkBA,IAHAhE,CAAI,CAACzH,EAAI,CAAC8K,CAAC,CAAGc,EAAUd,CAAC,CACzBrD,CAAI,CAACzH,EAAI,CAACqJ,IAAI,CAAGA,EACjB5B,CAAI,CAACzH,EAAI,CAACoM,OAAO,CAAChE,EAAW,CAAGwD,EAAUd,CAAC,CACpC9C,EAAIiD,GACP1K,EAAOqJ,CAAa,CAAC5B,EAAE,CACvBD,EAAM4B,EAAOkC,UAAU,CAACrL,SAAS,CAAC8L,iBAAiB,CAACP,KAAK,CAACH,EAAW,CAACrL,EAAK,EAC3EkH,CAAI,CAACzH,EAAI,CAACoC,EAAI4F,EAAE,CAAG/B,EAEnBmF,EAAuBtB,WAAW,CAACvJ,EAAK,CAACwH,EAAI,CAE7CqD,EAAuBrB,oBAAoB,CAACxJ,EAAK,CAC7CiI,EAAKnE,UAAU,CAACsD,EAAWtD,UAAU,CAAE0D,GACvC,KAEJA,GACAC,GAER,GACA5F,GAAQ4F,CACZ,CACJ,GAEUP,EACFvH,OAAOO,cAAc,CAACC,IAAI,CAAC+G,EAAMqD,IACjCnC,EAAO+C,IAAI,CAACjE,CAAI,CAACqD,EAAE,EAQ3B,IAHAF,EAAWzC,EAAoB,CAACS,EAAsBC,EAAa,CAC/D,CAACA,EAAa,CAClBzG,EAAIuI,EAAahJ,MAAM,CAChBS,KACHgG,EAAauC,CAAY,CAACvI,EAAE,CAAC,EAAE,CAC/BiG,EAASsC,CAAY,CAACvI,EAAE,CAAC,EAAE,CAC3BsG,EAAQD,CAAK,CAACL,EAAW,CAEzBO,EAAO4D,IAAI,CAAC,SACZzM,CAAC,CAAE0M,CAAC,EACA,OAAO1M,EAAEsM,OAAO,CAAChE,EAAW,CAAGoE,EAAEJ,OAAO,CAAChE,EAAW,AACxD,GAEA2C,EAAS3G,EAAsBsE,GAC/BkC,CAAQ,CAAC,EAAE,CAAC6B,MAAM,CAACpE,EAAQ,EAAG0C,GAC1B5C,GAAqByC,CAAQ,CAAC,EAAE,EAGhCA,CAAQ,CAAC,EAAE,CAAC6B,MAAM,CAACpE,EAAQ,EAAG0C,GAGlCpC,EAAOd,OAAO,CAAC,SACfC,CAAG,EACC,IAAI4E,EAAW5E,EAAIuB,IAAI,CACnBX,GAAS,CAAC9C,EAAQ8G,KACdhE,EAAMe,QAAQ,EACV3B,EAAIgD,CAAC,YAAY6B,MACjB7E,CAAAA,EAAIgD,CAAC,CAAGhD,EAAIgD,CAAC,CAAC8B,OAAO,EAAC,EAE1BF,EAAWlE,EAAKnE,UAAU,CAACsD,EAAWtD,UAAU,CAAEyD,EAAIgD,CAAC,GAGvD4B,EADKhE,EAAM0B,UAAU,CACVnE,EAAKyC,EAAMmE,KAAK,CAAC/E,EAAIgD,CAAC,CAAC,CAAEpC,EAAM0B,UAAU,CAACtC,EAAIgD,CAAC,CAAC,CAAEhD,EAAIgD,CAAC,EAGvDhD,EAAIgD,CAAC,EAIxBhD,EAAI2E,MAAM,CAACpE,EAAQ,EAAGqE,EAC1B,GAIJ,OADA3G,EAAU,IAAI,CAAE,aAAc,CAAE6E,SADhCA,EAAWA,EAASkC,MAAM,CAACnE,EACwB,GAC5CiC,CACX,CAoBA,SAASmC,EAAcvF,CAAoB,EACvC,IAAMwF,EAAY,AAACC,IACf,GAAI,CAACA,EAAKC,OAAO,EAAID,AAAiB,UAAjBA,EAAKC,OAAO,CAE7B,OAAOD,EAAKE,WAAW,EAAI,GAE/B,IAAMC,EAAaH,EAAKG,UAAU,CAC9BC,EAAO,CAAC,CAAC,EAAEJ,EAAKC,OAAO,CAAC,CAAC,CAc7B,OAbIE,GACAlN,OAAO8K,IAAI,CAACoC,GACPvF,OAAO,CAAC,AAAC7H,IACV,IAAMsN,EAAQF,CAAU,CAACpN,EAAI,CAC7BqN,GAAQ,CAAC,CAAC,EAAErN,EAAI,EAAE,EAAEsN,EAAM,CAAC,CAAC,AAChC,GAEJD,GAAQ,IACRA,GAAQJ,EAAKE,WAAW,EAAI,GAC5B,AAACF,CAAAA,EAAKM,QAAQ,EAAI,EAAE,AAAD,EAAG1F,OAAO,CAAC,AAAC2F,IAC3BH,GAAQL,EAAUQ,EACtB,GACAH,GAAQ,CAAC,EAAE,EAAEJ,EAAKC,OAAO,CAAC,CAAC,CAAC,AAEhC,EAEA,OAAOF,EADM,IAAI,CAACS,WAAW,CAACjG,GAElC,CAgBA,SAASkG,EAAiBlG,CAAoB,EAC1C,IAAImG,EAAY,EACVC,EAAe,EAAE,CACjBtH,EAAU,IAAI,CAACA,OAAO,CAAEhC,EAAekD,EAAuB,AAAC,IAAKI,cAAc,EAAE,CAAC,EAAE,CAAG,IAAKnD,EAAuBwB,EAAKK,EAAQvC,SAAS,CAACU,oBAAoB,CAAE,CAAA,GAAOgD,EAAO,IAAI,CAACC,WAAW,CAACjD,GAAuBoJ,EAAapJ,EAAuBgD,EAAKqG,KAAK,GAAK,KAAMC,EAAatG,EAAKqG,KAAK,GAE/SE,EAAa,SAAUC,CAAI,CAAEC,CAAI,EAC7B,IAAI9L,EAAI6L,EAAKtM,MAAM,CACnB,GAAIuM,EAAKvM,MAAM,GAAKS,EAQhB,MAAO,CAAA,EAPP,KAAOA,KACH,GAAI6L,CAAI,CAAC7L,EAAE,GAAK8L,CAAI,CAAC9L,EAAE,CACnB,MAAO,CAAA,EAOnB,MAAO,CAAA,CACX,EAEA+L,EAAuB,SAAUjB,CAAO,CAAEkB,CAAO,CAAEhB,CAAU,CAAEE,CAAK,EAChE,IAAIH,EAAclH,EAAKqH,EAAO,IAAKe,EAAY,kBAAqBD,CAAAA,EAAU,IAAMA,EAAU,EAAC,EAa/F,MAXI,AAAuB,UAAvB,OAAOjB,GACPA,EAAcA,EAAYlF,QAAQ,GACb,MAAjB3D,GACA6I,CAAAA,EAAcA,EAAY1L,OAAO,CAAC,IAAK6C,EAAY,EAEvD+J,EAAY,qBAENf,GACNe,CAAAA,EAAY,kBAAiB,EAG1B,CACHnB,QAAAA,EACAE,WAHJA,EAAavH,EAAO,CAAE,MAASwI,CAAU,EAAGjB,GAIxCD,YAAAA,CACJ,CACJ,CA6EuC,EAAA,IAAnC7G,EAAQvC,SAAS,CAACuK,YAAY,EAC9BV,EAAalC,IAAI,CAAC,CACdwB,QAAS,UACTE,WAAY,CACR,MAAS,0BACb,EACAD,YAAalH,EAAKK,EAAQvC,SAAS,CAACuK,YAAY,CAAGhI,EAAQiD,KAAK,CAACC,IAAI,CACjElD,EAAQiD,KAAK,CAACC,IAAI,CAClB,QACR,GAGJ,IAAK,IAAIpH,EAAI,EAAGmM,EAAM9G,EAAK9F,MAAM,CAAES,EAAImM,EAAK,EAAEnM,EACtCqF,CAAI,CAACrF,EAAE,CAACT,MAAM,CAAGgM,GACjBA,CAAAA,EAAYlG,CAAI,CAACrF,EAAE,CAACT,MAAM,AAAD,EAIjCiM,EAAalC,IAAI,CAAC8C,AA7FG,SAAUC,CAAU,CAAEC,CAAU,CAAEf,CAAS,EAC5D,IAAMgB,EAAgB,EAAE,CACpBvM,EAAI,EAAGmM,EAAMZ,GAAae,GAAcA,EAAW/M,MAAM,CAAQiN,EAAKC,EAAa,EAAGC,EAK1F,GAAIrK,GACAgK,GACAC,GACA,CAACV,EAAWS,EAAYC,GAAa,CACrC,IAAMK,EAAa,EAAE,CACrB,KAAO3M,EAAImM,EAAK,EAAEnM,EAGd,GAFAwM,CAAAA,EAAMH,CAAU,CAACrM,EAAE,AAAD,IACXqM,CAAU,CAACrM,EAAI,EAAE,CAEpB,EAAEyM,OAED,GAAIA,EAGLE,EAAWrD,IAAI,CAACyC,EAAqB,KAAM,8BAA+B,CACtEa,MAAO,MACPC,QAASJ,EAAa,CAC1B,EAAGD,IACHC,EAAa,MAEZ,CAGGD,IAAQF,CAAU,CAACtM,EAAE,CACjBkE,EAAQvC,SAAS,CAACW,iBAAiB,EACnCoK,EAAU,EACV,OAAOJ,CAAU,CAACtM,EAAE,GAGpB0M,EAAU,EACVJ,CAAU,CAACtM,EAAE,CAAG,IAIpB0M,EAAU,EAEd,IAAMI,EAAOf,EAAqB,KAAM,8BAA+B,CAAEa,MAAO,KAAM,EAAGJ,GACrFE,EAAU,GAAKI,EAAK9B,UAAU,GAC9B8B,EAAK9B,UAAU,CAAC+B,MAAM,CAAG,MACzBD,EAAK9B,UAAU,CAAC0B,OAAO,CAAGA,GAE9BC,EAAWrD,IAAI,CAACwD,EACpB,CAEJP,EAAcjD,IAAI,CAAC,CACfwB,QAAS,KACTK,SAAUwB,CACd,EACJ,CAEA,GAAIL,EAAY,CACZ,IAAMK,EAAa,EAAE,CACrB,IAAK3M,EAAI,EAAGmM,EAAMG,EAAW/M,MAAM,CAAES,EAAImM,EAAK,EAAEnM,EACf,KAAA,IAAlBsM,CAAU,CAACtM,EAAE,EACpB2M,EAAWrD,IAAI,CAACyC,EAAqB,KAAM,KAAM,CAAEa,MAAO,KAAM,EAAGN,CAAU,CAACtM,EAAE,GAGxFuM,EAAcjD,IAAI,CAAC,CACfwB,QAAS,KACTK,SAAUwB,CACd,EACJ,CACA,MAAO,CACH7B,QAAS,QACTK,SAAUoB,CACd,CACJ,EAoBqCd,EAAYE,EAAYqB,KAAKC,GAAG,CAAC1B,EAAWI,EAAWpM,MAAM,IAElG,IAAM2N,EAAM,EAAE,CACd7H,EAAKI,OAAO,CAAC,SAAUC,CAAG,EACtB,IAAMiH,EAAa,EAAE,CACrB,IAAK,IAAI/G,EAAI,EAAGA,EAAI2F,EAAW3F,IAI3B+G,EAAWrD,IAAI,CAACyC,EAAqBnG,EAAI,KAAO,KAAM,KAAMA,EAAI,CAAC,EAAI,CAAEgH,MAAO,KAAM,EAAGlH,CAAG,CAACE,EAAE,GAEjGsH,EAAI5D,IAAI,CAAC,CACLwB,QAAS,KACTK,SAAUwB,CACd,EACJ,GACAnB,EAAalC,IAAI,CAAC,CACdwB,QAAS,QACTK,SAAU+B,CACd,GACA,IAAMC,EAAI,CACNC,KAAM,CACFtC,QAAS,QACTuC,GAAI,CAAC,sBAAsB,EAAE,IAAI,CAAChE,KAAK,CAAC,CAAC,CACzC8B,SAAUK,CACd,CACJ,EAEA,OADA7H,EAAU,IAAI,CAAE,mBAAoBwJ,GAC7BA,EAAEC,IAAI,AACjB,CAMA,SAASE,IACL,IAAI,CAACC,eAAe,CAAC,CAAA,EACzB,CAIA,SAASC,EAAqBC,CAAI,EAG9B,IAAMC,EAAkBD,AAFxBA,CAAAA,EAAO5J,EAAK4J,EAAM,CAAC,IAAI,CAACE,kBAAkB,CAAA,GAEV,CAAC,IAAI,CAACC,YAAY,CAQlD,GAPIF,IACA,IAAI,CAACE,YAAY,CAAGvK,EAAe9C,aAAa,CAAC,OACjD,IAAI,CAACqN,YAAY,CAAC3B,SAAS,CAAG,wBAE9B,IAAI,CAAC4B,QAAQ,CAACC,UAAU,CAACC,YAAY,CAAC,IAAI,CAACH,YAAY,CAAE,IAAI,CAACC,QAAQ,CAACG,WAAW,GAGlF,IAAI,CAACJ,YAAY,CAAE,CACnB,IAAMK,EAAQ,IAAI,CAACL,YAAY,CAACK,KAAK,CAAEC,EAAaD,EAAME,OAAO,AACjEF,CAAAA,EAAME,OAAO,CAAGV,EAAO,QAAU,OAE7BA,GACA,IAAI,CAACG,YAAY,CAACQ,SAAS,CAAG,AAAC3M,IAA+F4M,SAAS,CAEvIC,AADY,GAAK7M,CAAAA,GAA4F,EAAG,CAAC,IAAI,CAAC4J,WAAW,GAAG,EAChIkD,QAAQ,CAAC,IAAI,CAACX,YAAY,EAC9BjK,EAAU,IAAI,CAAE,gBAAiB,CAC7B6K,QAAS,IAAI,CAACZ,YAAY,CAC1Ba,UAAWf,GAAmBQ,IAAeD,EAAME,OAAO,AAC9D,IAGAxK,EAAU,IAAI,CAAE,gBAExB,CAEA,IAAI,CAACgK,kBAAkB,CAAGF,EAE1B,IAAMiB,EAAoB,IAAI,CAACA,iBAAiB,CAAExK,EAAU,IAAI,CAACA,OAAO,CAACvC,SAAS,CAAEgN,EAAYzK,GAC5FA,EAAQ0K,OAAO,EACf1K,EAAQ0K,OAAO,CAACC,aAAa,CAACF,SAAS,CAAEnM,EAAO,IAAI,CAAC0B,OAAO,CAAC1B,IAAI,CACrE,GAAI0B,GACAA,EAAQ4K,mBAAmB,EAC3BtM,GACAA,EAAKO,QAAQ,EACbP,EAAKQ,QAAQ,EACb2L,GACAD,EAAmB,CACnB,IAAMK,EAAmBL,CAAiB,CAACC,EAAU5N,OAAO,CAAC,YAAY,CACrEgO,GACAtN,IAA8FuN,cAAc,CAACD,EAAkB,IAAI,CAACpB,kBAAkB,CAAGnL,EAAKQ,QAAQ,CAAGR,EAAKO,QAAQ,CAE9L,CACJ,CAQA,SAASkM,IACL,IAAI,CAAC1B,eAAe,CAAC,CAAA,EACzB,CA2FA,SAAS7I,EAAmBwK,CAAO,CAAEC,CAAI,EACrC,IAAM9O,EAAMiD,EAAehD,SAAS,CAAEvB,EAASuE,EAAetE,GAAG,EAAIsE,EAAerE,SAAS,EAAIqE,EACjG,GAAI,CAEA,GAAI,AAACjD,EAAII,gBAAgB,EAAK6C,EAAe8L,aAAa,CAAE,CACxD,IAAMC,EAAO,IAAI/L,EAAe8L,aAAa,CAE7C,OADAC,EAAKC,MAAM,CAACJ,GACLG,EAAKE,OAAO,CAAC,gBACxB,CACA,OAAOxQ,EAAOa,eAAe,CAAC,IAAI0D,EAAe3D,IAAI,CAAC,CAAC,SAAWuP,EAAQ,CAC1E,CAAEC,KAAMA,CAAK,GACjB,CACA,MAAOhC,EAAG,CAEV,CACJ,CAIA,SAASqC,IACL,IAAMzH,EAAQ,IAAI,CAAE6F,EAAe7F,EAAM6F,YAAY,CAAE6B,EAAe,CAACC,EAAIrG,IAAUqG,EAAGvE,QAAQ,CAAC9B,EAAM,CAAC0B,WAAW,CAAE4E,EAAW,CAACtG,EAAOuG,IAAc,CAAClS,EAAG0M,SACxIyF,EAAIC,EAGlB,OAHcD,EAGFJ,EAAaG,EAAYlS,EAAI0M,EAAGf,GAH1ByG,EAGkCL,EAAaG,EAAYxF,EAAI1M,EAAG2L,GAH1DwG,AAAO,KAAPA,GAAaC,AAAO,KAAPA,GAAcC,MAAMF,IAAQE,MAAMD,GAErED,EAAGhK,QAAQ,GAAGmK,aAAa,CAACF,GAD5BD,EAAKC,CAGb,EACA,GAAIlC,GACA7F,EAAM7D,OAAO,CAACvC,SAAS,EACvBoG,EAAM7D,OAAO,CAACvC,SAAS,CAACsO,iBAAiB,CAAE,CAC3C,IAAMvK,EAAMkI,EAAasC,aAAa,CAAC,YACnCxK,GACAA,EAAIyK,UAAU,CAAC1K,OAAO,CAAC,AAAC2K,IACpB,IAAMC,EAAQD,EAAGE,OAAO,CAAC,SACzBF,EAAGG,gBAAgB,CAAC,QAAS,WACzB,IAAMlL,EAAO,IAAIuI,EAAa4C,gBAAgB,CAAC,oBAAoB,CAAEC,EAAU,IAAIL,EAAGtC,UAAU,CAAC3C,QAAQ,CAAC,CAC1G9F,EAAK8E,IAAI,CAACwF,EAASc,EAAQ1P,OAAO,CAACqP,GAAKrI,EAAM2I,qBAAqB,CAC/D,CAAC3I,EAAM2I,qBAAqB,GAAGjL,OAAO,CAAC,AAACiK,IACxCW,EAAMlP,WAAW,CAACuO,EACtB,GACAe,EAAQhL,OAAO,CAAC,AAAC2K,IACb,CACI,4BACA,6BACH,CAAC3K,OAAO,CAAC,AAACwG,IACHmE,EAAGO,SAAS,CAACC,QAAQ,CAAC3E,IACtBmE,EAAGO,SAAS,CAACE,MAAM,CAAC5E,EAE5B,EACJ,GACAmE,EAAGO,SAAS,CAACG,GAAG,CAAC/I,EAAM2I,qBAAqB,CACxC,4BACA,6BACR,EACJ,EAER,CACJ,CAKA,SAASK,IACD,IAAI,CAAC7M,OAAO,EACZ,IAAI,CAACA,OAAO,CAACvC,SAAS,EACtB,IAAI,CAACuC,OAAO,CAACvC,SAAS,CAACS,SAAS,EAChC,CAAC,IAAI,CAAC8B,OAAO,CAAC6D,KAAK,CAACiJ,SAAS,EAC7B,IAAI,CAACjO,QAAQ,EAErB,CAKA,SAASkO,IACL,IAAI,CAACrD,YAAY,EAAEiD,QACvB,CA8CA,IAAMK,EAAKxS,GAEXwS,CAAAA,EAAEhS,aAAa,CAAGgS,EAAEhS,aAAa,EAAIgB,EAAuBhB,aAAa,CACzEgS,EAAE/Q,WAAW,CAAG+Q,EAAE/Q,WAAW,EAAID,EAAuBC,WAAW,CAEnEgR,AA7CmB,CAAA,CACfC,QAzKJ,SAAiBC,CAAU,CAAEC,CAAW,EACpC,IAAMC,EAAaF,EAAWjT,SAAS,CACvC,GAAI,CAACmT,EAAW9M,MAAM,CAAE,CACpB,IAAM+M,EAAmBtO,IAAavB,SAAS,CAE/C4B,EAAS8N,EAAY,gBAAiB7B,GACtCjM,EAAS8N,EAAY,SAAUN,GAC/BxN,EAAS8N,EAAY,UAAWJ,GAChCM,EAAW9O,WAAW,CAAG+B,EACzB+M,EAAW7O,WAAW,CAAGmC,EACzB0M,EAAW9M,MAAM,CAAGU,EACpBoM,EAAWjM,WAAW,CAAGQ,EACzByL,EAAWxM,QAAQ,CAAG4F,EACtB4G,EAAWlG,WAAW,CAAGC,EACzBiG,EAAWvO,QAAQ,CAAGsK,EACtBiE,EAAWhE,eAAe,CAAGC,EAC7B+D,EAAWxO,QAAQ,CAAGkM,EAGlBuC,IACA/N,EAAO+N,EAAiB1C,mBAAmB,CAAE,CACzCrM,YAAa,CACTgP,QAAS,cACTC,QAAS,WACL,IAAI,CAACjP,WAAW,EACpB,CACJ,EACAC,YAAa,CACT+O,QAAS,cACTC,QAAS,WACL,IAAI,CAAChP,WAAW,EACpB,CACJ,EACAK,SAAU,CACN0O,QAAS,WACTC,QAAS,WACL5N,EAAYxF,IAAI,CAAC,IAAI,CAAE,IAAI,CAACiP,eAAe,CAC/C,CACJ,CACJ,GACIiE,EAAiB5C,OAAO,EACxB4C,EAAiB5C,OAAO,CAACC,aAAa,CAACF,SAAS,EAChD6C,EAAiB5C,OAAO,CAACC,aAAa,CAACF,SAAS,CAACrF,IAAI,CAAC,YAAa,cAAe,cAAe,aAGzGnG,EAAWzB,GACX,GAAM,CAAEiQ,UAAWC,CAAe,CAAEC,MAAOC,CAAW,CAAEC,IAAKC,CAAS,CAAEC,UAAWC,CAAe,CAAEC,QAASC,CAAa,CAAEC,OAAQC,CAAY,CAAE,CAAGhB,EAAYiB,KAAK,CAClKX,GACAA,CAAAA,EAAgBxT,SAAS,CAACyJ,SAAS,CAAG,CAClC2K,IAAK,IACLC,KAAM,GACV,CAAA,EAEAX,IACAA,EAAY1T,SAAS,CAACkK,SAAS,CAAG,OAClCwJ,EAAY1T,SAAS,CAACyJ,SAAS,CAAG,CAC9B6K,MAAO,IACPC,IAAK,GACT,GAEAX,GACAA,CAAAA,EAAU5T,SAAS,CAACkK,SAAS,CAAG,MAAK,EAErC4J,GACAA,CAAAA,EAAgB9T,SAAS,CAACkK,SAAS,CAAG,MAAK,EAE3C8J,GACAA,CAAAA,EAAchU,SAAS,CAACkK,SAAS,CAAG,MAAK,EAEzCgK,GACAA,CAAAA,EAAalU,SAAS,CAACyJ,SAAS,CAAG,CAC/B+K,GAAI,GACR,CAAA,CAER,CACJ,CA+FA,CAAA,EA2CsBxB,OAAO,CAACF,EAAE2B,KAAK,CAAE3B,EAAE4B,MAAM,EAClB,IAAMtU,EAAoBE,IAG7C,OADYH,EAAoB,OAAU,AAE3C,CAAA"}