{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v11.2.0 (2023-10-30)\n *\n * Exporting module\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function (factory) {\n    if (typeof module === 'object' && module.exports) {\n        factory['default'] = factory;\n        module.exports = factory;\n    } else if (typeof define === 'function' && define.amd) {\n        define('highcharts/modules/exporting', ['highcharts'], function (Highcharts) {\n            factory(Highcharts);\n            factory.Highcharts = Highcharts;\n            return factory;\n        });\n    } else {\n        factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);\n    }\n}(function (Highcharts) {\n    'use strict';\n    var _modules = Highcharts ? Highcharts._modules : {};\n    function _registerModule(obj, path, args, fn) {\n        if (!obj.hasOwnProperty(path)) {\n            obj[path] = fn.apply(null, args);\n\n            if (typeof CustomEvent === 'function') {\n                window.dispatchEvent(new CustomEvent(\n                    'HighchartsModuleLoaded',\n                    { detail: { path: path, module: obj[path] } }\n                ));\n            }\n        }\n    }\n    _registerModule(_modules, 'Core/Chart/ChartNavigationComposition.js', [], function () {\n        /**\n         *\n         *  (c) 2010-2021 Pawe� Fus\n         *\n         *  License: www.highcharts.com/license\n         *\n         *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n         *\n         * */\n        /* *\n         *\n         *  Composition\n         *\n         * */\n        var ChartNavigationComposition;\n        (function (ChartNavigationComposition) {\n            /* *\n             *\n             *  Declarations\n             *\n             * */\n            /* *\n             *\n             *  Functions\n             *\n             * */\n            /* eslint-disable valid-jsdoc */\n            /**\n             * @private\n             */\n            function compose(chart) {\n                if (!chart.navigation) {\n                    chart.navigation = new Additions(chart);\n                }\n                return chart;\n            }\n            ChartNavigationComposition.compose = compose;\n            /* *\n             *\n             *  Class\n             *\n             * */\n            /**\n             * Initializes `chart.navigation` object which delegates `update()` methods\n             * to all other common classes (used in exporting and navigationBindings).\n             * @private\n             */\n            class Additions {\n                /* *\n                 *\n                 *  Constructor\n                 *\n                 * */\n                constructor(chart) {\n                    this.updates = [];\n                    this.chart = chart;\n                }\n                /* *\n                 *\n                 *  Functions\n                 *\n                 * */\n                /**\n                 * Registers an `update()` method in the `chart.navigation` object.\n                 *\n                 * @private\n                 * @param {UpdateFunction} updateFn\n                 * The `update()` method that will be called in `chart.update()`.\n                 */\n                addUpdate(updateFn) {\n                    this.chart.navigation.updates.push(updateFn);\n                }\n                /**\n                 * @private\n                 */\n                update(options, redraw) {\n                    this.updates.forEach((updateFn) => {\n                        updateFn.call(this.chart, options, redraw);\n                    });\n                }\n            }\n            ChartNavigationComposition.Additions = Additions;\n        })(ChartNavigationComposition || (ChartNavigationComposition = {}));\n        /* *\n         *\n         *  Default Export\n         *\n         * */\n\n        return ChartNavigationComposition;\n    });\n    _registerModule(_modules, 'Extensions/Exporting/ExportingDefaults.js', [_modules['Core/Globals.js']], function (H) {\n        /* *\n         *\n         *  (c) 2010-2021 Torstein Honsi\n         *\n         *  License: www.highcharts.com/license\n         *\n         *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n         *\n         * */\n        const { isTouchDevice } = H;\n        /* *\n         *\n         *  API Options\n         *\n         * */\n        // Add the export related options\n        /**\n         * Options for the exporting module. For an overview on the matter, see\n         * [the docs](https://www.highcharts.com/docs/export-module/export-module-overview).\n         *\n         * @requires     modules/exporting\n         * @optionparent exporting\n         */\n        const exporting = {\n            /**\n             * Experimental setting to allow HTML inside the chart (added through\n             * the `useHTML` options), directly in the exported image. This allows\n             * you to preserve complicated HTML structures like tables or bi-directional\n             * text in exported charts.\n             *\n             * Disclaimer: The HTML is rendered in a `foreignObject` tag in the\n             * generated SVG. The official export server is based on PhantomJS,\n             * which supports this, but other SVG clients, like Batik, does not\n             * support it. This also applies to downloaded SVG that you want to\n             * open in a desktop client.\n             *\n             * @type      {boolean}\n             * @default   false\n             * @since     4.1.8\n             * @apioption exporting.allowHTML\n             */\n            /**\n             * Allows the end user to sort the data table by clicking on column headers.\n             *\n             * @since 10.3.3\n             * @apioption exporting.allowTableSorting\n             */\n            allowTableSorting: true,\n            /**\n             * Additional chart options to be merged into the chart before exporting to\n             * an image format. This does not apply to printing the chart via the export\n             * menu.\n             *\n             * For example, a common use case is to add data labels to improve\n             * readability of the exported chart, or to add a printer-friendly color\n             * scheme to exported PDFs.\n             *\n             * @sample {highcharts} highcharts/exporting/chartoptions-data-labels/\n             *         Added data labels\n             * @sample {highstock} highcharts/exporting/chartoptions-data-labels/\n             *         Added data labels\n             *\n             * @type      {Highcharts.Options}\n             * @apioption exporting.chartOptions\n             */\n            /**\n             * Whether to enable the exporting module. Disabling the module will\n             * hide the context button, but API methods will still be available.\n             *\n             * @sample {highcharts} highcharts/exporting/enabled-false/\n             *         Exporting module is loaded but disabled\n             * @sample {highstock} highcharts/exporting/enabled-false/\n             *         Exporting module is loaded but disabled\n             *\n             * @type      {boolean}\n             * @default   true\n             * @since     2.0\n             * @apioption exporting.enabled\n             */\n            /**\n             * Function to call if the offline-exporting module fails to export\n             * a chart on the client side, and [fallbackToExportServer](\n             * #exporting.fallbackToExportServer) is disabled. If left undefined, an\n             * exception is thrown instead. Receives two parameters, the exporting\n             * options, and the error from the module.\n             *\n             * @see [fallbackToExportServer](#exporting.fallbackToExportServer)\n             *\n             * @type      {Highcharts.ExportingErrorCallbackFunction}\n             * @since     5.0.0\n             * @requires  modules/exporting\n             * @requires  modules/offline-exporting\n             * @apioption exporting.error\n             */\n            /**\n             * Whether or not to fall back to the export server if the offline-exporting\n             * module is unable to export the chart on the client side. This happens for\n             * certain browsers, and certain features (e.g.\n             * [allowHTML](#exporting.allowHTML)), depending on the image type exporting\n             * to. For very complex charts, it is possible that export can fail in\n             * browsers that don't support Blob objects, due to data URL length limits.\n             * It is recommended to define the [exporting.error](#exporting.error)\n             * handler if disabling fallback, in order to notify users in case export\n             * fails.\n             *\n             * @type      {boolean}\n             * @default   true\n             * @since     4.1.8\n             * @requires  modules/exporting\n             * @requires  modules/offline-exporting\n             * @apioption exporting.fallbackToExportServer\n             */\n            /**\n             * The filename, without extension, to use for the exported chart.\n             *\n             * @sample {highcharts} highcharts/exporting/filename/\n             *         Custom file name\n             * @sample {highstock} highcharts/exporting/filename/\n             *         Custom file name\n             *\n             * @type      {string}\n             * @default   chart\n             * @since     2.0\n             * @apioption exporting.filename\n             */\n            /**\n             * An object containing additional key value data for the POST form that\n             * sends the SVG to the export server. For example, a `target` can be set to\n             * make sure the generated image is received in another frame, or a custom\n             * `enctype` or `encoding` can be set.\n             *\n             * @type      {Highcharts.HTMLAttributes}\n             * @since     3.0.8\n             * @apioption exporting.formAttributes\n             */\n            /**\n             * Path where Highcharts will look for export module dependencies to\n             * load on demand if they don't already exist on `window`. Should currently\n             * point to location of [CanVG](https://github.com/canvg/canvg) library,\n             * [jsPDF](https://github.com/parallax/jsPDF) and\n             * [svg2pdf.js](https://github.com/yWorks/svg2pdf.js), required for client\n             * side export in certain browsers.\n             *\n             * @type      {string}\n             * @default   https://code.highcharts.com/{version}/lib\n             * @since     5.0.0\n             * @apioption exporting.libURL\n             */\n            /**\n             * Analogous to [sourceWidth](#exporting.sourceWidth).\n             *\n             * @type      {number}\n             * @since     3.0\n             * @apioption exporting.sourceHeight\n             */\n            /**\n             * The width of the original chart when exported, unless an explicit\n             * [chart.width](#chart.width) is set, or a pixel width is set on the\n             * container. The width exported raster image is then multiplied by\n             * [scale](#exporting.scale).\n             *\n             * @sample {highcharts} highcharts/exporting/sourcewidth/\n             *         Source size demo\n             * @sample {highstock} highcharts/exporting/sourcewidth/\n             *         Source size demo\n             * @sample {highmaps} maps/exporting/sourcewidth/\n             *         Source size demo\n             *\n             * @type      {number}\n             * @since     3.0\n             * @apioption exporting.sourceWidth\n             */\n            /**\n             * The pixel width of charts exported to PNG or JPG. As of Highcharts\n             * 3.0, the default pixel width is a function of the [chart.width](\n             * #chart.width) or [exporting.sourceWidth](#exporting.sourceWidth) and the\n             * [exporting.scale](#exporting.scale).\n             *\n             * @sample {highcharts} highcharts/exporting/width/\n             *         Export to 200px wide images\n             * @sample {highstock} highcharts/exporting/width/\n             *         Export to 200px wide images\n             *\n             * @type      {number}\n             * @since     2.0\n             * @apioption exporting.width\n             */\n            /**\n             * Default MIME type for exporting if `chart.exportChart()` is called\n             * without specifying a `type` option. Possible values are `image/png`,\n             *  `image/jpeg`, `application/pdf` and `image/svg+xml`.\n             *\n             * @type  {Highcharts.ExportingMimeTypeValue}\n             * @since 2.0\n             */\n            type: 'image/png',\n            /**\n             * The URL for the server module converting the SVG string to an image\n             * format. By default this points to Highchart's free web service.\n             *\n             * @since 2.0\n             */\n            url: 'https://export.highcharts.com/',\n            /**\n             * Settings for a custom font for the exported PDF, when using the\n             * `offline-exporting` module. This is used for languages containing\n             * non-ASCII characters, like Chinese, Russian, Japanese etc.\n             *\n             * As described in the [jsPDF\n             * docs](https://github.com/parallax/jsPDF#use-of-unicode-characters--utf-8),\n             * the 14 standard fonts in PDF are limited to the ASCII-codepage.\n             * Therefore, in order to support other text in the exported PDF, one or\n             * more TTF font files have to be passed on to the exporting module.\n             *\n             * See more in [the\n             * docs](https://www.highcharts.com/docs/export-module/client-side-export).\n             *\n             * @sample {highcharts} highcharts/exporting/offline-download-pdffont/\n             *         Download PDF in a language containing non-Latin characters.\n             *\n             * @since 10.0.0\n             * @requires modules/offline-exporting\n             */\n            pdfFont: {\n                /**\n                 * The TTF font file for normal `font-style`. If font variations like\n                 * `bold` or `italic` are not defined, the `normal` font will be used\n                 * for those too.\n                 *\n                 * @type string|undefined\n                 */\n                normal: void 0,\n                /**\n                 * The TTF font file for bold text.\n                 *\n                 * @type string|undefined\n                 */\n                bold: void 0,\n                /**\n                 * The TTF font file for bold and italic text.\n                 *\n                 * @type string|undefined\n                 */\n                bolditalic: void 0,\n                /**\n                 * The TTF font file for italic text.\n                 *\n                 * @type string|undefined\n                 */\n                italic: void 0\n            },\n            /**\n             * When printing the chart from the menu item in the burger menu, if\n             * the on-screen chart exceeds this width, it is resized. After printing\n             * or cancelled, it is restored. The default width makes the chart\n             * fit into typical paper format. Note that this does not affect the\n             * chart when printing the web page as a whole.\n             *\n             * @since 4.2.5\n             */\n            printMaxWidth: 780,\n            /**\n             * Defines the scale or zoom factor for the exported image compared\n             * to the on-screen display. While for instance a 600px wide chart\n             * may look good on a website, it will look bad in print. The default\n             * scale of 2 makes this chart export to a 1200px PNG or JPG.\n             *\n             * @see [chart.width](#chart.width)\n             * @see [exporting.sourceWidth](#exporting.sourceWidth)\n             *\n             * @sample {highcharts} highcharts/exporting/scale/\n             *         Scale demonstrated\n             * @sample {highstock} highcharts/exporting/scale/\n             *         Scale demonstrated\n             * @sample {highmaps} maps/exporting/scale/\n             *         Scale demonstrated\n             *\n             * @since 3.0\n             */\n            scale: 2,\n            /**\n             * Options for the export related buttons, print and export. In addition\n             * to the default buttons listed here, custom buttons can be added.\n             * See [navigation.buttonOptions](#navigation.buttonOptions) for general\n             * options.\n             *\n             * @type     {Highcharts.Dictionary<*>}\n             * @requires modules/exporting\n             */\n            buttons: {\n                /**\n                 * Options for the export button.\n                 *\n                 * In styled mode, export button styles can be applied with the\n                 * `.highcharts-contextbutton` class.\n                 *\n                 * @declare  Highcharts.ExportingButtonsOptionsObject\n                 * @extends  navigation.buttonOptions\n                 * @requires modules/exporting\n                 */\n                contextButton: {\n                    /**\n                     * A click handler callback to use on the button directly instead of\n                     * the popup menu.\n                     *\n                     * @sample highcharts/exporting/buttons-contextbutton-onclick/\n                     *         Skip the menu and export the chart directly\n                     *\n                     * @type      {Function}\n                     * @since     2.0\n                     * @apioption exporting.buttons.contextButton.onclick\n                     */\n                    /**\n                     * See [navigation.buttonOptions.symbolFill](\n                     * #navigation.buttonOptions.symbolFill).\n                     *\n                     * @type      {Highcharts.ColorString}\n                     * @default   #666666\n                     * @since     2.0\n                     * @apioption exporting.buttons.contextButton.symbolFill\n                     */\n                    /**\n                     * The horizontal position of the button relative to the `align`\n                     * option.\n                     *\n                     * @type      {number}\n                     * @default   -10\n                     * @since     2.0\n                     * @apioption exporting.buttons.contextButton.x\n                     */\n                    /**\n                     * The class name of the context button.\n                     */\n                    className: 'highcharts-contextbutton',\n                    /**\n                     * The class name of the menu appearing from the button.\n                     */\n                    menuClassName: 'highcharts-contextmenu',\n                    /**\n                     * The symbol for the button. Points to a definition function in\n                     * the `Highcharts.Renderer.symbols` collection. The default\n                     * `menu` function is part of the exporting module. Possible\n                     * values are \"circle\", \"square\", \"diamond\", \"triangle\",\n                     * \"triangle-down\", \"menu\", \"menuball\" or custom shape.\n                     *\n                     * @sample highcharts/exporting/buttons-contextbutton-symbol/\n                     *         Use a circle for symbol\n                     * @sample highcharts/exporting/buttons-contextbutton-symbol-custom/\n                     *         Custom shape as symbol\n                     *\n                     * @type  {Highcharts.SymbolKeyValue|\"menu\"|\"menuball\"|string}\n                     * @since 2.0\n                     */\n                    symbol: 'menu',\n                    /**\n                     * The key to a [lang](#lang) option setting that is used for the\n                     * button's title tooltip. When the key is `contextButtonTitle`, it\n                     * refers to [lang.contextButtonTitle](#lang.contextButtonTitle)\n                     * that defaults to \"Chart context menu\".\n                     *\n                     * @since 6.1.4\n                     */\n                    titleKey: 'contextButtonTitle',\n                    /**\n                     * This option is deprecated, use\n                     * [titleKey](#exporting.buttons.contextButton.titleKey) instead.\n                     *\n                     * @deprecated\n                     * @type      {string}\n                     * @apioption exporting.buttons.contextButton._titleKey\n                     */\n                    /**\n                     * A collection of strings pointing to config options for the menu\n                     * items. The config options are defined in the\n                     * `menuItemDefinitions` option.\n                     *\n                     * By default, there is the \"View in full screen\" and \"Print\" menu\n                     * items, plus one menu item for each of the available export types.\n                     *\n                     * @sample {highcharts} highcharts/exporting/menuitemdefinitions/\n                     *         Menu item definitions\n                     * @sample {highstock} highcharts/exporting/menuitemdefinitions/\n                     *         Menu item definitions\n                     * @sample {highmaps} highcharts/exporting/menuitemdefinitions/\n                     *         Menu item definitions\n                     *\n                     * @type    {Array<string>}\n                     * @default [\"viewFullscreen\", \"printChart\", \"separator\", \"downloadPNG\", \"downloadJPEG\", \"downloadPDF\", \"downloadSVG\"]\n                     * @since   2.0\n                     */\n                    menuItems: [\n                        'viewFullscreen',\n                        'printChart',\n                        'separator',\n                        'downloadPNG',\n                        'downloadJPEG',\n                        'downloadPDF',\n                        'downloadSVG'\n                    ]\n                }\n            },\n            /**\n             * An object consisting of definitions for the menu items in the context\n             * menu. Each key value pair has a `key` that is referenced in the\n             * [menuItems](#exporting.buttons.contextButton.menuItems) setting,\n             * and a `value`, which is an object with the following properties:\n             *\n             * - **onclick:** The click handler for the menu item\n             *\n             * - **text:** The text for the menu item\n             *\n             * - **textKey:** If internationalization is required, the key to a language\n             *   string\n             *\n             * Custom text for the \"exitFullScreen\" can be set only in lang options\n             * (it is not a separate button).\n             *\n             * @sample {highcharts} highcharts/exporting/menuitemdefinitions/\n             *         Menu item definitions\n             * @sample {highstock} highcharts/exporting/menuitemdefinitions/\n             *         Menu item definitions\n             * @sample {highmaps} highcharts/exporting/menuitemdefinitions/\n             *         Menu item definitions\n             *\n             *\n             * @type    {Highcharts.Dictionary<Highcharts.ExportingMenuObject>}\n             * @default {\"viewFullscreen\": {}, \"printChart\": {}, \"separator\": {}, \"downloadPNG\": {}, \"downloadJPEG\": {}, \"downloadPDF\": {}, \"downloadSVG\": {}}\n             * @since   5.0.13\n             */\n            menuItemDefinitions: {\n                /**\n                 * @ignore\n                 */\n                viewFullscreen: {\n                    textKey: 'viewFullscreen',\n                    onclick: function () {\n                        if (this.fullscreen) {\n                            this.fullscreen.toggle();\n                        }\n                    }\n                },\n                /**\n                 * @ignore\n                 */\n                printChart: {\n                    textKey: 'printChart',\n                    onclick: function () {\n                        this.print();\n                    }\n                },\n                /**\n                 * @ignore\n                 */\n                separator: {\n                    separator: true\n                },\n                /**\n                 * @ignore\n                 */\n                downloadPNG: {\n                    textKey: 'downloadPNG',\n                    onclick: function () {\n                        this.exportChart();\n                    }\n                },\n                /**\n                 * @ignore\n                 */\n                downloadJPEG: {\n                    textKey: 'downloadJPEG',\n                    onclick: function () {\n                        this.exportChart({\n                            type: 'image/jpeg'\n                        });\n                    }\n                },\n                /**\n                 * @ignore\n                 */\n                downloadPDF: {\n                    textKey: 'downloadPDF',\n                    onclick: function () {\n                        this.exportChart({\n                            type: 'application/pdf'\n                        });\n                    }\n                },\n                /**\n                 * @ignore\n                 */\n                downloadSVG: {\n                    textKey: 'downloadSVG',\n                    onclick: function () {\n                        this.exportChart({\n                            type: 'image/svg+xml'\n                        });\n                    }\n                }\n            }\n        };\n        // Add language\n        /**\n         * @optionparent lang\n         */\n        const lang = {\n            /**\n             * Exporting module only. The text for the menu item to view the chart\n             * in full screen.\n             *\n             * @since 8.0.1\n             */\n            viewFullscreen: 'View in full screen',\n            /**\n             * Exporting module only. The text for the menu item to exit the chart\n             * from full screen.\n             *\n             * @since 8.0.1\n             */\n            exitFullscreen: 'Exit from full screen',\n            /**\n             * Exporting module only. The text for the menu item to print the chart.\n             *\n             * @since    3.0.1\n             * @requires modules/exporting\n             */\n            printChart: 'Print chart',\n            /**\n             * Exporting module only. The text for the PNG download menu item.\n             *\n             * @since    2.0\n             * @requires modules/exporting\n             */\n            downloadPNG: 'Download PNG image',\n            /**\n             * Exporting module only. The text for the JPEG download menu item.\n             *\n             * @since    2.0\n             * @requires modules/exporting\n             */\n            downloadJPEG: 'Download JPEG image',\n            /**\n             * Exporting module only. The text for the PDF download menu item.\n             *\n             * @since    2.0\n             * @requires modules/exporting\n             */\n            downloadPDF: 'Download PDF document',\n            /**\n             * Exporting module only. The text for the SVG download menu item.\n             *\n             * @since    2.0\n             * @requires modules/exporting\n             */\n            downloadSVG: 'Download SVG vector image',\n            /**\n             * Exporting module menu. The tooltip title for the context menu holding\n             * print and export menu items.\n             *\n             * @since    3.0\n             * @requires modules/exporting\n             */\n            contextButtonTitle: 'Chart context menu'\n        };\n        /**\n         * A collection of options for buttons and menus appearing in the exporting\n         * module or in Stock Tools.\n         *\n         * @requires     modules/exporting\n         * @optionparent navigation\n         */\n        const navigation = {\n            /**\n             * A collection of options for buttons appearing in the exporting\n             * module.\n             *\n             * In styled mode, the buttons are styled with the\n             * `.highcharts-contextbutton` and `.highcharts-button-symbol` classes.\n             *\n             * @requires modules/exporting\n             */\n            buttonOptions: {\n                /**\n                 * Whether to enable buttons.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-enabled/\n                 *         Exporting module loaded but buttons disabled\n                 *\n                 * @type      {boolean}\n                 * @default   true\n                 * @since     2.0\n                 * @apioption navigation.buttonOptions.enabled\n                 */\n                /**\n                 * The pixel size of the symbol on the button.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-height/\n                 *         Bigger buttons\n                 *\n                 * @since 2.0\n                 */\n                symbolSize: 14,\n                /**\n                 * The x position of the center of the symbol inside the button.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-height/\n                 *         Bigger buttons\n                 *\n                 * @since 2.0\n                 */\n                symbolX: 14.5,\n                /**\n                 * The y position of the center of the symbol inside the button.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-height/\n                 *         Bigger buttons\n                 *\n                 * @since 2.0\n                 */\n                symbolY: 13.5,\n                /**\n                 * Alignment for the buttons.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-align/\n                 *         Center aligned\n                 *\n                 * @type  {Highcharts.AlignValue}\n                 * @since 2.0\n                 */\n                align: 'right',\n                /**\n                 * The pixel spacing between buttons.\n                 *\n                 * @since 2.0\n                 */\n                buttonSpacing: 3,\n                /**\n                 * Pixel height of the buttons.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-height/\n                 *         Bigger buttons\n                 *\n                 * @since 2.0\n                 */\n                height: 28,\n                /**\n                 * A text string to add to the individual button.\n                 *\n                 * @sample highcharts/exporting/buttons-text/\n                 *         Full text button\n                 * @sample highcharts/exporting/buttons-text-usehtml/\n                 *         Icon using CSS font in text\n                 * @sample highcharts/exporting/buttons-text-symbol/\n                 *         Combined symbol and text\n                 *\n                 * @type      {string}\n                 * @default   null\n                 * @since     3.0\n                 * @apioption navigation.buttonOptions.text\n                 */\n                /**\n                 * Whether to use HTML for rendering the button. HTML allows for things\n                 * like inline CSS or image-based icons.\n                 *\n                 * @sample highcharts/exporting/buttons-text-usehtml/\n                 *         Icon using CSS font in text\n                 *\n                 * @type      boolean\n                 * @default   false\n                 * @since 10.3.0\n                 * @apioption navigation.buttonOptions.useHTML\n                 */\n                /**\n                 * The vertical offset of the button's position relative to its\n                 * `verticalAlign`.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-verticalalign/\n                 *         Buttons at lower right\n                 *\n                 * @type      {number}\n                 * @default   0\n                 * @since     2.0\n                 * @apioption navigation.buttonOptions.y\n                 */\n                /**\n                 * The vertical alignment of the buttons. Can be one of `\"top\"`,\n                 * `\"middle\"` or `\"bottom\"`.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-verticalalign/\n                 *         Buttons at lower right\n                 *\n                 * @type  {Highcharts.VerticalAlignValue}\n                 * @since 2.0\n                 */\n                verticalAlign: 'top',\n                /**\n                 * The pixel width of the button.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-height/\n                 *         Bigger buttons\n                 *\n                 * @since 2.0\n                 */\n                width: 28,\n                /**\n                 * Fill color for the symbol within the button.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-symbolfill/\n                 *         Blue symbol stroke for one of the buttons\n                 *\n                 * @type  {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n                 * @since 2.0\n                 */\n                symbolFill: \"#666666\" /* Palette.neutralColor60 */,\n                /**\n                 * The color of the symbol's stroke or line.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-symbolstroke/\n                 *         Blue symbol stroke\n                 *\n                 * @type  {Highcharts.ColorString}\n                 * @since 2.0\n                 */\n                symbolStroke: \"#666666\" /* Palette.neutralColor60 */,\n                /**\n                 * The pixel stroke width of the symbol on the button.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-height/\n                 *         Bigger buttons\n                 *\n                 * @since 2.0\n                 */\n                symbolStrokeWidth: 3,\n                /**\n                 * A configuration object for the button theme. The object accepts\n                 * SVG properties like `stroke-width`, `stroke` and `fill`.\n                 * Tri-state button styles are supported by the `states.hover` and\n                 * `states.select` objects.\n                 *\n                 * @sample highcharts/navigation/buttonoptions-theme/\n                 *         Theming the buttons\n                 *\n                 * @requires modules/exporting\n                 *\n                 * @since 3.0\n                 */\n                theme: {\n                    /**\n                     * The default fill exists only to capture hover events.\n                     *\n                     * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n                     * @default   #ffffff\n                     * @apioption navigation.buttonOptions.theme.fill\n                     */\n                    /**\n                     * Default stroke for the buttons.\n                     *\n                     * @type      {Highcharts.ColorString}\n                     * @default   none\n                     * @apioption navigation.buttonOptions.theme.stroke\n                     */\n                    /**\n                     * Padding for the button.\n                     */\n                    padding: 5\n                }\n            },\n            /**\n             * CSS styles for the popup menu appearing by default when the export\n             * icon is clicked. This menu is rendered in HTML.\n             *\n             * @see In styled mode, the menu is styled with the `.highcharts-menu`\n             *      class.\n             *\n             * @sample highcharts/navigation/menustyle/\n             *         Light gray menu background\n             *\n             * @type    {Highcharts.CSSObject}\n             * @default {\"background\": \"#ffffff\", \"borderRadius\": \"3px\", \"padding\": \"0.5em\"}\n             * @since   2.0\n             */\n            menuStyle: {\n                /** @ignore-option */\n                border: 'none',\n                /** @ignore-option */\n                borderRadius: '3px',\n                /** @ignore-option */\n                background: \"#ffffff\" /* Palette.backgroundColor */,\n                /** @ignore-option */\n                padding: '0.5em'\n            },\n            /**\n             * CSS styles for the individual items within the popup menu appearing\n             * by default when the export icon is clicked. The menu items are\n             * rendered in HTML. Font size defaults to `11px` on desktop and `14px`\n             * on touch devices.\n             *\n             * @see In styled mode, the menu items are styled with the\n             *      `.highcharts-menu-item` class.\n             *\n             * @sample {highcharts} highcharts/navigation/menuitemstyle/\n             *         Add a grey stripe to the left\n             *\n             * @type    {Highcharts.CSSObject}\n             * @default {\"padding\": \"0.5em\", \"color\": \"#333333\", \"background\": \"none\", \"borderRadius\": \"3px\", \"fontSize\": \"0.8em\", \"transition\": \"background 250ms, color 250ms\"}\n             * @since   2.0\n             */\n            menuItemStyle: {\n                /** @ignore-option */\n                background: 'none',\n                /** @ignore-option */\n                borderRadius: '3px',\n                /** @ignore-option */\n                color: \"#333333\" /* Palette.neutralColor80 */,\n                /** @ignore-option */\n                padding: '0.5em',\n                /** @ignore-option */\n                fontSize: isTouchDevice ? '0.9em' : '0.8em',\n                /** @ignore-option */\n                transition: 'background 250ms, color 250ms'\n            },\n            /**\n             * CSS styles for the hover state of the individual items within the\n             * popup menu appearing by default when the export icon is clicked. The\n             * menu items are rendered in HTML.\n             *\n             * @see In styled mode, the menu items are styled with the\n             *      `.highcharts-menu-item` class.\n             *\n             * @sample highcharts/navigation/menuitemhoverstyle/\n             *         Bold text on hover\n             *\n             * @type    {Highcharts.CSSObject}\n             * @default {\"background\": \"#f2f2f2\" }\n             * @since   2.0\n             */\n            menuItemHoverStyle: {\n                /** @ignore-option */\n                background: \"#f2f2f2\" /* Palette.neutralColor5 */\n            }\n        };\n        /* *\n         *\n         *  Default Export\n         *\n         * */\n        const ExportingDefaults = {\n            exporting,\n            lang,\n            navigation\n        };\n\n        return ExportingDefaults;\n    });\n    _registerModule(_modules, 'Extensions/Exporting/ExportingSymbols.js', [], function () {\n        /* *\n         *\n         *  Exporting module\n         *\n         *  (c) 2010-2021 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         *  Composition\n         *\n         * */\n        var ExportingSymbols;\n        (function (ExportingSymbols) {\n            /* *\n             *\n             *  Constants\n             *\n             * */\n            const modifiedClasses = [];\n            /* *\n             *\n             *  Functions\n             *\n             * */\n            /* eslint-disable valid-jsdoc */\n            /**\n             * @private\n             */\n            function compose(SVGRendererClass) {\n                if (modifiedClasses.indexOf(SVGRendererClass) === -1) {\n                    modifiedClasses.push(SVGRendererClass);\n                    const symbols = SVGRendererClass.prototype.symbols;\n                    symbols.menu = menu;\n                    symbols.menuball = menuball.bind(symbols);\n                }\n            }\n            ExportingSymbols.compose = compose;\n            /**\n             * @private\n             */\n            function menu(x, y, width, height) {\n                const arr = [\n                    ['M', x, y + 2.5],\n                    ['L', x + width, y + 2.5],\n                    ['M', x, y + height / 2 + 0.5],\n                    ['L', x + width, y + height / 2 + 0.5],\n                    ['M', x, y + height - 1.5],\n                    ['L', x + width, y + height - 1.5]\n                ];\n                return arr;\n            }\n            /**\n             * @private\n             */\n            function menuball(x, y, width, height) {\n                const h = (height / 3) - 2;\n                let path = [];\n                path = path.concat(this.circle(width - h, y, h, h), this.circle(width - h, y + h + 4, h, h), this.circle(width - h, y + 2 * (h + 4), h, h));\n                return path;\n            }\n        })(ExportingSymbols || (ExportingSymbols = {}));\n        /* *\n         *\n         *  Default Export\n         *\n         * */\n\n        return ExportingSymbols;\n    });\n    _registerModule(_modules, 'Extensions/Exporting/Fullscreen.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Utilities.js']], function (AST, U) {\n        /* *\n         *\n         *  (c) 2009-2021 Rafal Sebestjanski\n         *\n         *  Full screen for Highcharts\n         *\n         *  License: www.highcharts.com/license\n         *\n         *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n         *\n         * */\n        /**\n         * The module allows user to enable display chart in full screen mode.\n         * Used in StockTools too.\n         * Based on default solutions in browsers.\n         */\n        /* *\n         *\n         *  Imports\n         *\n         * */\n        const { addEvent, fireEvent } = U;\n        /* *\n         *\n         *  Constants\n         *\n         * */\n        const composedMembers = [];\n        /* *\n         *\n         *  Functions\n         *\n         * */\n        /**\n         * @private\n         */\n        function onChartBeforeRender() {\n            /**\n             * @name Highcharts.Chart#fullscreen\n             * @type {Highcharts.Fullscreen}\n             * @requires modules/full-screen\n             */\n            this.fullscreen = new Fullscreen(this);\n        }\n        /* *\n         *\n         *  Class\n         *\n         * */\n        /**\n         * Handles displaying chart's container in the fullscreen mode.\n         *\n         * **Note**: Fullscreen is not supported on iPhone due to iOS limitations.\n         *\n         * @class\n         * @name Highcharts.Fullscreen\n         *\n         * @requires modules/exporting\n         */\n        class Fullscreen {\n            /* *\n             *\n             *  Static Functions\n             *\n             * */\n            /**\n             * Prepares the chart class to support fullscreen.\n             *\n             * @param {typeof_Highcharts.Chart} ChartClass\n             * The chart class to decorate with fullscreen support.\n             */\n            static compose(ChartClass) {\n                if (U.pushUnique(composedMembers, ChartClass)) {\n                    // Initialize fullscreen\n                    addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n                }\n            }\n            /* *\n             *\n             *  Constructors\n             *\n             * */\n            constructor(chart) {\n                /**\n                 * Chart managed by the fullscreen controller.\n                 * @name Highcharts.Fullscreen#chart\n                 * @type {Highcharts.Chart}\n                 */\n                this.chart = chart;\n                /**\n                 * The flag is set to `true` when the chart is displayed in\n                 * the fullscreen mode.\n                 *\n                 * @name Highcharts.Fullscreen#isOpen\n                 * @type {boolean|undefined}\n                 * @since 8.0.1\n                 */\n                this.isOpen = false;\n                const container = chart.renderTo;\n                // Hold event and methods available only for a current browser.\n                if (!this.browserProps) {\n                    if (typeof container.requestFullscreen === 'function') {\n                        this.browserProps = {\n                            fullscreenChange: 'fullscreenchange',\n                            requestFullscreen: 'requestFullscreen',\n                            exitFullscreen: 'exitFullscreen'\n                        };\n                    }\n                    else if (container.mozRequestFullScreen) {\n                        this.browserProps = {\n                            fullscreenChange: 'mozfullscreenchange',\n                            requestFullscreen: 'mozRequestFullScreen',\n                            exitFullscreen: 'mozCancelFullScreen'\n                        };\n                    }\n                    else if (container.webkitRequestFullScreen) {\n                        this.browserProps = {\n                            fullscreenChange: 'webkitfullscreenchange',\n                            requestFullscreen: 'webkitRequestFullScreen',\n                            exitFullscreen: 'webkitExitFullscreen'\n                        };\n                    }\n                    else if (container.msRequestFullscreen) {\n                        this.browserProps = {\n                            fullscreenChange: 'MSFullscreenChange',\n                            requestFullscreen: 'msRequestFullscreen',\n                            exitFullscreen: 'msExitFullscreen'\n                        };\n                    }\n                }\n            }\n            /* *\n             *\n             *  Functions\n             *\n             * */\n            /**\n             * Stops displaying the chart in fullscreen mode.\n             * Exporting module required.\n             *\n             * @since       8.0.1\n             *\n             * @function    Highcharts.Fullscreen#close\n             * @return      {void}\n             * @requires    modules/full-screen\n             */\n            close() {\n                const fullscreen = this, chart = fullscreen.chart, optionsChart = chart.options.chart;\n                fireEvent(chart, 'fullscreenClose', null, function () {\n                    // Don't fire exitFullscreen() when user exited\n                    // using 'Escape' button.\n                    if (fullscreen.isOpen &&\n                        fullscreen.browserProps &&\n                        chart.container.ownerDocument instanceof Document) {\n                        chart.container.ownerDocument[fullscreen.browserProps.exitFullscreen]();\n                    }\n                    // Unbind event as it's necessary only before exiting\n                    // from fullscreen.\n                    if (fullscreen.unbindFullscreenEvent) {\n                        fullscreen.unbindFullscreenEvent = fullscreen\n                            .unbindFullscreenEvent();\n                    }\n                    chart.setSize(fullscreen.origWidth, fullscreen.origHeight, false);\n                    fullscreen.origWidth = void 0;\n                    fullscreen.origHeight = void 0;\n                    optionsChart.width = fullscreen.origWidthOption;\n                    optionsChart.height = fullscreen.origHeightOption;\n                    fullscreen.origWidthOption = void 0;\n                    fullscreen.origHeightOption = void 0;\n                    fullscreen.isOpen = false;\n                    fullscreen.setButtonText();\n                });\n            }\n            /**\n             * Displays the chart in fullscreen mode.\n             * When fired customly by user before exporting context button is created,\n             * button's text will not be replaced - it's on the user side.\n             * Exporting module required.\n             *\n             * @since       8.0.1\n             *\n             * @function Highcharts.Fullscreen#open\n             * @return      {void}\n             * @requires    modules/full-screen\n             */\n            open() {\n                const fullscreen = this, chart = fullscreen.chart, optionsChart = chart.options.chart;\n                fireEvent(chart, 'fullscreenOpen', null, function () {\n                    if (optionsChart) {\n                        fullscreen.origWidthOption = optionsChart.width;\n                        fullscreen.origHeightOption = optionsChart.height;\n                    }\n                    fullscreen.origWidth = chart.chartWidth;\n                    fullscreen.origHeight = chart.chartHeight;\n                    // Handle exitFullscreen() method when user clicks 'Escape' button.\n                    if (fullscreen.browserProps) {\n                        const unbindChange = addEvent(chart.container.ownerDocument, // chart's document\n                        fullscreen.browserProps.fullscreenChange, function () {\n                            // Handle lack of async of browser's\n                            // fullScreenChange event.\n                            if (fullscreen.isOpen) {\n                                fullscreen.isOpen = false;\n                                fullscreen.close();\n                            }\n                            else {\n                                chart.setSize(null, null, false);\n                                fullscreen.isOpen = true;\n                                fullscreen.setButtonText();\n                            }\n                        });\n                        const unbindDestroy = addEvent(chart, 'destroy', unbindChange);\n                        fullscreen.unbindFullscreenEvent = () => {\n                            unbindChange();\n                            unbindDestroy();\n                        };\n                        const promise = chart.renderTo[fullscreen.browserProps.requestFullscreen]();\n                        if (promise) {\n                            promise['catch'](function () {\n                                alert(// eslint-disable-line no-alert\n                                'Full screen is not supported inside a frame.');\n                            });\n                        }\n                    }\n                });\n            }\n            /**\n             * Replaces the exporting context button's text when toogling the\n             * fullscreen mode.\n             *\n             * @private\n             *\n             * @since 8.0.1\n             *\n             * @requires modules/full-screen\n             */\n            setButtonText() {\n                const chart = this.chart, exportDivElements = chart.exportDivElements, exportingOptions = chart.options.exporting, menuItems = (exportingOptions &&\n                    exportingOptions.buttons &&\n                    exportingOptions.buttons.contextButton.menuItems), lang = chart.options.lang;\n                if (exportingOptions &&\n                    exportingOptions.menuItemDefinitions &&\n                    lang &&\n                    lang.exitFullscreen &&\n                    lang.viewFullscreen &&\n                    menuItems &&\n                    exportDivElements) {\n                    const exportDivElement = exportDivElements[menuItems.indexOf('viewFullscreen')];\n                    if (exportDivElement) {\n                        AST.setElementHTML(exportDivElement, !this.isOpen ?\n                            (exportingOptions.menuItemDefinitions.viewFullscreen\n                                .text ||\n                                lang.viewFullscreen) : lang.exitFullscreen);\n                    }\n                }\n            }\n            /**\n             * Toggles displaying the chart in fullscreen mode.\n             * By default, when the exporting module is enabled, a context button with\n             * a drop down menu in the upper right corner accesses this function.\n             * Exporting module required.\n             *\n             * @since 8.0.1\n             *\n             * @sample      highcharts/members/chart-togglefullscreen/\n             *              Toggle fullscreen mode from a HTML button\n             *\n             * @function Highcharts.Fullscreen#toggle\n             * @requires    modules/full-screen\n             */\n            toggle() {\n                const fullscreen = this;\n                if (!fullscreen.isOpen) {\n                    fullscreen.open();\n                }\n                else {\n                    fullscreen.close();\n                }\n            }\n        }\n        /* *\n         *\n         *  Default Export\n         *\n         * */\n        /* *\n         *\n         *  API Declarations\n         *\n         * */\n        /**\n         * Gets fired when closing the fullscreen\n         *\n         * @callback Highcharts.FullScreenfullscreenCloseCallbackFunction\n         *\n         * @param {Highcharts.Chart} chart\n         *        The chart on which the event occured.\n         *\n         * @param {global.Event} event\n         *        The event that occured.\n         */\n        /**\n         * Gets fired when opening the fullscreen\n         *\n         * @callback Highcharts.FullScreenfullscreenOpenCallbackFunction\n         *\n         * @param {Highcharts.Chart} chart\n         *        The chart on which the event occured.\n         *\n         * @param {global.Event} event\n         *        The event that occured.\n         */\n        (''); // keeps doclets above separated from following code\n        /* *\n         *\n         *  API Options\n         *\n         * */\n        /**\n         * Fires when a fullscreen is closed through the context menu item,\n         * or a fullscreen is closed on the `Escape` button click,\n         * or the `Chart.fullscreen.close` method.\n         *\n         * @sample highcharts/chart/events-fullscreen\n         *         Title size change on fullscreen open\n         *\n         * @type      {Highcharts.FullScreenfullscreenCloseCallbackFunction}\n         * @since     10.1.0\n         * @context   Highcharts.Chart\n         * @requires  modules/full-screen\n         * @apioption chart.events.fullscreenClose\n         */\n        /**\n         * Fires when a fullscreen is opened through the context menu item,\n         * or the `Chart.fullscreen.open` method.\n         *\n         * @sample highcharts/chart/events-fullscreen\n         *         Title size change on fullscreen open\n         *\n         * @type      {Highcharts.FullScreenfullscreenOpenCallbackFunction}\n         * @since     10.1.0\n         * @context   Highcharts.Chart\n         * @requires  modules/full-screen\n         * @apioption chart.events.fullscreenOpen\n         */\n        (''); // keeps doclets above in transpiled file\n\n        return Fullscreen;\n    });\n    _registerModule(_modules, 'Core/HttpUtilities.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (G, U) {\n        /* *\n         *\n         *  (c) 2010-2021 Christer Vasseng, Torstein Honsi\n         *\n         *  License: www.highcharts.com/license\n         *\n         *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n         *\n         * */\n        const { doc } = G;\n        const { createElement, discardElement, merge, objectEach } = U;\n        /* *\n         *\n         *  Functions\n         *\n         * */\n        /**\n         * Perform an Ajax call.\n         *\n         * @function Highcharts.ajax\n         *\n         * @param {Highcharts.AjaxSettingsObject} settings\n         *        The Ajax settings to use.\n         *\n         * @return {false|undefined}\n         *         Returns false, if error occured.\n         */\n        function ajax(settings) {\n            const headers = {\n                json: 'application/json',\n                xml: 'application/xml',\n                text: 'text/plain',\n                octet: 'application/octet-stream'\n            }, r = new XMLHttpRequest();\n            /**\n             * Private error handler.\n             * @private\n             * @param {XMLHttpRequest} xhr\n             * Internal request object.\n             * @param {string|Error} err\n             * Occured error.\n             */\n            function handleError(xhr, err) {\n                if (settings.error) {\n                    settings.error(xhr, err);\n                }\n                else {\n                    // @todo Maybe emit a highcharts error event here\n                }\n            }\n            if (!settings.url) {\n                return false;\n            }\n            r.open((settings.type || 'get').toUpperCase(), settings.url, true);\n            if (!settings.headers || !settings.headers['Content-Type']) {\n                r.setRequestHeader('Content-Type', headers[settings.dataType || 'json'] || headers.text);\n            }\n            objectEach(settings.headers, function (val, key) {\n                r.setRequestHeader(key, val);\n            });\n            if (settings.responseType) {\n                r.responseType = settings.responseType;\n            }\n            // @todo lacking timeout handling\n            r.onreadystatechange = function () {\n                let res;\n                if (r.readyState === 4) {\n                    if (r.status === 200) {\n                        if (settings.responseType !== 'blob') {\n                            res = r.responseText;\n                            if (settings.dataType === 'json') {\n                                try {\n                                    res = JSON.parse(res);\n                                }\n                                catch (e) {\n                                    if (e instanceof Error) {\n                                        return handleError(r, e);\n                                    }\n                                }\n                            }\n                        }\n                        return settings.success && settings.success(res, r);\n                    }\n                    handleError(r, r.responseText);\n                }\n            };\n            if (settings.data && typeof settings.data !== 'string') {\n                settings.data = JSON.stringify(settings.data);\n            }\n            r.send(settings.data);\n        }\n        /**\n         * Get a JSON resource over XHR, also supporting CORS without preflight.\n         *\n         * @function Highcharts.getJSON\n         * @param {string} url\n         *        The URL to load.\n         * @param {Function} success\n         *        The success callback. For error handling, use the `Highcharts.ajax`\n         *        function instead.\n         */\n        function getJSON(url, success) {\n            HttpUtilities.ajax({\n                url: url,\n                success: success,\n                dataType: 'json',\n                headers: {\n                    // Override the Content-Type to avoid preflight problems with CORS\n                    // in the Highcharts demos\n                    'Content-Type': 'text/plain'\n                }\n            });\n        }\n        /**\n         * The post utility\n         *\n         * @private\n         * @function Highcharts.post\n         *\n         * @param {string} url\n         * Post URL\n         *\n         * @param {Object} data\n         * Post data\n         *\n         * @param {Highcharts.Dictionary<string>} [formAttributes]\n         * Additional attributes for the post request\n         */\n        function post(url, data, formAttributes) {\n            // create the form\n            const form = createElement('form', merge({\n                method: 'post',\n                action: url,\n                enctype: 'multipart/form-data'\n            }, formAttributes), {\n                display: 'none'\n            }, doc.body);\n            // add the data\n            objectEach(data, function (val, name) {\n                createElement('input', {\n                    type: 'hidden',\n                    name: name,\n                    value: val\n                }, void 0, form);\n            });\n            // submit\n            form.submit();\n            // clean up\n            discardElement(form);\n        }\n        /* *\n         *\n         *  Default Export\n         *\n         * */\n        const HttpUtilities = {\n            ajax,\n            getJSON,\n            post\n        };\n        /* *\n         *\n         *  API Declarations\n         *\n         * */\n        /**\n         * @interface Highcharts.AjaxSettingsObject\n         */ /**\n        * The payload to send.\n        *\n        * @name Highcharts.AjaxSettingsObject#data\n        * @type {string|Highcharts.Dictionary<any>|undefined}\n        */ /**\n        * The data type expected.\n        * @name Highcharts.AjaxSettingsObject#dataType\n        * @type {\"json\"|\"xml\"|\"text\"|\"octet\"|undefined}\n        */ /**\n        * Function to call on error.\n        * @name Highcharts.AjaxSettingsObject#error\n        * @type {Function|undefined}\n        */ /**\n        * The headers; keyed on header name.\n        * @name Highcharts.AjaxSettingsObject#headers\n        * @type {Highcharts.Dictionary<string>|undefined}\n        */ /**\n        * Function to call on success.\n        * @name Highcharts.AjaxSettingsObject#success\n        * @type {Function|undefined}\n        */ /**\n        * The HTTP method to use. For example GET or POST.\n        * @name Highcharts.AjaxSettingsObject#type\n        * @type {string|undefined}\n        */ /**\n        * The URL to call.\n        * @name Highcharts.AjaxSettingsObject#url\n        * @type {string}\n        */\n        (''); // keeps doclets above in JS file\n\n        return HttpUtilities;\n    });\n    _registerModule(_modules, 'Extensions/Exporting/Exporting.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Chart/ChartNavigationComposition.js'], _modules['Core/Defaults.js'], _modules['Extensions/Exporting/ExportingDefaults.js'], _modules['Extensions/Exporting/ExportingSymbols.js'], _modules['Extensions/Exporting/Fullscreen.js'], _modules['Core/Globals.js'], _modules['Core/HttpUtilities.js'], _modules['Core/Utilities.js']], function (AST, Chart, ChartNavigationComposition, D, ExportingDefaults, ExportingSymbols, Fullscreen, G, HU, U) {\n        /* *\n         *\n         *  Exporting module\n         *\n         *  (c) 2010-2021 Torstein Honsi\n         *\n         *  License: www.highcharts.com/license\n         *\n         *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n         *\n         * */\n        const { defaultOptions, setOptions } = D;\n        const { doc, SVG_NS, win } = G;\n        const { addEvent, css, createElement, discardElement, extend, find, fireEvent, isObject, merge, objectEach, pick, removeEvent, uniqueKey } = U;\n        /* *\n         *\n         *  Composition\n         *\n         * */\n        var Exporting;\n        (function (Exporting) {\n            /* *\n             *\n             *  Declarations\n             *\n             * */\n            /* *\n             *\n             *  Constants\n             *\n             * */\n            const composedMembers = [];\n            // These CSS properties are not inlined. Remember camelCase.\n            const inlineDenylist = [\n                /-/,\n                /^(clipPath|cssText|d|height|width)$/,\n                /^font$/,\n                /[lL]ogical(Width|Height)$/,\n                /^parentRule$/,\n                /^(cssRules|ownerRules)$/,\n                /perspective/,\n                /TapHighlightColor/,\n                /^transition/,\n                /^length$/,\n                /^[0-9]+$/ // #17538\n            ];\n            // These ones are translated to attributes rather than styles\n            const inlineToAttributes = [\n                'fill',\n                'stroke',\n                'strokeLinecap',\n                'strokeLinejoin',\n                'strokeWidth',\n                'textAnchor',\n                'x',\n                'y'\n            ];\n            Exporting.inlineAllowlist = [];\n            const unstyledElements = [\n                'clipPath',\n                'defs',\n                'desc'\n            ];\n            /* *\n             *\n             *  Variables\n             *\n             * */\n            let printingChart;\n            /* *\n             *\n             *  Functions\n             *\n             * */\n            /* eslint-disable valid-jsdoc */\n            /**\n             * Add the export button to the chart, with options.\n             *\n             * @private\n             * @function Highcharts.Chart#addButton\n             * @param {Highcharts.NavigationButtonOptions} options\n             * @requires modules/exporting\n             */\n            function addButton(options) {\n                const chart = this, renderer = chart.renderer, btnOptions = merge(chart.options.navigation.buttonOptions, options), onclick = btnOptions.onclick, menuItems = btnOptions.menuItems, symbolSize = btnOptions.symbolSize || 12;\n                let symbol;\n                if (!chart.btnCount) {\n                    chart.btnCount = 0;\n                }\n                // Keeps references to the button elements\n                if (!chart.exportDivElements) {\n                    chart.exportDivElements = [];\n                    chart.exportSVGElements = [];\n                }\n                if (btnOptions.enabled === false || !btnOptions.theme) {\n                    return;\n                }\n                const attr = btnOptions.theme;\n                let callback;\n                if (!chart.styledMode) {\n                    attr.fill = pick(attr.fill, \"#ffffff\" /* Palette.backgroundColor */);\n                    attr.stroke = pick(attr.stroke, 'none');\n                }\n                if (onclick) {\n                    callback = function (e) {\n                        if (e) {\n                            e.stopPropagation();\n                        }\n                        onclick.call(chart, e);\n                    };\n                }\n                else if (menuItems) {\n                    callback = function (e) {\n                        // Consistent with onclick call (#3495)\n                        if (e) {\n                            e.stopPropagation();\n                        }\n                        chart.contextMenu(button.menuClassName, menuItems, button.translateX || 0, button.translateY || 0, button.width || 0, button.height || 0, button);\n                        button.setState(2);\n                    };\n                }\n                if (btnOptions.text && btnOptions.symbol) {\n                    attr.paddingLeft = pick(attr.paddingLeft, 30);\n                }\n                else if (!btnOptions.text) {\n                    extend(attr, {\n                        width: btnOptions.width,\n                        height: btnOptions.height,\n                        padding: 0\n                    });\n                }\n                if (!chart.styledMode) {\n                    attr['stroke-linecap'] = 'round';\n                    attr.fill = pick(attr.fill, \"#ffffff\" /* Palette.backgroundColor */);\n                    attr.stroke = pick(attr.stroke, 'none');\n                }\n                const button = renderer\n                    .button(btnOptions.text, 0, 0, callback, attr, void 0, void 0, void 0, void 0, btnOptions.useHTML)\n                    .addClass(options.className)\n                    .attr({\n                    title: pick(chart.options.lang[btnOptions._titleKey || btnOptions.titleKey], '')\n                });\n                button.menuClassName = (options.menuClassName ||\n                    'highcharts-menu-' + chart.btnCount++);\n                if (btnOptions.symbol) {\n                    symbol = renderer\n                        .symbol(btnOptions.symbol, btnOptions.symbolX - (symbolSize / 2), btnOptions.symbolY - (symbolSize / 2), symbolSize, symbolSize\n                    // If symbol is an image, scale it (#7957)\n                    , {\n                        width: symbolSize,\n                        height: symbolSize\n                    })\n                        .addClass('highcharts-button-symbol')\n                        .attr({\n                        zIndex: 1\n                    })\n                        .add(button);\n                    if (!chart.styledMode) {\n                        symbol.attr({\n                            stroke: btnOptions.symbolStroke,\n                            fill: btnOptions.symbolFill,\n                            'stroke-width': btnOptions.symbolStrokeWidth || 1\n                        });\n                    }\n                }\n                button\n                    .add(chart.exportingGroup)\n                    .align(extend(btnOptions, {\n                    width: button.width,\n                    x: pick(btnOptions.x, chart.buttonOffset) // #1654\n                }), true, 'spacingBox');\n                chart.buttonOffset += (((button.width || 0) + btnOptions.buttonSpacing) *\n                    (btnOptions.align === 'right' ? -1 : 1));\n                chart.exportSVGElements.push(button, symbol);\n            }\n            /**\n             * Clena up after printing a chart.\n             *\n             * @function Highcharts#afterPrint\n             *\n             * @private\n             *\n             * @param {Highcharts.Chart} chart\n             *        Chart that was (or suppose to be) printed\n             *\n             * @emits Highcharts.Chart#event:afterPrint\n             */\n            function afterPrint() {\n                const chart = this;\n                if (!chart.printReverseInfo) {\n                    return void 0;\n                }\n                const { childNodes, origDisplay, resetParams } = chart.printReverseInfo;\n                // put the chart back in\n                chart.moveContainers(chart.renderTo);\n                // restore all body content\n                [].forEach.call(childNodes, function (node, i) {\n                    if (node.nodeType === 1) {\n                        node.style.display = (origDisplay[i] || '');\n                    }\n                });\n                chart.isPrinting = false;\n                // Reset printMaxWidth\n                if (resetParams) {\n                    chart.setSize.apply(chart, resetParams);\n                }\n                delete chart.printReverseInfo;\n                printingChart = void 0;\n                fireEvent(chart, 'afterPrint');\n            }\n            /**\n             * Prepare chart and document before printing a chart.\n             *\n             * @function Highcharts#beforePrint\n             *\n             * @private\n             *\n             *\n             * @emits Highcharts.Chart#event:beforePrint\n             */\n            function beforePrint() {\n                const chart = this, body = doc.body, printMaxWidth = chart.options.exporting.printMaxWidth, printReverseInfo = {\n                    childNodes: body.childNodes,\n                    origDisplay: [],\n                    resetParams: void 0\n                };\n                chart.isPrinting = true;\n                chart.pointer.reset(null, 0);\n                fireEvent(chart, 'beforePrint');\n                // Handle printMaxWidth\n                const handleMaxWidth = printMaxWidth &&\n                    chart.chartWidth > printMaxWidth;\n                if (handleMaxWidth) {\n                    printReverseInfo.resetParams = [\n                        chart.options.chart.width,\n                        void 0,\n                        false\n                    ];\n                    chart.setSize(printMaxWidth, void 0, false);\n                }\n                // hide all body content\n                [].forEach.call(printReverseInfo.childNodes, function (node, i) {\n                    if (node.nodeType === 1) {\n                        printReverseInfo.origDisplay[i] = node.style.display;\n                        node.style.display = 'none';\n                    }\n                });\n                // pull out the chart\n                chart.moveContainers(body);\n                // Storage details for undo action after printing\n                chart.printReverseInfo = printReverseInfo;\n            }\n            /**\n             * @private\n             */\n            function chartCallback(chart) {\n                const composition = chart;\n                composition.renderExporting();\n                addEvent(chart, 'redraw', composition.renderExporting);\n                // Destroy the export elements at chart destroy\n                addEvent(chart, 'destroy', composition.destroyExport);\n                // Uncomment this to see a button directly below the chart, for quick\n                // testing of export\n                /*\n                let button, viewImage, viewSource;\n                if (!chart.renderer.forExport) {\n                    viewImage = function () {\n                        let div = doc.createElement('div');\n                        div.innerHTML = chart.getSVGForExport();\n                        chart.renderTo.parentNode.appendChild(div);\n                    };\n\n                    viewSource = function () {\n                        let pre = doc.createElement('pre');\n                        pre.innerHTML = chart.getSVGForExport()\n                            .replace(/</g, '\\n&lt;')\n                            .replace(/>/g, '&gt;');\n                        chart.renderTo.parentNode.appendChild(pre);\n                    };\n\n                    viewImage();\n\n                    // View SVG Image\n                    button = doc.createElement('button');\n                    button.innerHTML = 'View SVG Image';\n                    chart.renderTo.parentNode.appendChild(button);\n                    button.onclick = viewImage;\n\n                    // View SVG Source\n                    button = doc.createElement('button');\n                    button.innerHTML = 'View SVG Source';\n                    chart.renderTo.parentNode.appendChild(button);\n                    button.onclick = viewSource;\n                }\n                //*/\n            }\n            /**\n             * @private\n             */\n            function compose(ChartClass, SVGRendererClass) {\n                ExportingSymbols.compose(SVGRendererClass);\n                Fullscreen.compose(ChartClass);\n                if (U.pushUnique(composedMembers, ChartClass)) {\n                    const chartProto = ChartClass.prototype;\n                    chartProto.afterPrint = afterPrint;\n                    chartProto.exportChart = exportChart;\n                    chartProto.inlineStyles = inlineStyles;\n                    chartProto.print = print;\n                    chartProto.sanitizeSVG = sanitizeSVG;\n                    chartProto.getChartHTML = getChartHTML;\n                    chartProto.getSVG = getSVG;\n                    chartProto.getSVGForExport = getSVGForExport;\n                    chartProto.getFilename = getFilename;\n                    chartProto.moveContainers = moveContainers;\n                    chartProto.beforePrint = beforePrint;\n                    chartProto.contextMenu = contextMenu;\n                    chartProto.addButton = addButton;\n                    chartProto.destroyExport = destroyExport;\n                    chartProto.renderExporting = renderExporting;\n                    chartProto.callbacks.push(chartCallback);\n                    addEvent(ChartClass, 'init', onChartInit);\n                    if (G.isSafari) {\n                        G.win.matchMedia('print').addListener(function (mqlEvent) {\n                            if (!printingChart) {\n                                return void 0;\n                            }\n                            if (mqlEvent.matches) {\n                                printingChart.beforePrint();\n                            }\n                            else {\n                                printingChart.afterPrint();\n                            }\n                        });\n                    }\n                }\n                if (U.pushUnique(composedMembers, setOptions)) {\n                    defaultOptions.exporting = merge(ExportingDefaults.exporting, defaultOptions.exporting);\n                    defaultOptions.lang = merge(ExportingDefaults.lang, defaultOptions.lang);\n                    // Buttons and menus are collected in a separate config option set\n                    // called 'navigation'. This can be extended later to add control\n                    // buttons like zoom and pan right click menus.\n                    defaultOptions.navigation = merge(ExportingDefaults.navigation, defaultOptions.navigation);\n                }\n            }\n            Exporting.compose = compose;\n            /**\n             * Display a popup menu for choosing the export type.\n             *\n             * @private\n             * @function Highcharts.Chart#contextMenu\n             * @param {string} className\n             *        An identifier for the menu.\n             * @param {Array<string|Highcharts.ExportingMenuObject>} items\n             *        A collection with text and onclicks for the items.\n             * @param {number} x\n             *        The x position of the opener button\n             * @param {number} y\n             *        The y position of the opener button\n             * @param {number} width\n             *        The width of the opener button\n             * @param {number} height\n             *        The height of the opener button\n             * @requires modules/exporting\n             */\n            function contextMenu(className, items, x, y, width, height, button) {\n                const chart = this, navOptions = chart.options.navigation, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, cacheName = 'cache-' + className, \n                // For mouse leave detection\n                menuPadding = Math.max(width, height);\n                let innerMenu, menu = chart[cacheName];\n                // Create the menu only the first time\n                if (!menu) {\n                    // Create a HTML element above the SVG\n                    chart.exportContextMenu = chart[cacheName] = menu =\n                        createElement('div', {\n                            className: className\n                        }, {\n                            position: 'absolute',\n                            zIndex: 1000,\n                            padding: menuPadding + 'px',\n                            pointerEvents: 'auto',\n                            ...chart.renderer.style\n                        }, chart.fixedDiv || chart.container);\n                    innerMenu = createElement('ul', { className: 'highcharts-menu' }, chart.styledMode ? {} : {\n                        listStyle: 'none',\n                        margin: 0,\n                        padding: 0\n                    }, menu);\n                    // Presentational CSS\n                    if (!chart.styledMode) {\n                        css(innerMenu, extend({\n                            MozBoxShadow: '3px 3px 10px #888',\n                            WebkitBoxShadow: '3px 3px 10px #888',\n                            boxShadow: '3px 3px 10px #888'\n                        }, navOptions.menuStyle));\n                    }\n                    // hide on mouse out\n                    menu.hideMenu = function () {\n                        css(menu, { display: 'none' });\n                        if (button) {\n                            button.setState(0);\n                        }\n                        chart.openMenu = false;\n                        // #10361, #9998\n                        css(chart.renderTo, { overflow: 'hidden' });\n                        css(chart.container, { overflow: 'hidden' });\n                        U.clearTimeout(menu.hideTimer);\n                        fireEvent(chart, 'exportMenuHidden');\n                    };\n                    // Hide the menu some time after mouse leave (#1357)\n                    chart.exportEvents.push(addEvent(menu, 'mouseleave', function () {\n                        menu.hideTimer = win.setTimeout(menu.hideMenu, 500);\n                    }), addEvent(menu, 'mouseenter', function () {\n                        U.clearTimeout(menu.hideTimer);\n                    }), \n                    // Hide it on clicking or touching outside the menu (#2258,\n                    // #2335, #2407)\n                    addEvent(doc, 'mouseup', function (e) {\n                        if (!chart.pointer.inClass(e.target, className)) {\n                            menu.hideMenu();\n                        }\n                    }), addEvent(menu, 'click', function () {\n                        if (chart.openMenu) {\n                            menu.hideMenu();\n                        }\n                    }));\n                    // create the items\n                    items.forEach(function (item) {\n                        if (typeof item === 'string') {\n                            item = chart.options.exporting\n                                .menuItemDefinitions[item];\n                        }\n                        if (isObject(item, true)) {\n                            let element;\n                            if (item.separator) {\n                                element = createElement('hr', void 0, void 0, innerMenu);\n                            }\n                            else {\n                                // When chart initialized with the table, wrong button\n                                // text displayed, #14352.\n                                if (item.textKey === 'viewData' &&\n                                    chart.isDataTableVisible) {\n                                    item.textKey = 'hideData';\n                                }\n                                element = createElement('li', {\n                                    className: 'highcharts-menu-item',\n                                    onclick: function (e) {\n                                        if (e) { // IE7\n                                            e.stopPropagation();\n                                        }\n                                        menu.hideMenu();\n                                        if (item.onclick) {\n                                            item.onclick\n                                                .apply(chart, arguments);\n                                        }\n                                    }\n                                }, void 0, innerMenu);\n                                AST.setElementHTML(element, item.text ||\n                                    chart.options.lang[item.textKey]);\n                                if (!chart.styledMode) {\n                                    element.onmouseover = function () {\n                                        css(this, navOptions.menuItemHoverStyle);\n                                    };\n                                    element.onmouseout = function () {\n                                        css(this, navOptions.menuItemStyle);\n                                    };\n                                    css(element, extend({\n                                        cursor: 'pointer'\n                                    }, navOptions.menuItemStyle || {}));\n                                }\n                            }\n                            // Keep references to menu divs to be able to destroy them\n                            chart.exportDivElements.push(element);\n                        }\n                    });\n                    // Keep references to menu and innerMenu div to be able to destroy\n                    // them\n                    chart.exportDivElements.push(innerMenu, menu);\n                    chart.exportMenuWidth = menu.offsetWidth;\n                    chart.exportMenuHeight = menu.offsetHeight;\n                }\n                const menuStyle = { display: 'block' };\n                // if outside right, right align it\n                if (x + chart.exportMenuWidth > chartWidth) {\n                    menuStyle.right = (chartWidth - x - width - menuPadding) + 'px';\n                }\n                else {\n                    menuStyle.left = (x - menuPadding) + 'px';\n                }\n                // if outside bottom, bottom align it\n                if (y + height + chart.exportMenuHeight > chartHeight &&\n                    button.alignOptions.verticalAlign !== 'top') {\n                    menuStyle.bottom = (chartHeight - y - menuPadding) + 'px';\n                }\n                else {\n                    menuStyle.top = (y + height - menuPadding) + 'px';\n                }\n                css(menu, menuStyle);\n                // #10361, #9998\n                css(chart.renderTo, { overflow: '' });\n                css(chart.container, { overflow: '' });\n                chart.openMenu = true;\n                fireEvent(chart, 'exportMenuShown');\n            }\n            /**\n             * Destroy the export buttons.\n             * @private\n             * @function Highcharts.Chart#destroyExport\n             * @param {global.Event} [e]\n             * @requires modules/exporting\n             */\n            function destroyExport(e) {\n                const chart = e ? e.target : this, exportSVGElements = chart.exportSVGElements, exportDivElements = chart.exportDivElements, exportEvents = chart.exportEvents;\n                let cacheName;\n                // Destroy the extra buttons added\n                if (exportSVGElements) {\n                    exportSVGElements.forEach((elem, i) => {\n                        // Destroy and null the svg elements\n                        if (elem) { // #1822\n                            elem.onclick = elem.ontouchstart = null;\n                            cacheName = 'cache-' + elem.menuClassName;\n                            if (chart[cacheName]) {\n                                delete chart[cacheName];\n                            }\n                            exportSVGElements[i] = elem.destroy();\n                        }\n                    });\n                    exportSVGElements.length = 0;\n                }\n                // Destroy the exporting group\n                if (chart.exportingGroup) {\n                    chart.exportingGroup.destroy();\n                    delete chart.exportingGroup;\n                }\n                // Destroy the divs for the menu\n                if (exportDivElements) {\n                    exportDivElements.forEach(function (elem, i) {\n                        if (elem) {\n                            // Remove the event handler\n                            U.clearTimeout(elem.hideTimer); // #5427\n                            removeEvent(elem, 'mouseleave');\n                            // Remove inline events\n                            // (chart.exportDivElements as any)[i] =\n                            exportDivElements[i] =\n                                elem.onmouseout =\n                                    elem.onmouseover =\n                                        elem.ontouchstart =\n                                            elem.onclick = null;\n                            // Destroy the div by moving to garbage bin\n                            discardElement(elem);\n                        }\n                    });\n                    exportDivElements.length = 0;\n                }\n                if (exportEvents) {\n                    exportEvents.forEach(function (unbind) {\n                        unbind();\n                    });\n                    exportEvents.length = 0;\n                }\n            }\n            /**\n             * Exporting module required. Submit an SVG version of the chart to a server\n             * along with some parameters for conversion.\n             *\n             * @sample highcharts/members/chart-exportchart/\n             *         Export with no options\n             * @sample highcharts/members/chart-exportchart-filename/\n             *         PDF type and custom filename\n             * @sample highcharts/members/chart-exportchart-custom-background/\n             *         Different chart background in export\n             * @sample stock/members/chart-exportchart/\n             *         Export with Highcharts Stock\n             *\n             * @function Highcharts.Chart#exportChart\n             *\n             * @param {Highcharts.ExportingOptions} exportingOptions\n             *        Exporting options in addition to those defined in\n             *        [exporting](https://api.highcharts.com/highcharts/exporting).\n             *\n             * @param {Highcharts.Options} chartOptions\n             *        Additional chart options for the exported chart. For example a\n             *        different background color can be added here, or `dataLabels` for\n             *        export only.\n             *\n             * @requires modules/exporting\n             */\n            function exportChart(exportingOptions, chartOptions) {\n                const svg = this.getSVGForExport(exportingOptions, chartOptions);\n                // merge the options\n                exportingOptions = merge(this.options.exporting, exportingOptions);\n                // do the post\n                HU.post(exportingOptions.url, {\n                    filename: exportingOptions.filename ?\n                        exportingOptions.filename.replace(/\\//g, '-') :\n                        this.getFilename(),\n                    type: exportingOptions.type,\n                    width: exportingOptions.width,\n                    scale: exportingOptions.scale,\n                    svg: svg\n                }, exportingOptions.formAttributes);\n            }\n            /**\n             * Return the unfiltered innerHTML of the chart container. Used as hook for\n             * plugins. In styled mode, it also takes care of inlining CSS style rules.\n             *\n             * @see Chart#getSVG\n             *\n             * @function Highcharts.Chart#getChartHTML\n             *\n             * @return {string}\n             * The unfiltered SVG of the chart.\n             *\n             * @requires modules/exporting\n             */\n            function getChartHTML() {\n                if (this.styledMode) {\n                    this.inlineStyles();\n                }\n                return this.container.innerHTML;\n            }\n            /**\n             * Get the default file name used for exported charts. By default it creates\n             * a file name based on the chart title.\n             *\n             * @function Highcharts.Chart#getFilename\n             *\n             * @return {string} A file name without extension.\n             *\n             * @requires modules/exporting\n             */\n            function getFilename() {\n                const s = this.userOptions.title && this.userOptions.title.text;\n                let filename = this.options.exporting.filename;\n                if (filename) {\n                    return filename.replace(/\\//g, '-');\n                }\n                if (typeof s === 'string') {\n                    filename = s\n                        .toLowerCase()\n                        .replace(/<\\/?[^>]+(>|$)/g, '') // strip HTML tags\n                        .replace(/[\\s_]+/g, '-')\n                        .replace(/[^a-z0-9\\-]/g, '') // preserve only latin\n                        .replace(/^[\\-]+/g, '') // dashes in the start\n                        .replace(/[\\-]+/g, '-') // dashes in a row\n                        .substr(0, 24)\n                        .replace(/[\\-]+$/g, ''); // dashes in the end;\n                }\n                if (!filename || filename.length < 5) {\n                    filename = 'chart';\n                }\n                return filename;\n            }\n            /**\n             * Return an SVG representation of the chart.\n             *\n             * @sample highcharts/members/chart-getsvg/\n             *         View the SVG from a button\n             *\n             * @function Highcharts.Chart#getSVG\n             *\n             * @param {Highcharts.Options} [chartOptions]\n             *        Additional chart options for the generated SVG representation. For\n             *        collections like `xAxis`, `yAxis` or `series`, the additional\n             *        options is either merged in to the original item of the same\n             *        `id`, or to the first item if a common id is not found.\n             *\n             * @return {string}\n             *         The SVG representation of the rendered chart.\n             *\n             * @emits Highcharts.Chart#event:getSVG\n             *\n             * @requires modules/exporting\n             */\n            function getSVG(chartOptions) {\n                const chart = this;\n                let svg, seriesOptions, \n                // Copy the options and add extra options\n                options = merge(chart.options, chartOptions);\n                // Use userOptions to make the options chain in series right (#3881)\n                options.plotOptions = merge(chart.userOptions.plotOptions, chartOptions && chartOptions.plotOptions);\n                // ... and likewise with time, avoid that undefined time properties are\n                // merged over legacy global time options\n                options.time = merge(chart.userOptions.time, chartOptions && chartOptions.time);\n                // create a sandbox where a new chart will be generated\n                const sandbox = createElement('div', null, {\n                    position: 'absolute',\n                    top: '-9999em',\n                    width: chart.chartWidth + 'px',\n                    height: chart.chartHeight + 'px'\n                }, doc.body);\n                // get the source size\n                const cssWidth = chart.renderTo.style.width, cssHeight = chart.renderTo.style.height, sourceWidth = options.exporting.sourceWidth ||\n                    options.chart.width ||\n                    (/px$/.test(cssWidth) && parseInt(cssWidth, 10)) ||\n                    (options.isGantt ? 800 : 600), sourceHeight = options.exporting.sourceHeight ||\n                    options.chart.height ||\n                    (/px$/.test(cssHeight) && parseInt(cssHeight, 10)) ||\n                    400;\n                // override some options\n                extend(options.chart, {\n                    animation: false,\n                    renderTo: sandbox,\n                    forExport: true,\n                    renderer: 'SVGRenderer',\n                    width: sourceWidth,\n                    height: sourceHeight\n                });\n                options.exporting.enabled = false; // hide buttons in print\n                delete options.data; // #3004\n                // prepare for replicating the chart\n                options.series = [];\n                chart.series.forEach(function (serie) {\n                    seriesOptions = merge(serie.userOptions, {\n                        animation: false,\n                        enableMouseTracking: false,\n                        showCheckbox: false,\n                        visible: serie.visible\n                    });\n                    // Used for the navigator series that has its own option set\n                    if (!seriesOptions.isInternal) {\n                        options.series.push(seriesOptions);\n                    }\n                });\n                const colls = {};\n                chart.axes.forEach(function (axis) {\n                    // Assign an internal key to ensure a one-to-one mapping (#5924)\n                    if (!axis.userOptions.internalKey) { // #6444\n                        axis.userOptions.internalKey = uniqueKey();\n                    }\n                    if (!axis.options.isInternal) {\n                        if (!colls[axis.coll]) {\n                            colls[axis.coll] = true;\n                            options[axis.coll] = [];\n                        }\n                        options[axis.coll].push(merge(axis.userOptions, {\n                            visible: axis.visible\n                        }));\n                    }\n                });\n                // Generate the chart copy\n                const chartCopy = new chart.constructor(options, chart.callback);\n                // Axis options and series options  (#2022, #3900, #5982)\n                if (chartOptions) {\n                    ['xAxis', 'yAxis', 'series'].forEach(function (coll) {\n                        const collOptions = {};\n                        if (chartOptions[coll]) {\n                            collOptions[coll] = chartOptions[coll];\n                            chartCopy.update(collOptions);\n                        }\n                    });\n                }\n                // Reflect axis extremes in the export (#5924)\n                chart.axes.forEach(function (axis) {\n                    const axisCopy = find(chartCopy.axes, function (copy) {\n                        return copy.options.internalKey ===\n                            axis.userOptions.internalKey;\n                    }), extremes = axis.getExtremes(), userMin = extremes.userMin, userMax = extremes.userMax;\n                    if (axisCopy &&\n                        ((typeof userMin !== 'undefined' &&\n                            userMin !== axisCopy.min) || (typeof userMax !== 'undefined' &&\n                            userMax !== axisCopy.max))) {\n                        axisCopy.setExtremes(userMin, userMax, true, false);\n                    }\n                });\n                // Get the SVG from the container's innerHTML\n                svg = chartCopy.getChartHTML();\n                fireEvent(this, 'getSVG', { chartCopy: chartCopy });\n                svg = chart.sanitizeSVG(svg, options);\n                // free up memory\n                options = null;\n                chartCopy.destroy();\n                discardElement(sandbox);\n                return svg;\n            }\n            /**\n             * @private\n             * @function Highcharts.Chart#getSVGForExport\n             */\n            function getSVGForExport(options, chartOptions) {\n                const chartExportingOptions = this.options.exporting;\n                return this.getSVG(merge({ chart: { borderRadius: 0 } }, chartExportingOptions.chartOptions, chartOptions, {\n                    exporting: {\n                        sourceWidth: ((options && options.sourceWidth) ||\n                            chartExportingOptions.sourceWidth),\n                        sourceHeight: ((options && options.sourceHeight) ||\n                            chartExportingOptions.sourceHeight)\n                    }\n                }));\n            }\n            /**\n             * Make hyphenated property names out of camelCase\n             * @private\n             * @param {string} prop\n             * Property name in camelCase\n             * @return {string}\n             * Hyphenated property name\n             */\n            function hyphenate(prop) {\n                return prop.replace(/([A-Z])/g, function (a, b) {\n                    return '-' + b.toLowerCase();\n                });\n            }\n            /**\n             * Analyze inherited styles from stylesheets and add them inline\n             *\n             * @private\n             * @function Highcharts.Chart#inlineStyles\n             *\n             * @todo What are the border styles for text about? In general, text has a\n             *       lot of properties.\n             *\n             * @todo Make it work with IE9 and IE10.\n             *\n             * @requires modules/exporting\n             */\n            function inlineStyles() {\n                const denylist = inlineDenylist, allowlist = Exporting.inlineAllowlist, // For IE\n                defaultStyles = {};\n                let dummySVG;\n                // Create an iframe where we read default styles without pollution from\n                // this body\n                const iframe = doc.createElement('iframe');\n                css(iframe, {\n                    width: '1px',\n                    height: '1px',\n                    visibility: 'hidden'\n                });\n                doc.body.appendChild(iframe);\n                const iframeDoc = (iframe.contentWindow && iframe.contentWindow.document);\n                if (iframeDoc) {\n                    iframeDoc.body.appendChild(iframeDoc.createElementNS(SVG_NS, 'svg'));\n                }\n                /**\n                 * Call this on all elements and recurse to children\n                 * @private\n                 * @param {Highcharts.HTMLDOMElement} node\n                 *        Element child\n                     */\n                function recurse(node) {\n                    const filteredStyles = {};\n                    let styles, parentStyles, dummy, denylisted, allowlisted, i;\n                    /**\n                     * Check computed styles and whether they are in the allow/denylist\n                     * for styles or atttributes.\n                     * @private\n                     * @param {string} val\n                     *        Style value\n                     * @param {string} prop\n                     *        Style property name\n                             */\n                    function filterStyles(val, prop) {\n                        // Check against allowlist & denylist\n                        denylisted = allowlisted = false;\n                        if (allowlist.length) {\n                            // Styled mode in IE has a allowlist instead. Exclude all\n                            // props not in this list.\n                            i = allowlist.length;\n                            while (i-- && !allowlisted) {\n                                allowlisted = allowlist[i].test(prop);\n                            }\n                            denylisted = !allowlisted;\n                        }\n                        // Explicitly remove empty transforms\n                        if (prop === 'transform' && val === 'none') {\n                            denylisted = true;\n                        }\n                        i = denylist.length;\n                        while (i-- && !denylisted) {\n                            denylisted = (denylist[i].test(prop) ||\n                                typeof val === 'function');\n                        }\n                        if (!denylisted) {\n                            // If parent node has the same style, it gets inherited, no\n                            // need to inline it. Top-level props should be diffed\n                            // against parent (#7687).\n                            if ((parentStyles[prop] !== val ||\n                                node.nodeName === 'svg') &&\n                                defaultStyles[node.nodeName][prop] !== val) {\n                                // Attributes\n                                if (!inlineToAttributes ||\n                                    inlineToAttributes.indexOf(prop) !== -1) {\n                                    if (val) {\n                                        node.setAttribute(hyphenate(prop), val);\n                                    }\n                                    // Styles\n                                }\n                                else {\n                                    filteredStyles[prop] = val;\n                                }\n                            }\n                        }\n                    }\n                    if (iframeDoc &&\n                        node.nodeType === 1 &&\n                        unstyledElements.indexOf(node.nodeName) === -1) {\n                        styles = win.getComputedStyle(node, null);\n                        parentStyles = node.nodeName === 'svg' ?\n                            {} :\n                            win.getComputedStyle(node.parentNode, null);\n                        // Get default styles from the browser so that we don't have to\n                        // add these\n                        if (!defaultStyles[node.nodeName]) {\n                            /*\n                            if (!dummySVG) {\n                                dummySVG = doc.createElementNS(H.SVG_NS, 'svg');\n                                dummySVG.setAttribute('version', '1.1');\n                                doc.body.appendChild(dummySVG);\n                            }\n                            */\n                            dummySVG = iframeDoc.getElementsByTagName('svg')[0];\n                            dummy = iframeDoc.createElementNS(node.namespaceURI, node.nodeName);\n                            dummySVG.appendChild(dummy);\n                            // Get the defaults into a standard object (simple merge\n                            // won't do)\n                            const s = win.getComputedStyle(dummy, null), defaults = {};\n                            for (const key in s) {\n                                if (typeof s[key] === 'string' &&\n                                    !/^[0-9]+$/.test(key)) {\n                                    defaults[key] = s[key];\n                                }\n                            }\n                            defaultStyles[node.nodeName] = defaults;\n                            // Remove default fill, otherwise text disappears when\n                            // exported\n                            if (node.nodeName === 'text') {\n                                delete defaultStyles.text.fill;\n                            }\n                            dummySVG.removeChild(dummy);\n                        }\n                        // Loop through all styles and add them inline if they are ok\n                        for (const p in styles) {\n                            if (\n                            // Some browsers put lots of styles on the prototype...\n                            G.isFirefox ||\n                                G.isMS ||\n                                G.isSafari || // #16902\n                                // ... Chrome puts them on the instance\n                                Object.hasOwnProperty.call(styles, p)) {\n                                filterStyles(styles[p], p);\n                            }\n                        }\n                        // Apply styles\n                        css(node, filteredStyles);\n                        // Set default stroke width (needed at least for IE)\n                        if (node.nodeName === 'svg') {\n                            node.setAttribute('stroke-width', '1px');\n                        }\n                        if (node.nodeName === 'text') {\n                            return;\n                        }\n                        // Recurse\n                        [].forEach.call(node.children || node.childNodes, recurse);\n                    }\n                }\n                /**\n                 * Remove the dummy objects used to get defaults\n                 * @private\n                 */\n                function tearDown() {\n                    dummySVG.parentNode.removeChild(dummySVG);\n                    // Remove trash from DOM that stayed after each exporting\n                    iframe.parentNode.removeChild(iframe);\n                }\n                recurse(this.container.querySelector('svg'));\n                tearDown();\n            }\n            /**\n             * Move the chart container(s) to another div.\n             *\n             * @function Highcharts#moveContainers\n             *\n             * @private\n             *\n             * @param {Highcharts.HTMLDOMElement} moveTo\n             *        Move target\n             */\n            function moveContainers(moveTo) {\n                const chart = this;\n                (chart.fixedDiv ? // When scrollablePlotArea is active (#9533)\n                    [chart.fixedDiv, chart.scrollingContainer] :\n                    [chart.container]).forEach(function (div) {\n                    moveTo.appendChild(div);\n                });\n            }\n            /**\n             * Add update methods to handle chart.update and chart.exporting.update and\n             * chart.navigation.update. These must be added to the chart instance rather\n             * than the Chart prototype in order to use the chart instance inside the\n             * update function.\n             * @private\n             */\n            function onChartInit() {\n                const chart = this, \n                /**\n                 * @private\n                 * @param {\"exporting\"|\"navigation\"} prop\n                 *        Property name in option root\n                 * @param {Highcharts.ExportingOptions|Highcharts.NavigationOptions} options\n                 *        Options to update\n                 * @param {boolean} [redraw=true]\n                 *        Whether to redraw\n                         */\n                update = (prop, options, redraw) => {\n                    chart.isDirtyExporting = true;\n                    merge(true, chart.options[prop], options);\n                    if (pick(redraw, true)) {\n                        chart.redraw();\n                    }\n                };\n                chart.exporting = {\n                    update: function (options, redraw) {\n                        update('exporting', options, redraw);\n                    }\n                };\n                // Register update() method for navigation. Cannot be set the same way\n                // as for exporting, because navigation options are shared with bindings\n                // which has separate update() logic.\n                ChartNavigationComposition\n                    .compose(chart).navigation\n                    .addUpdate((options, redraw) => {\n                    update('navigation', options, redraw);\n                });\n            }\n            /**\n             * Exporting module required. Clears away other elements in the page and\n             * prints the chart as it is displayed. By default, when the exporting\n             * module is enabled, a context button with a drop down menu in the upper\n             * right corner accesses this function.\n             *\n             * @sample highcharts/members/chart-print/\n             *         Print from a HTML button\n             *\n             * @function Highcharts.Chart#print\n             *\n             *\n             * @emits Highcharts.Chart#event:beforePrint\n             * @emits Highcharts.Chart#event:afterPrint\n             *\n             * @requires modules/exporting\n             */\n            function print() {\n                const chart = this;\n                if (chart.isPrinting) { // block the button while in printing mode\n                    return;\n                }\n                printingChart = chart;\n                if (!G.isSafari) {\n                    chart.beforePrint();\n                }\n                // Give the browser time to draw WebGL content, an issue that randomly\n                // appears (at least) in Chrome ~67 on the Mac (#8708).\n                setTimeout(() => {\n                    win.focus(); // #1510\n                    win.print();\n                    // allow the browser to prepare before reverting\n                    if (!G.isSafari) {\n                        setTimeout(() => {\n                            chart.afterPrint();\n                        }, 1000);\n                    }\n                }, 1);\n            }\n            /**\n             * Add the buttons on chart load\n             * @private\n             * @function Highcharts.Chart#renderExporting\n             * @requires modules/exporting\n             */\n            function renderExporting() {\n                const chart = this, exportingOptions = chart.options.exporting, buttons = exportingOptions.buttons, isDirty = chart.isDirtyExporting || !chart.exportSVGElements;\n                chart.buttonOffset = 0;\n                if (chart.isDirtyExporting) {\n                    chart.destroyExport();\n                }\n                if (isDirty && exportingOptions.enabled !== false) {\n                    chart.exportEvents = [];\n                    chart.exportingGroup = chart.exportingGroup ||\n                        chart.renderer.g('exporting-group').attr({\n                            zIndex: 3 // #4955, // #8392\n                        }).add();\n                    objectEach(buttons, function (button) {\n                        chart.addButton(button);\n                    });\n                    chart.isDirtyExporting = false;\n                }\n            }\n            /**\n             * Exporting module only. A collection of fixes on the produced SVG to\n             * account for expando properties, browser bugs.\n             * Returns a cleaned SVG.\n             *\n             * @private\n             * @function Highcharts.Chart#sanitizeSVG\n             * @param {string} svg\n             *        SVG code to sanitize\n             * @param {Highcharts.Options} options\n             *        Chart options to apply\n             * @return {string}\n             *         Sanitized SVG code\n             * @requires modules/exporting\n             */\n            function sanitizeSVG(svg, options) {\n                const split = svg.indexOf('</svg>') + 6;\n                let html = svg.substr(split);\n                // Remove any HTML added to the container after the SVG (#894, #9087)\n                svg = svg.substr(0, split);\n                // Move HTML into a foreignObject\n                if (options && options.exporting && options.exporting.allowHTML) {\n                    if (html) {\n                        html = '<foreignObject x=\"0\" y=\"0\" ' +\n                            'width=\"' + options.chart.width + '\" ' +\n                            'height=\"' + options.chart.height + '\">' +\n                            '<body xmlns=\"http://www.w3.org/1999/xhtml\">' +\n                            // Some tags needs to be closed in xhtml (#13726)\n                            html.replace(/(<(?:img|br).*?(?=\\>))>/g, '$1 />') +\n                            '</body>' +\n                            '</foreignObject>';\n                        svg = svg.replace('</svg>', html + '</svg>');\n                    }\n                }\n                svg = svg\n                    .replace(/zIndex=\"[^\"]+\"/g, '')\n                    .replace(/symbolName=\"[^\"]+\"/g, '')\n                    .replace(/jQuery[0-9]+=\"[^\"]+\"/g, '')\n                    .replace(/url\\((\"|&quot;)(.*?)(\"|&quot;)\\;?\\)/g, 'url($2)')\n                    .replace(/url\\([^#]+#/g, 'url(#')\n                    .replace(/<svg /, '<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" ')\n                    .replace(/ (|NS[0-9]+\\:)href=/g, ' xlink:href=') // #3567\n                    .replace(/\\n/, ' ')\n                    // Batik doesn't support rgba fills and strokes (#3095)\n                    .replace(/(fill|stroke)=\"rgba\\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\\.]+)\\)\"/g, // eslint-disable-line max-len\n                '$1=\"rgb($2)\" $1-opacity=\"$3\"')\n                    // Replace HTML entities, issue #347\n                    .replace(/&nbsp;/g, '\\u00A0') // no-break space\n                    .replace(/&shy;/g, '\\u00AD'); // soft hyphen\n                return svg;\n            }\n        })(Exporting || (Exporting = {}));\n        /* *\n         *\n         *  Default Export\n         *\n         * */\n        /* *\n         *\n         *  API Declarations\n         *\n         * */\n        /**\n         * Gets fired after a chart is printed through the context menu item or the\n         * Chart.print method.\n         *\n         * @callback Highcharts.ExportingAfterPrintCallbackFunction\n         *\n         * @param {Highcharts.Chart} this\n         *        The chart on which the event occured.\n         *\n         * @param {global.Event} event\n         *        The event that occured.\n         */\n        /**\n         * Gets fired before a chart is printed through the context menu item or the\n         * Chart.print method.\n         *\n         * @callback Highcharts.ExportingBeforePrintCallbackFunction\n         *\n         * @param {Highcharts.Chart} this\n         *        The chart on which the event occured.\n         *\n         * @param {global.Event} event\n         *        The event that occured.\n         */\n        /**\n         * Function to call if the offline-exporting module fails to export a chart on\n         * the client side.\n         *\n         * @callback Highcharts.ExportingErrorCallbackFunction\n         *\n         * @param {Highcharts.ExportingOptions} options\n         *        The exporting options.\n         *\n         * @param {global.Error} err\n         *        The error from the module.\n         */\n        /**\n         * Definition for a menu item in the context menu.\n         *\n         * @interface Highcharts.ExportingMenuObject\n         */ /**\n        * The text for the menu item.\n        *\n        * @name Highcharts.ExportingMenuObject#text\n        * @type {string|undefined}\n        */ /**\n        * If internationalization is required, the key to a language string.\n        *\n        * @name Highcharts.ExportingMenuObject#textKey\n        * @type {string|undefined}\n        */ /**\n        * The click handler for the menu item.\n        *\n        * @name Highcharts.ExportingMenuObject#onclick\n        * @type {Highcharts.EventCallbackFunction<Highcharts.Chart>|undefined}\n        */ /**\n        * Indicates a separator line instead of an item.\n        *\n        * @name Highcharts.ExportingMenuObject#separator\n        * @type {boolean|undefined}\n        */\n        /**\n         * Possible MIME types for exporting.\n         *\n         * @typedef {\"image/png\"|\"image/jpeg\"|\"application/pdf\"|\"image/svg+xml\"} Highcharts.ExportingMimeTypeValue\n         */\n        (''); // keeps doclets above in transpiled file\n        /* *\n         *\n         *  API Options\n         *\n         * */\n        /**\n         * Fires after a chart is printed through the context menu item or the\n         * `Chart.print` method.\n         *\n         * @sample highcharts/chart/events-beforeprint-afterprint/\n         *         Rescale the chart to print\n         *\n         * @type      {Highcharts.ExportingAfterPrintCallbackFunction}\n         * @since     4.1.0\n         * @context   Highcharts.Chart\n         * @requires  modules/exporting\n         * @apioption chart.events.afterPrint\n         */\n        /**\n         * Fires before a chart is printed through the context menu item or\n         * the `Chart.print` method.\n         *\n         * @sample highcharts/chart/events-beforeprint-afterprint/\n         *         Rescale the chart to print\n         *\n         * @type      {Highcharts.ExportingBeforePrintCallbackFunction}\n         * @since     4.1.0\n         * @context   Highcharts.Chart\n         * @requires  modules/exporting\n         * @apioption chart.events.beforePrint\n         */\n        (''); // keeps doclets above in transpiled file\n\n        return Exporting;\n    });\n    _registerModule(_modules, 'masters/modules/exporting.src.js', [_modules['Core/Globals.js'], _modules['Extensions/Exporting/Exporting.js'], _modules['Core/HttpUtilities.js']], function (Highcharts, Exporting, HttpUtilities) {\n\n        const G = Highcharts;\n        G.HttpUtilities = HttpUtilities;\n        G.ajax = HttpUtilities.ajax;\n        G.getJSON = HttpUtilities.getJSON;\n        G.post = HttpUtilities.post;\n        Exporting.compose(G.Chart, G.Renderer);\n\n    });\n}));"],"names":["factory","module","exports","define","amd","Highcharts","undefined","_modules","_registerModule","obj","path","args","fn","hasOwnProperty","apply","CustomEvent","window","dispatchEvent","detail","ChartNavigationComposition","compose","chart","navigation","Additions","constructor","updates","addUpdate","updateFn","push","update","options","redraw","forEach","call","H","isTouchDevice","exporting","allowTableSorting","type","url","pdfFont","normal","bold","bolditalic","italic","printMaxWidth","scale","buttons","contextButton","className","menuClassName","symbol","titleKey","menuItems","menuItemDefinitions","viewFullscreen","textKey","onclick","fullscreen","toggle","printChart","print","separator","downloadPNG","exportChart","downloadJPEG","downloadPDF","downloadSVG","lang","exitFullscreen","contextButtonTitle","buttonOptions","symbolSize","symbolX","symbolY","align","buttonSpacing","height","verticalAlign","width","symbolFill","symbolStroke","symbolStrokeWidth","theme","padding","menuStyle","border","borderRadius","background","menuItemStyle","color","fontSize","transition","menuItemHoverStyle","ExportingSymbols","modifiedClasses","menu","x","y","menuball","h","concat","circle","SVGRendererClass","indexOf","symbols","prototype","bind","AST","U","addEvent","fireEvent","composedMembers","onChartBeforeRender","Fullscreen","ChartClass","pushUnique","isOpen","container","renderTo","browserProps","requestFullscreen","fullscreenChange","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","close","optionsChart","ownerDocument","Document","unbindFullscreenEvent","setSize","origWidth","origHeight","origWidthOption","origHeightOption","setButtonText","open","chartWidth","chartHeight","unbindChange","unbindDestroy","promise","alert","exportDivElements","exportingOptions","exportDivElement","setElementHTML","text","G","doc","createElement","discardElement","merge","objectEach","HttpUtilities","ajax","settings","headers","json","xml","octet","r","XMLHttpRequest","handleError","xhr","err","error","toUpperCase","setRequestHeader","dataType","val","key","responseType","onreadystatechange","res","readyState","status","responseText","JSON","parse","e","Error","success","data","stringify","send","getJSON","post","formAttributes","form","method","action","enctype","display","body","name","value","submit","Chart","D","ExportingDefaults","HU","Exporting","defaultOptions","setOptions","SVG_NS","win","css","extend","find","isObject","pick","removeEvent","uniqueKey","printingChart","inlineDenylist","inlineToAttributes","inlineAllowlist","unstyledElements","addButton","callback","renderer","btnOptions","btnCount","exportSVGElements","enabled","attr","styledMode","fill","stroke","stopPropagation","contextMenu","button","translateX","translateY","setState","paddingLeft","useHTML","addClass","title","_titleKey","zIndex","add","exportingGroup","buttonOffset","afterPrint","printReverseInfo","childNodes","origDisplay","resetParams","moveContainers","node","i","nodeType","style","isPrinting","beforePrint","pointer","reset","handleMaxWidth","chartCallback","composition","renderExporting","destroyExport","items","navOptions","cacheName","menuPadding","Math","max","innerMenu","exportContextMenu","position","pointerEvents","fixedDiv","listStyle","margin","MozBoxShadow","WebkitBoxShadow","boxShadow","hideMenu","openMenu","overflow","clearTimeout","hideTimer","exportEvents","setTimeout","inClass","target","item","element","isDataTableVisible","arguments","onmouseover","onmouseout","cursor","exportMenuWidth","offsetWidth","exportMenuHeight","offsetHeight","right","left","alignOptions","bottom","top","elem","ontouchstart","destroy","length","unbind","chartOptions","svg","getSVGForExport","filename","replace","getFilename","getChartHTML","inlineStyles","innerHTML","s","userOptions","toLowerCase","substr","getSVG","seriesOptions","plotOptions","time","sandbox","cssWidth","cssHeight","sourceWidth","test","parseInt","isGantt","sourceHeight","animation","forExport","series","serie","enableMouseTracking","showCheckbox","visible","isInternal","colls","axes","axis","internalKey","coll","chartCopy","collOptions","axisCopy","copy","extremes","getExtremes","userMin","userMax","min","setExtremes","sanitizeSVG","chartExportingOptions","dummySVG","allowlist","defaultStyles","iframe","visibility","appendChild","iframeDoc","contentWindow","document","createElementNS","recurse","styles","parentStyles","dummy","denylisted","allowlisted","filteredStyles","nodeName","getComputedStyle","parentNode","getElementsByTagName","namespaceURI","defaults","removeChild","p","isFirefox","isMS","isSafari","Object","filterStyles","prop","denylist","setAttribute","a","b","children","querySelector","moveTo","scrollingContainer","div","onChartInit","isDirtyExporting","focus","isDirty","g","split","html","allowHTML","chartProto","callbacks","matchMedia","addListener","mqlEvent","matches","Renderer"],"mappings":"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"}