/*
 * jscharting.js v3.0.2.20210127
 * (c) 2009-2021 Corporate Web Solutions Ltd.
 * All client side / JavaScript code may not be used in any way without a valid JSCharting license.
 * License holder usage is governed by the license.txt terms included with the distribution.
 * To license JSCharting for your own use, please visit jscharting.com
 */
"use strict";
(function (c) {
    function K(d, b) {
        function a() {
            this.constructor = d;
        }
        Fa(d, b);
        d.prototype = null === b ? Object.create(b) : ((a.prototype = b.prototype), new a());
    }
    function fb(d, b) {
        function a(a) {
            return function (b) {
                return e([a, b]);
            };
        }
        function e(a) {
            if (m) throw new TypeError("Generator is already executing.");
            for (; h; )
                try {
                    if (((m = 1), c && (g = a[0] & 2 ? c["return"] : a[0] ? c["throw"] || ((g = c["return"]) && g.call(c), 0) : c.next) && !(g = g.call(c, a[1])).done)) return g;
                    if (((c = 0), g)) a = [a[0] & 2, g.value];
                    switch (a[0]) {
                        case 0:
                        case 1:
                            g = a;
                            break;
                        case 4:
                            return h.label++, { value: a[1], done: !1 };
                        case 5:
                            h.label++;
                            c = a[1];
                            a = [0];
                            continue;
                        case 7:
                            a = h.ops.pop();
                            h.trys.pop();
                            continue;
                        default:
                            if (!((g = h.trys), (g = 0 < g.length && g[g.length - 1])) && (6 === a[0] || 2 === a[0])) {
                                h = 0;
                                continue;
                            }
                            if (3 === a[0] && (!g || (a[1] > g[0] && a[1] < g[3]))) h.label = a[1];
                            else if (6 === a[0] && h.label < g[1]) (h.label = g[1]), (g = a);
                            else if (g && h.label < g[2]) (h.label = g[2]), h.ops.push(a);
                            else {
                                g[2] && h.ops.pop();
                                h.trys.pop();
                                continue;
                            }
                    }
                    a = b.call(d, h);
                } catch (n) {
                    (a = [6, n]), (c = 0);
                } finally {
                    m = g = 0;
                }
            if (a[0] & 5) throw a[1];
            return { value: a[0] ? a[1] : void 0, done: !0 };
        }
        var h = {
                label: 0,
                sent: function () {
                    if (g[0] & 1) throw g[1];
                    return g[1];
                },
                trys: [],
                ops: [],
            },
            m,
            c,
            g,
            k;
        return (
            (k = { next: a(0), throw: a(1), return: a(2) }),
            "function" === typeof Symbol &&
                (k[Symbol.iterator] = function () {
                    return this;
                }),
            k
        );
    }
    function B(d) {
        var b = "function" === typeof Symbol && d[Symbol.iterator],
            a = 0;
        return b
            ? b.call(d)
            : {
                  next: function () {
                      d && a >= d.length && (d = void 0);
                      return { value: d && d[a++], done: !d };
                  },
              };
    }
    function N(d, b) {
        var a = "function" === typeof Symbol && d[Symbol.iterator];
        if (!a) return d;
        d = a.call(d);
        var e,
            h = [];
        try {
            for (; (void 0 === b || 0 < b--) && !(e = d.next()).done; ) h.push(e.value);
        } catch (f) {
            var m = { error: f };
        } finally {
            try {
                e && !e.done && (a = d["return"]) && a.call(d);
            } finally {
                if (m) throw m.error;
            }
        }
        return h;
    }
    function G() {
        for (var d = [], b = 0; b < arguments.length; b++) d = d.concat(N(arguments[b]));
        return d;
    }
    function va(d, b) {
        for (; 0 > d; ) d += 360;
        for (; b < d; ) b += 360;
        return b - d;
    }
    function Zb(d, b) {
        var a = c.bboxLib.bestLayout(d, { width: b.width, height: b.height }),
            e = a.rows;
        a = a.cols;
        var h = b.height / e;
        b = b.width / a;
        for (var m = [], f = 0, g = 0; f < e && g < d; f++) for (var k = 0; k < a && g < d; k++) m.push([k * b, f * h, b, h]), g++;
        return { boxes: m, cols: a, rows: e };
    }
    function $b(d, b, a) {
        function e(e) {
            for (var b = e.rows, k = b || e, l = [], n = [], p = 0, q = 0, r = a.height / k, E = k === d.length, D = 0, F = []; 0 < k; ) {
                for (var C = 0, A = [], H = 0; q < d.length; ) {
                    var L = d[q],
                        P = L.limits || [0, 0],
                        M = P[0];
                    P = P[1];
                    var J = 1 === e ? a.width / d.length : 0;
                    L = b ? L : g(L, h(r, J), E ? a.width : c.undefVal);
                    J = L.outerBox;
                    if (!b && (J[2] < M || J[3] < P)) return null;
                    J[0] = C;
                    J[1] = p;
                    L.row = D;
                    L.column = H;
                    if (0.001 < C + J[2] - a.width || (b && H === e.cols)) break;
                    q++;
                    H++;
                    C += J[2];
                    A.push(L);
                }
                F.push((a.width - C) / (2 * (A.length + 1)));
                A.length && n.push(A.length);
                l = l.concat(A);
                k--;
                D++;
                p += r;
            }
            e = m(n);
            e = f(l) / (1 + e);
            return { currentBoxes: l, usedSpace: e, emptyUnitWidths: F, rowHeight: r, currentColumns: n };
        }
        function h(a, e) {
            var b = 0;
            c.jsLib.each(d, function (h) {
                h = g(h, a, e).outerBox[3];
                if (!b || b > h) b = h;
            });
            return b;
        }
        function m(a) {
            var e = 0,
                b = 0,
                h = 0;
            c.jsLib.map(a, function (a, d) {
                0 < a && (h++, (e += a), (b = b > a ? b : a));
            });
            var d = e / h;
            return (
                c.jsLib.sum(
                    c.jsLib.map(a, function (a) {
                        return 0 < a ? Math.abs(a - d) : 0;
                    })
                ) /
                (h * b)
            );
        }
        function f(a) {
            var e = c.jsLib.map(a, function (a) {
                    return a.outerBox[2] * a.outerBox[3];
                }),
                b = c.jsLib.sum(e),
                h = b / a.length;
            a = c.jsLib.sum(
                c.jsLib.map(e, function (a) {
                    return Math.abs(a - h);
                })
            );
            return (b - a) / k;
        }
        function g(a, e, b) {
            var h = a.outerBox.slice(0);
            a = a.innerSize.slice(0);
            var d = h[2] - a[0],
                m = h[3] - a[1],
                c = a[0] / a[1],
                f = !!b;
            if (f) {
                var g = a[2] ? h[2] : b,
                    k = a[3] ? h[3] : (b - d) / c + m;
                k > e && (f = !1);
            }
            f || ((k = a[3] ? h[3] : e), (g = a[2] ? h[2] : (e - m) * c + d));
            h[2] = g;
            h[3] = k;
            a[0] = g - d;
            a[1] = k - m;
            return { outerBox: h, innerSize: a };
        }
        for (var k = a.width * a.height, l, n = d.length, p, r = 0; r <= n; r++) (l = e(r || b)) && l.currentBoxes.length === d.length && (!p || l.usedSpace > p.usedSpace) && (p = l);
        p = p || l;
        return ac(
            c.jsLib.map(p.currentBoxes, function (a) {
                return a.outerBox;
            }),
            { columnsPerRow: p.currentColumns, unitWidths: p.emptyUnitWidths, rowHeight: p.rowHeight, height: a.height }
        );
    }
    function ac(d, b) {
        var a = [],
            e = b.columnsPerRow,
            h = e.length,
            m = Math.ceil(d.length / h),
            c = b.unitWidths,
            g = b.rowHeight;
        b = (b.height - g * h) / (2 * (h + 1));
        for (var k = 0, l = 0; l < h; l++)
            for (var n = 0, p = e[l]; n < p; n++) {
                var r = d[k++],
                    q = N(r, 4),
                    t = q[0],
                    u = q[1],
                    v = q[3];
                a.push([t + (2 * n + (0 == n ? 0 : 1)) * c[l], u + (2 * l + (0 == l ? 0 : 1)) * b, q[2] + (2 + (0 == n ? 1 : 0) + (n == p - 1 ? 1 : 0)) * c[l], g + (2 + (0 == l ? 1 : 0) + (l == h - 1 ? 1 : 0)) * b]);
                r[0] = t + 2 * (n + 1) * c[l];
                r[1] = u + (g - v) / 2 + 2 * (l + 1) * b;
            }
        return { boxes: d, rows: h, cols: m, spaces: a };
    }
    function Ga(d, b, a) {
        d = c.bboxLib.ltrbMargins(d, b, a);
        return [d[1], d[2], d[3], d[0]];
    }
    function gb(d, b) {
        d = d[1] + d[3] - b[1];
        return 0 < d ? { cy: b[1] + d / 2, overlap: d } : { cy: 0, overlap: 0 };
    }
    function bc(d, b) {
        var a = c.bboxLib.bestLayout(d, b, !0),
            e = a.rows,
            h = a.cols,
            m = b.equal,
            f = b.padding,
            g = a.maxSize,
            k = g * f,
            l,
            n = [],
            p = b.width - (m ? k * (h + 1) : 0);
        b = (b.height - (m ? k * (e + 1) : 0)) / e;
        g = Math.min(p / h, b);
        !m && f && (g = 1 >= f ? g - g * f : g - f);
        for (f = 0; f < e; f++) {
            var r = Math.min(d - f * h, h),
                q = p / r;
            for (l = 0; l < r; l++) n.push({ cx: (l + 1) * q - q / 2 + (m ? k * (l + 1) : 0), cy: (f + 1) * b - b / 2 + (m ? k * (f + 1) : 0), size: g, maxWidth: q, maxHeight: g, innerSize: g / 3 + "%" });
        }
        return { layout: a, boxes: n };
    }
    function cc(d, b) {
        var a = new c.pathLib.Path({ hasLines: d.hasLines, hasCurves: d.hasCurves, isClosed: d.isClosed, hasErrors: d.hasErrors }),
            e = [],
            h = 0;
        for (d = d.shapes; h < d.length; h++) {
            for (var m = [], f = { items: m }, g = 0, k = d[h].items; g < k.length; g++) {
                for (var l = k[g], n = [l[0]], p = 1; p < l.length; p++) n[p] = b(l[p]);
                m[g] = n;
            }
            e.push(f);
        }
        a.shapes = e;
        return a;
    }
    function hb(d, b, a) {
        var e = d.length(),
            h = 1 / e;
        b = c.jsLib.def(b) ? b * h : 0;
        a = c.jsLib.def(a) ? (e - a) * h : 0;
        return c.pathLib.subPath(d, b, a);
    }
    function la(d, b) {
        void 0 === b && (b = {});
        var a = d.currentOptions,
            e,
            h = c.jsLib.getValType(a.angle),
            m = function (a) {
                var b;
                "string" === c.jsLib.getValType((b = e[a])) && -1 < b.indexOf("%") && (e[a] = d.replaceTokens(e[a]));
            };
        "object" === h && (e = c.jsLib.merge({}, a.angle)) ? (c.jsLib.defaults(e, b), c.jsLib.each(["start", "end", "orientation", "sweep"], m), (e = Ha(e))) : (e = "undefined" !== h ? Ha(a.angle) : Ha(b));
        return e;
    }
    function Ha(d, b) {
        var a;
        if (!b) return ib(d);
        (a = b ? c.jsLib.evalPath(d, b) : d) && c.jsLib.setPathVal(d, b, ib(a));
    }
    function ib(d) {
        var b, a;
        switch (c.jsLib.getValType(d)) {
            case "number":
                var e = !0,
                    h = d;
                break;
            case "array":
                if (2 <= d.length) {
                    var m = (e = !0);
                    h = d[0];
                    var f = d[1];
                } else 1 === d.length && ((h = d[0]), (e = !0));
                break;
            case "object":
                if (d) {
                    e = typeof (h = d.start) !== c.undef;
                    m = typeof (f = d.end) !== c.undef;
                    var g = typeof (b = d.orientation) !== c.undef,
                        k = typeof (a = c.normalizationUtils.percOrNum(d.sweep, 360)) !== c.undef;
                }
        }
        d = h;
        if (e && m)
            var l = d,
                n = f;
        else
            e && k
                ? ((l = d), (n = d + a))
                : g && k
                ? ((l = b - a / 2), (n = l + a))
                : g && e
                ? ((l = d), (n = 2 * (b - d) + d))
                : g && m
                ? ((n = f), (l = f - 2 * (f - b)))
                : k
                ? ((l = -(a / 2)), (n = a / 2))
                : g
                ? ((l = b - 180), (n = l + 360))
                : e
                ? ((l = d), (n = l + 360))
                : m && ((n = f), (l = n - 360));
        return { start: l, end: n };
    }
    function Ia(d) {
        if (!d.keys) {
            var b = [];
            d.forEach(function (a, e) {
                b.push(e);
            });
            return b;
        }
        return Array.from(d.keys());
    }
    function dc(d) {
        if (!d.values) {
            var b = [];
            d.forEach(function (a) {
                b.push(a);
            });
            return b;
        }
        return Array.from(d.values());
    }
    function ec(d) {
        var b = [],
            a = {},
            e = {};
        d.points().each(function (h) {
            var d = h.currentOptions.id,
                f = h.currentOptions.parent;
            f = c.jsLib.isString(f) ? f.split(",") : [f];
            var g = !c.jsLib.isUndefined(f[0]) && "" !== f[0],
                k = !c.jsLib.find(f, function (a) {
                    return !e[a];
                });
            !g || k
                ? ((e[d] = !0), b.push(h), (d = a[d]) && Array.prototype.push.apply(b, d))
                : c.jsLib.each(f, function (e) {
                      a[e] = a[e] || [];
                      a[e].push(h);
                  });
        });
        return b;
    }
    function jb(d, b, a, e) {
        b = a.rectPos;
        var h = d.series;
        e = h.ctManager;
        e.isType("gauge", h);
        e = "roundcaps" === e.settingVal("columnType", h);
        var m = d.getShapeOptions(h.renderRect);
        d = h.pane;
        var f = c.bboxLib.fromRect(h.renderRect),
            g = d.angleArc();
        h = c.bboxLib.center(f);
        var k = f[3] / 2,
            l = d.getRadarType(),
            n = "caPaneRadar" === d.kind;
        e = n || !e ? {} : { caps: { end: "round", start: "round" } };
        m = a.pathOptions = c.jsLib.merge(kb(g, b, f, m, e.caps), { rectPos: b, arcCfg: g });
        if ("spider" === l) a = lb(d, b);
        else if (n) a = c.shapeLib.arc(h[0], h[1], k, k, (a.pathOptions = c.jsLib.merge(m, e)));
        else return { arcShape: a.pathOptions };
        return c.shapeLib.flattenD(a);
    }
    function lb(d, b) {
        b = c.bboxLib.boxPoints(c.bboxLib.fromRect(b), "tl,tm,tr,br,bm,bl");
        b = c.jsLib.map(b, function (a) {
            return d.projection.webVal2linxy(a[0], a[1]);
        });
        b = c.shapeLib.pointsToPath(b);
        return c.shapeLib.flattenD(b) + "Z";
    }
    function kb(d, b, a, e, h) {
        void 0 === h && (h = {});
        a || (a = b.targetBox);
        var m = c.bboxLib.center(a),
            f = a[3] / 2;
        a = a[3] / 2;
        e = c.jsLib.pick(c.jsLib.evalPath(e, "innerSize"), 0) * f;
        f = function (a) {
            return c.trigLib.toRadians(c.mathLib.mapValue(d.start, d.end, 0, 1, a));
        };
        f = [f(b.x), f(b.x + b.width)];
        b.ccw && f.reverse();
        var g = c.mathLib.mapValue(e, a, 1, 0, b.y);
        b = c.mathLib.mapValue(e, a, 1, 0, b.y + b.height);
        g === b && (g += 0.001);
        return { start: f[0], end: f[1], open: !1, r: g, innerR: b, cxy: m, caps: h };
    }
    function fc(d, b, a, e, h, m, f) {
        var g = d.series;
        a = g.info.type.roundCaps;
        d = c.jsLib.clone(b.pathOptions);
        a && ((a = c.trigLib.arcCapDegOffset(d.r, d.innerR)), (d.start -= a), (d.end += a));
        m = gc(m, d, h, f);
        var k = e[2] / 2;
        m = c.jsLib.filter(m, function (a) {
            a = c.trigLib.pointDistance(b.pathOptions.cxy, a.cxy) + h[1] / 2;
            return !g.isVisible || a <= k;
        });
        return c.jsLib.map(m, function (a) {
            var e = c.bboxLib.fromCenter(a.cxy, a.size);
            e.rotate = a.angle;
            e.isInside = c.isAlignInside(a.alignment);
            return e;
        });
    }
    function wa(d, b, a) {
        var e = b.metrics(),
            h = e.textSize,
            m = e.tickLength,
            f = d.chartArea,
            g = d.sideIndex(),
            k = 0 === g || 1 === g,
            l = f.angleArc(),
            n = l.end - l.start,
            p = "caPaneRadar" === f.kind && "spider" === f.getRadarType(),
            r = "outside" === c.jsLib.pick(b.options("placement"), "outside"),
            q = b.options("padding"),
            t = r ? hc : ic;
        g = c.bboxLib.fromRect(d.viewState.caRect);
        var u = c.bboxLib.center(g);
        g = g[2] / 2;
        var v = e.angle,
            w = function (a, e) {
                return c.trigLib.gpdp(u, a, e);
            },
            x = w(e.angle, g),
            y = function () {
                var a = c.trigLib.gpdp_text(
                    x,
                    E + 90,
                    q,
                    m,
                    c.jsLib.map(h, function (a) {
                        return a + q;
                    }),
                    t
                );
                D = [a[0], a[1], h[0], h[1]];
            },
            z = function (a) {
                a %= 180;
                -90 > a ? (a += 180) : 90 < a && (a -= 180);
                return a;
            };
        if (d.isHoriz) {
            d = [x, w(e.angle, g + (r ? m : -m))];
            x = d[1];
            var E = r ? v : v + 180;
            y();
        } else if (((v = void 0), (y = d.getValToLin()(b.value())), 360 > n)) {
            f = k ? l.end : l.start;
            v = f - (k ? -90 : 90);
            E = r ? v : v + 180;
            x = w(f, d.getCaLen(b.value()));
            d = [x, c.trigLib.gpdp(x, E, m)];
            x = d[1];
            b._cxyRotate = z(v);
            var D = c.bboxLib.fromCenter(c.trigLib.gpdp(x, E, h[0] / 2 + q), h);
        } else
            (k = d.interpolationAxis),
                (v = void 0),
                (v = k.tickPositions ? c.mathLib.avg(jc(k.tickPositions.all).slice(0, 2)) : k.min),
                (r = k.getValToLin()(v)),
                (v = k.valToAngle(v)),
                (b._cxyRotate = z(v + 90)),
                p ? ((w = f.projection.webVal2linxy(r, y)), (d = []), (D = c.bboxLib.fromCenter(w, h))) : ((f = d.getCaLen(b.value())), (d = []), (D = c.bboxLib.fromCenter(w(v, f), h)));
        f = d.slice(0);
        w = D.slice(0);
        f.push.apply(f, G(c.bboxLib.boxPoints(w, "tl,tr,br,bl")));
        w = b._bbox = c.bboxLib.bboxFromPoints(f);
        f = c.jsLib.map(f, function (a) {
            return c.trigLib.pDist(u, a);
        });
        g = Math.max.apply(Math, G(f)) - g;
        if (a) return (b._positionData.tickPoints = d), b._positionData;
        a = b._bboxClipped = D.slice(0);
        a[2] = e.textSize[0];
        a[3] = e.textSize[1];
        return (b._positionData = { tickPoints: d, textBBox: D, rLength: g, bbox: w });
    }
    function jc(d) {
        var b,
            a = [];
        try {
            for (var e = B(d), h = e.next(); !h.done; h = e.next()) {
                var c = h.value;
                !c.pop && a.push(c);
            }
        } catch (g) {
            var f = { error: g };
        } finally {
            try {
                h && !h.done && (b = e.return) && b.call(e);
            } finally {
                if (f) throw f.error;
            }
        }
        return a;
    }
    function mb(d, b) {
        if ("needle" === d) {
            var a = b.arc;
            d = a.cxy;
            a = a.angle;
            var e = b.xyz[2],
                h = b.xyzs[2];
            b = a - 90;
            var m = a + 90,
                f = 9,
                g = c.trigLib.gpdp(d, a, e);
            0 !== h && ((d = c.trigLib.gpdp(d, a, h)), (f = c.mathLib.mapValue(f, 3, 0, e, h)));
            d = [c.trigLib.gpdp(d, b, f / 2), c.trigLib.gpdp(g, b, 1.5), c.trigLib.gpdp(g, m, 1.5), c.trigLib.gpdp(d, m, f / 2)];
            d = c.shapeLib.flattenD(["M", d[0], "L", d[1], c.shapeLib.arcSegment(g[0], g[1], 1.5, c.trigLib.toRadians(b), c.trigLib.toRadians(m)), "L", d[3]]) + "Z";
        } else d = null;
        return d;
    }
    function nb(d, b) {
        d = c.jsLib.cloneDeep(d);
        c.jsLib.merge(b.defaultMinorTick, d.defaultTick);
        c.jsLib.evalPath(d, "defaultTick.label") && c.jsLib.def(c.jsLib.evalPath(b, "defaultTick.label.visible")) && delete b.defaultTick.label.visible;
        c.jsLib.evalPath(d, "defaultMinorTick.label") && c.jsLib.def(c.jsLib.evalPath(b, "defaultMinorTick.label.visible")) && delete b.defaultMinorTick.label.visible;
        c.jsLib.defaultsDeep(d, b);
        return d;
    }
    function Ja(d, b, a) {
        void 0 === a && (a = {});
        var e = c.trigLib.getPolarPoint,
            h = c.trigLib.toRadians,
            m = c.trigLib.toDegrees,
            f = c.trigLib.lineDistance,
            g = c.trigLib.pointDistance,
            k = c.trigLib.angleOfPoints,
            l = c.jsLib.pick(a.widthFactor, 1),
            n = { x: 0, y: 0 },
            p = d.r,
            r = d.innerR,
            q = p - r,
            t = m(d.start),
            u = m(d.end - d.start);
        t = (t + 360) % 360;
        m = t + u / 2;
        a.gradientStopAnchor && (b = t + u * a.gradientStopAnchor - m);
        u = c.jsLib.def(a.pathObj);
        a = (u ? a.pathObj : c.pathLib.fromString(c.shapeLib.arc(0, 0, 2 * p, 2 * p, c.jsLib.defaults({ cxy: [0, 0] }, d)))).bbox();
        u && (a = c.bboxLib.translate(a, [-d.cxy[0], -d.cxy[1]]));
        r = e(0, 0, h(m), r + q / 2);
        p = e(0, 0, h(t), p);
        t = a[2];
        q = a[3];
        b = m + 90 + (b || 0);
        var v = c.trigLib.getPolarPoint;
        m = c.trigLib.lineIntersect;
        var w = c.trigLib.toRadians,
            x;
        u = [0, 0, t, q];
        var y = c.bboxLib.center(u),
            z = u[0] + u[2],
            E = u[1] + u[3];
        b = (b + 360) % 360;
        (x = { 0: [0, 0, 1, 0], 90: [0, 0, 0, 1], 180: [1, 0, 0, 0], 270: [0, 1, 0, 0], 360: [0, 0, 1, 0] }[b]) ||
            ((x = { x: y[0], y: y[1] }),
            (v = v(y[0], y[1], w(b - 90), 10)),
            q >= t
                ? ((w = { x: z, y: u[1] }),
                  (y = { x: z, y: E }),
                  (w = m(x, v, w, y)),
                  w.y < u[1] || w.y > E
                      ? ((w = { x: u[0], y: u[1] }), (y = { x: z, y: u[1] }), (w = m(x, v, w, y)), (t = w.x / z), (x = 90 > b || 270 < b ? [0, 1 - t, 1, t, 0] : [1, t, 0, 1 - t]))
                      : ((t = w.y / q), (x = 180 < b ? [1 - t, 1, t, 0] : [t, 0, 1 - t, 1])))
                : ((w = { x: u[0], y: u[1] }),
                  (y = { x: z, y: u[1] }),
                  (w = m(x, v, w, y)),
                  w.x < u[0] || w.x > z
                      ? ((w = { x: z, y: u[1] }), (y = { x: z, y: E }), (w = m(x, v, w, y)), (t = w.y / u[3]), (x = 180 < b && 315 > b ? [1 - t, 1, t, 0] : [t, 0, 1 - t, 1]))
                      : ((t = w.x / t), (x = [0, 1 - t, 1, t]), 90 < b && (x = [1, t, 0, 1 - t]), 270 < b && (x = [0, 1 - t, 1, t]))));
        t = x;
        q = { x: c.mathLib.mapValue(0, 1, a[0], a[0] + a[2], r.x), y: c.mathLib.mapValue(0, 1, a[1], a[1] + a[3], r.y) };
        q.x -= 0.5;
        q.y -= 0.5;
        t[0] += q.x;
        t[2] += q.x;
        t[1] += q.y;
        t[3] += q.y;
        a = f(n, r, { x: a[0] + t[0] * a[2], y: a[1] + t[1] * a[3] });
        f = (f(n, r, p) * l) / a;
        d.gradientDistance = 2 * a;
        d = k({ x: t[0], y: t[1] }, { x: t[2], y: t[3] });
        k = g({ x: t[0], y: t[1] }, { x: t[2], y: t[3] });
        g = e(t[0], t[1], h(d), k / 2);
        f *= k / 2;
        k = e(g.x, g.y, h(d - 180), f);
        e = e(g.x, g.y, h(d), f);
        return [k.x, k.y, e.x, e.y];
    }
    function kc(d, b) {
        d.series.info.type.isRadarColumn && (b.pathObj = jb(d, null, b));
    }
    function lc(d, b, a) {
        a = c.jsLib.evalPath(a, "outline.width") || 1;
        var e = c.jsLib.map(b, function (a) {
            return { id: a.id, percent: a.tokenValue("%percentOfTotal") };
        });
        d = c.bboxLib.fromRect(d);
        for (
            var h = Ka(
                    e,
                    d,
                    function (a) {
                        return a.percent;
                    },
                    function (a) {
                        return a;
                    },
                    function (a) {
                        return a.id;
                    }
                ),
                m = 0;
            m < b.length;
            m++
        ) {
            var f = b[m],
                g = f.currentOptions;
            g = c.jsLib.evalPath(g, "shape.outline") || g.line || {};
            g = c.jsLib.def(g.width) ? g.width / 2 : 1;
            var k = h[e[m].id];
            0.001 > Math.abs(k[0] - d[0]) && (k[0] += g);
            0.001 > Math.abs(k[1] - d[1]) && (k[1] += g);
            0.001 > Math.abs(k[2] - (d[0] + d[2])) && (k[2] -= g + a);
            0.001 > Math.abs(k[3] - (d[1] + d[3])) && (k[3] -= g + a);
            k = c.bboxLib.fromLTRB(k);
            f.renderRect = { x: k[0], y: k[1], width: k[2], height: k[3] };
        }
    }
    function mc(d, b) {
        var a = d.series,
            e = a.rootVisuals,
            h = a.info.style,
            m = {};
        if (d.coordinates.line) {
            var f = d.paths.lines ? d.paths.lines.join(" ").replace(/,/g, " ") : c.shapeLib.multiLineToPath(d.coordinates.line).join(" ");
            m.pathAnimation = { type: "line", shift: c.jsLib.evalPath(b, "shift") };
            var g = c.jsLib.copy(h.attr.line);
            (d = a.options("shape.outline")) && c.jsLib.extend(g, c.stylingLib.lineToAttr(d));
        }
        return {
            d: f,
            state: g,
            shapeName: "line",
            target: e.line,
            zIndex: a.zIndex + c.consts.zIndexReference.series + 5,
            visGetter: function () {
                return a.visuals.line;
            },
            visSetter: function (e) {
                return (a.visuals.line = e);
            },
            animation: m,
            events: {},
        };
    }
    function Ka(d, b, a, e, h, m) {
        d = c.jsLib.map(d, function (b) {
            return [b, a(b, e)];
        });
        d = c.jsLib
            .sortBy(d, function (a) {
                return a[1];
            })
            .reverse();
        b = N(b, 4);
        var f = b[0],
            g = b[1],
            k = b[2],
            l = b[3];
        b = [];
        var n = c.jsLib.extendCopy(xa.squarified, m);
        f = La(
            nc(
                c.jsLib.map(d, function (a) {
                    return a[1];
                }),
                k * l
            ),
            [],
            new oc(f, g, k, l),
            [],
            n
        );
        ob(f, b);
        f = {};
        for (g = 0; g < d.length; g++) (k = e(d[g][0])), k.length ? c.jsLib.extend(f, Ka(k, c.bboxLib.fromLTRB(b[g]), a, e, h, m)) : (f[h(d[g][0])] = b[g]);
        return f;
    }
    function pc(d, b) {
        var a = d.series,
            e = d.shapeLabelMeta,
            h,
            m = a.renderer,
            f = a.rootVisuals;
        if (!e.labelSize || b) {
            var g = c.jsLib.evalPath(a.currentOptions, "shape.label");
            b = c.jsLib.evalPath(g, "text");
            if (!b) return d;
            "function" === c.jsLib.getValType(b) && (b = b(a));
            if ((b = a.replaceTokens(b))) {
                e.labelText = b;
                g = c.stylingLib.labelToAttr(g);
                g.autoWrap = "none";
                g.val = b;
                if ((d = c.jsLib.evalPath(e, "label.bounds"))) (g.maxWidth = d[2]), (g.maxHeight = d[3]);
                g.zIndex = a.zIndex + c.consts.zIndexReference.label;
                (h = f.label) ? h.attr(c.jsLib.merge({}, g)) : (h = f.label = m.textStack().attr(c.jsLib.merge({}, g)).add(f.points));
                e.labelAttr = g;
                m = h.composeCombinations()[0].minSize;
                m = [m.width.px, m.height.px];
                e.labelSize = m;
                e = [d[0], d[1], m[0], m[1]];
                m = c.bboxLib.toLTRB(e);
                f = c.bboxLib.toLTRB(c.bboxLib.fromRect(a.renderRect));
                a = Math.min(m[0] - f[0], 0) + Math.max(m[2] - f[2], 0);
                m = Math.min(m[1] - f[1], 0) + Math.max(m[3] - f[3], 0);
                h.attr({ x: e[0] - a - 2 * (0 < a ? 1 : -1), y: e[1] - m - 2 * (0 < m ? 1 : -1) });
            }
        }
    }
    function qc(d, b, a, e) {
        var h = b.size,
            m = b.neck,
            f = b.inverted,
            g = c.bboxLib.fromCenter(b.cxy, [0.9 * h[1], h[1]]);
        h = c.jsLib.pick(b.innerPadding, 4) / 2;
        var k = g[1],
            l = g[1] + g[3];
        b = l - g[3] * m;
        var n = g[0],
            p = g[0] + g[2],
            r = (n + p) / 2,
            q = m ? g[2] * (1 - rc) : 0;
        f && ((k = l), (l = g[1]), (b = l + g[3] * m));
        var t = [n, k],
            u = [p, k],
            v = [r - q / 2, b],
            w = [r + q / 2, b],
            x = [v[0], l],
            y = [w[0], l],
            z = function (a, e) {
                var b = [
                    [t[0], e],
                    [u[0], e],
                ];
                b = c.trigLib.lineIntersect(a[0], a[1], b[0], b[1]);
                if (b.onLine1) return [b.x, b.y];
                if (0.001 > Math.abs(a[0][1] - e)) return a[0];
                if (0.001 > Math.abs(a[1][1] - e)) return a[1];
            };
        m = function (a, e) {
            e =
                "left" === e
                    ? [
                          [t, v],
                          [v, x],
                      ]
                    : [
                          [u, w],
                          [w, y],
                      ];
            return z(e[0], a) || z(e[1], a);
        };
        f = g[1] + d[0] * g[3];
        d = g[1] + d[1] * g[3];
        g = (f + d) / 2;
        c.mathLib.diff(f, d) < 2 * h && (h = c.mathLib.diff(f, d) / 3);
        h = f > d ? -h : h;
        a || (f += h);
        e || (d -= h);
        a = Math.max(f, d);
        a = Math.min(f, d) < b && a > b;
        e = [];
        e.push(m(f, "left"), m(f, "right"), m(d, "right"), m(d, "left"));
        b = { left: m(g, "left"), right: m(g, "right") };
        a && (e.splice(2, 0, w), e.push(v));
        return { points: e, path: c.shapeLib.flattenD(c.shapeLib.pointsToPath(e)) + "Z", bounds: c.bboxLib.bboxFromPoints(e), labelAnchors: b };
    }
    function sc(d, b, a, e) {
        e = e || {};
        var h = e.maxIterations || 100;
        e = e.tolerance || 1e-10;
        var c = d(b),
            f = d(a),
            g = a - b;
        if (0 < c * f) throw "Initial bisect points must have opposite signs";
        if (0 === c) return b;
        if (0 === f) return a;
        for (a = 0; a < h; ++a) {
            g /= 2;
            f = b + g;
            var k = d(f);
            0 <= k * c && (b = f);
            if (Math.abs(g) < e || 0 === k) return f;
        }
        return b + g;
    }
    function Ma(d, b, a) {
        return Math.min(d, b) * Math.min(d, b) * Math.PI <= a + 1e-10
            ? Math.abs(d - b)
            : sc(
                  function (e) {
                      return pb(d, b, e) - a;
                  },
                  0,
                  d + b
              );
    }
    function Na(d, b) {
        return d * d * Math.acos(1 - b / d) - (d - b) * Math.sqrt(b * (2 * d - b));
    }
    function V(d, b) {
        return Math.sqrt((d.x - b.x) * (d.x - b.x) + (d.y - b.y) * (d.y - b.y));
    }
    function pb(d, b, a) {
        if (a >= d + b) return 0;
        if (a <= Math.abs(d - b)) return Math.PI * Math.min(d, b) * Math.min(d, b);
        var e = b - (a * a - d * d + b * b) / (2 * a);
        return Na(d, d - (a * a - b * b + d * d) / (2 * a)) + Na(b, e);
    }
    function qb(d, b) {
        var a = V(d, b),
            e = d.radius,
            h = b.radius;
        if (a >= e + h || a <= Math.abs(e - h)) return [];
        var c = (e * e - h * h + a * a) / (2 * a);
        h = Math.sqrt(e * e - c * c);
        e = d.x + (c * (b.x - d.x)) / a;
        c = d.y + (c * (b.y - d.y)) / a;
        var f = (h / a) * -(b.y - d.y);
        d = (h / a) * -(b.x - d.x);
        return [
            { x: e + f, y: c - d },
            { x: e - f, y: c + d },
        ];
    }
    function tc(d) {
        for (var b = [], a = 0; a < d.length; ++a)
            for (var e = a + 1; e < d.length; ++e)
                for (var h = qb(d[a], d[e]), c = 0; c < h.length; ++c) {
                    var f = h[c];
                    f.parentIndex = [a, e];
                    b.push(f);
                }
        return b;
    }
    function rb(d) {
        for (var b = { x: 0, y: 0 }, a = 0; a < d.length; ++a) (b.x += d[a].x), (b.y += d[a].y);
        b.x /= d.length;
        b.y /= d.length;
        return b;
    }
    function Oa(d, b) {
        var a = tc(d),
            e = a.filter(function (a) {
                a: {
                    for (var e = 0; e < d.length; ++e)
                        if (V(a, d[e]) > d[e].radius + 1e-10) {
                            a = !1;
                            break a;
                        }
                    a = !0;
                }
                return a;
            }),
            h = 0,
            c = 0,
            f = [],
            g;
        if (1 < e.length) {
            var k = rb(e);
            for (g = 0; g < e.length; ++g) {
                var l = e[g];
                l.angle = Math.atan2(l.x - k.x, l.y - k.y);
            }
            e.sort(function (a, e) {
                return e.angle - a.angle;
            });
            k = e[e.length - 1];
            for (g = 0; g < e.length; ++g) {
                l = e[g];
                c += (k.x + l.x) * (l.y - k.y);
                for (var n = { x: (l.x + k.x) / 2, y: (l.y + k.y) / 2 }, p = null, r = 0; r < l.parentIndex.length; ++r)
                    if (-1 < k.parentIndex.indexOf(l.parentIndex[r])) {
                        var q = d[l.parentIndex[r]],
                            t = Math.atan2(k.x - q.x, k.y - q.y),
                            u = t - Math.atan2(l.x - q.x, l.y - q.y);
                        0 > u && (u += 2 * Math.PI);
                        t -= u / 2;
                        t = V(n, { x: q.x + q.radius * Math.sin(t), y: q.y + q.radius * Math.cos(t) });
                        t > 2 * q.radius && (t = 2 * q.radius);
                        if (null === p || p.width > t) p = { circle: q, width: t, p1: l, p2: k };
                    }
                null !== p && (f.push(p), (h += Na(p.circle.radius, p.width)), (k = l));
            }
        } else {
            k = d[0];
            for (g = 1; g < d.length; ++g) d[g].radius < k.radius && (k = d[g]);
            h = !1;
            for (g = 0; g < d.length; ++g)
                if (V(d[g], k) > Math.abs(k.radius - d[g].radius)) {
                    h = !0;
                    break;
                }
            h ? (h = c = 0) : ((h = k.radius * k.radius * Math.PI), f.push({ circle: k, p1: { x: k.x, y: k.y + k.radius }, p2: { x: k.x - 1e-10, y: k.y + k.radius }, width: 2 * k.radius }));
        }
        c /= 2;
        b && ((b.area = h + c), (b.arcArea = h), (b.polygonArea = c), (b.arcs = f), (b.innerPoints = e), (b.intersectionPoints = a));
        return h + c;
    }
    function ya(d, b) {
        function a(a) {
            return a.map(function (a) {
                return d[a];
            });
        }
        for (var e = 0, h = 0; h < b.length; ++h) {
            var c = b[h];
            if (1 != c.sets.length) {
                if (2 == c.sets.length) {
                    var f = d[c.sets[0]],
                        g = d[c.sets[1]];
                    f = pb(f.radius, g.radius, V(f, g));
                } else f = Oa(a(c.sets));
                g = c.hasOwnProperty("weight") ? c.weight : 1;
                e += g * (f - c.size) * (f - c.size);
            }
        }
        return e;
    }
    function uc(c, b) {
        function a(a, e) {
            return e.size - a.size;
        }
        function e(a) {
            return a.set in q;
        }
        function h(a, e) {
            d[e].x = a.x;
            d[e].y = a.y;
            q[e] = !0;
        }
        b = b && b.lossFunction ? b.lossFunction : ya;
        for (var d = {}, f = {}, g, k = 0; k < c.length; ++k) {
            var l = c[k];
            1 == l.sets.length && ((g = l.sets[0]), (d[g] = { x: 1e10, y: 1e10, rowid: d.length, size: l.size, radius: Math.sqrt(l.size / Math.PI) }), (f[g] = []));
        }
        c = c.filter(function (a) {
            return 2 == a.sets.length;
        });
        for (k = 0; k < c.length; ++k) {
            l = c[k];
            var n = l.hasOwnProperty("weight") ? l.weight : 1,
                p = l.sets[0],
                r = l.sets[1];
            l.size + 1e-10 >= Math.min(d[p].size, d[r].size) && (n = 0);
            f[p].push({ set: r, size: l.size, weight: n });
            f[r].push({ set: p, size: l.size, weight: n });
        }
        l = [];
        for (g in f)
            if (f.hasOwnProperty(g)) {
                for (k = n = 0; k < f[g].length; ++k) n += f[g][k].size * f[g][k].weight;
                l.push({ set: g, size: n });
            }
        l.sort(a);
        var q = {};
        h({ x: 0, y: 0 }, l[0].set);
        for (k = 1; k < l.length; ++k) {
            n = l[k].set;
            var t = f[n].filter(e);
            g = d[n];
            t.sort(a);
            if (0 === t.length) throw "ERROR: missing pairwise overlap information";
            p = [];
            for (r = 0; r < t.length; ++r) {
                var u = d[t[r].set],
                    v = Ma(g.radius, u.radius, t[r].size);
                p.push({ x: u.x - v, y: u.y });
                p.push({ x: u.x + v, y: u.y });
                p.push({ y: u.y - v, x: u.x });
                p.push({ y: u.y + v, x: u.x });
                for (var w = r + 1; w < t.length; ++w) {
                    var x = d[t[w].set],
                        y = Ma(g.radius, x.radius, t[w].size);
                    x = qb({ x: u.x, y: u.y, radius: v }, { x: x.x, y: x.y, radius: y });
                    for (y = 0; y < x.length; ++y) p.push(x[y]);
                }
            }
            g = 1e50;
            t = p[0];
            for (r = 0; r < p.length; ++r) (d[n].x = p[r].x), (d[n].y = p[r].y), (u = b(d, c)), u < g && ((g = u), (t = p[r]));
            h(t, n);
        }
        return d;
    }
    function sb(c, b) {
        return Array(c)
            .fill(0)
            .map(function () {
                return Array(b).fill(0);
            });
    }
    function vc(c) {
        c = c.slice();
        var b = [],
            a = {},
            e;
        for (e = 0; e < c.length; ++e) {
            var h = c[e];
            if (1 == h.sets.length) b.push(h.sets[0]);
            else if (2 == h.sets.length) {
                var d = h.sets[0],
                    f = h.sets[1];
                a[[d, f].join()] = !0;
                a[[f, d].join()] = !0;
            }
        }
        b.sort(function (a, e) {
            return a > e ? 1 : -1;
        });
        for (e = 0; e < b.length; ++e) for (d = b[e], h = e + 1; h < b.length; ++h) (f = b[h]), [d, f].join() in a || c.push({ sets: [d, f], size: 0 });
        return c;
    }
    function wc(c, b, a) {
        var e = sb(b.length, b.length),
            h = sb(b.length, b.length);
        c.filter(function (a) {
            return 2 == a.sets.length;
        }).map(function (c) {
            var d = a[c.sets[0]],
                m = a[c.sets[1]],
                k = Ma(Math.sqrt(b[d].size / Math.PI), Math.sqrt(b[m].size / Math.PI), c.size);
            e[d][m] = e[m][d] = k;
            k = 0;
            c.size + 1e-10 >= Math.min(b[d].size, b[m].size) ? (k = 1) : 1e-10 >= c.size && (k = -1);
            h[d][m] = h[m][d] = k;
        });
        return { distances: e, constraints: h };
    }
    function aa(c, b) {
        for (var a = 0, e = 0; e < c.length; ++e) a += c[e] * b[e];
        return a;
    }
    function Pa(c) {
        return Math.sqrt(aa(c, c));
    }
    function Qa(c, b, a) {
        for (var e = 0; e < b.length; ++e) c[e] = b[e] * a;
    }
    function ba(c, b, a, e, h) {
        for (var d = 0; d < c.length; ++d) c[d] = b * a[d] + e * h[d];
    }
    function tb(c, b, a) {
        function e(a) {
            for (var e = 0; e < a.length; e++) u[t][e] = a[e];
            u[t].fx = a.fx;
        }
        a = a || {};
        var h = a.maxIterations || 200 * b.length,
            d = a.nonZeroDelta || 1.05,
            f = a.zeroDelta || 0.001,
            g = a.minErrorDelta || 1e-6,
            k = a.minErrorDelta || 1e-5,
            l = void 0 !== a.rho ? a.rho : 1,
            n = void 0 !== a.chi ? a.chi : 2,
            p = void 0 !== a.psi ? a.psi : -0.5,
            r = void 0 !== a.sigma ? a.sigma : 0.5,
            q,
            t = b.length,
            u = Array(t + 1);
        u[0] = b;
        u[0].fx = c(b);
        for (var v = (u[0].id = 0); v < t; ++v) {
            var w = b.slice();
            w[v] = w[v] ? w[v] * d : f;
            u[v + 1] = w;
            u[v + 1].fx = c(w);
            u[v + 1].id = v + 1;
        }
        d = function (a, e) {
            return a.fx - e.fx;
        };
        f = b.slice();
        w = b.slice();
        var x = b.slice();
        b = b.slice();
        for (var y = 0; y < h; ++y) {
            u.sort(d);
            a.history &&
                ((v = u.map(function (a) {
                    var e = a.slice();
                    e.fx = a.fx;
                    e.id = a.id;
                    return e;
                })),
                v.sort(function (a, e) {
                    return a.id - e.id;
                }),
                a.history.push({ x: u[0].slice(), fx: u[0].fx, simplex: v }));
            for (v = q = 0; v < t; ++v) q = Math.max(q, Math.abs(u[0][v] - u[1][v]));
            if (Math.abs(u[0].fx - u[t].fx) < g && q < k) break;
            for (v = 0; v < t; ++v) {
                for (q = f[v] = 0; q < t; ++q) f[v] += u[q][v];
                f[v] /= t;
            }
            v = u[t];
            ba(w, 1 + l, f, -l, v);
            w.fx = c(w);
            if (w.fx < u[0].fx) ba(b, 1 + n, f, -n, v), (b.fx = c(b)), b.fx < w.fx ? e(b) : e(w);
            else if (w.fx >= u[t - 1].fx) {
                if (((q = !1), w.fx > v.fx ? (ba(x, 1 + p, f, -p, v), (x.fx = c(x)), x.fx < v.fx ? e(x) : (q = !0)) : (ba(x, 1 - p * l, f, p * l, v), (x.fx = c(x)), x.fx < w.fx ? e(x) : (q = !0)), q)) {
                    if (1 <= r) break;
                    for (v = 1; v < u.length; ++v) ba(u[v], 1 - r, u[0], r, u[v]), (u[v].fx = c(u[v]));
                }
            } else e(w);
        }
        u.sort(d);
        return { fx: u[0].fx, x: u[0] };
    }
    function xc(c, b, a, e, h, m, f) {
        function d(d, g, p) {
            for (var q = 0; 16 > q; ++q)
                if (((h = (d + g) / 2), ba(e.x, 1, a.x, h, b), (n = e.fx = c(e.x, e.fxprime)), (r = aa(e.fxprime, b)), n > k + m * h * l || n >= p)) g = h;
                else {
                    if (Math.abs(r) <= -f * l) return h;
                    0 <= r * (g - d) && (g = d);
                    d = h;
                    p = n;
                }
            return 0;
        }
        var k = a.fx,
            l = aa(a.fxprime, b),
            n = k,
            p = k,
            r = l,
            q = 0;
        h = h || 1;
        m = m || 1e-6;
        f = f || 0.1;
        for (var t = 0; 10 > t; ++t) {
            ba(e.x, 1, a.x, h, b);
            n = e.fx = c(e.x, e.fxprime);
            r = aa(e.fxprime, b);
            if (n > k + m * h * l || (t && n >= p)) return d(q, h, p);
            if (Math.abs(r) <= -f * l) break;
            if (0 <= r) return d(h, q, n);
            p = n;
            q = h;
            h *= 2;
        }
        return h;
    }
    function yc(c, b, a) {
        var e = { x: b.slice(), fx: 0, fxprime: b.slice() },
            h = { x: b.slice(), fx: 0, fxprime: b.slice() },
            d = b.slice(),
            f = 1;
        a = a || {};
        var g = a.maxIterations || 20 * b.length;
        e.fx = c(e.x, e.fxprime);
        b = e.fxprime.slice();
        Qa(b, e.fxprime, -1);
        for (var k = 0; k < g; ++k) {
            f = xc(c, b, e, h, f);
            a.history && a.history.push({ x: e.x.slice(), fx: e.fx, fxprime: e.fxprime.slice(), alpha: f });
            if (f) {
                ba(d, 1, h.fxprime, -1, e.fxprime);
                var l = aa(e.fxprime, e.fxprime);
                l = Math.max(0, aa(d, h.fxprime) / l);
                ba(b, l, b, -1, h.fxprime);
                l = e;
                e = h;
                h = l;
            } else Qa(b, e.fxprime, -1);
            if (1e-5 >= Pa(e.fxprime)) break;
        }
        a.history && a.history.push({ x: e.x.slice(), fx: e.fx, fxprime: e.fxprime.slice(), alpha: f });
        return e;
    }
    function zc(c, b) {
        b = b || {};
        var a = b.restarts || 10,
            e = [],
            h = {},
            d;
        for (d = 0; d < c.length; ++d) {
            var f = c[d];
            1 == f.sets.length && ((h[f.sets[0]] = e.length), e.push(f));
        }
        d = wc(c, e, h);
        var g = d.distances,
            k = d.constraints,
            l = Pa(g.map(Pa)) / g.length;
        g = g.map(function (a) {
            return a.map(function (a) {
                return a / l;
            });
        });
        c = function (a, e) {
            var b = g,
                h = 0,
                c;
            for (c = 0; c < e.length; ++c) e[c] = 0;
            for (c = 0; c < b.length; ++c)
                for (var d = a[2 * c], m = a[2 * c + 1], f = c + 1; f < b.length; ++f) {
                    var l = a[2 * f],
                        n = a[2 * f + 1],
                        p = b[c][f],
                        r = k[c][f],
                        F = (l - d) * (l - d) + (n - m) * (n - m),
                        C = Math.sqrt(F);
                    F -= p * p;
                    (0 < r && C <= p) || (0 > r && C >= p) || ((h += 2 * F * F), (e[2 * c] += 4 * F * (d - l)), (e[2 * c + 1] += 4 * F * (m - n)), (e[2 * f] += 4 * F * (l - d)), (e[2 * f + 1] += 4 * F * (n - m)));
                }
            return h;
        };
        for (d = 0; d < a; ++d) if (((h = Array(2 * g.length).fill(0.5)), (h = yc(c, h, b)), !n || h.fx < n.fx)) var n = h;
        a = n.x;
        n = {};
        for (d = 0; d < e.length; ++d) (c = e[d]), (n[c.sets[0]] = { x: a[2 * d] * l, y: a[2 * d + 1] * l, radius: Math.sqrt(c.size / Math.PI) });
        if (b.history) for (d = 0; d < b.history.length; ++d) Qa(b.history[d].x, l, 1);
        return n;
    }
    function Ac(c, b) {
        var a = uc(c, b),
            e = b.lossFunction || ya;
        if (8 <= c.length) {
            b = zc(c, b);
            var h = e(b, c);
            c = e(a, c);
            h + 1e-8 < c && (a = b);
        }
        return a;
    }
    function Bc(c, b) {
        b = b || {};
        b.maxIterations = b.maxIterations || 500;
        var a = b.initialLayout || Ac,
            e = b.lossFunction || ya;
        c = vc(c);
        var h = a(c, b);
        a = [];
        var d = [];
        for (f in h) h.hasOwnProperty(f) && (a.push(h[f].x), a.push(h[f].y), d.push(f));
        b = tb(
            function (a) {
                for (var b = {}, m = 0; m < d.length; ++m) {
                    var f = d[m];
                    b[f] = { x: a[2 * m], y: a[2 * m + 1], radius: h[f].radius };
                }
                return e(b, c);
            },
            a,
            b
        ).x;
        for (a = 0; a < d.length; ++a) {
            var f = d[a];
            h[f].x = b[2 * a];
            h[f].y = b[2 * a + 1];
        }
        return h;
    }
    function Cc(c) {
        function b(a) {
            a.parent !== a && (a.parent = b(a.parent));
            return a.parent;
        }
        function a(a, e) {
            a = b(a);
            e = b(e);
            a.parent = e;
        }
        c.map(function (a) {
            a.parent = a;
        });
        for (var e = 0; e < c.length; ++e)
            for (var h = e + 1; h < c.length; ++h) {
                var d = c[e].radius + c[h].radius;
                V(c[e], c[h]) + 1e-10 < d && a(c[h], c[e]);
            }
        h = {};
        for (e = 0; e < c.length; ++e) {
            var f = b(c[e]).parent.setid;
            f in h || (h[f] = []);
            h[f].push(c[e]);
        }
        c.map(function (a) {
            delete a.parent;
        });
        c = [];
        for (f in h) h.hasOwnProperty(f) && c.push(h[f]);
        return c;
    }
    function Dc(c, b, a) {
        null === a
            ? ((c = c.map(function (a, e) {
                  return ha({ idx: e }, a);
              })),
              c.sort(function (a, e) {
                  return a.radius > e.radius ? -1 : a.radius < e.radius ? 1 : a.idx - e.idx;
              }))
            : c.sort(a);
        if (0 < c.length) {
            var e = c[0].x,
                h = c[0].y;
            for (a = 0; a < c.length; ++a) (c[a].x -= e), (c[a].y -= h);
        }
        2 == c.length && V(c[0], c[1]) < Math.abs(c[1].radius - c[0].radius) && ((c[1].x = c[0].x + c[0].radius - c[1].radius - 1e-10), (c[1].y = c[0].y));
        if (1 < c.length)
            for (a = Math.atan2(c[1].x, c[1].y) - b, e = Math.cos(a), h = Math.sin(a), a = 0; a < c.length; ++a) {
                var d = c[a].x,
                    f = c[a].y;
                c[a].x = e * d - h * f;
                c[a].y = h * d + e * f;
            }
        if (2 < c.length) {
            for (b = Math.atan2(c[2].x, c[2].y) - b; 0 > b; ) b += 2 * Math.PI;
            for (; b > 2 * Math.PI; ) b -= 2 * Math.PI;
            if (b > Math.PI) for (b = c[1].y / (1e-10 + c[1].x), a = 0; a < c.length; ++a) (e = (c[a].x + b * c[a].y) / (1 + b * b)), (c[a].x = 2 * e - c[a].x), (c[a].y = 2 * e * b - c[a].y);
        }
    }
    function Ra(c) {
        var b = function (a) {
            var e = Math.max.apply(
                    null,
                    c.map(function (e) {
                        return e[a] + e.radius;
                    })
                ),
                b = Math.min.apply(
                    null,
                    c.map(function (e) {
                        return e[a] - e.radius;
                    })
                );
            return { max: e, min: b };
        };
        return { xRange: b("x"), yRange: b("y") };
    }
    function Ec(c, b, a) {
        function e(a, e, b) {
            if (a) {
                var c = a.bounds;
                if (e) e = g.xRange.max - c.xRange.min + k;
                else {
                    e = g.xRange.max - c.xRange.max;
                    var d = (c.xRange.max - c.xRange.min) / 2 - (g.xRange.max - g.xRange.min) / 2;
                    0 > d && (e += d);
                }
                b ? (b = g.yRange.max - c.yRange.min + k) : ((b = g.yRange.max - c.yRange.max), (d = (c.yRange.max - c.yRange.min) / 2 - (g.yRange.max - g.yRange.min) / 2), 0 > d && (b += d));
                for (c = 0; c < a.length; ++c) (a[c].x += e), (a[c].y += b), h.push(a[c]);
            }
        }
        null === b && (b = Math.PI / 2);
        var h = [];
        for (f in c)
            if (c.hasOwnProperty(f)) {
                var d = c[f];
                h.push({ x: d.x, y: d.y, radius: d.radius, setid: f });
            }
        var f = Cc(h);
        for (c = 0; c < f.length; ++c) Dc(f[c], b, a), (d = Ra(f[c])), (f[c].size = (d.xRange.max - d.xRange.min) * (d.yRange.max - d.yRange.min)), (f[c].bounds = d);
        f.sort(function (a, e) {
            return e.size - a.size;
        });
        h = f[0];
        var g = h.bounds,
            k = (g.xRange.max - g.xRange.min) / 50;
        for (b = 1; b < f.length; ) e(f[b], !0, !1), e(f[b + 1], !1, !0), e(f[b + 2], !0, !0), (b += 3), (g = Ra(h));
        b = {};
        for (c = 0; c < h.length; ++c) b[h[c].setid] = h[c];
        return b;
    }
    function Fc(d) {
        var b = {};
        Oa(d, b);
        d = b.arcs;
        if (0 === d.length) return "M 0 0";
        if (1 == d.length) return (d = d[0].circle), c.shapes.circle(d.x - d.radius, d.y - d.radius, 2 * d.radius, 2 * d.radius);
        b = ["\nM", d[0].p2.x, d[0].p2.y];
        for (var a = 0; a < d.length; ++a) {
            var e = d[a],
                h = e.circle.radius;
            b.push("\nA", h, h, 0, e.width > h ? 1 : 0, 1, e.p1.x, e.p1.y);
        }
        return b.join(" ");
    }
    function Sa(c, b, a) {
        var e = b[0].radius - V(b[0], c),
            h;
        for (h = 1; h < b.length; ++h) {
            var d = b[h].radius - V(b[h], c);
            d <= e && (e = d);
        }
        for (h = 0; h < a.length; ++h) (d = V(a[h], c) - a[h].radius), d <= e && (e = d);
        return e;
    }
    function ub(c, b) {
        var a = [],
            e;
        for (e = 0; e < c.length; ++e) {
            var h = c[e];
            a.push({ x: h.x, y: h.y });
            a.push({ x: h.x + h.radius / 2, y: h.y });
            a.push({ x: h.x - h.radius / 2, y: h.y });
            a.push({ x: h.x, y: h.y + h.radius / 2 });
            a.push({ x: h.x, y: h.y - h.radius / 2 });
        }
        h = a[0];
        var d = Sa(a[0], c, b);
        for (e = 1; e < a.length; ++e) {
            var f = Sa(a[e], c, b);
            f >= d && ((h = a[e]), (d = f));
        }
        e = tb(
            function (a) {
                return -1 * Sa({ x: a[0], y: a[1] }, c, b);
            },
            [h.x, h.y],
            { maxIterations: 500, minErrorDelta: 1e-10 }
        ).x;
        a = { x: e[0], y: e[1], size: 2 * Math.abs(e.fx || 0) };
        h = !0;
        for (e = 0; e < c.length; ++e)
            if (V(a, c[e]) > c[e].radius) {
                h = !1;
                break;
            }
        for (e = 0; e < b.length; ++e)
            if (V(a, b[e]) < b[e].radius) {
                h = !1;
                break;
            }
        h ||
            (1 == c.length
                ? (a = { x: c[0].x, y: c[0].y })
                : ((e = {}),
                  Oa(c, e),
                  (a =
                      0 === e.arcs.length
                          ? { x: 0, y: -1e3, disjoint: !0 }
                          : 1 == e.arcs.length
                          ? { x: e.arcs[0].circle.x, y: e.arcs[0].circle.y }
                          : b.length
                          ? ub(c, [])
                          : rb(
                                e.arcs.map(function (a) {
                                    return a.p1;
                                })
                            ))));
        return a;
    }
    function Gc(d) {
        var b = c.jsLib.reduce(
            d,
            function (a, e) {
                return 1 === e.sets.length ? Math.min(e.size, a) : a;
            },
            Infinity
        );
        return !c.jsLib.find(d, function (a) {
            return a.size < b;
        });
    }
    function Hc(d, b, a, e) {
        if (e.navigator && e.navigator.enabled && e.chartArea) {
            var h = b.currentOptions;
            d = h.chartArea;
            a = c.jsLib.isArray(d);
            var m = e.navigator,
                f = a ? d.length - 1 : 0;
            if (!(0 > f)) {
                h.toolbar.items["export"].visible = !1;
                h.toolbar.items.resetZoom.exclude = !0;
                h.animation = { duration: 0 };
                h.events = h.events || [];
                h.events.load = function () {
                    b.navigator = b.navigator || new Ic(b, m);
                    var a = b.chartAreas(-1).axes(0);
                    b.navigator.setRange({ min: a.range.min, max: a.range.max });
                };
                e = !1 !== c.jsLib.evalPath(m, "previewArea.visible");
                var g = !1 !== c.jsLib.evalPath(m, "toolbar.visible");
                e && (h.extraOverflows = [0, 10, 0, 10]);
                var k = c.jsLib.copy(a ? d[0].series[0] : h.series[0]);
                k.type = c.jsLib.evalPath(m, "scrollbarSeries.type") || "area";
                k.color = c.jsLib.evalPath(m, "previewArea.color") || "#a0a0a0";
                k.line = { width: 1 };
                k.states = { hover: { line: { width: 1 } } };
                k.isPreview = !0;
                k.defaultPoint = { marker_type: "none", focusGlow_width: 0 };
                var l = k.points[0];
                c.jsLib.isUndefined(l.y) &&
                    c.jsLib.def(l.close) &&
                    c.jsLib.each(k.points, function (a) {
                        return (a.y = a.close);
                    });
                a
                    ? c.jsLib.each(d, function (a) {
                          a.xAxis = c.jsLib.merge(c.jsLib.copy(h.xAxis), a.xAxis);
                          var e = h.yAxis || {},
                              b = a.yAxis || {};
                          e = c.jsLib.isArray(e) ? e : [e];
                          b = c.jsLib.isArray(b) ? b : [b];
                          for (var d = [], m = b.length, f = 0, g = Math.max(e.length, b.length); f < g; f++) {
                              var k = e[f] || {};
                              m && delete k.id;
                              d.push(c.jsLib.merge(c.jsLib.cloneDeep(k), b[f] || b[0]));
                          }
                          a.yAxis = d;
                      })
                    : ((d = h.chartArea = [{ series: h.series.splice(0), yAxis: h.yAxis, xAxis: h.xAxis }]), (h.series = []));
                c.jsLib.omit(h, "xAxis", "yAxis");
                g && (d[0].extraOverflows = [36, 0, 0, 0]);
                e &&
                    ((a = {
                        height: (c.jsLib.evalPath(m, "previewArea.height") || 55) + 16,
                        legend: { visible: !1 },
                        series: [k],
                        defaultTooltip: { enabled: !1 },
                        yAxis: { visible: !1 },
                        xAxis: {
                            defaultTick: { label_color: "#fff", line_color: "#fff" },
                            defaultMinorTick: { label_color: "#fff", line_color: "#fff" },
                            events: {
                                setRange: function (a, e) {
                                    (e = b.navigator) && e.setRange(a);
                                },
                            },
                        },
                    }),
                    c.jsLib.extendScoped(a.xAxis, h.xAxis, { scale: !0, formatString: !0, cultureName: !0 }),
                    !1 !== m.xScrollbarEnabled && (a.extraOverflows = [0, 0, 16, 0]),
                    d.push(a));
                c.jsLib.each(d, function (a, e) {
                    a.xAxis = c.jsLib.merge(a.xAxis || {}, { defaultTick: { enabled: e >= f, placement: e > f ? "inside" : "outside" }, overflow: "hidden", scale: { zoomLimit: 0 } });
                    a.yAxis
                        ? ((a = c.jsLib.isArray(a.yAxis) ? a.yAxis : [a.yAxis]),
                          c.jsLib.each(a, function (a) {
                              a.defaultTick = c.jsLib.merge(a.defaultTick || {}, { placement: "inside" });
                          }))
                        : (a.yAxis = { defaultTick: { placement: "inside" } });
                    return !0;
                });
            }
        }
    }
    function oa(d, b, a) {
        void 0 === b && (b = "sum");
        if ((!d || !d.length) && c.jsLib.def(a)) return a;
        switch (b) {
            case "sum":
                return c.mathLib.arraySum(d);
            case "average":
                return (b = c.mathLib.arraySum(d)), c.jsLib.isNull(b) ? NaN : b / d.length;
            case "min":
                return Math.min.apply(Math, G(d));
            case "max":
                return Math.max.apply(Math, G(d));
        }
    }
    function Jc(d, b) {
        d.highlights = function (a, e, b) {
            e.isRendered && e.calIndexer && pa(e, !1);
        };
        d.data = function (a, e, b) {
            e.isRendered && e.calIndexer && ((e.data = c.undefVal), (e.userOptions.data = a), (b.updateCalendar = !0), (b.needRedraw = !0));
        };
        d.defaultCultureName = function (a, e, b) {
            if (e.isRendered) {
                e.axes().each(function (a) {
                    return a.invalidate().options({}, !1);
                });
                e.chartAreaSet.invalidate();
                if ((e = e.calIndexer)) (b.updateCalendar = !0), e && e.setOptions(a);
                b.needRedraw = !0;
            }
        };
        d.calendar = function (a, e, b) {
            e.isRendered && (e = e.calIndexer) && ((b.updateCalendar = !0), e.options(a), (b.needRedraw = !0));
        };
        b.calendar = function (a, e, b) {
            a.ctManager.isType("calendar") &&
                !a.isRendered &&
                (Kc(a, c.jsLib.expandOptionsProperties(a.currentOptions, "template,data,series,palette,targetElement")),
                (e = c.jsLib.cloneDeep(e)),
                (e.series = a.currentOptions.series),
                (e.palette = a.currentOptions.palette),
                delete a.currentOptions.series);
            return e;
        };
    }
    function Kc(d, b) {
        var a = (d.calIndexer = new Lc(d, b)),
            e = function (a, e) {
                var b = function (a, e) {
                    var b = a.legendEntry;
                    a = b && b.trackerElement;
                    b && a && ((b = b.options("cursor") || e), a.attr({ cursor: b, visibility: "default" === e ? "hidden" : "visible" }));
                };
                a.chart.series().each(function (a) {
                    a.options({ visible: !1 }, !1);
                    b(a, "pointer");
                });
                a.options({ visible: !0 }, e);
                b(a, "default");
                return !1;
            };
        (function (a) {
            a.highlights = c.collectionPropFactory(
                c.UpdatablesCollection,
                function () {
                    return a._highlights;
                },
                function (e) {
                    c.jsLib.each(e, c.normalizationUtils.idFyObj);
                    c.jsLib.setPathVal(a.userOptions, "highlights", e);
                    pa(a);
                },
                {
                    push: function (e, b) {
                        c.normalizationUtils.idFyObj(e);
                        var h = a.userOptions,
                            d = c.jsLib.evalPath(h, "highlights");
                        c.jsLib.setPathVal(h, "highlights", d || []);
                        h.highlights.push(e);
                        pa(a, b);
                    },
                    splice: function (e, b, h, d) {
                        var m;
                        c.jsLib.each(h, c.normalizationUtils.idFyObj);
                        var f = a.userOptions,
                            g = c.jsLib.evalPath(f, "highlights");
                        c.jsLib.setPathVal(f, "highlights", g || []);
                        (m = f.highlights).splice.apply(m, G([e, b], h));
                        pa(a, d);
                    },
                }
            );
        })(d);
        d.zoom = function (a, b) {
            var h;
            (a && "initial" !== a) || (a = d.calIndexer.options("initial"));
            (h = (a = a ? R(a) : c.undefVal)
                ? d.series().find(function (e) {
                      return e.currentOptions.attributes.date <= a && e.currentOptions.attributes.endDate >= a;
                  })
                : d.series(0)) && e(h, b);
        };
        a.updateChart(b);
    }
    function Mc(c) {
        return function (b) {
            var a = ['<b>%name</b> <span style="align:right; verticalAlign:top;">%zValue</span>'];
            (b = 1 < b.userOptions.attributes.groupCount ? '<chart type=sparkline style="align:center;" width=120 height=40 data=%subvalueList>' : void 0) && a.push(b);
            return a.join("<br/><hr>");
        };
    }
    function Nc(c) {
        c = c.view;
        var b = "";
        "year" !== c && ("month" === c ? (b = "%name") : "dayhours" === c && (b = "%name"));
        if (b) return '<span style="align:right; verticalAlign:top">' + b + "</span>";
    }
    function Oc(d) {
        var b, a, e;
        d = d.series;
        var h = [],
            m = function (a) {
                var e = c.jsLib.getValType(a);
                "array" === e ? c.jsLib.each(a, m) : "object" === e ? a.date && (a.date.range ? m(a.date.range) : m(a.date)) : h.push(Q(a));
            };
        try {
            for (var f = B(d), g = f.next(); !g.done; g = f.next()) {
                var k = g.value;
                try {
                    for (var l = ((a = void 0), B(k.points)), n = l.next(); !n.done; n = l.next()) {
                        var p = n.value;
                        p.date && m(p.date);
                    }
                } catch (q) {
                    a = { error: q };
                } finally {
                    try {
                        n && !n.done && (e = l.return) && e.call(l);
                    } finally {
                        if (a) throw a.error;
                    }
                }
            }
        } catch (q) {
            var r = { error: q };
        } finally {
            try {
                g && !g.done && (b = f.return) && b.call(f);
            } finally {
                if (r) throw r.error;
            }
        }
        if (h) return [Math.min.apply(Math, G(h)), Math.max.apply(Math, G(h))];
    }
    function pa(d, b) {
        c.jsLib.mergeCollections(
            d.userOptions.highlights || {},
            d._highlights,
            function (a) {
                return new Pc(d, a);
            },
            function (a, e) {
                return e.options(a, b);
            }
        );
        !1 !== b &&
            d.series().each(function (a) {
                return a.isVisible && a.visualizer.renderPatternHighlights && a.visualizer.renderPatternHighlights();
            });
    }
    function Ta(d) {
        return c.jsLib.isArray(d) ? c.jsLib.join(d, " ") : d;
    }
    function Qc(d, b, a) {
        void 0 === b && (b = ca);
        void 0 === a && (a = 0.4);
        var e = d.end - d.start,
            h = 0 > e,
            m = h ? -1 : 1,
            f = m * b,
            g = h ? Math.max : Math.min,
            k = c.jsLib.def(d.pos) ? d.pos : [0, 1],
            l = d.start,
            n = d.end,
            p = d.r,
            r = d.innerR,
            q = d.cxy,
            t = d.caps,
            u = [];
        a = (m * a) / Math.max(d.innerR, 1);
        var v = function (a) {
                return c.mathLib.mapValue(k[0], k[1], l, n, a);
            },
            w = function (a) {
                if (h) {
                    var e = a.start;
                    a.start = a.end;
                    a.end = e;
                    e = a.caps.start;
                    a.caps.start = a.caps.end;
                    a.caps.end = e;
                    a.inverted = !0;
                }
                u.push(a);
            };
        if (m * e > b) {
            var x = l;
            for (d = l + f; 0 >= m * (d - n); ) {
                b = x === l;
                e = d === n;
                x = b ? x : x - a;
                var y = e ? d : d + a;
                w({ start: x, end: y, r: p, innerR: r, cxy: q, pos: [v(x), v(y)], skipEndFix: !0, caps: { start: b ? t.start : "gap", end: e ? t.end : "gap" } });
                x = d;
                d = g(x + f, n);
                0.2 > c.mathLib.diff(d, n) && (d = n);
                if (e) break;
            }
        } else (d.pos = [v(l), v(n)]), (d.skipEndFix = !0), w(d);
        return u;
    }
    function vb(d) {
        var b = d.caps,
            a = 0;
        d = 2 * c.trigLib.arcCapDegOffset(d.r, d.innerR);
        "round" === b.start && a++;
        "round" === b.end && a++;
        1 === a && (d /= 2);
        0 === a && (d = 0);
        return d;
    }
    function Rc(d) {
        var b = function (a) {
            var e = !1;
            Sc(a, function (a) {
                if (a[1] < a[0]) return (e = !0), !1;
            });
            return e;
        };
        return !(b(d) || b(c.rangeLib.invert(d, [0, 1])));
    }
    function Sc(c, b) {
        for (var a = 0, e = c.length; a < e && !1 !== b(c[a], a, a === c.length - 1, a ? c[a - 1] : void 0); a++);
    }
    function Tc() {
        c.shapes.gaugeOutline = function (d, b, a, e, h) {
            var m = h.start;
            e = h.r || a || e;
            a = 0.2 * e;
            var f = h.end - 0.001,
                g = c.mathLib.math.cos(m),
                k = c.mathLib.math.sin(m),
                l = c.mathLib.math.cos(f),
                n = c.mathLib.math.sin(f),
                p = h.end - m < c.mathLib.math.PI ? 0 : 1,
                r = c.trigLib.toDegrees(m),
                q = c.trigLib.toDegrees(f),
                t = va(r, q),
                u = 180 < t ? va(q, r + t / 2 + 180) : 90;
            h = [d + e * g, b + e * k];
            var v = [d + e * l, b + e * n];
            v = c.trigLib.getPolarPoint(v[0], v[1], c.trigLib.toRadians(c.trigLib.toDegrees(f) + 180), a);
            var w = c.trigLib.getPolarPoint(h[0], h[1], c.trigLib.toRadians(c.trigLib.toDegrees(m) + 180), a);
            m = c.trigLib.getPolarPoint(v.x, v.y, c.trigLib.toRadians(c.trigLib.toDegrees(f) + u), a);
            f = c.trigLib.getPolarPoint(w.x, w.y, c.trigLib.toRadians(r - u), a);
            u = [];
            200 > t &&
                ((t = q + 40),
                (u = r - 40),
                (r = va(t, u)),
                (q = 0.3 * e),
                (t = c.trigLib.getPolarPoint(d, b, c.trigLib.toRadians(t), q)),
                (u = c.trigLib.getPolarPoint(d, b, c.trigLib.toRadians(u), q)),
                (u = ["L", t.x, t.y, "A", q, q, 0, 180 > r ? 0 : 1, 1, u.x, u.y]));
            d = ["M", d + e * g, b + e * k, "A", e, e, 0, p, 1, d + e * l, b + e * n];
            b = ["L", f.x, f.y];
            h = ["A", a, a, 0, 0, 1, h[0], h[1]];
            d.push.apply(d, G(["A", a, a, 0, 0, 1, m.x, m.y]));
            d.push.apply(d, G(u));
            d.push.apply(d, G(b));
            d.push.apply(d, G(h));
            return d;
        };
    }
    function Y(d) {
        return c.jsLib.isNumber(d) && !c.jsLib.isNaN(d);
    }
    function Ua(d) {
        return c.jsLib.reduce(
            c.jsLib.isString(d) ? d.trim().split(Va.dataDelimiter) : d,
            function (b, a) {
                c.jsLib.isString(a) ? (a.length && "NaN" !== a && "null" !== a ? ((a = parseFloat(a)), !c.jsLib.isNaN(a) && b.push(a)) : b.push(null)) : b.push(a);
                return b;
            },
            []
        );
    }
    function Uc() {
        c.jsLib.each(Vc, function (d) {
            return c.registerVisual(d, Wc);
        });
    }
    function Xc(c) {
        c.flowEvents.beforeRenderSeries.on(Yc);
        c.flowEvents.nextRenderSeries.on(Zc);
    }
    function Yc(d) {
        var b = N(d, 6),
            a = b[0],
            e = b[1];
        d = b[2];
        var h = b[3],
            m = b[4];
        b = b[5];
        a.ctManager.isType("treemap") &&
            (lc(e, a.series().items, a.currentOptions),
            (e = a
                .series(function (e) {
                    return e.chartArea.id === a.id && !1 === e.info.type.isShape && e.pane === c.undefVal;
                })
                .sortBy("zIndex")),
            e.each(function (a) {
                return m.push(function () {
                    return a.render(a.renderRect, h);
                });
            }),
            e.each(function (a) {
                return m.push(function () {
                    return a.renderLabels(a.renderRect, h);
                });
            }),
            b());
        a.panes && a.panes.count && a.panes.renderData(d, h);
    }
    function Zc(d) {
        var b = N(d, 4),
            a = b[1];
        d = b[2];
        var e = b[3];
        b = b[0].series(function (a) {
            return a.info.type.isShape && !a.pane;
        }).items;
        if (b.length) {
            a = bc(b.length, { width: a.width, height: a.height, padding: 0, equal: !0 }).boxes;
            for (var h = 0, m = b.length; h < m; h++) {
                var f = a[h],
                    g = b[h];
                f = c.rectLib.centerRect(f.cx, f.cy, f.maxWidth, f.size);
                g.render(d, c.jsLib.merge({ rect: f }, e));
            }
        }
    }
    var Fa = function (c, b) {
            Fa =
                Object.setPrototypeOf ||
                ({ __proto__: [] } instanceof Array &&
                    function (a, e) {
                        a.__proto__ = e;
                    }) ||
                function (a, e) {
                    for (var b in e) e.hasOwnProperty(b) && (a[b] = e[b]);
                };
            return Fa(c, b);
        },
        ha = function () {
            ha =
                Object.assign ||
                function (c) {
                    for (var b, a = 1, e = arguments.length; a < e; a++) {
                        b = arguments[a];
                        for (var h in b) Object.prototype.hasOwnProperty.call(b, h) && (c[h] = b[h]);
                    }
                    return c;
                };
            return ha.apply(this, arguments);
        },
        qa = function (d, b) {
            var a = c.bboxLib.center(d),
                e = c.bboxLib.center(b);
            b = Math.min(d[2] / b[2], d[3] / b[3]);
            var h = b * d[2];
            return {
                x: a[0] - (e[0] - a[0]) * b - h / 2,
                y: a[1] - (e[1] - a[1]) * b - h / 2,
                width: h,
                height: h,
                resize: { ratio: b, offsetX: -((e[0] - a[0]) * b), offsetY: -((e[1] - a[1]) * b), cxOrg: d[0] + d[2] / 2, cyOrg: d[1] + d[3] / 2, wOrg: d[2] },
            };
        },
        ra = function (c) {
            for (var b = [0, 0]; c; ) (b[0] += c.x.px + c.offsetX), (b[1] += c.y.px + c.offsetY), (c = c.parent);
            return b;
        },
        ia = function (d, b, a) {
            return c.bboxLib.translate(d, c.bboxLib.offsetBetween(ra(b), ra(a)));
        },
        $c = (function () {
            function c() {}
            c.prototype.edges = function () {
                var b,
                    a,
                    e,
                    c = [];
                try {
                    for (var d = B(this.vertices()), f = d.next(); !f.done; f = d.next()) {
                        var g = f.value;
                        try {
                            for (var k = ((a = void 0), B(this.outVertices(g))), l = k.next(); !l.done; l = k.next()) c.push([g, l.value]);
                        } catch (p) {
                            a = { error: p };
                        } finally {
                            try {
                                l && !l.done && (e = k.return) && e.call(k);
                            } finally {
                                if (a) throw a.error;
                            }
                        }
                    }
                } catch (p) {
                    var n = { error: p };
                } finally {
                    try {
                        f && !f.done && (b = d.return) && b.call(d);
                    } finally {
                        if (n) throw n.error;
                    }
                }
                return c;
            };
            c.prototype.outEdges = function (b) {
                var a, e, c, d, f, g;
                return fb(this, function (h) {
                    switch (h.label) {
                        case 0:
                            h.trys.push([0, 5, 6, 7]), (a = B(this.outVertices(b))), (e = a.next()), (h.label = 1);
                        case 1:
                            if (e.done) return [3, 4];
                            c = e.value;
                            return [4, [b, c]];
                        case 2:
                            h.sent(), (h.label = 3);
                        case 3:
                            return (e = a.next()), [3, 1];
                        case 4:
                            return [3, 7];
                        case 5:
                            return (d = h.sent()), (f = { error: d }), [3, 7];
                        case 6:
                            try {
                                e && !e.done && (g = a.return) && g.call(a);
                            } finally {
                                if (f) throw f.error;
                            }
                            return [7];
                        case 7:
                            return [2];
                    }
                });
            };
            c.prototype.inEdges = function (b) {
                var a, e, c, d, f, g;
                return fb(this, function (h) {
                    switch (h.label) {
                        case 0:
                            h.trys.push([0, 5, 6, 7]), (a = B(this.inVertices(b))), (e = a.next()), (h.label = 1);
                        case 1:
                            if (e.done) return [3, 4];
                            c = e.value;
                            return [4, [c, b]];
                        case 2:
                            h.sent(), (h.label = 3);
                        case 3:
                            return (e = a.next()), [3, 1];
                        case 4:
                            return [3, 7];
                        case 5:
                            return (d = h.sent()), (f = { error: d }), [3, 7];
                        case 6:
                            try {
                                e && !e.done && (g = a.return) && g.call(a);
                            } finally {
                                if (f) throw f.error;
                            }
                            return [7];
                        case 7:
                            return [2];
                    }
                });
            };
            c.prototype.toJSON = function () {
                var b = this;
                return {
                    vertices: this.vertices().map(function (a) {
                        return { u: a, d: b.vertex(a) };
                    }),
                    edges: this.edges().map(function (a) {
                        var e = N(a, 2);
                        a = e[0];
                        e = e[1];
                        return { u: a, v: e, d: b.edge(a, e) };
                    }),
                };
            };
            c.prototype.toString = function () {
                return JSON.stringify(this.toJSON());
            };
            return c;
        })(),
        wb = new WeakMap(),
        O = function (c) {
            return wb.get(c);
        },
        W = function (c, b) {
            if (null === c.vertex(b)) throw Error("Invalid vertex: " + b);
        },
        Wa = (function (c) {
            function b() {
                var a = c.call(this) || this;
                wb.set(a, { vertices: new Map(), numVertices: 0, numEdges: 0 });
                return a;
            }
            K(b, c);
            b.prototype.vertex = function (a) {
                var e = O(this).vertices;
                return e.get(a) ? e.get(a).data : null;
            };
            b.prototype.edge = function (a, e) {
                var b = O(this).vertices;
                return b.get(a) && b.get(a).outVertices.get(e) ? b.get(a).outVertices.get(e) : null;
            };
            b.prototype.vertices = function () {
                return Ia(O(this).vertices);
            };
            b.prototype.outVertices = function (a) {
                W(this, a);
                return Ia(O(this).vertices.get(a).outVertices);
            };
            b.prototype.inVertices = function (a) {
                W(this, a);
                return Ia(O(this).vertices.get(a).inVertices);
            };
            b.prototype.parent = function (a) {
                W(this, a);
                return O(this).vertices.get(a).parent;
            };
            b.prototype.children = function (a) {
                W(this, a);
                return Array.from(O(this).vertices.get(a).children);
            };
            b.prototype.numVertices = function () {
                return O(this).numVertices;
            };
            b.prototype.numEdges = function () {
                return O(this).numEdges;
            };
            b.prototype.outDegree = function (a) {
                W(this, a);
                return O(this).vertices.get(a).outVertices.size;
            };
            b.prototype.inDegree = function (a) {
                W(this, a);
                return O(this).vertices.get(a).inVertices.size;
            };
            b.prototype.addVertex = function (a, e) {
                void 0 === e && (e = {});
                if (this.vertex(a)) throw Error("Duplicated vertex: " + a);
                O(this).vertices.set(a, { outVertices: new Map(), inVertices: new Map(), children: new Set(), parent: null, data: e });
                O(this).numVertices++;
                return this;
            };
            b.prototype.addEdge = function (a, e, b) {
                void 0 === b && (b = {});
                W(this, a);
                W(this, e);
                if (this.edge(a, e)) throw Error("Duplicated edge: (" + a + ", " + e + ")");
                O(this).numEdges++;
                O(this).vertices.get(a).outVertices.set(e, b);
                O(this).vertices.get(e).inVertices.set(a, b);
                return this;
            };
            b.prototype.setChild = function (a, e) {
                W(this, a);
                W(this, e);
                O(this).vertices.get(a).children.add(e);
                O(this).vertices.get(e).parent = a;
                return this;
            };
            b.prototype.removeVertex = function (a) {
                var e, b;
                try {
                    for (var c = B(this.outVertices(a)), d = c.next(); !d.done; d = c.next()) {
                        var g = d.value;
                        this.removeEdge(a, g);
                    }
                } catch (r) {
                    var k = { error: r };
                } finally {
                    try {
                        d && !d.done && (e = c.return) && e.call(c);
                    } finally {
                        if (k) throw k.error;
                    }
                }
                try {
                    for (var l = B(this.inVertices(a)), n = l.next(); !n.done; n = l.next()) (g = n.value), this.removeEdge(g, a);
                } catch (r) {
                    var p = { error: r };
                } finally {
                    try {
                        n && !n.done && (b = l.return) && b.call(l);
                    } finally {
                        if (p) throw p.error;
                    }
                }
                (k = this.parent(a)) && this.unsetChild(k, a);
                O(this).vertices.delete(a);
                O(this).numVertices--;
                return this;
            };
            b.prototype.removeEdge = function (a, e) {
                if (null === this.edge(a, e)) throw Error("Invalid edge: (" + a + ", " + e + ")");
                O(this).vertices.get(a).outVertices.delete(e);
                O(this).vertices.get(e).inVertices.delete(a);
                O(this).numEdges--;
                return this;
            };
            b.prototype.unsetChild = function (a, e) {
                W(this, a);
                W(this, e);
                O(this).vertices.get(a).children.delete(e);
                O(this).vertices.get(e).parent = null;
                return this;
            };
            return b;
        })($c),
        S = function (c, b, a, e) {
            if (0 === e.length) return b.get(c)[a];
            b.get(c)[a] = e[0];
            return c;
        },
        ad = function (c, b) {
            return function (a, e) {
                return c({ u: a, v: e, ud: b.vertex(a), vd: b.vertex(e), d: b.edge(a, e) });
            };
        },
        xb = function (c, b, a, e) {
            var h, d;
            if (e.has(b)) {
                if (((b = e.get(b)), b !== a))
                    try {
                        for (var f = B(c.vertices()), g = f.next(); !g.done; g = f.next()) {
                            var k = g.value;
                            e.get(k) === b && e.set(k, a);
                        }
                    } catch (q) {
                        var l = { error: q };
                    } finally {
                        try {
                            g && !g.done && (h = f.return) && h.call(f);
                        } finally {
                            if (l) throw l.error;
                        }
                    }
            } else {
                e.set(b, a);
                try {
                    for (var n = B(c.outVertices(b)), p = n.next(); !p.done; p = n.next()) (k = p.value), xb(c, k, a, e);
                } catch (q) {
                    var r = { error: q };
                } finally {
                    try {
                        p && !p.done && (d = n.return) && d.call(n);
                    } finally {
                        if (r) throw r.error;
                    }
                }
            }
        },
        bd = function (c) {
            var b,
                a = new Map();
            try {
                for (var e = B(c.vertices()), h = e.next(); !h.done; h = e.next()) {
                    var d = h.value;
                    0 === c.inDegree(d) && xb(c, d, d, a);
                }
            } catch (k) {
                var f = { error: k };
            } finally {
                try {
                    h && !h.done && (b = e.return) && b.call(e);
                } finally {
                    if (f) throw f.error;
                }
            }
            var g = dc(a);
            return g
                .filter(function (a, e) {
                    return g.indexOf(a) === e;
                })
                .map(function (e) {
                    return c.vertices().filter(function (b) {
                        return a.get(b) === e;
                    });
                });
        },
        cd = function (c, b, a) {
            var e,
                h = [];
            try {
                for (var d = B(c.vertices()), f = d.next(); !f.done; f = d.next()) {
                    var g = f.value,
                        k = b[g];
                    void 0 === h[k] && (h[k] = []);
                    h[k].push(g);
                }
            } catch (n) {
                var l = { error: n };
            } finally {
                try {
                    f && !f.done && (e = d.return) && e.call(d);
                } finally {
                    if (l) throw l.error;
                }
            }
            if (a) {
                for (c = 0; c < h.length; ++c) void 0 === h[c] && (h[c] = []);
                return h;
            }
            return h.filter(function (a) {
                return void 0 !== a;
            });
        },
        dd = 0,
        ed = function (c, b, a, e, h) {
            var d, f;
            try {
                for (var g = B(c.edges()), k = g.next(); !k.done; k = g.next()) {
                    var l = N(k.value, 2),
                        n = l[0],
                        p = l[1],
                        r = c.edge(n, p);
                    if (1 < a[p] - a[n]) {
                        var q = n;
                        for (f = a[n] + 1; f < a[p]; ++f) {
                            var t = "__symbol__" + ++dd;
                            c.addVertex(t, { u: n, v: p, dummy: !0, width: r.width + e, origWidth: r.width, height: h, origHeight: 0, layer: f });
                            c.addEdge(q, t, { u: n, v: p, dummy: !0, reversed: c.edge(n, p).reversed, width: r.width });
                            b[f].push(t);
                            q = t;
                        }
                        c.addEdge(q, p, { u: n, v: p, dummy: !0, reversed: c.edge(n, p).reversed, width: r.width });
                        c.removeEdge(n, p);
                    }
                }
            } catch (v) {
                var u = { error: v };
            } finally {
                try {
                    k && !k.done && (d = g.return) && d.call(g);
                } finally {
                    if (u) throw u.error;
                }
            }
        },
        fd = function (c, b, a) {
            for (var e, h, d = b.length, f = a.length, g = {}, k = new Int8Array(d * f), l = 0; l < f; ++l) g[a[l]] = l;
            for (l = 0; l < d; ++l) {
                a = b[l];
                try {
                    for (var n = ((e = void 0), B(c.outVertices(a))), p = n.next(); !p.done; p = n.next()) k[l * f + g[p.value]] = 1;
                } catch (r) {
                    e = { error: r };
                } finally {
                    try {
                        p && !p.done && (h = n.return) && h.call(n);
                    } finally {
                        if (e) throw e.error;
                    }
                }
            }
            return k;
        },
        gd = function (c, b, a, e) {
            void 0 === e && (e = !1);
            var h = {},
                d = b.length,
                f = a.length;
            c = fd(c, b, a);
            var g = function (a, e) {
                return h[a] - h[e];
            };
            if (e) {
                for (e = 0; e < d; ++e) {
                    for (var k = 0, l = 0, n = 0; n < f; ++n) {
                        var p = c[e * f + n];
                        l += p;
                        k += n * p;
                    }
                    h[b[e]] = k / l;
                }
                b.sort(g);
            } else {
                for (n = 0; n < f; ++n) {
                    for (e = l = k = 0; e < d; ++e) (p = c[e * f + n]), (l += p), (k += e * p);
                    h[a[n]] = k / l;
                }
                a.sort(g);
            }
        },
        Xa = new WeakMap(),
        hd = (function () {
            function c() {
                Xa.set(this, { repeat: 8, method: gd });
            }
            c.prototype.call = function (b, a) {
                for (var e = a.length, c = this.repeat(), d = this.method(), f = 0; f < c; ++f) {
                    for (var g = 1; g < e; ++g) d(b, a[g - 1], a[g]);
                    for (g = e - 1; 0 < g; --g) d(b, a[g - 1], a[g], !0);
                }
            };
            c.prototype.repeat = function () {
                return S(this, Xa, "repeat", arguments);
            };
            c.prototype.method = function () {
                return S(this, Xa, "method", arguments);
            };
            return c;
        })(),
        id = function (c, b, a) {
            var e, h, d;
            b = [];
            try {
                for (var f = B(a), g = f.next(); !g.done; g = f.next()) {
                    var k = g.value;
                    try {
                        for (var l = ((h = void 0), B(c.inVertices(k))), n = l.next(); !n.done; n = l.next()) b.push([n.value, k]);
                    } catch (r) {
                        h = { error: r };
                    } finally {
                        try {
                            n && !n.done && (d = l.return) && d.call(l);
                        } finally {
                            if (h) throw h.error;
                        }
                    }
                }
            } catch (r) {
                var p = { error: r };
            } finally {
                try {
                    g && !g.done && (e = f.return) && e.call(f);
                } finally {
                    if (p) throw p.error;
                }
            }
            return b;
        },
        jd = function (c, b) {
            var a,
                e = [],
                h = [];
            try {
                for (var d = B(c), f = d.next(); !f.done; f = d.next()) {
                    var g = f.value;
                    b(g) ? e.push(g) : h.push(g);
                }
            } catch (l) {
                var k = { error: l };
            } finally {
                try {
                    f && !f.done && (a = d.return) && a.call(d);
                } finally {
                    if (k) throw k.error;
                }
            }
            return [e, h];
        },
        kd = function (c, b) {
            var a,
                e,
                h,
                d,
                f,
                g = b.length - 2,
                k = {},
                l = {},
                n = function (a) {
                    a = N(a, 2);
                    var e = a[1];
                    return k[a[0]] && k[e];
                };
            try {
                for (var p = B(c.vertices()), r = p.next(); !r.done; r = p.next()) {
                    var q = r.value,
                        t = c.vertex(q);
                    k[q] = !!t.dummy;
                    l[q] = t.order;
                }
            } catch (H) {
                var u = { error: H };
            } finally {
                try {
                    r && !r.done && (a = p.return) && a.call(p);
                } finally {
                    if (u) throw u.error;
                }
            }
            for (u = 1; u < g; ++u) {
                a = id(c, b[u], b[u + 1]);
                p = N(jd(a, n), 2);
                a = p[0];
                p = p[1];
                try {
                    for (var v = ((e = void 0), B(a)), w = v.next(); !w.done; w = v.next()) {
                        var x = N(w.value, 2),
                            y = x[0],
                            z = x[1];
                        try {
                            for (var E = ((d = void 0), B(p)), D = E.next(); !D.done; D = E.next()) {
                                var F = N(D.value, 2),
                                    C = F[0],
                                    A = F[1];
                                if ((l[y] < l[C] && l[z] > l[A]) || (l[y] > l[C] && l[z] < l[A])) c.edge(C, A).type1Conflict = !0;
                            }
                        } catch (H) {
                            d = { error: H };
                        } finally {
                            try {
                                D && !D.done && (f = E.return) && f.call(E);
                            } finally {
                                if (d) throw d.error;
                            }
                        }
                    }
                } catch (H) {
                    e = { error: H };
                } finally {
                    try {
                        w && !w.done && (h = v.return) && h.call(v);
                    } finally {
                        if (e) throw e.error;
                    }
                }
            }
        },
        yb = function (c, b, a) {
            void 0 === a && (a = !1);
            b = a ? c.outVertices(b) : c.inVertices(b);
            b.sort(function (a, b) {
                return c.vertex(a).order - c.vertex(b).order;
            });
            a = (b.length - 1) / 2;
            return { left: b[Math.floor(a)], right: b[Math.ceil(a)] };
        },
        ld = function (c, b, a) {
            var e,
                h,
                d,
                f,
                g,
                k,
                l = a.rtol,
                n = void 0 === l ? !1 : l;
            a = a.btot;
            var p = void 0 === a ? !1 : a,
                r = function () {
                    var a = [];
                    if (p) for (var e = b.length - 2; 0 <= e; --e) a.push(b[e]);
                    else for (e = 1; e < b.length; ++e) a.push(b[e]);
                    return a;
                };
            a = function (a) {
                var e = [];
                if (n) for (var b = a.length - 1; 0 <= b; --b) e.push(a[b]);
                else for (b = 0; b < a.length; ++b) e.push(a[b]);
                return e;
            };
            l = p
                ? function (a, e) {
                      return c.edge(e, a);
                  }
                : function (a, e) {
                      return c.edge(a, e);
                  };
            var q = p
                    ? function (a) {
                          return c.outDegree(a);
                      }
                    : function (a) {
                          return c.inDegree(a);
                      },
                t = p
                    ? function (a, e) {
                          return yb(a, e, !0);
                      }
                    : function (a, e) {
                          return yb(a, e);
                      };
            try {
                for (var u = B(c.vertices()), v = u.next(); !v.done; v = u.next()) {
                    var w = v.value;
                    c.vertex(w).root = w;
                    c.vertex(w).align = w;
                }
            } catch (Z) {
                var x = { error: Z };
            } finally {
                try {
                    v && !v.done && (e = u.return) && e.call(u);
                } finally {
                    if (x) throw x.error;
                }
            }
            try {
                for (var y = B(r()), z = y.next(); !z.done; z = y.next()) {
                    var E = z.value;
                    x = n ? Infinity : -Infinity;
                    try {
                        for (var D = ((d = void 0), B(a(E))), F = D.next(); !F.done; F = D.next()) {
                            var C = F.value;
                            if (0 < q(C)) {
                                var A = t(c, C),
                                    H = A.left,
                                    L = A.right;
                                e = H === L ? [H] : n ? [L, H] : [H, L];
                                try {
                                    for (var P = ((g = void 0), B(e)), M = P.next(); !M.done; M = P.next())
                                        if (((w = M.value), !l(w, C).type1Conflict && !l(w, C).type2Conflict && (n ? x > c.vertex(w).order : x < c.vertex(w).order))) {
                                            c.vertex(C).align = c.vertex(C).root = c.vertex(w).root;
                                            c.vertex(w).align = C;
                                            x = c.vertex(w).order;
                                            break;
                                        }
                                } catch (Z) {
                                    g = { error: Z };
                                } finally {
                                    try {
                                        M && !M.done && (k = P.return) && k.call(P);
                                    } finally {
                                        if (g) throw g.error;
                                    }
                                }
                            }
                        }
                    } catch (Z) {
                        d = { error: Z };
                    } finally {
                        try {
                            F && !F.done && (f = D.return) && f.call(D);
                        } finally {
                            if (d) throw d.error;
                        }
                    }
                }
            } catch (Z) {
                var J = { error: Z };
            } finally {
                try {
                    z && !z.done && (h = y.return) && h.call(y);
                } finally {
                    if (J) throw J.error;
                }
            }
        },
        md = function (c, b, a) {
            var e, h, d, f;
            a = a.rtol;
            var g = void 0 === a ? !1 : a,
                k = g
                    ? function (a) {
                          return b[a.layer][a.order + 1];
                      }
                    : function (a) {
                          return b[a.layer][a.order - 1];
                      },
                l = function (a) {
                    var e = c.vertex(a);
                    if (null === e.x) {
                        e.x = 0;
                        var h = a;
                        do {
                            h = c.vertex(h);
                            if (g ? h.order < b[h.layer].length - 1 : 0 < h.order) {
                                var d = k(h);
                                d = c.vertex(d);
                                var m = d.root,
                                    f = c.vertex(m);
                                l(m);
                                e.sink === a && (e.sink = f.sink);
                                e.sink === f.sink ? (e.x = Math.max(e.x, f.x + (d.width + h.width) / 2)) : ((m = c.vertex(f.sink)), (m.shift = Math.min(m.shift, e.x - f.x - (d.width + h.width) / 2)));
                            }
                            h = h.align;
                        } while (h !== a);
                    }
                };
            try {
                for (var n = B(c.vertices()), p = n.next(); !p.done; p = n.next()) {
                    var r = p.value,
                        q = c.vertex(r);
                    q.sink = r;
                    q.shift = Infinity;
                    q.x = null;
                }
            } catch (A) {
                var t = { error: A };
            } finally {
                try {
                    p && !p.done && (e = n.return) && e.call(n);
                } finally {
                    if (t) throw t.error;
                }
            }
            try {
                for (var u = B(c.vertices()), v = u.next(); !v.done; v = u.next()) (r = v.value), c.vertex(r).root === r && l(r);
            } catch (A) {
                var w = { error: A };
            } finally {
                try {
                    v && !v.done && (h = u.return) && h.call(u);
                } finally {
                    if (w) throw w.error;
                }
            }
            try {
                for (var x = B(c.vertices()), y = x.next(); !y.done; y = x.next()) (r = y.value), (q = c.vertex(r)), (q.x = c.vertex(q.root).x);
            } catch (A) {
                var z = { error: A };
            } finally {
                try {
                    y && !y.done && (d = x.return) && d.call(x);
                } finally {
                    if (z) throw z.error;
                }
            }
            try {
                for (var E = B(c.vertices()), D = E.next(); !D.done; D = E.next()) {
                    r = D.value;
                    q = c.vertex(r);
                    var F = c.vertex(c.vertex(q.root).sink).shift;
                    Infinity > F && (q.x += F);
                }
            } catch (A) {
                var C = { error: A };
            } finally {
                try {
                    D && !D.done && (f = E.return) && f.call(E);
                } finally {
                    if (C) throw C.error;
                }
            }
        },
        nd = function (c) {
            c.sort(function (b, a) {
                return b - a;
            });
        },
        pd = (function () {
            function c() {}
            c.prototype.call = function (b, a) {
                var e, c, d, f, g, k, l, n, p, r, q, t, u, v, w, x, y, z, E;
                kd(b, a);
                var D = {};
                try {
                    for (var F = B(b.vertices()), C = F.next(); !C.done; C = F.next()) {
                        var A = C.value;
                        D[A] = [];
                    }
                } catch (T) {
                    var H = { error: T };
                } finally {
                    try {
                        C && !C.done && (k = F.return) && k.call(F);
                    } finally {
                        if (H) throw H.error;
                    }
                }
                H = [
                    { rtol: !1, btot: !1 },
                    { rtol: !0, btot: !1 },
                    { rtol: !1, btot: !0 },
                    { rtol: !0, btot: !0 },
                ];
                k = -Infinity;
                F = Infinity;
                for (C = 0; C < H.length; ++C) {
                    var L = H[C];
                    ld(b, a, L);
                    md(b, a, L);
                    var P = Infinity,
                        M = -Infinity;
                    try {
                        for (var J = ((l = void 0), B(b.vertices())), Z = J.next(); !Z.done; Z = J.next()) (A = Z.value), L.rtol && (b.vertex(A).x = -b.vertex(A).x), (P = Math.min(P, b.vertex(A).x)), (M = Math.max(M, b.vertex(A).x));
                    } catch (T) {
                        l = { error: T };
                    } finally {
                        try {
                            Z && !Z.done && (n = J.return) && n.call(J);
                        } finally {
                            if (l) throw l.error;
                        }
                    }
                    M - P < F - k && ((k = P), (F = M));
                    try {
                        for (var ja = ((p = void 0), B(b.vertices())), G = ja.next(); !G.done; G = ja.next()) (A = G.value), D[A].push(b.vertex(A).x);
                    } catch (T) {
                        p = { error: T };
                    } finally {
                        try {
                            G && !G.done && (r = ja.return) && r.call(ja);
                        } finally {
                            if (p) throw p.error;
                        }
                    }
                }
                for (C = 0; C < H.length; ++C)
                    if (((L = H[C]), L.rtol)) {
                        M = -Infinity;
                        try {
                            for (var X = ((q = void 0), B(b.vertices())), sa = X.next(); !sa.done; sa = X.next()) (A = sa.value), (M = Math.max(M, D[A][C]));
                        } catch (T) {
                            q = { error: T };
                        } finally {
                            try {
                                sa && !sa.done && (t = X.return) && t.call(X);
                            } finally {
                                if (q) throw q.error;
                            }
                        }
                        try {
                            for (var I = ((u = void 0), B(b.vertices())), K = I.next(); !K.done; K = I.next()) (A = K.value), (D[A][C] += F - M);
                        } catch (T) {
                            u = { error: T };
                        } finally {
                            try {
                                K && !K.done && (v = I.return) && v.call(I);
                            } finally {
                                if (u) throw u.error;
                            }
                        }
                    } else {
                        P = Infinity;
                        try {
                            for (var za = ((w = void 0), B(b.vertices())), ta = za.next(); !ta.done; ta = za.next()) (A = ta.value), (P = Math.min(P, D[A][C]));
                        } catch (T) {
                            w = { error: T };
                        } finally {
                            try {
                                ta && !ta.done && (x = za.return) && x.call(za);
                            } finally {
                                if (w) throw w.error;
                            }
                        }
                        try {
                            for (var Aa = ((y = void 0), B(b.vertices())), ma = Aa.next(); !ma.done; ma = Aa.next()) (A = ma.value), (D[A][C] += k - P);
                        } catch (T) {
                            y = { error: T };
                        } finally {
                            try {
                                ma && !ma.done && (z = Aa.return) && z.call(Aa);
                            } finally {
                                if (y) throw y.error;
                            }
                        }
                    }
                try {
                    for (var Ba = B(b.vertices()), ua = Ba.next(); !ua.done; ua = Ba.next()) (A = ua.value), nd(D[A]), (b.vertex(A).x = (D[A][1] + D[A][2]) / 2);
                } catch (T) {
                    var O = { error: T };
                } finally {
                    try {
                        ua && !ua.done && (E = Ba.return) && E.call(Ba);
                    } finally {
                        if (O) throw O.error;
                    }
                }
                l = 0;
                try {
                    for (var na = B(a), N = na.next(); !N.done; N = na.next()) {
                        var R = N.value;
                        a = 0;
                        try {
                            for (var S = ((c = void 0), B(R)), Q = S.next(); !Q.done; Q = S.next()) {
                                var U = Q.value;
                                a = Math.max(a, b.vertex(U).height);
                            }
                        } catch (T) {
                            c = { error: T };
                        } finally {
                            try {
                                Q && !Q.done && (d = S.return) && d.call(S);
                            } finally {
                                if (c) throw c.error;
                            }
                        }
                        l += a / 2;
                        try {
                            for (var V = ((f = void 0), B(R)), W = V.next(); !W.done; W = V.next()) (U = W.value), (b.vertex(U).y = l);
                        } catch (T) {
                            f = { error: T };
                        } finally {
                            try {
                                W && !W.done && (g = V.return) && g.call(V);
                            } finally {
                                if (f) throw f.error;
                            }
                        }
                        l += a / 2;
                    }
                } catch (T) {
                    var Y = { error: T };
                } finally {
                    try {
                        N && !N.done && (e = na.return) && e.call(na);
                    } finally {
                        if (Y) throw Y.error;
                    }
                }
                var ba, ea;
                e = Y = Infinity;
                try {
                    for (var ca = B(b.vertices()), aa = ca.next(); !aa.done; aa = ca.next()) {
                        var ha = aa.value,
                            ka = b.vertex(ha);
                        Y = Math.min(Y, ka.x - ka.origWidth / 2);
                        e = Math.min(e, ka.y - ka.origHeight / 2);
                    }
                } catch (T) {
                    var ia = { error: T };
                } finally {
                    try {
                        aa && !aa.done && (ba = ca.return) && ba.call(ca);
                    } finally {
                        if (ia) throw ia.error;
                    }
                }
                try {
                    for (var fa = B(b.vertices()), da = fa.next(); !da.done; da = fa.next()) (ha = da.value), (ka = b.vertex(ha)), (ka.x -= Y), (ka.y -= e);
                } catch (T) {
                    var la = { error: T };
                } finally {
                    try {
                        da && !da.done && (ea = fa.return) && ea.call(fa);
                    } finally {
                        if (la) throw la.error;
                    }
                }
            };
            return c;
        })(),
        zb = function (c, b, a) {
            var e;
            if (0 === b.length) return [];
            var h = [],
                d = [],
                f = c.vertex(b[0])[a ? "v" : "u"];
            try {
                for (var g = B(b), k = g.next(); !k.done; k = g.next()) {
                    var l = k.value,
                        n = c.vertex(l);
                    (!n.dummy || n[a ? "v" : "u"] !== f) && 0 < d.length && ((h = h.concat(d)), (d = []));
                    n.dummy && (d.push(l), (f = n[a ? "v" : "u"]));
                }
            } catch (r) {
                var p = { error: r };
            } finally {
                try {
                    k && !k.done && (e = g.return) && e.call(g);
                } finally {
                    if (p) throw p.error;
                }
            }
            0 < d.length && (h = h.concat(d));
            return h;
        },
        Ab = function (c, b, a) {
            var e,
                h,
                d = 0,
                f = 0;
            try {
                for (var g = B(b), k = g.next(); !k.done; k = g.next()) {
                    var l = k.value;
                    d += c.vertex(l)[a ? "x" : "y"];
                    f += c.vertex(l).origWidth || 0;
                }
            } catch (t) {
                var n = { error: t };
            } finally {
                try {
                    k && !k.done && (e = g.return) && e.call(g);
                } finally {
                    if (n) throw n.error;
                }
            }
            n = d / b.length - (f - 1) / 2;
            try {
                for (var p = B(b), r = p.next(); !r.done; r = p.next()) (l = r.value), (c.vertex(l)[a ? "x" : "y"] = n), (n += c.vertex(l).origWidth || 0);
            } catch (t) {
                var q = { error: t };
            } finally {
                try {
                    r && !r.done && (h = p.return) && h.call(p);
                } finally {
                    if (q) throw q.error;
                }
            }
        },
        qd = function (c, b, a) {
            for (var e, h, d, f, g = 0; g < b.length - 1; ++g)
                try {
                    for (var k = ((e = void 0), B(zb(c, b[g], !1))), l = k.next(); !l.done; l = k.next()) {
                        var n = l.value;
                        Ab(c, n, a);
                    }
                } catch (q) {
                    e = { error: q };
                } finally {
                    try {
                        l && !l.done && (h = k.return) && h.call(k);
                    } finally {
                        if (e) throw e.error;
                    }
                }
            for (g = b.length - 1; 0 < g; --g)
                try {
                    for (var p = ((d = void 0), B(zb(c, b[g], !0))), r = p.next(); !r.done; r = p.next()) (n = r.value), Ab(c, n, a);
                } catch (q) {
                    d = { error: q };
                } finally {
                    try {
                        r && !r.done && (f = p.return) && f.call(p);
                    } finally {
                        if (d) throw d.error;
                    }
                }
        },
        Ya = new WeakMap(),
        rd = (function () {
            function c() {
                Ya.set(this, {
                    f: function () {
                        return 0;
                    },
                });
            }
            c.prototype.call = function (b) {
                var a,
                    e = Ya.get(this).f,
                    c = {};
                try {
                    for (var d = B(b.vertices()), f = d.next(); !f.done; f = d.next()) {
                        var g = f.value;
                        c[g] = e(g);
                    }
                } catch (l) {
                    var k = { error: l };
                } finally {
                    try {
                        f && !f.done && (a = d.return) && a.call(d);
                    } finally {
                        if (k) throw k.error;
                    }
                }
                return c;
            };
            c.prototype.f = function () {
                return S(this, Ya, "f", arguments);
            };
            return c;
        })(),
        sd = function (c, b) {
            var a,
                e,
                h = b.ltor,
                d = b.vertexWidth,
                f = b.vertexHeight,
                g = b.edgeWidth,
                k = b.layerMargin,
                l = b.vertexMargin,
                n = b.vertexLeftMargin,
                p = b.vertexRightMargin,
                r = b.vertexTopMargin;
            b = b.vertexBottomMargin;
            var q = new Wa();
            try {
                for (var t = B(c.vertices()), u = t.next(); !u.done; u = t.next()) {
                    var v = u.value,
                        w = c.vertex(v),
                        x = d({ u: v, d: w }),
                        y = f({ u: v, d: w }),
                        z = n({ u: v, d: w }) + p({ u: v, d: w }),
                        E = r({ u: v, d: w }) + b({ u: v, d: w });
                    q.addVertex(v, { width: h ? y + l + E : x + k + z, height: h ? x + k + z : y + l + E, origWidth: h ? y : x, origHeight: h ? x : y });
                }
            } catch (P) {
                var D = { error: P };
            } finally {
                try {
                    u && !u.done && (a = t.return) && a.call(t);
                } finally {
                    if (D) throw D.error;
                }
            }
            try {
                for (var F = B(c.edges()), C = F.next(); !C.done; C = F.next()) {
                    var A = N(C.value, 2);
                    v = A[0];
                    var H = A[1];
                    q.addEdge(v, H, { width: g(v, H) });
                }
            } catch (P) {
                var L = { error: P };
            } finally {
                try {
                    C && !C.done && (e = F.return) && e.call(F);
                } finally {
                    if (L) throw L.error;
                }
            }
            return q;
        },
        td = function (c, b, a) {
            var e,
                h,
                d,
                f,
                g,
                k,
                l,
                n,
                p = { vertices: {}, edges: {} },
                r = [];
            try {
                for (var q = B(c.vertices()), t = q.next(); !t.done; t = q.next()) {
                    var u = t.value;
                    p.edges[u] = {};
                }
            } catch (X) {
                var v = { error: X };
            } finally {
                try {
                    t && !t.done && (e = q.return) && e.call(q);
                } finally {
                    if (v) throw v.error;
                }
            }
            try {
                for (var w = B(b), x = w.next(); !x.done; x = w.next()) {
                    var y = x.value;
                    v = -Infinity;
                    try {
                        for (var z = ((d = void 0), B(y)), E = z.next(); !E.done; E = z.next()) (u = E.value), (v = Math.max(v, c.vertex(u).origHeight || 0));
                    } catch (X) {
                        d = { error: X };
                    } finally {
                        try {
                            E && !E.done && (f = z.return) && f.call(z);
                        } finally {
                            if (d) throw d.error;
                        }
                    }
                    r.push(v);
                }
            } catch (X) {
                var D = { error: X };
            } finally {
                try {
                    x && !x.done && (h = w.return) && h.call(w);
                } finally {
                    if (D) throw D.error;
                }
            }
            for (D = 0; D < b.length; ++D) {
                y = b[D];
                h = r[D];
                try {
                    for (var F = ((g = void 0), B(y)), C = F.next(); !C.done; C = F.next()) {
                        u = C.value;
                        var A = c.vertex(u);
                        if (!A.dummy) {
                            p.vertices[u] = { x: a ? A.y : A.x, y: a ? A.x : A.y, width: a ? A.origHeight : A.origWidth, height: a ? A.origWidth : A.origHeight, layer: A.layer, order: A.order };
                            try {
                                for (var H = ((l = void 0), B(c.outVertices(u))), L = H.next(); !L.done; L = H.next()) {
                                    var P = L.value,
                                        M = a
                                            ? [
                                                  [A.y + (A.origHeight || 0) / 2, A.x],
                                                  [A.y + h / 2, A.x],
                                              ]
                                            : [
                                                  [A.x, A.y + (A.origHeight || 0) / 2],
                                                  [A.x, A.y + h / 2],
                                              ];
                                    y = P;
                                    var J = c.vertex(y);
                                    for (d = D + 1; J.dummy; )
                                        a ? (M.push([J.y - r[d] / 2, J.x]), M.push([J.y + r[d] / 2, J.x])) : (M.push([J.x, J.y - r[d] / 2]), M.push([J.x, J.y + r[d] / 2])), (y = c.outVertices(y)[0]), (J = c.vertex(y)), (d += 1);
                                    a ? (M.push([J.y - r[d] / 2, J.x]), M.push([J.y - (J.origHeight || 0) / 2, J.x])) : (M.push([J.x, J.y - r[d] / 2]), M.push([J.x, J.y - (J.origHeight || 0) / 2]));
                                    d = M;
                                    f = a;
                                    for (w = 1; w < d.length - 1; ) (f ? d[w][1] : d[w][0]) === (f ? d[w + 1][1] : d[w + 1][0]) ? d.splice(w, 2) : (w += 2);
                                    if (c.edge(u, P).reversed) {
                                        var Z = p.edges[y];
                                        y = u;
                                        f = d = void 0;
                                        w = [];
                                        try {
                                            for (var ja = B(M), G = ja.next(); !G.done; G = ja.next()) w.unshift(G.value);
                                        } catch (X) {
                                            f = { error: X };
                                        } finally {
                                            try {
                                                G && !G.done && (d = ja.return) && d.call(ja);
                                            } finally {
                                                if (f) throw f.error;
                                            }
                                        }
                                        Z[y] = { points: w, reversed: !0, width: c.edge(u, P).width };
                                    } else p.edges[u][y] = { points: M, reversed: !1, width: c.edge(u, P).width };
                                }
                            } catch (X) {
                                l = { error: X };
                            } finally {
                                try {
                                    L && !L.done && (n = H.return) && n.call(H);
                                } finally {
                                    if (l) throw l.error;
                                }
                            }
                        }
                    }
                } catch (X) {
                    g = { error: X };
                } finally {
                    try {
                        C && !C.done && (k = F.return) && k.call(F);
                    } finally {
                        if (g) throw g.error;
                    }
                }
            }
            return p;
        },
        U = new WeakMap(),
        Bb = (function () {
            function c() {
                U.set(this, {
                    vertexWidth: function (b) {
                        return b.d.width;
                    },
                    vertexHeight: function (b) {
                        return b.d.height;
                    },
                    edgeWidth: function () {
                        return 1;
                    },
                    layerMargin: 10,
                    vertexMargin: 10,
                    vertexLeftMargin: function () {
                        return 0;
                    },
                    vertexRightMargin: function () {
                        return 0;
                    },
                    vertexTopMargin: function () {
                        return 0;
                    },
                    vertexBottomMargin: function () {
                        return 0;
                    },
                    edgeMargin: 10,
                    ltor: !0,
                    edgeBundling: !1,
                    layerAssignment: new rd(),
                    crossingReduction: new hd(),
                    positionAssignment: new pd(),
                });
            }
            c.prototype.layout = function (b) {
                var a,
                    e = sd(b, {
                        vertexWidth: this.vertexWidth(),
                        vertexHeight: this.vertexHeight(),
                        edgeWidth: ad(this.edgeWidth(), b),
                        layerMargin: this.layerMargin(),
                        vertexMargin: this.vertexMargin(),
                        vertexLeftMargin: this.vertexLeftMargin(),
                        vertexRightMargin: this.vertexRightMargin(),
                        vertexTopMargin: this.vertexTopMargin(),
                        vertexBottomMargin: this.vertexBottomMargin(),
                        ltor: this.ltor(),
                    });
                b = this.layerAssignment().call(e);
                var c = cd(e, b, !0);
                ed(e, c, b, this.edgeMargin(), this.layerMargin());
                var d = c.map(function () {
                    return [];
                });
                b = function (a) {
                    var b,
                        h,
                        m = c.map(function (e) {
                            return e.filter(function (e) {
                                return -1 < a.indexOf(e);
                            });
                        });
                    f.crossingReduction().call(e, m);
                    for (var g = 0; g < c.length; ++g)
                        try {
                            for (var k = ((b = void 0), B(m[g])), l = k.next(); !l.done; l = k.next()) d[g].push(l.value);
                        } catch (w) {
                            b = { error: w };
                        } finally {
                            try {
                                l && !l.done && (h = k.return) && h.call(k);
                            } finally {
                                if (b) throw b.error;
                            }
                        }
                };
                var f = this;
                try {
                    for (var g = B(bd(e)), k = g.next(); !k.done; k = g.next()) b(k.value);
                } catch (n) {
                    var l = { error: n };
                } finally {
                    try {
                        k && !k.done && (a = g.return) && a.call(g);
                    } finally {
                        if (l) throw l.error;
                    }
                }
                for (l = 0; l < d.length; ++l) for (a = d[l], g = 0; g < a.length; ++g) (k = a[g]), (e.vertex(k).layer = l), (e.vertex(k).order = g);
                this.positionAssignment().call(e, d);
                this.edgeBundling() && qd(e, d, this.ltor());
                return td(e, d, this.ltor());
            };
            c.prototype.vertexWidth = function (b) {
                return S(this, U, "vertexWidth", arguments);
            };
            c.prototype.vertexHeight = function (b) {
                return S(this, U, "vertexHeight", arguments);
            };
            c.prototype.edgeWidth = function (b) {
                return S(this, U, "edgeWidth", arguments);
            };
            c.prototype.layerMargin = function (b) {
                return S(this, U, "layerMargin", arguments);
            };
            c.prototype.vertexMargin = function (b) {
                return S(this, U, "vertexMargin", arguments);
            };
            c.prototype.edgeMargin = function (b) {
                return S(this, U, "edgeMargin", arguments);
            };
            c.prototype.vertexLeftMargin = function (b) {
                return S(this, U, "vertexLeftMargin", arguments);
            };
            c.prototype.vertexRightMargin = function (b) {
                return S(this, U, "vertexRightMargin", arguments);
            };
            c.prototype.vertexTopMargin = function (b) {
                return S(this, U, "vertexTopMargin", arguments);
            };
            c.prototype.vertexBottomMargin = function (b) {
                return S(this, U, "vertexBottomMargin", arguments);
            };
            c.prototype.ltor = function (b) {
                return S(this, U, "ltor", arguments);
            };
            c.prototype.edgeBundling = function (b) {
                return S(this, U, "edgeBundling", arguments);
            };
            c.prototype.layerAssignment = function (b) {
                return S(this, U, "layerAssignment", arguments);
            };
            c.prototype.crossingReduction = function (b) {
                return S(this, U, "crossingReduction", arguments);
            };
            c.prototype.positionAssignment = function (b) {
                return S(this, U, "positionAssignment", arguments);
            };
            return c;
        })(),
        Cb = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.buildChildLookup = function () {
                if (!this.childLookup) {
                    var a = (this.childLookup = {});
                    this.eachPoint(function (e) {
                        var b;
                        if ((b = e.currentOptions.parent))
                            (b = b.split(",")),
                                c.jsLib.each(b, function (b) {
                                    a[b] = a[b] || [];
                                    a[b].push(e);
                                });
                    });
                }
            };
            b.prototype.setCoordinates = function (a, e) {
                this.childLookup = c.undefVal;
                return this;
            };
            b.prototype.getParents = function (a) {
                var e = this,
                    b = [],
                    d,
                    f = [];
                if (a) {
                    if ((d = a.options("parent"))) f = d.split(",");
                    return c.jsLib.map(f, function (a) {
                        return e.series.ciManager.exists(a);
                    });
                }
                this.eachPoint(function (a) {
                    (d = a.options("parent")) ? ((f = d.split(",")), !e.series.ciManager.exists(f[0]) && b.push(a)) : b.push(a);
                });
                return c.jsLib.uniq(b);
            };
            b.prototype.getChildren = function (a) {
                this.buildChildLookup();
                return this.childLookup[a.currentOptions.id] || [];
            };
            b.prototype.walkUpTree = function (a, e, b) {
                var h = this;
                a = this.getParents(a);
                var d;
                e && (d = e(a, b));
                c.jsLib.each(a, function (a) {
                    h.walkUpTree(a, e, d);
                });
            };
            return b;
        })(c.SeriesBaseType),
        Db = function () {
            return { axes: "x,y", values: "", requiredData: "", customAxisOptions: { z: { visible: !1 }, x: { visible: !1, staticDraggable: !0 }, y: { visible: !1, staticDraggable: !0 } } };
        },
        ud = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "annotation";
                a.typeConfig = Db();
                a._dragOffset = [0, 0];
                return a;
            }
            K(b, d);
            b.prototype.getTypeConfigDefault = function () {
                return Db();
            };
            b.prototype.assignLayers = function (a, e) {
                var b = this;
                c.jsLib.each(a, function (a) {
                    var h = c.jsLib.pick(a.options("y"), e);
                    a.orgLayer = h;
                    b._maxLayer = Math.max(h, b._maxLayer);
                    b.assignLayers(b.getChildren(a), h + 1);
                });
            };
            b.prototype.correctLayers = function () {
                var a = this,
                    e = this.series;
                this.eachPoint(function (b) {
                    var h = a.getParents(b);
                    1 < h.length &&
                        ((h = c.jsLib.map(h, function (a) {
                            return a.orgLayer;
                        })),
                        c.jsLib.find(h, function (a) {
                            return a >= b.orgLayer;
                        }) &&
                            (c.jsLib.def(b.options("y")) && c.emitter.emit("warning", e.name || e.id, "orgChildLevel", { data: [b.options("id")], container: e.chart.getWrapper() }),
                            (b.orgLayer = Math.max.apply(Math, G(h)) + 1),
                            a.walkUpTree(
                                b,
                                function (a, e) {
                                    var b = e;
                                    c.jsLib.each(a, function (a) {
                                        b = c.jsLib.def(a.options("y")) ? a.options("y") : b;
                                        c.jsLib.def(a.options("y")) || (a.orgLayer = b);
                                    });
                                    return b - 1;
                                },
                                b.orgLayer - 1
                            )));
                });
            };
            b.prototype.reverseLayers = function () {
                var a = this._maxLayer;
                this.eachPoint(function (e) {
                    e.orgLayer = a - e.orgLayer;
                });
            };
            b.prototype.applyBoundsToAxes = function (a, e) {
                var b = this.series,
                    c = b.chartArea,
                    d = b.xAxis;
                b = b.yAxis;
                c.isZoomed = c.isZoomedDragArea = a[2] > e[2] || a[3] > e[3];
                a[2] < e[2] && ((a[0] = e[0]), (a[2] = e[2]));
                a[3] < e[3] && ((a[1] = e[1]), (a[3] = e[3]));
                d.setStaticRange([a[0], a[0] + a[2]], [e[0], e[0] + e[2]]);
                b.setStaticRange([a[1], a[1] + a[3]], [e[1], e[1] + e[3]]);
            };
            b.prototype.applyDragOffset = function () {
                var a = this.series;
                this._dragOffset = [-a.xAxis.zoomRange[0], -a.yAxis.zoomRange[0]];
            };
            b.prototype.setCoordinates = function (a, e) {
                var b = this;
                d.prototype.setCoordinates.call(this, a, e);
                var m = this,
                    f = this.series,
                    g,
                    k = f.indexer,
                    l = e && e.forceCoordinates;
                if (f.chartArea.isDragging) m.applyDragOffset();
                else if (Wa && Bb) {
                    var n = function (a) {
                        a.points ? w.push(a.points) : c.jsLib.each(a, n);
                    };
                    e = f.options("shape.padding");
                    var p = c.jsLib.def(e) ? (1 <= e ? e : e * Math.min(a.width, a.height)) : 10;
                    e = f.chart.options("defaultAnnotation");
                    var r = c.jsLib.parseMargin(e.margin) || [0, 0, 0, 0];
                    m._dragOffset = [0, 0];
                    var q = f.userPoints;
                    e = f.ctManager.settingVal("organizationType", f.currentOptions);
                    var t = "left" == e || "up" == e,
                        u = new Wa(),
                        v = m.getParents();
                    m._maxLayer = 0;
                    m.assignLayers(v, 0);
                    m.correctLayers();
                    t && m.reverseLayers();
                    f.indexer.indexKeys(["coordinates", "bbox"], {}, 0);
                    var w = [],
                        x = {},
                        y = {};
                    ec(f).forEach(function (a) {
                        var e = a._i,
                            h = r;
                        x = {};
                        l ? (g = f.indexer.getValue("coordinates", e)) : ((g = { meta: x }), b.initPointLabel(a, g, f.getPointAttr(q[e])));
                        var d = a.options("annotation");
                        d && d.margin && (h = c.jsLib.parseMargin(d.margin));
                        d = g.meta.labelSize;
                        u.addVertex(a._i, { width: d[0], height: d[1], margin: h, _i: e });
                        y[a._i] = a.orgLayer;
                        a = m.getParents(a);
                        c.jsLib.each(a, function (a) {
                            a = a._i;
                            var b = e;
                            t && ((b = N([b, a], 2)), (a = b[0]), (b = b[1]));
                            u.addEdge(a, b);
                        });
                        !l && m.clearPrevCoord(k.getValue("coordinates", e));
                        f.indexer.setValue("coordinates", e, g);
                    });
                    v = new Bb();
                    v.vertexWidth(function (a) {
                        return a.d.width;
                    })
                        .vertexHeight(function (a) {
                            return a.d.height;
                        })
                        .vertexTopMargin(function (a) {
                            return a.d.margin[0];
                        })
                        .vertexRightMargin(function (a) {
                            return a.d.margin[1];
                        })
                        .vertexBottomMargin(function (a) {
                            return a.d.margin[2];
                        })
                        .vertexLeftMargin(function (a) {
                            return a.d.margin[3];
                        })
                        .layerMargin(5)
                        .layerMargin(5)
                        .layerAssignment(function (a) {
                            return y;
                        })
                        .ltor("right" == e || "left" == e);
                    var z = v.layout(u);
                    this.coordinates = { line: w };
                    var E = [],
                        D;
                    f.points().each(function (a) {
                        var e = a._i;
                        a = z.vertices[a._i];
                        f.getPointAttr(q[e]);
                        g = f.indexer.getValue("coordinates", e);
                        e = g.meta.labelSize;
                        e = [a.x - e[0] / 2, a.y - e[1] / 2, e[0], e[1]];
                        c.bboxLib.collideList(E, e) && (D = !0);
                        E.push(e);
                        g.xyz = e;
                    });
                    var F = "right" === e || "left" === e,
                        C = function (a, e, b) {
                            A(a, e, b);
                            a = m.getParents(f.points(a));
                            if (1 === a.length && ((b = a[0]._i), 1 === m.getChildren(a[0]).length)) {
                                c.bboxLib.translateRef(E[b], e);
                                A(b, e, E[b]);
                                var h = !0;
                            }
                            return h;
                        },
                        A = function (a, e, b) {
                            c.jsLib.each(z.edges[a], function (a) {
                                2 === a.points.length ? c.bboxLib.translateRef(a.points[0], e) : (c.bboxLib.translateRef(a.points[0], e), c.bboxLib.translateRef(a.points[1], e));
                            });
                            c.jsLib.each(z.edges, function (b) {
                                if ((b = b[a])) 2 === b.points.length ? c.bboxLib.translateRef(b.points[1], e) : (c.bboxLib.translateRef(b.points[2], e), c.bboxLib.translateRef(b.points[3], e));
                            });
                        };
                    v = function () {
                        var a = function (a) {
                                a[0] -= 5;
                                a[2] += 5;
                            },
                            e = function (a) {
                                a[1] -= 5;
                                a[3] += 5;
                            },
                            b = function (a) {
                                a[0] += 5;
                                a[2] -= 5;
                            },
                            h = function (a) {
                                a[1] += 5;
                                a[3] -= 5;
                            },
                            d = !1;
                        c.jsLib.each(E, F ? e : a);
                        c.bboxLib.unsquishBoxesCb(E, F ? "d" : "r", function (a, e, b) {
                            C(a, e, b) && (d = !0);
                        });
                        c.jsLib.each(E, F ? h : b);
                        return d;
                    };
                    var H = function () {
                        function a(a) {
                            return c.jsLib.filter(f.points().items, { orgLayer: a });
                        }
                        for (var e, b = 0, h = a(b); h.length; ) {
                            for (var d = 0; d < h.length; d++)
                                if (d) {
                                    var m = h[d],
                                        g = h[d - 1],
                                        k = m.coord().xyz;
                                    g = g.coord().xyz;
                                    F ? k[1] < g[1] && ((e = g[1] + g[3] - k[1]), (k[1] += e), C(m._i, [0, e], k), (e = !0)) : k[0] < g[0] && ((e = g[0] + g[2] - k[0]), (k[0] += e), C(m._i, [e, 0], k), (e = !0));
                                }
                            h = a(++b);
                        }
                        return e;
                    };
                    D && (v() && v(), H() && (v() && v(), H()));
                    n(z.edges);
                    p = c.bboxLib.pad(c.bboxLib.bboxUnion(E), -p);
                    v = c.bboxLib.center(p);
                    a = c.bboxLib.fromRect(a);
                    H = c.bboxLib.center(a);
                    v = m._coordOffset = [H[0] - v[0], H[1] - v[1]];
                    p = c.bboxLib.translate(p, v);
                    H = void 0;
                    "down" === e
                        ? 0 > p[1] && ((v[1] -= p[1]), (p = c.bboxLib.translate(p, [0, -p[1]])))
                        : "right" === e
                        ? 0 > p[0] && ((v[0] -= p[0]), (p = c.bboxLib.translate(p, [-p[0], -p[1]])))
                        : "left" === e
                        ? 0 > (H = c.bboxLib.rightX(a) - c.bboxLib.rightX(p)) && ((v[0] += H), (p = c.bboxLib.translate(p, [H, 0])))
                        : "up" === e && 0 > (H = c.bboxLib.bottomY(a) - c.bboxLib.bottomY(p)) && ((v[1] += H), (p = c.bboxLib.translate(p, [0, H])));
                    m.applyBoundsToAxes(p, a);
                    m.renderOrder = k.sortByNone();
                    m.renderOrderRev = m.renderOrder.slice(0);
                    m.renderOrderRev.reverse();
                }
                return this;
            };
            b.prototype.haloPath = function (a, e) {
                var b = this.series,
                    m,
                    f = a.visuals.body;
                if ((f = f && f.rootPanel) && (m = c.jsLib.evalPath(f, "rect.d"))) {
                    a = b.chartArea.rootVisuals.dataContent;
                    var g = f.globalX - a.globalX,
                        k = f.globalY - a.globalY;
                    return cc(c.pathLib.fromString(m), function (a) {
                        return [a[0] + g, a[1] + k];
                    }).toString();
                }
                return d.prototype.haloPath.call(this, a, e);
            };
            b.prototype.render = function (a) {
                var e = this.series,
                    b = this,
                    d = e.rootVisuals,
                    f = e.renderer,
                    g = e.visuals;
                e.preRender(a);
                var k = e.info.style,
                    l = b._dragOffset,
                    n = b._coordOffset.slice(0);
                n = c.bboxLib.translate(n, l);
                f = f.renderer;
                if (b.paths.lines || b.coordinates) {
                    d = d.line;
                    l = void 0;
                    l = b.paths.lines ? b.paths.lines.join(" ").replace(/,/g, " ") : c.shapeLib.multiLineToPath(b.coordinates.line).join(" ");
                    l = c.pathLib.fromString(l).translate(function (a) {
                        return c.bboxLib.translate(a, n);
                    });
                    var p = { d: l, zIndex: e.zIndex + c.consts.zIndexReference.series };
                    p = b.render_applyDynamicAttrVals([p, k.attr.line], a, k.attr.line);
                    (k = g.line) ? k.attr(p) : ((g.line = k = f.path(p)), k.add(d));
                }
                var r = e.points().items,
                    q;
                f = function (h, d) {
                    q = r[b.renderOrder[h]];
                    var f = q.currentOptions;
                    h = (h = f.annotation) && h.asHTML;
                    var m = e.indexer.getValue("coordinates", q._i) || { meta: {} },
                        g = e.getPointAttr(f);
                    d = q.visuals;
                    f = g.pointAttr[f.selected ? c.consts.SELECT_STATE : q._state || c.consts.NORMAL_STATE];
                    var k = c.bboxLib.translate(m.xyz, n);
                    m.hitTest = function (a, e) {
                        return c.bboxLib.pointInside(k, [a, e]);
                    };
                    m.pathD = c.bboxLib.toPath(k);
                    m.shapeBounds = k.slice(0);
                    m = {};
                    h && ((g = e.chartArea.rootVisuals.content.getGlobalBbox()), (k[0] += g.x), (k[1] += g.y));
                    m[h ? "left" : "offsetX"] = h ? k[0] + "px" : k[0];
                    m[h ? "top" : "offsetY"] = h ? k[1] + "px" : k[1];
                    p = b.render_applyDynamicAttrVals([p, f, m], b._initialPosSet ? a : !1, f);
                    d.body.rootPanel.attr(p);
                    b.hideUnusedPointVisuals(q);
                };
                g = 0;
                for (k = r.length; g < k; g++) f(g);
                b._initialPosSet = !0;
                b.hideUnused();
                return b;
            };
            b.prototype.initPointLabel = function (a, e, b) {
                var h = this.series;
                e = e.meta;
                var d = a.visuals,
                    g = h.rootVisuals.points,
                    k = h.chart.options("defaultAnnotation");
                k = c.jsLib.merge({}, k);
                var l = a.options("annotation");
                l && c.jsLib.merge(k, l);
                e.labelSize ||
                    (g.attr({ autoWrap: "none" }),
                    (l = c.jsLib.evalPath(a.currentOptions, "annotation.label.text") || c.jsLib.evalPath(a.currentOptions, "label.text") || h.info.labelTextInfo.label),
                    "function" === c.jsLib.getValType(l) && (l = l(a)),
                    (l = a.replaceTokens(l)),
                    (e.labelText = l),
                    (k = c.jsLib.merge({}, k, { label: b.label }, { label: { text: l } }, { animation: { duration: 0 } })),
                    (b = k.asHTML),
                    (k.margin = 0),
                    (a = d.body)
                        ? a.options(k)
                        : ((a = d.body = new c.Annotation(h.chart, k, g).add(g)),
                          b ? a.rootPanel.attr({ pointerEvents: "none" }) : !1 === c.jsLib.evalPath(k, "label.autoWrap") ? a.rootVisuals.content.attr({ autoWrap: "none" }) : a.rootVisuals.content.attr({ autoWrap: "golden" })),
                    (h = a.rootPanel),
                    h.attr({ autoWrap: "none", width: null, height: null }),
                    (d = (b ? h : h.setPreliminarySize(!0)).getBbox()),
                    (d = [d.width, d.height]),
                    h.attr({ autoWrap: "none", width: d[0], height: d[1] }),
                    (e.labelSize = d),
                    (b ? a.target : h).refresh());
                return this;
            };
            b.prototype.hideUnusedPointVisuals = function (a) {
                var e = a.visuals;
                c.hideVisual(e.rect);
                !a.series.options("forceMarker") && c.hideVisual(e.marker);
                c.hideVisual(e.marker);
                c.hideVisual(e.labelConnector);
            };
            b.prototype.hideUnused = function () {
                var a = this.series,
                    e = a.visuals;
                !a.info.type.drawArea && e.area && this.hideVisual(e.area);
                return this;
            };
            return b;
        })(Cb),
        gc = function (d, b, a, e, h) {
            void 0 === h && (h = 5);
            var m = Math.PI / 2,
                f = a[1] / 2 + h,
                g = a[0] / 2 + h,
                k = b.cxy;
            h = b.start;
            var l = b.end,
                n = b.innerR,
                p = b.r,
                r = c.trigLib.toDegrees((h + l) / 2),
                q = c.trigLib.toRadians(r),
                t = { outleft: { aA: h, aCxyA: h - m }, inleft: { aA: h, aCxyA: h + m }, inright: { aA: l, aCxyA: l - m }, outright: { aA: l, aCxyA: l + m } },
                u = {
                    outtop: function () {
                        return p + f;
                    },
                    outbottom: function () {
                        return n - f;
                    },
                    intop: function () {
                        return p - f;
                    },
                    inbottom: function () {
                        return n + f;
                    },
                    inmiddle: function () {
                        return (n + p) / 2;
                    },
                };
            return c.jsLib.map(d, function (b) {
                var h = b.align,
                    d = u[b.vAlign]();
                if ("incenter" === h) d = { cxy: c.trigLib.gpp(k, q, d), angle: r, size: a };
                else {
                    h = t[h];
                    var f = c.trigLib.gpp(k, h.aA, d);
                    h = c.trigLib.gpp(f, h.aCxyA, g);
                    f = c.trigLib.angleOfPoints(k, h);
                    h = c.trigLib.gpdp(k, f, d);
                    d = { cxy: h, angle: f, size: a };
                }
                d.angle = c.trigLib.ensureUprightText(d.angle - (e ? 0 : 90));
                d.alignment = b;
                return d;
            });
        },
        hc = [0.9, 0],
        ic = [0, 0],
        vd = (function (d) {
            function b(a, e, b) {
                return d.call(this, a, e, b) || this;
            }
            K(b, d);
            b.prototype.measure = function (a) {
                var e = this.rootVisuals;
                if (this.viewState && !1 !== this.isVisible) {
                    if ((e.label.rootPanel.calculateMargin(), a && (a.pop && (a = this.viewState.caRect = { x: 0, y: 0, width: a[0], height: a[1] }), a))) {
                        this.viewState.caRect = a;
                        e = c.bboxLib.fromRect(a);
                        a = this.measure_ticks(a);
                        this.tickBounds = a.slice(0);
                        var b = "caPaneRadar" === this.chartArea.kind;
                        return this.isHoriz || b ? ((e = Ga(e, a, !0)), (this.overflowSize = { tL: [e[0], e[3]], bR: [e[2], e[1]], margins: e }), a ? a : void 0) : [0, 0, 0, 0];
                    }
                } else if (!1 === this.isVisible) return (this._sizeMetrics.length = this.isHoriz ? a[0] : a[1]), [0, 0, 0, 0];
            };
            b.prototype.init = function () {
                for (var a = [], e = 0; e < arguments.length; e++) a[e] = arguments[e];
                d.prototype.init.apply(this, G(a));
                N(a, 3);
                this.defaultContextOptions = {};
                this.isRadial = !0;
            };
            b.prototype.measure_ticks = function (a) {
                var e = this,
                    b = this.viewState,
                    d = [],
                    f = [],
                    g = [],
                    k = [],
                    l = [];
                a = a || b.caRect;
                this.chartArea.angleArc();
                var n = this.isHoriz
                    ? function (a, e) {
                          return (e && a.rotated ? a.rotated[3] : a.textSize[1]) + a.tickLength + a.tickPadding || 0;
                      }
                    : function (a, e) {
                          return (e && a.rotated ? a.rotated[2] : a.textSize[0]) + a.tickLength + a.tickPadding || 0;
                      };
                c.jsLib.evalPath(this.currentOptions, "defaultTick.label.rotate");
                var p = [];
                if (b && !1 !== this.isVisible)
                    return (
                        this.setTicks(b).setAttribs(),
                        (b = this._ticks),
                        b.length &&
                            (c.jsLib.each(b, function (a) {
                                a.invalid ? wa(e, a) : ((a = a.metrics()), f.push(a.textSize[0]), g.push(a.textSize[1]), k.push(n(a)));
                            }),
                            (p = f.length ? [Math.max.apply(Math, G(f)), Math.max.apply(Math, G(g))] : [0, 0]),
                            c.jsLib.each(b, function (a, b) {
                                a.invalid || (wa(e, a), d.push(a._bbox), l.push(a._positionData.rLength));
                            }),
                            (b = Math.max.apply(Math, G(k))),
                            (this.tickMetricsData = { maxTextSize: p, maxLength: b, maxRadiusLen: Math.max.apply(Math, G(l)), maxLengthAll: b }),
                            (a = (a.width - a.height) / 2),
                            (p = c.bboxLib.bboxUnion(d) || [0, 0, 0, 0]),
                            (p[0] -= 0 > a ? a : 0),
                            (p[1] += 0 < a ? a : 0)),
                        p
                    );
            };
            b.prototype.setTicks = function (a) {
                d.prototype.setTicks.call(this, a);
                var e = this.chartArea.angleArc();
                a = this._ticks;
                if (360 === Math.abs(e.end - e.start) && this.isHoriz && a.length) {
                    e = a[0];
                    var b = a[a.length - 1];
                    wa(this, e);
                    wa(this, b);
                    c.trigLib.normalizeAngle(e._metrics.angle) === c.trigLib.normalizeAngle(b._metrics.angle) && a.shift();
                }
                return this;
            };
            b.prototype.valToAngle = function (a, e) {
                void 0 === e && (e = this.viewState);
                var b = this.chartArea;
                if (this.isRadial && this.isHoriz) {
                    var d = b.angleArc();
                    return c.jsLib.mapDeep(a, function (a) {
                        a = e.valToLin(a);
                        return c.mathLib.mapValue(d.start, d.end, 0, 1, a);
                    });
                }
            };
            b.prototype.adjustRange = function () {
                var a = this;
                if (!a.syncAxis && !a.isZoomed) {
                    var e = function (e) {
                            return c.jsLib.evalPath(a.userOptions, "scale.range." + e);
                        },
                        b = e("min"),
                        m = e("max");
                    e = e("padding");
                    if (!c.jsLib.def(e) && a.isRadial && a.isHoriz && "x" === a.prefix) {
                        e = a.range;
                        var f = 0;
                        "category" === a.type && (f = a.shortestValDistance / 2);
                        e.min = c.jsLib.def(b) ? b : a.min - f;
                        e.max = c.jsLib.def(m) ? m : a.max + f;
                        a.unZoomedRange = { min: e.min, max: e.max };
                    } else d.prototype.adjustRange.call(this);
                }
                return this;
            };
            b.prototype.getLinePath = function (a) {
                var e = this.chartArea;
                a = this.sideIndex();
                a = 0 === a || 1 === a;
                e = e.angleArc();
                var b = this.interpolationAxis;
                return this.isHoriz || 360 > e.end - e.start ? b.getCaPath(b.posToVal(a ? 1 : 0)) : "M0 0";
            };
            b.prototype.getCaPath = function (a, e, b, d) {
                void 0 === b && (b = this.viewState);
                void 0 === d && (d = 1);
                var h = this,
                    m = b.chartArea,
                    k = c.jsLib.def(a.pop);
                if ("object" === typeof d) {
                    var l = d;
                    d = c.jsLib.pick(l.lineWidth, 1);
                    var n = l.forMarker;
                }
                l = function (a, e, b, h, d, f, m) {
                    void 0 === m && (m = !0);
                    return c.shapeLib.flattenD(c.shapeLib.arc(a, e, 2 * b, 2 * b, { start: c.trigLib.toRadians(d), end: c.trigLib.toRadians(f), open: m, r: b, innerR: h }));
                };
                var p = m.getShapeOptions(),
                    r = c.bboxLib.fromRect(b.caRect || b.chartArea.contentRect || b.chartArea.innerRect),
                    q = c.bboxLib.center(r),
                    t = r[2] / 2,
                    u = p.innerSize ? p.innerSize * t : 0;
                p = m.angleArc();
                var v = b.valToLin;
                n && h.isHoriz && "caPaneGauge" === m.kind && m.hasNeedles && (u = t - (h.options("defaultTick.line.length") || 10));
                n = function (a, e, b) {
                    void 0 === b && (b = !1);
                    if (b) return c.shapeLib.flattenD(c.shapeLib.pointsToPath(a)) + "Z" + c.shapeLib.flattenD(c.shapeLib.pointsToPath(e)) + "Z";
                    e.reverse();
                    a.push.apply(a, G(e));
                    return c.shapeLib.flattenD(c.shapeLib.pointsToPath(a)) + "Z";
                };
                r = m.getRadarType();
                if (!h.isHoriz) {
                    if ("polar" === r) {
                        d = function (a) {
                            return c.mathLib.mapValue(u, t, 1, 0, v(a));
                        };
                        if (a.pop) {
                            b = d(a[0]);
                            var w = d(a[1]);
                            w > b && ((d = N([w, b], 2)), (b = d[0]), (w = d[1]));
                        } else b = d(a);
                        return l(q[0], q[1], b, w, p.start, p.end, !a.pop);
                    }
                    if (k) return (l = this.getCaPoints(a[0], c.undefVal, b, d)), (a = this.getCaPoints(a[1], c.undefVal, b, d)), n(l, a, !0);
                } else if (h.isHoriz) {
                    w = function (a) {
                        a = h.valToAngle(a);
                        return [c.trigLib.gpdp(q, a, u), c.trigLib.gpdp(q, a, t)];
                    };
                    e = h.getTicksPos();
                    if (k) {
                        if ("polar" === r) return (b = c.jsLib.sortBy([h.valToAngle(a[0]), h.valToAngle(a[1])])), l(q[0], q[1], t, u, b[0], b[1], !a.pop);
                        l = h.getTicksPos();
                        var x = [v(a[0]), v(a[1])],
                            y = m.projection.webVal2linxy;
                        l = c.jsLib.filter(l, function (a) {
                            return a > x[0] && a < x[1];
                        });
                        l.push.apply(l, G(x));
                        l = c.jsLib.sortedUniq(c.jsLib.sortBy(l));
                        var z = [];
                        c.jsLib.each(l, function (a) {
                            z.push(y(a, 0));
                        });
                        l.reverse();
                        c.jsLib.each(l, function (a) {
                            z.push(y(a, 1));
                        });
                        return c.shapeLib.pointsToPath(z).join(" ") + "Z";
                    }
                    l = v(a);
                    if (-1 < e.indexOf(l)) return c.shapeLib.pointsToPath(w(a)).join(" ");
                    a = this.getCaPoints(a, c.undefVal, b, d);
                    return c.shapeLib.pointsToPath(a).join(" ");
                }
                a = this.getCaPoints(a, e, b, d);
                return c.shapeLib.pointsToPath(a).join(" ") + (k || this.isRadial ? "Z" : "");
            };
            b.prototype.getCaLen = function (a, e) {
                void 0 === e && (e = this.viewState);
                var b = e.caRect || e.chartArea.contentRect,
                    m = e.valToLin;
                m = m(a);
                return this.isRadial && !this.isHoriz
                    ? ((a = b.width / 2), (e = this.chartArea.getShapeOptions()), (e = c.jsLib.pick(c.jsLib.evalPath(e, "innerSize"), 0) * a), c.mathLib.mapValue(e, a, 1, 0, m))
                    : d.prototype.getCaLen.call(this, a, e);
            };
            b.prototype.clusterWidth = function () {
                var a = this.chartArea,
                    e = this.viewState;
                if (!this.isHoriz)
                    return (
                        (e = e.caRect || e.chartArea.contentRect || e.chartArea.innerRect),
                        (a = a.getShapeOptions()),
                        (e = c.bboxLib.fromRect(e)[2] / 2),
                        (a = e - (a.innerSize ? a.innerSize * e : 0)),
                        c.jsLib.pick(this.options("staticColumnWidth"), this.getShortestDistPerc() * a * (1 - this.options("spacingPercentage")))
                    );
            };
            b.prototype.render_line = function (a, e) {
                void 0 === e && (e = {});
                var b = this.rootVisuals.line,
                    m = this.currentOptions.line,
                    f = this.chartArea,
                    g = c.bboxLib.fromRect(a),
                    k = c.bboxLib.center(g);
                if (this.isHoriz) {
                    e = c.stylingLib.lineToAttr(m);
                    var l = m.breaks,
                        n = "caPaneRadar" === f.kind && "spider" === f.getRadarType();
                    !l && n
                        ? ((b = this.renderer), this.rootVisuals.line.destroy(), (b = this.rootVisuals.line = b.renderer.element("path").add(this.rootVisuals.main)), (e.d = this.getLinePath(a)))
                        : ((a = k[0] - g[0]),
                          (g = e["stroke-width"]),
                          l && (e.breaks = c.jsLib.merge(c.jsLib.copy(l), { intervals: c.jsLib.sortBy(this.getTicksPos()) })),
                          (f = f.angleArc()),
                          (e.start = c.trigLib.toRadians(f.start)),
                          (e.end = c.trigLib.toRadians(f.end)),
                          (e.r = a + g / 2),
                          (e.cxy = k),
                          (e.innerR = a - g / 2),
                          (e.caps = { start: "round", end: "round" }),
                          (e.fill = e.stroke),
                          (e.shading = "solid"),
                          (m = m.color),
                          -1 < m.toLowerCase().indexOf("smartpalette") &&
                              ((m = m.split(/:/gi)), (m = this.chart.getSmartPalette(1 < m.length ? m[1] : this.chart.palette))) &&
                              ((m = m.getTraditionalStops()),
                              this.isInverted() ||
                                  ((m = c.jsLib.map(m, function (a) {
                                      return [1 - a[0], a[1], a[2]];
                                  })),
                                  (m = c.jsLib.sortBy(m, function (a) {
                                      return a[0];
                                  }))),
                              (e.fill = { stops: m })),
                          (e.stroke = c.undefVal),
                          (e["stroke-width"] = c.undefVal));
                    b.attr(e);
                } else d.prototype.render_line.call(this, a, e);
            };
            b.prototype.setRootVisuals = function () {
                if (!this.rootVisuals && !1 !== this.options("visible")) {
                    var a = this.renderer;
                    d.prototype.setRootVisuals.call(this);
                    this.isHoriz && (this.rootVisuals.line.destroy(), (this.rootVisuals.line = a.renderer.element("arcShape").add(this.rootVisuals.main)));
                }
                return this;
            };
            return b;
        })(c.Axis),
        Eb = c.jsLib.plainArray(["padding", "margin"]),
        Za = function () {
            return { spacingPercentage: 0.1, visible: !0, line: { width: 0 }, defaultTick: { label: { visible: !1 }, gridLine: { color: "#d9d9d9", width: "column", visible: !0 }, line: { length: 0 } }, alternateGridFill: "none" };
        },
        Fb = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "caPaneAx";
                return a;
            }
            K(b, d);
            b.prototype.eachAxis = function (a) {
                this.xAxis && a(this.xAxis);
                this.yAxis && a(this.yAxis);
                return this;
            };
            b.prototype.xAxisDefaults = function (a) {
                var e = Za();
                "category" !== a.type && c.jsLib.setPathVal(e, "defaultTick.gridLine.width", 0);
                return e;
            };
            b.prototype.yAxisDefaults = function () {
                return Za();
            };
            b.prototype.populateAxisPanels = function (a) {};
            b.prototype.setAxes = function () {
                var a = this._series[0].xAxis,
                    e = this._series[0].yAxis,
                    b = !!this.xAxis,
                    d = !!this.yAxis,
                    f = nb(a.userOptions, this.xAxisDefaults(a)),
                    g = "caPaneRadar" === this.kind || "caPaneGauge" === this.kind || "caPaneRadial" === this.kind ? vd : c.Axis,
                    k = (this.xAxis = this.xAxis || new g(this, c.jsLib.omit(f, "id"), "x"));
                k.parentAxis = a;
                b ? k.options(f, !1) : a.childAxes.push(k);
                k.chartArea = this;
                b = nb(e.userOptions, this.yAxisDefaults());
                g = this.yAxis = this.yAxis || new g(this, c.jsLib.omit(b, "id"), "y");
                g.parentAxis = e;
                d ? g.options(b, !1) : e.childAxes.push(g);
                !d && e.childAxes.push(g);
                g.chartArea = this;
                g.setRootVisuals();
                d = function (a, e, b) {
                    b = b.split(",");
                    c.jsLib.each(b, function (b) {
                        a[b] = e[b];
                    });
                };
                d(k, a, "clusterCounts,type,dataType,dataPositions,range,min,max,shortestValDistance,shortestPercDistance");
                (function (a, e, b) {
                    b = b.split(",");
                    c.jsLib.each(b, function (b) {
                        a[b] = e[b] ? e[b].slice(0) : [];
                    });
                })(k, a, "catList,data");
                k.range || c.jsLib.merge(k, { range: { min: -0.012, max: 0.012, range: 0.4 }, min: 0, max: 0, data: [0], shortestPercDistance: 1.66, shortestValDistance: 1, dataType: "number" });
                k.adjustRange();
                k.setViewState(!0);
                d(g, e, "noData,dataSortedUniq,type,dataType,dataPositions,range,min,max");
                g.setRange();
                g.setViewState(!0);
                this._axes = [k, g];
                return this;
            };
            b.prototype.renderAxes = function (a, e) {
                this.eachAxis(function (b) {
                    b.interpolationAxis && b.interpolationAxis.measure(a);
                    b.render(a).renderOnCa(a, e);
                });
                return this;
            };
            return b;
        })(
            (function (d) {
                function b(a, e) {
                    var b = d.call(this, a.chartArea.chart, {}) || this;
                    b.caPanes = a;
                    b.kind = "caPane";
                    b.labelBoxes = { inside: [], outside: [] };
                    b._axes = [];
                    b.renderRect = { x: 0, y: 0, width: 0, height: 0, borderWidth: 0 };
                    b.shapeSize = {};
                    b._metrics = { renderBox: [0, 0, 0, 0], tickBounds: [0, 0, 0, 0], clipBounds: [0, 0, 0, 0], shapeBounds: [0, 0, 0, 0], availableBounds: c.undefVal, labelBoxes: {} };
                    b._series = e;
                    b.hash = e.hash;
                    b.chartArea = a.chartArea;
                    b.ctm = b.chartArea.ctManager;
                    b.collisionManager = new c.CollisionManager(b);
                    c.jsLib.each(b._series, function (a) {
                        a.setPane(b);
                    });
                    b.initFP();
                    return b;
                }
                K(b, d);
                b.prototype.getAxisMarkerVisualTargets = function () {
                    var a = this.rootVisuals;
                    return { behind: a.axisMarkersBehind, front: a.axisMarkersFront };
                };
                b.prototype.setProjection = function (a) {};
                b.prototype.getShapeOptions = function (a) {
                    return c.getShapeOptions(this._currentOptions.ca, a || this.chartArea.renderRect);
                };
                b.prototype.update = function (a) {
                    var e = this;
                    e._series = a;
                    e.hash = a.hash;
                    c.jsLib.each(e._series, function (a) {
                        a.setPane(e);
                    });
                    e.initShapeItems();
                    return e;
                };
                b.prototype.initFP = function () {
                    var a = this;
                    this.axes = c.collectionPropFactory(
                        c.AxisCollectionWrapper,
                        function () {
                            return a._axes;
                        },
                        function (a) {}
                    );
                };
                b.prototype.xAxisDefaults = function (a) {
                    return {};
                };
                b.prototype.getGlobalOffsets = function () {
                    if (!this.globalOffsets) {
                        var a = this.rootVisuals.content.getGlobalBbox(),
                            e = this.caPanes.rootPanel.parent.getGlobalBbox();
                        this.globalOffsets = { x: a.x - e.x, y: a.y - e.y };
                    }
                    return this.globalOffsets;
                };
                b.prototype.measure = function (a) {
                    this.setRect(a);
                    var e = this.rootVisuals.rootStack.getBboxArray();
                    e[0] = a.x + e[0];
                    e[1] = a.y + e[1];
                    return { limits: this.getShapeOptions().size, outerBox: e, innerSize: this.insideInnerRootSize };
                };
                b.prototype.setRect = function (a) {
                    this.rect = c.jsLib.copy(a);
                    this.box = c.bboxLib.fromRect(a);
                    this.measureWrapper();
                };
                b.prototype.adjustByShapeOptions = function (a) {
                    var e = this.getShapeOptions();
                    a = a.slice(0);
                    var b = e.size;
                    b && (c.jsLib.def(b[0]) && c.jsLib.def(b[1]) ? (a = c.bboxLib.setSize(a, b)) : c.jsLib.def(b[0]) && ((b = Math.max(a[2], a[3]) / b[0]), (a = c.bboxLib.setSize(a, [a[2] / b, a[3] / b]))));
                    if ((b = e.cxy)) (a = c.bboxLib.fromCenter(b, a.slice(2))), (this.hasUserLayout = !0);
                    return a;
                };
                b.prototype.renderData = function (a, e) {
                    var b = this,
                        d = { x: 0, y: 0 };
                    c.jsLib.extend(d, { width: a[0], height: a[1] });
                    var f = c.stylingLib.boxToAttr(b._currentOptions.ca);
                    f = f.stroke && c.jsLib.has(f.stroke, "stroke-width") ? f.stroke["stroke-width"] : 1;
                    d = b.measureRenderRect(c.rectLib.padBox(d, f / 2));
                    var g = (b.renderRect = d.renderRect);
                    d = d.clipPath;
                    b.contentRect = g;
                    b.insideInnerRootSize = a;
                    b.setProjection();
                    b.renderAxes(g, e);
                    d && b.renderCaClip(d);
                    b.collisionManager.reset();
                    b.eachSeries(function (a) {
                        return b.renderSerie(a, g, e);
                    });
                    b.eachSeries(function (a) {
                        return b.renderSerieLabels(a, g, e);
                    });
                    b.renderExtras();
                    return b;
                };
                b.prototype.renderSerie = function (a, e, b) {
                    a.renderRect = e;
                    a.pointBodyDGenerator = mb;
                    e = c.jsLib.merge({ rect: a.axisRect }, b);
                    a.userPoints.length && a.visualizer.render(e);
                };
                b.prototype.renderSerieLabels = function (a, e, b) {
                    a.renderRect = e;
                    a.pointBodyDGenerator = mb;
                    e = c.jsLib.merge({ rect: a.axisRect }, b);
                    a.userPoints.length && a.visualizer.renderLabels(e);
                };
                b.prototype.postArrange = function () {
                    var a = this._metrics;
                    this.alignLabels();
                    if (!this.hasUserLayout && "caPaneLinear" !== this.kind) {
                        var e = (a.labelBoxes.all || []).slice(0);
                        e.push.apply(e, G([a.shapeBounds]));
                        e = c.bboxLib.bboxUnion(e);
                        e = c.bboxLib.offsetBetween(c.bboxLib.center(a.availableBounds), c.bboxLib.center(e));
                        a = this.rootPanel;
                        e = { offsetX: a.attr("offsetX") + e[0], offsetY: a.attr("offsetY") + e[1] };
                        var b = this._currentOptions.ca.offset;
                        if (b) {
                            b = N(b.split(","), 2);
                            var d = b[1];
                            e.offsetX += parseInt(b[0]) || 0;
                            e.offsetY += parseInt(d) || 0;
                        }
                        a.attr(e);
                    }
                    return this;
                };
                b.prototype.measureRenderRect = function (a) {
                    return { renderRect: a, clipPath: this.clipPath(a) };
                };
                b.prototype.renderCaClip = function (a) {
                    var e = this.rootVisuals,
                        b = this.rootVisuals.content,
                        d = this._currentOptions.ca,
                        f = c.stylingLib.boxToAttr(d);
                    !1 !== d.clip && b.attr({ clipPath: a, shadow: d.shadow });
                    e.contentStroke && e.contentStroke.attr(c.jsLib.merge({ d: a, fill: c.jsLib.evalPath(f, "fill.fill") || "none" }, c.jsLib.omit(f.stroke, "fill")));
                    return this;
                };
                b.prototype.clipPath = function (a) {
                    return null;
                };
                b.prototype.toGaugeSize = function (a) {
                    a = Math.min(a[0], a[1]);
                    return [a, a];
                };
                b.prototype.getSize = function (a) {
                    return [this.box[2], this.box[3]];
                };
                b.prototype.defaultShapeOptions = function () {
                    return { fill: "none", outline: { color: "none" }, ca: { clip: !1, outline: { color: "#A0A0A0", width: 0 } }, padding: 0.1, margin: 5 };
                };
                b.prototype.normalizeShapeOptions = function (a) {
                    return { padding: a.padding, label: a.label, outline: a.outline, ca: a, fill: "none" };
                };
                b.prototype.initShapeItems = function () {
                    var a = this,
                        e = 1 === a._series.length ? a._series[0] : c.undefVal,
                        b = a.rootVisuals,
                        d = c.jsLib.copy(a.chart.options("defaultSeries.shape") || {});
                    e && c.jsLib.merge(d, e.options("shape"));
                    a._currentOptions = c.jsLib.merge(a._currentOptions || a.defaultShapeOptions(), a.normalizeShapeOptions(d));
                    if ((d = a._currentOptions.label))
                        0 < d.length
                            ? (a.destroyShapeLabels(),
                              c.jsLib.each(d, function (b) {
                                  return a.setShapeLabel(b, e);
                              }))
                            : d.text && ((b = b.label.childElements), 1 !== b.length || b[0].textAttr !== d.text) && (a.destroyShapeLabels(), a.setShapeLabel(d, e));
                    a.setAxes();
                    return this;
                };
                b.prototype.destroyShapeLabels = function () {
                    for (var a = this.rootVisuals.label.childElements; a.length; ) a[0].destroy();
                };
                b.prototype.alignLabels = function () {
                    var a = this,
                        e = a.rootVisuals.label.childElements;
                    if (e.length) {
                        var b = a._currentOptions.label,
                            d = a._metrics,
                            f = 0 < b.length ? b : [b];
                        b = a.getShapeOptions();
                        var g = { top: "bottom", bottom: "top" },
                            k = c.bboxLib.fromRect(a.chartArea.renderRect),
                            l = ra(a.caPanes.rootPanel),
                            n = ra(a.rootVisuals.label),
                            p = ra(a.chartArea.rootVisuals.content),
                            r = c.bboxLib.offsetBetween(l, n);
                        l = c.bboxLib.offsetBetween(p, l);
                        n = 0;
                        if (a.isRadial) {
                            var q = a.angleArc();
                            n = q.end - q.start;
                        }
                        k = c.bboxLib.pad(c.bboxLib.translate(k, l), -2);
                        if (d.clipBounds[3]) {
                            l = d.clipBounds;
                            l = c.bboxLib.toLTRB(d.clipBounds);
                            var t = d.renderBox.slice(0),
                                u = c.bboxLib.toLTRB(d.shapeBounds);
                            l = [l[0], u[1], l[2], u[3]];
                            l = c.bboxLib.fromLTRB(l);
                            a.isRadial &&
                                (a.hasNeedles
                                    ? ((d = c.trigLib.gpdp(c.bboxLib.center(t), q.start + n / 2, t[2] / 4)), (t = c.bboxLib.fromCenter(d, [t[2] / 3, t[2] / 3])))
                                    : ((t = c.bboxLib.pad(t, ((1 - b.innerSize) * l[2]) / 2)), 200 < n && (t = c.bboxLib.fromCenter(c.bboxLib.center(d.clipBounds), t.slice(2))), (t = c.bboxLib.clip(t, d.shapeBounds))));
                        } else l = a.rootVisuals.innerBox.getBboxArray();
                        var v;
                        d = function (b, h) {
                            var d = { all: [], top: [], middle: [], bottom: [], userOffsets: [] };
                            v = !1;
                            c.jsLib.each(f, function (f, m) {
                                m = e[m];
                                var k = f.align || "center",
                                    l = (f.verticalAlign || "top").toLowerCase(),
                                    n = (g[l] || l).toLowerCase(),
                                    p = "middle" === l,
                                    q = p ? h : b;
                                if (f.text.match(/<br\/?>/gi)) p = m.setPreliminarySize(!0).getBboxArray();
                                else {
                                    m.attr({ maxWidth: c.undefVal });
                                    var r = m.setPreliminarySize(!0).getBboxArray();
                                    m.attr({ maxWidth: p ? q[2] : a.chartArea.renderRect.width });
                                    p = m.setPreliminarySize(!0).getBboxArray();
                                    p[2] < r[2] && (v = !0);
                                }
                                q = c.bboxLib.alignTo(p, q, k, k, n, l);
                                f = (f.offset && c.stylingLib.offsetToAttr(f.offset)) || [0, 0];
                                q = c.bboxLib.translate(q, f);
                                d.all.push(q);
                                d.userOffsets.push(f);
                                d[l].push(q);
                                m.attr({ offsetX: q[0] + f[0], offsetY: q[1] + f[1], yContentAlignment: n, xContentAlignment: k });
                            });
                            return d;
                        };
                        q = d(l, t);
                        if (c.bboxLib.collideAny(q.all) || v) {
                            if (v && !w) {
                                l = c.bboxLib.fromLTRB(u);
                                var w = !0;
                                q = d(l, t);
                            }
                            b = c.bboxLib.collideAny(q.top);
                            n = c.bboxLib.collideAny(q.bottom);
                            if (b || n)
                                w || ((l = c.bboxLib.fromLTRB(u)), (w = !0), (q = d(l, t)), (b = c.bboxLib.collideAny(q.top)), (n = c.bboxLib.collideAny(q.bottom))),
                                    b && c.bboxLib.unsquishSnapTo(q.top, l, "r"),
                                    n && c.bboxLib.unsquishSnapTo(q.bottom, l, "r");
                            c.bboxLib.collideAny(q.middle) && c.bboxLib.unsquishSnapTo(q.middle, t, "d");
                        }
                        (function (a) {
                            var e = function (a) {
                                var e;
                                if (a.length) {
                                    var b = c.bboxLib.bboxUnion(a),
                                        h = c.bboxLib.snapInside(b, k);
                                    b = c.bboxLib.offsetBetween(h, b);
                                    try {
                                        for (var d = B(a), f = d.next(); !f.done; f = d.next()) c.bboxLib.translateRef(f.value, b);
                                    } catch (L) {
                                        var g = { error: L };
                                    } finally {
                                        try {
                                            f && !f.done && (e = d.return) && e.call(d);
                                        } finally {
                                            if (g) throw g.error;
                                        }
                                    }
                                }
                            };
                            e(a.top);
                            e(a.bottom);
                            e(a.middle);
                        })(q);
                        (function (a) {
                            c.jsLib.each(f, function (b, c) {
                                b = a[c];
                                e[c].attr({ offsetX: b[0] + r[0], offsetY: b[1] + r[1] });
                            });
                        })(q.all);
                        a._metrics.labelBoxes = q;
                    }
                };
                b.prototype.setShapeLabel = function (a, e) {
                    var b = this,
                        d = b.rootVisuals,
                        f,
                        g = b.renderer;
                    if ((f = c.jsLib.evalPath(a, "text"))) {
                        "function" === c.jsLib.getValType(f) && (f = f(this._series));
                        e && (f = e.replaceTokens(f));
                        e = c.stylingLib.labelToAttr(c.jsLib.extend({}, a));
                        e.autoWrap = "none";
                        e.val = f;
                        c.jsLib.defaults(e, { xAlignment: "center", padding: 3 });
                        f = c.jsLib.evalPath(a, "align") || "center";
                        var k = c.jsLib.evalPath(a, "verticalAlign") || "top";
                        a = "middle" === k;
                        d = g.textStack().add(d.label);
                        e.xAlignment = c.undefVal;
                        e.yAlignment = c.undefVal;
                        e.maxWidth = b.chartArea.rootRect.width;
                        d.attr(e);
                        d = d.composeCombinations()[0].minSize;
                        d = [d.width.px, d.height.px];
                        g = [f, k];
                        d = ["top" === g[1] ? d[1] : 0, a ? ("right" === g[0] ? d[0] : 0) : 0, "bottom" === g[1] ? d[1] : 0, a ? ("left" === g[0] ? d[0] : 0) : 0];
                        b.shapeSize.labelMargin
                            ? c.jsLib.each(d, function (a, e) {
                                  b.shapeSize.labelMargin[e] = Math.max(b.shapeSize.labelMargin[e], a);
                              })
                            : (b.shapeSize.labelMargin = d);
                    }
                    return this;
                };
                b.prototype.applyShapeAttrs = function () {
                    var a = c.jsLib.extendScoped(c.stylingLib.shapeToAttr(this._currentOptions), this._currentOptions, Eb),
                        e = this.shapeSize.innerMargin || [0, 0, 0, 0],
                        b = this.parseMarginPadding(a.padding),
                        d = this.shapeSize.labelMargin || [0, 0, 0, 0];
                    e && (a.padding = c.jsLib.arraySum(e, b));
                    a.margin = c.jsLib.arraySum(c.jsLib.parseMargin(a.margin), d);
                    this.rootVisuals.innerBox.attr(a);
                };
                b.prototype.calculateShapeSize = function () {
                    var a = c.jsLib.extendScoped(c.stylingLib.shapeToAttr(this._currentOptions), this._currentOptions, Eb);
                    return { margin: this.parseMarginPadding(a.margin), padding: this.parseMarginPadding(a.padding), outlineWidth: a["stroke-width"] };
                };
                b.prototype.parseMarginPadding = function (a) {
                    if (a && c.jsLib.isNumber(a) && 1 > Math.abs(a)) {
                        var e = this._metrics.availableBounds || this.box;
                        a = (a * Math.min(e[2], e[3])) / 2;
                    }
                    return c.jsLib.parseMargin(a);
                };
                b.prototype.measureInner = function (a) {};
                b.prototype.measureWrapper = function () {
                    var a = this.rootPanel,
                        e = this.rootVisuals.contentHolder,
                        b = this.box,
                        d = this.shapeSize,
                        f = d.labelMargin || [0, 0, 0, 0],
                        g = this.calculateShapeSize(),
                        k = 2 * (g.outlineWidth || 0);
                    f = this.insideInnerRootSize = [b[2] - g.margin[0] - g.margin[2] - g.padding[0] - g.padding[2] - k - f[1] - f[3], b[3] - g.margin[1] - g.margin[3] - g.padding[1] - g.padding[3] - k - f[0] - f[2]];
                    this.measureInner(f);
                    b = d.axisSizeOffset || [0, 0];
                    d = c.jsLib.arraySum(d.axesOverflows || [0, 0, 0, 0], d.innerMargin || [0, 0, 0, 0]);
                    d = [f[0] - d[1] - d[3] - b[1], f[1] - d[0] - d[2] - b[0]];
                    d = this.insideInnerRootSize = this.toGaugeSize(d);
                    e.attr({ width: d[0], height: d[1] });
                    this.applyShapeAttrs();
                    a.update();
                    this.measureInner([d[0] + b[1], d[1] + b[0]]);
                    return this;
                };
                b.prototype.setShapeSize = function (a, e) {
                    var b = this._metrics;
                    b.shapeBounds = a.slice(0);
                    b.availableBounds = e;
                };
                b.prototype.setAvSpace = function (a) {
                    this._metrics.availableBounds = a;
                };
                b.prototype.eachSeries = function (a) {
                    c.jsLib.each(this._series, a);
                    return this;
                };
                b.prototype.eachAxis = function (a) {};
                b.prototype.setAxes = function () {};
                b.prototype.renderAxes = function (a, b) {};
                b.prototype.renderExtras = function () {
                    return this;
                };
                b.prototype.setRootVisuals = function () {
                    return this;
                };
                b.prototype.wrap = function (a) {
                    var b = this.renderer;
                    a.root = b.panel({ xContentAlignment: "center", yContentAlignment: "middle" });
                    a.innerRoot = b.panel({ width: "*", height: "*" });
                    a.label = b.panel({ width: "*", height: "*" });
                    a.innerBox = b.box().add(a.innerRoot);
                    a.rootStack = b.panel({ xContentAlignment: "center", yContentAlignment: "middle", val: [a.innerRoot, a.label] });
                    a.rootStack.add(a.root);
                    a.mainStacks.add(a.innerBox);
                    this.rootPanel = a.root;
                    return a;
                };
                b.prototype.add = function (a) {
                    this.rootPanel.add(a);
                    return this;
                };
                return b;
            })(c.BaseChartItem)
        ),
        Gb = (function (d) {
            function b(a, b) {
                b = d.call(this, a, b) || this;
                b.caPanes = a;
                b.kind = "caPaneRadial";
                b.projection = {
                    lin2valxy: function (a, b, e) {
                        return [a, b];
                    },
                    val2linxy: function (a, b, e) {
                        return [a, b];
                    },
                    webVal2linxy: function (a, b, e) {
                        return [a, b];
                    },
                };
                b.isRadial = !0;
                b.staticBodyDGetter = jb;
                b.staticPositionsFromAligments = fc;
                b.isHoriz = !1;
                return b;
            }
            K(b, d);
            b.prototype.toGaugeSize = function (a) {
                a = Math.min(a[0], a[1]);
                return [a, a];
            };
            b.prototype.xAxisDefaults = function (a) {
                return { isRadial: !0 };
            };
            b.prototype.yAxisDefaults = function () {
                return { isRadial: !0 };
            };
            b.prototype.normalizeShapeOptions = function (a) {
                var b = d.prototype.normalizeShapeOptions.call(this, a);
                b.outline = "none";
                b.label = a.label;
                b.ca.fill = c.jsLib.pick(a.innerFill, b.ca.fill);
                c.jsLib.has(a, "padding") && (b.padding = a.padding);
                return b;
            };
            b.prototype.angleArc = function () {
                return la(this._series[0], { start: -90, sweep: 360 });
            };
            b.prototype.clipPath = function (a) {
                return (a = this.axes({ isHoriz: !0 })[0]) ? a.getLinePath() : null;
            };
            b.prototype.measureInner = function (a) {
                this.populateAxisPanels(a);
            };
            b.prototype.getRadarType = function () {
                return "polar";
            };
            b.prototype.getCompleteVisInfo = function (a) {
                a = a.rectCompletePos;
                if ("spider" === this.getRadarType()) return lb(this, a);
                a = kb(this.angleArc(), a);
                return a.pop
                    ? c.jsLib.map(a, function (a) {
                          return c.shapeLib.arc(a.cxy[0], a.cxy[1], a.r, a.r, a);
                      })
                    : c.shapeLib.arc(a.cxy[0], a.cxy[1], a.r, a.r, a);
            };
            b.prototype.populateAxisPanels = function (a) {
                function b(a) {
                    return !1 === a ? d.rootVisuals.axisBehindAll : void 0 === a ? d.rootVisuals.axisBehind : d.rootVisuals.axisFront;
                }
                function c(a) {
                    return function (b) {
                        b.isVisible && b.rootPanel && !b.isAdded && b.add(a);
                    };
                }
                var d = this,
                    f = d.insideInnerRootSize.slice(0);
                f = [Math.max(f[0], f[1]), Math.max(f[0], f[1])];
                a.width && (f = a);
                a = function (a) {
                    return !a.isHoriz;
                };
                var g = function (a) {
                        return a.isHoriz;
                    },
                    k = c(b(d.xAxis.options("line.onTop"))),
                    l = c(b(d.yAxis.options("line.onTop")));
                k(d.xAxis);
                l(d.yAxis);
                var n = [0, 0, 0, 0];
                d.axes(g).each(function (a) {
                    a.measure(f) && (n = a.overflowSize.margins);
                });
                d.axes(a).each(function (a) {
                    a.measure(f);
                });
                k = function (a) {
                    return a.measure(f);
                };
                d.axes(a).each(k);
                d.axes(g).each(k);
                d.shapeSize.innerMargin = n;
                return d;
            };
            b.prototype.setRootVisuals = function () {
                var a = this.renderer;
                if (!this.rootVisuals) {
                    var b = this.chart.boxDefaults().outline.width;
                    b = this.rootVisuals = c.panels(a).build({ axisMarkers: !0, background: !0, gridLines: !0, content: { stroke: { width: 1, onFront: !0 } }, outline: { width: b }, contentHolderFront: !0 });
                    b.axisBehindAll = a.panel({ zIndex: c.zIndexReference.axis }).add(b.contentHolderBehind);
                    b.axisBehind = a.panel({ zIndex: c.zIndexReference.axis }).add(b.axisContentBehind);
                    b.axisFront = a.panel({ zIndex: c.zIndexReference.axis }).add(b.axisContentFront);
                    this.wrap(b);
                }
                return this;
            };
            b.prototype.renderExtras = function () {
                return this;
            };
            b.prototype.setRenderRect = function (a) {
                var b = this._metrics,
                    d = c.bboxLib.fromRect(a),
                    m = this.clipPath(a);
                m = c.pathLib.bbox(m);
                this.renderRect = a;
                this.insideInnerRootSize = d.slice(2);
                this.populateAxisPanels(this.renderRect);
                a = c.bboxLib.bboxUnion([this.xAxis.tickBounds, this.yAxis.tickBounds]);
                var f = c.bboxLib.bboxUnion([a, m]);
                b.renderBox = d;
                b.clipBounds = m;
                b.tickBounds = a;
                b.shapeBounds = f;
                return this;
            };
            b.prototype.setShapeSize = function (a, b) {
                var e = a.slice(2),
                    d = a.slice(0);
                this.setAvSpace(b);
                b = e[0];
                b = c.bboxLib.fromCenter(c.bboxLib.center(a), [b, b]);
                this.setRenderRect(c.rectLib.fromBBox(b));
                a = this._metrics;
                b = Ga(a.clipBounds, a.tickBounds, !0);
                d = c.stylingLib.padMargin(d, b);
                b = Math.max.apply(Math, G(d.slice(2)));
                b = c.bboxLib.fromCenter(c.bboxLib.center(d), [b, b]);
                this.setRenderRect(c.rectLib.fromBBox(b));
                d = qa(d, a.clipBounds);
                d = c.bboxLib.fromRect(d);
                b = Math.max.apply(Math, G(d.slice(2)));
                b = c.bboxLib.fromCenter(c.bboxLib.center(d), [b, b]);
                this.setRenderRect(c.rectLib.fromBBox(b));
            };
            b.prototype.renderData = function (a, b) {
                d.prototype.renderData.call(this, a, b);
                a = this._metrics;
                b = this.clipPath(this.renderRect);
                b = c.pathLib.bbox(b);
                var e = c.bboxLib.bboxUnion([this.xAxis.tickBounds, this.yAxis.tickBounds, b]);
                a.clipBounds = ia(b, this.rootVisuals.content, this.caPanes.rootPanel);
                a.shapeBounds = ia(e, this.rootVisuals.content, this.caPanes.rootPanel);
                return this;
            };
            return b;
        })(Fb),
        wd = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "caPaneRadar";
                return a;
            }
            K(b, d);
            b.prototype.defaultShapeOptions = function () {
                return { ca: { clip: !1 }, padding: 0.05, margin: 5, fill: "none", outline: { width: 0 } };
            };
            b.prototype.xAxisDefaults = function (a) {
                a = d.prototype.xAxisDefaults.call(this, a);
                return c.jsLib.merge(a, { line_visible: !0, defaultTick: { gridLine: { color: "#d9d9d9" } }, isRadial: !0 });
            };
            b.prototype.setAxes = function () {
                d.prototype.setAxes.call(this);
                this.xAxis.interpolationAxis = this.yAxis;
                this.yAxis.interpolationAxis = this.xAxis;
                this.yAxis.isRadial = this.xAxis.isRadial = !0;
                this.yAxis.isHoriz = !1;
                this.xAxis.isHoriz = !0;
                return this;
            };
            b.prototype.angleArc = function () {
                var a = this.xAxis,
                    b = this._series[0],
                    d = { start: -90, sweep: 360 };
                d = la(this._series[0], d);
                var m = d.end - d.start;
                (c.jsLib.def(c.jsLib.evalPath(b, "currentOptions.angle.start")) && 360 !== m) || ((a = "category" === a.type ? -((a.getShortestDistPerc() / 2) * 360) : 0), (d.start += a), (d.end += a));
                return d;
            };
            b.prototype.setProjection = function (a) {
                var b = c.bboxLib.fromRect(a || this.renderRect),
                    d = c.bboxLib.center(b),
                    m = b[2] / 2,
                    f = this.xAxis.getTicksPos(),
                    g = this.angleArc(),
                    k = this.yAxis;
                this.projection.val2linxy = function (a, b, e) {
                    a = c.mathLib.mapValue(g.start, g.end, 0, 1, a);
                    return c.trigLib.gpdp([0.5, 0.5], a, 0.5 - 0.5 * b);
                };
                this.projection.webVal2linxy = function (a, e, h) {
                    h = c.mathLib.mapValue(g.start, g.end, 0, 1, a);
                    if (-1 < f.indexOf(a)) return (a = c.trigLib.gpdp([0.5, 0.5], h, 0.5 - 0.5 * e)), [a[0] * b[2], a[1] * b[3]];
                    a = k.getCaPath(k.posToVal(e), c.undefVal, c.undefVal, { posOnly: !0 });
                    a = c.pathLib.pathIntersects(c.pathLib.fromString(a), c.trigLib.gpdp(d, h, 0), c.trigLib.gpdp(d, h, m));
                    return !a.length || ((a = a[0].intersect), (a = [a.x, a.y]), c.jsLib.isNull(a[0]) || c.jsLib.isNull(a[1])) ? d.slice(0) : a;
                };
            };
            b.prototype.populateAxisPanels = function (a) {
                function b(a) {
                    return !1 === a ? d.rootVisuals.axisBehindAll : void 0 === a ? d.rootVisuals.axisBehind : d.rootVisuals.axisFront;
                }
                function c(a) {
                    return function (b) {
                        b.isVisible && b.rootPanel && !b.isAdded && b.add(a);
                    };
                }
                var d = this,
                    f = c(b(d.xAxis.options("line.onTop"))),
                    g = c(b(d.yAxis.options("line.onTop")));
                f(d.xAxis);
                g(d.yAxis);
                f = function (b) {
                    return b.measure(a);
                };
                d.axes(function (a) {
                    return !a.isHoriz;
                }).each(f);
                d.axes(function (a) {
                    return a.isHoriz;
                }).each(f);
                d.shapeSize.innerMargin = Ga(d._metrics.clipBounds, d._metrics.tickBounds);
                return d;
            };
            b.prototype.toGaugeSize = function (a) {
                a = this.measureRenderRect(c.rectLib.fromBBox(c.bboxLib.fromCenter([0, 0], a)));
                a = c.jsLib.join(a.clipPath, " ");
                return c.pathLib.bbox(a).slice(2);
            };
            b.prototype.measureInner = function (a) {
                d.prototype.measureInner.call(this, a);
            };
            b.prototype.measureRenderRect = function (a) {
                var b = this.clipPath(a);
                a = c.bboxLib.fromRect(a);
                b = c.pathLib.bbox(b);
                a = qa(a, b);
                b = this.clipPath(a);
                return { renderRect: a, clipPath: b };
            };
            b.prototype.renderData = function (a, b) {
                d.prototype.renderData.call(this, a, b);
                a = this._metrics;
                b = this.clipPath(this.renderRect);
                b = c.pathLib.bbox(b);
                var e = c.bboxLib.bboxUnion([this.xAxis.tickBounds, this.yAxis.tickBounds, b]);
                a.clipBounds = ia(b, this.rootVisuals.content, this.caPanes.rootPanel);
                a.shapeBounds = ia(e, this.rootVisuals.content, this.caPanes.rootPanel);
                return this;
            };
            b.prototype.clipPath = function (a) {
                var b = c.bboxLib.fromRect(a),
                    d = this.angleArc();
                d = { start: c.trigLib.toRadians(d.start), end: c.trigLib.toRadians(d.end), r: b[2] / 2, innerR: 0 };
                a = c.bboxLib.center(c.bboxLib.fromRect(a));
                return c.shapeLib.arc(a[0], a[1], b[2], b[3], d);
            };
            b.prototype.getRadarType = function () {
                var a = this._series[0],
                    b = this.xAxis;
                a = a.ctManager.settingVal("radarType", a);
                "auto" === a && (a = "category" === b.type ? "spider" : "polar");
                return a;
            };
            b.prototype.renderSerie = function (a, b, c) {
                a.coordinatesModifier = kc;
                d.prototype.renderSerie.call(this, a, b, c);
            };
            b.prototype.getShaderOptions = function (a) {
                return Ja(a, 0);
            };
            return b;
        })(Gb),
        Hb = function () {
            return c.jsLib.merge(Za(), { line: { color: "none" }, isRadial: !0, defaultTick: { gridLine: { color: "none" }, label: { visible: !1 } } });
        },
        Ib = function () {
            return {
                isRadial: !0,
                alternateGridFill: "none",
                scale: { minorInterval: "auto" },
                defaultTick: { placement: "inside", line: { color: "#c3c3c3", width: 2, length: 10 }, gridLine: { width: 0 } },
                defaultMinorTick: { label: { visible: !1 }, placement: "inside", line: { color: "#c3c3c3", length: 5 }, gridLine: { width: 0 } },
            };
        },
        xd = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "caPaneGauge";
                a.isHoriz = !0;
                return a;
            }
            K(b, d);
            b.prototype.setAxes = function () {
                d.prototype.setAxes.call(this);
                this.xAxis.interpolationAxis = this.yAxis;
                this.yAxis.interpolationAxis = this.xAxis;
                this.yAxis.isRadial = this.xAxis.isRadial = !0;
                this.yAxis.isHoriz = !0;
                this.xAxis.isHoriz = !1;
                return this;
            };
            b.prototype.angleArc = function () {
                return la(this._series[0], { orientation: -90, sweep: 270 });
            };
            b.prototype.xAxisDefaults = function (a) {
                var b = this.hasNeedles
                    ? Hb()
                    : c.jsLib.merge(Hb(), { spacingPercentage: 1 < c.jsLib.evalPath(this, "_series.0.userPoints.length") ? 0.2 : 0, defaultTick: { gridLine: { color: "#d9d9d9", width: "column" }, label: { visible: !1 } } });
                "category" !== a.type && c.jsLib.setPathVal(b, "defaultTick.gridLine.width", 0);
                return b;
            };
            b.prototype.yAxisDefaults = function () {
                return this.hasNeedles
                    ? Ib()
                    : c.jsLib.merge(Ib(), {
                          scale: { minorInterval: "none" },
                          line: { visible: !0 },
                          defaultTick: { placement: "outside", line: { length: 0 } },
                          defaultMinorTick: { label: { visible: !1 }, placement: "outside", line: { length: 0 }, gridLine: { width: 0 } },
                      });
            };
            b.prototype.toGaugeSize = function (a) {
                a = this.measureRenderRect(c.rectLib.fromBBox(c.bboxLib.fromCenter([0, 0], a)));
                a = c.jsLib.join(a.clipPath, " ");
                return c.pathLib.bbox(a).slice(2);
            };
            b.prototype.defaultShapeOptions = function () {
                var a = this.hasNeedles,
                    b = { ca: { fill: this.chart.boxDefaults().boxVisible ? "#ffffff" : "#fcfcfc", outline: { color: "#c3c3c3", width: 1 }, clip: !1 }, padding: 0.1, margin: 0, fill: "none", outline: { width: 0 } };
                return a ? b : c.jsLib.defaultsDeep({ fill: "none", outline: { color: "none" }, ca: { fill: "none", outline: { color: "none" }, innerSize: "50%" } }, b);
            };
            b.prototype.normalizeShapeOptions = function (a) {
                var b = d.prototype.normalizeShapeOptions.call(this, a);
                this.hasNeedles && (b.ca.fill = a.fill);
                return b;
            };
            b.prototype.measureRenderRect = function (a) {
                var b = a,
                    d = this.clipPath(a);
                "clip" === this.chart.ctManager.settingVal("circularGaugeType", this._series[0]) && ((a = c.bboxLib.fromRect(a)), (d = c.pathLib.bbox(d)), (b = qa(a, d)), (d = this.clipPath(b)));
                return { renderRect: b, clipPath: d };
            };
            b.prototype.clipPath = function (a) {
                var b = c.bboxLib.fromRect(a),
                    d = this.angleArc();
                d = { start: c.trigLib.toRadians(d.start), end: c.trigLib.toRadians(d.end), r: b[2] / 2, innerR: 0 };
                a = c.bboxLib.center(c.bboxLib.fromRect(a));
                if (this.hasNeedles) {
                    var m = this.chart.ctManager.settingVal("circularGaugeType", this._series[0]),
                        f = { clip: "gaugeOutline", circle: "circle", arc: "clip" }[m];
                    "circle" === m && (a = b);
                    return c.shapes[f](a[0], a[1], b[2], b[3], d);
                }
                m = this.getShapeOptions(b);
                d.innerR = (b[2] / 2) * m.innerSize;
                return c.shapeLib.arc(a[0], a[1], b[2], b[2], d);
            };
            b.prototype.setProjection = function () {
                var a = c.bboxLib.fromRect(this.renderRect),
                    b = this.getShapeOptions();
                c.bboxLib.center(a);
                var d = this.angleArc();
                this.projection.val2linxy = function (a, e, h) {
                    e = c.mathLib.mapValue(d.start, d.end, 0, 1, e);
                    a = c.mathLib.mapValue(0.5, b.innerSize ? 0.5 * b.innerSize : 0, 0, 1, a);
                    return c.trigLib.gpdp([0.5, 0.5], e, a);
                };
            };
            b.prototype.renderExtras = function () {
                if (this.hasNeedles) {
                    var a = this.rootVisuals.axisMarkersFront,
                        b = c.bboxLib.fromRect(this.renderRect),
                        d = this.getShapeOptions().innerPadding,
                        m = b[2] / 2;
                    d = c.jsLib.def(d) ? c.mathLib.mapValue(0.86 * m, m, 0, 1, d) : 0.86 * m;
                    d = c.bboxLib.pad(b, d);
                    b = 0 < d[2];
                    m = {
                        zIndex: 0,
                        d: b ? c.shapes.circle(d[0], d[1], d[2], d[2]) : "M0 0",
                        fill: {
                            linearGradient: [0, 1, 0, 0],
                            stops: [
                                [0, "#777"],
                                [1, "#111"],
                            ],
                        },
                        stroke: {
                            linearGradient: [0, 0, 0, 1],
                            stops: [
                                [0, "#666"],
                                [1, "#555"],
                            ],
                        },
                        "stroke-width": 2,
                    };
                    (d = this.rootVisuals.needleBase) ? d.attr(m) : b && (this.rootVisuals.needleBase = this.renderer.renderer.path().attr(m).add(a));
                }
                return this;
            };
            return b;
        })(Gb),
        yd = (function (d) {
            function b(a, b) {
                var e = d.call(this, a, b) || this;
                e.caPanes = a;
                e.kind = "caPaneLinear";
                e.widthHeightRatio = 5;
                a = e.ctm.settingVal("linearGaugeType", b[0]);
                e.isHoriz = "vertical" !== a;
                return e;
            }
            K(b, d);
            b.prototype.yAxisDefaults = function () {
                return { line: { visible: !0 }, alternateGridFill: "none", defaultTick: { gridLine: { width: 0 } } };
            };
            b.prototype.toGaugeSize = function (a) {
                var b = this.xAxis,
                    d = this.isHoriz ? [0, 1] : [1, 0],
                    m = a[d[0]],
                    f = a[d[1]];
                a = a.slice(0);
                var g = "category" === this.xAxis.type ? this.xAxis.dataPositions.items.length : this._series[0].userPoints.length,
                    k = b.options("staticColumnWidth");
                b = 1 + b.options("spacingPercentage") || 0;
                this.widthPerPoint = k ? k * b : c.mathLib.math.min(f / g, m / this.widthHeightRatio);
                a[d[1]] = this.widthPerPoint * g;
                a.push(!this.isHoriz && k);
                a.push(this.isHoriz && k);
                return a;
            };
            b.prototype.getSize = function (a) {
                a = Math.max(this.box[2], this.box[3]);
                return this.isHoriz ? [a, a / this.widthHeightRatio] : [a / this.widthHeightRatio, a];
            };
            b.prototype.setAxes = function () {
                d.prototype.setAxes.call(this);
                this.widthPerPoint && !c.jsLib.evalPath(this.xAxis, "userOptions.defaultTick.gridLine.width") && c.jsLib.setPathVal(this.xAxis, "currentOptions.defaultTick.gridLine.width", this.widthPerPoint);
                return this;
            };
            b.prototype.populateAxisPanels = function (a) {
                function b(a) {
                    return function (b) {
                        b.isVisible && b.rootPanel && !b.isAdded && b.add(a);
                    };
                }
                var d = this.rootVisuals,
                    m = c.axisUtils.axesBySideIndex(this.axes()),
                    f = 0,
                    g = 0,
                    k = a.slice(0),
                    l,
                    n = [d.topAxes, d.rightAxes, d.bottomAxes, d.leftAxes];
                a = function (a) {
                    return !a.isHoriz;
                };
                d = function (a) {
                    return a.isHoriz;
                };
                c.jsLib.times(4, function (a) {
                    c.jsLib.each(m[a], b(n[a]));
                });
                this.axes(a).each(function (a) {
                    if ((l = a.measure(k))) (g += l[2]), (k[0] -= l[2]);
                });
                this.axes(d).each(function (a) {
                    if ((l = a.measure(k))) (f += l[3]), (k[1] -= l[3]);
                });
                var p = function (a) {
                    return a.measure(k);
                };
                this.axes(a).each(p);
                this.axes(d).each(p);
                a = c.bboxLib.bboxUnion([this.xAxis.tickBounds, this.yAxis.tickBounds]);
                a[2] > k[2] && (g = a[2] - k[2]);
                a[3] > k[3] && (f = a[3] - k[3]);
                this.shapeSize.axisSizeOffset = [f, g];
                return this;
            };
            b.prototype.measureInner = function (a) {
                this.populateAxisPanels(a);
                this.shapeSize.axesOverflows = c.updateOverflows(this);
            };
            b.prototype.clipPath = function (a) {
                var b = this.rootVisuals.content,
                    d = a.borderWidth;
                return (c.getBreaksPath(b, this.axes(), d) || c.bboxLib.toPath(c.bboxLib.fromRect(c.dmUtils.snapToPanel(b, a, d)))).clipPath;
            };
            b.prototype.setRootVisuals = function () {
                if (!this.rootVisuals) {
                    var a = this.chart.boxDefaults().outline.width;
                    a = this.rootVisuals = c.panels(this.renderer).build({ axis: {}, axisMarkers: !0, background: !0, gridLines: !0, overflow: !0, outline: { width: a }, content: { stroke: { width: 0 }, holder: { stretch: !1 } } });
                    this.wrap(a);
                }
                return this;
            };
            b.prototype.renderData = function (a, b) {
                d.prototype.renderData.call(this, a, b);
                a = this._metrics;
                b = [this.yAxis.tickBounds, this.xAxis.tickBounds, c.bboxLib.fromRect(this.contentRect)];
                a.clipBounds = ia(c.bboxLib.fromRect(this.contentRect), this.rootVisuals.content, this.caPanes.rootPanel);
                a.shapeBounds = ia(c.bboxLib.bboxUnion(b), this.rootVisuals.content, this.caPanes.rootPanel);
                return this;
            };
            return b;
        })(Fb),
        zd = (function () {
            function d(b) {
                this.chartArea = b;
                this._panes = [];
                this.count = 0;
            }
            d.prototype.setPanes = function () {
                var b = this,
                    a = b.chartArea;
                b.chart = a.chart;
                var e = a.ctManager.getPaneGroups(a._series);
                c.jsLib.mergeCollections(
                    e,
                    b._panes,
                    function (a) {
                        a: {
                            var e = b.chartArea.ctManager;
                            if (e.isType("radar")) a = new wd(b, a);
                            else {
                                if (e.isType("gauge"))
                                    if (((e = e.settingVal("gaugeType", a[0])), "circular" === e)) {
                                        a = new xd(b, a);
                                        break a;
                                    } else if ("linear" === e) {
                                        a = new yd(b, a);
                                        break a;
                                    }
                                a = void 0;
                            }
                        }
                        return a.initShapeItems();
                    },
                    function (a, b) {
                        return b.update(a);
                    },
                    function (a) {
                        return a.destroy();
                    },
                    function (a) {
                        return a.hash;
                    },
                    function (a) {
                        return a.hash;
                    }
                );
                b.count = b._panes.length;
                b.add(a);
                return b;
            };
            d.prototype.eachPane = function (b) {
                c.jsLib.each(this._panes, b);
                return this;
            };
            d.prototype.renderAxes = function () {
                return this;
            };
            d.prototype.renderData = function (b, a) {
                var e = b.borderWidth / 2,
                    d = this._panes.length;
                this.caBox = c.bboxLib.fromRect(b);
                this.caRect = b;
                this.rootPanel.attr({ offsetX: e + b.x, offsetY: e + b.y });
                e = Zb(d, { width: b.width, height: b.height });
                var m = e.boxes,
                    f = [];
                this.eachPane(function (a, b) {
                    b = c.rectLib.fromBBox(m[b]);
                    a.setProjection(b);
                    a = a.measure(b);
                    f.push(a);
                });
                b = $b(f, { cols: e.cols, rows: e.rows }, b);
                var g = b.boxes,
                    k = b.spaces;
                this.eachPane(function (b, e) {
                    var d = g[e];
                    e = k[e];
                    if (d) {
                        b.setAvSpace(e);
                        d = b.adjustByShapeOptions(d);
                        b.setShapeSize(d, e);
                        var h = b.measure(c.rectLib.fromBBox(d)),
                            f = h.innerSize;
                        h = h.outerBox;
                        var m = [e[2] - h[2], e[3] - h[3]];
                        d = [h[2] - d[2], h[3] - d[3]];
                        0 < m[0] && 0 < d[0] && (h[0] -= d[0] / 2);
                        0 < m[1] && 0 < d[1] && (h[1] -= d[1] / 2);
                        b.rootPanel.attr({ offsetX: h[0], offsetY: h[1], width: h[2], height: h[3] });
                        b.rootVisuals.contentHolder.attr({ width: f[0], height: f[1] });
                        b.setShapeSize(h, e);
                        b.renderData([f[0], f[1]], a);
                    }
                });
                this.rootPanel.update();
                this.eachPane(function (a, b) {
                    a.postArrange();
                });
                return this;
            };
            d.prototype.add = function (b) {
                var a = (this.rootPanel = this.rootPanel || this.chart.renderer.panel());
                this.eachPane(function (b) {
                    return b.add(a);
                });
                this.rootPanel.add(b.rootVisuals.dataContent);
            };
            return d;
        })(),
        xa = { squarified: { changeDirection: !0, direction: 0, lowRatio: !0 }, sliceanddice: { changeDirection: !0, direction: 0, lowRatio: !1 }, stripes: { changeDirection: !1, direction: 0, lowRatio: !1 } },
        Jb = function () {
            return { axes: "y", values: "y", privateAxes: "y", requiredData: "y", supportedData: "y", customAxisOptions: { y: { visible: !1 } } };
        },
        Ad = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "treemap";
                a.staticSeriesBodyInfo = [mc];
                a.collidePointBoxes = !1;
                a.typeConfig = Jb();
                a.hcLabelsOnly = !0;
                return a;
            }
            K(b, d);
            b.prototype.getTypeConfigDefault = function () {
                return Jb();
            };
            b.prototype.hideUnusedPointVisuals = function (a) {
                c.hideVisual(a.visuals.marker);
            };
            b.prototype.setCoordinates = function (a, b) {
                d.prototype.setCoordinates.call(this, a, b);
                var e = this;
                b = e.series;
                var m = b.ctManager,
                    f = xa.squarified,
                    g = [],
                    k = b.indexer,
                    l = c.bboxLib.fromRect(b.renderRect),
                    n,
                    p = m.settingVal("treemapMode", b);
                m = m.settingVal("treemapDirection", b);
                p && (c.jsLib.isString(p) ? ((f = xa[p] || f), m && (f.direction = "horizontal" === m ? 0 : 1)) : ((f = (p.type && xa[p.type]) || f), p.direction && (f.direction = "horizontal" === p.direction ? 0 : 1)));
                (p = b.indexer.data.coordinates || b.prevCoords) && (p = p.slice(0));
                k.indexKeys(["coordinates"], {}, 0);
                var r = b.points().items,
                    q = function (a) {
                        return e.getChildren(a);
                    },
                    t = Ka(
                        r.filter(function (a) {
                            return !e.getParents(a).length;
                        }),
                        l,
                        function (a) {
                            return e.valueGetter(a, q);
                        },
                        q,
                        function (a) {
                            return e.idGetter(a);
                        },
                        f
                    );
                f = function (a, b) {
                    b = t[u.idGetter(r[a])];
                    if (!b) return "continue";
                    b = c.bboxLib.fromLTRB(b);
                    var d = c.bboxLib.toPath(b),
                        h = c.bboxLib.center(b),
                        f = c.pathLib.fromString(d);
                    g.push(b);
                    n = {
                        path: d,
                        xyz: h.slice(0),
                        xyzs: h.slice(0),
                        cxy: h.slice(0),
                        meta: { label: { bounds: b.slice(0) } },
                        bbox: b.slice(0),
                        hitTest: function (a, b) {
                            return f.hitTest(a, b);
                        },
                    };
                    e.clearPrevCoord(k.getValue("coordinates", a));
                    k.setValue("coordinates", a, n);
                };
                var u = this;
                p = 0;
                for (m = r.length; p < m; p++) f(p);
                e.coordinates.line = [c.bboxLib.toPoints(l, 5)];
                f = (f = c.jsLib.evalPath(e.shapeLabelMeta, "label.bounds")) && (f[0] !== l[0] || f[1] !== l[1]);
                e.shapeLabelMeta.label = { bounds: l };
                pc(e, f);
                g.length && ((e.coordShapeBbox = a), (e.coordRectAll = a), (e.coordRect = a));
                e.coordDirty = !1;
                e.renderOrder = b.indexer.sortByNone();
                e.renderOrderRev = e.renderOrder.slice(0);
                e.renderOrderRev.reverse();
                return this;
            };
            b.prototype.getIconPaths = function (a, b) {
                return c.getColumnIconPathsStatic(this, a, b);
            };
            b.prototype.possibleLabelPositions = function (a, b, c, d, f) {
                return [d.bbox];
            };
            b.prototype.valueGetter = function (a, b) {
                var e = c.jsLib.isArray(a) ? a : b(a);
                if (e.length) {
                    for (var d = (a = 0); d < e.length; d++) a += this.valueGetter.call(this, e[d], b);
                    return a;
                }
                return this.series.indexer.getValue("y", a._i);
            };
            b.prototype.idGetter = function (a) {
                return c.jsLib.isNumber(a) ? a : a.id || JSON.stringify(a);
            };
            return b;
        })(Cb),
        oc = (function () {
            function d(b, a, e, c) {
                this.x = b;
                this.y = a;
                this.height = c;
                this.width = e;
            }
            d.prototype.shortestEdge = function () {
                return Math.min(this.height, this.width);
            };
            d.prototype.getCoordinates = function (b, a, e) {
                var d = this.x,
                    m = this.y,
                    f = [],
                    g = this.height ? c.jsLib.sum(b) / this.height : 0,
                    k = this.width ? c.jsLib.sum(b) / this.width : 0;
                if (((e = !e) && a) || (!e && this.width >= this.height)) for (a = 0; a < b.length; a++) (e = g ? b[a] / g : 0), f.push([d, m, d + g, m + e]), (m += e);
                else for (a = 0; a < b.length; a++) (e = k ? b[a] / k : 0), f.push([d, m, d + e, m + k]), (d += e);
                return f;
            };
            d.prototype.cutArea = function (b, a, e) {
                ((e = !e) && a) || (!e && this.width >= this.height)
                    ? ((b = this.height ? b / this.height : 0), (b = new d(this.x + b, this.y, this.width - b, this.height)))
                    : ((b = this.width ? b / this.width : 0), (b = new d(this.x, this.y + b, this.width, this.height - b)));
                return b;
            };
            return d;
        })(),
        nc = function (d, b) {
            var a = [],
                e = c.jsLib.sum(d);
            b = e ? b / e : 0;
            for (e = 0; e < d.length; e++) a[e] = d[e] * b;
            return a;
        },
        ob = function (c, b) {
            if (c[0].length) for (var a = 0; a < c.length; a++) ob(c[a], b);
            else b.push(c);
        },
        La = function (d, b, a, e, h) {
            var m = h.changeDirection,
                f = h.lowRatio,
                g = h.direction;
            if (0 === d.length) e.push(a.getCoordinates(b, g, f));
            else {
                var k = a.shortestEdge(),
                    l = d[0],
                    n;
                !(n = 0 === b.length) && (n = f) && ((n = b.slice()), n.push(l), (n = Kb(b, k) >= Kb(n, k)));
                n ? (b.push(l), La(d.slice(1), b, a, e, h)) : (m && (h.direction = 1 - g), (m = a.cutArea(c.jsLib.sum(b), g, f)), e.push(a.getCoordinates(b, g, f)), La(d, [], m, e, h));
                return e;
            }
        },
        Kb = function (d, b) {
            var a = Math.min.apply(Math, d),
                e = Math.max.apply(Math, d);
            d = c.jsLib.sum(d);
            return Math.max((Math.pow(b, 2) * e) / Math.pow(d, 2), Math.pow(d, 2) / (a * Math.pow(b, 2)));
        },
        Lb = function () {
            return { axes: "y", values: "y", privateAxes: "y", requiredData: "y", supportedData: "y", customAxisOptions: { y: { visible: !1 } } };
        },
        $a = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.labelBoxes = { inside: [], outside: [] };
                a.outsideLabelMargin = 10;
                a.typeConfig = Lb();
                return a;
            }
            K(b, d);
            b.prototype.getTypeConfigDefault = function () {
                return Lb();
            };
            b.prototype.setCoordinates = function (a, b) {
                var e = this.series,
                    d = c.bboxLib.fromRect(a),
                    f = c.bboxLib.center(d),
                    g = a,
                    k = (function (a) {
                        c.jsLib.def(a.x) && (a = c.bboxLib.fromRect(a));
                        var b = Math.min(a[2], a[3]);
                        return c.bboxLib.fromCenter(c.bboxLib.center(a), [b, b]);
                    })(a),
                    l = e.indexer.data.coordinates || e.prevCoords;
                l && (l = l.slice(0));
                b = c.jsLib.merge({ phase: "outsideLabels" }, b);
                this.setCoordinatesWith(c.rectLib.fromBBox(k), b);
                b.phase = "";
                var n = c.bboxLib.fromRect(this.coordRectAll),
                    p = c.bboxLib.fromRect(this.coordRect),
                    r = c.bboxLib.center(n);
                if (c.bboxLib.bInsideA(d, n)) (d = g = qa(p, this.coordShapeBbox)), this.setCoordinatesWith(a, b, d);
                else if (!(n[2] <= d[2] && n[3] <= d[3])) {
                    r = function () {
                        var a = Math.min(k[2] + q, k[2] + t);
                        k = c.bboxLib.fromCenter(f, [a, a]);
                        g = c.rectLib.fromBBox(k);
                    };
                    var q = Math.min(d[2] - n[2], 0),
                        t = Math.min(d[3] - n[3], 0);
                    r();
                    10 < g.width && this.setCoordinatesWith(a, b, g);
                    n = c.bboxLib.fromRect(this.coordRectAll);
                    q = Math.max(d[2] - n[2], 0);
                    t = Math.max(d[3] - n[3], 0);
                    r();
                    this.setCoordinatesWith(a, b, g);
                }
                n = c.bboxLib.fromRect(this.coordRectAll);
                r = c.bboxLib.center(n);
                a = f[0] - r[0];
                d = f[1] - r[1];
                (a || d) && this.setCoordinatesWith(c.rectLib.translate(g, a, d), b);
                if (l) for (b = 0, a = e.points().items.length; b < a; b++) if ((d = e.indexer.getValue("coordinates", b))) d.coordPrev = this.clearPrevCoord(l[b]);
                this.renderOrder = e.indexer.sortByNone();
                this.renderOrderRev = this.renderOrder.slice(0);
                this.renderOrderRev.reverse();
                return this;
            };
            b.prototype.setCoordinatesWith = function (a, b, c) {
                return this;
            };
            b.prototype.unsquishLabels = function (a) {
                var b = this.series.indexer,
                    d = function (a) {
                        return b.getValue("coordinates", a).meta.label;
                    },
                    m = function (a, b) {
                        a = d(a)[1];
                        b = d(b)[1];
                        return a < b ? -1 : a > b ? 1 : 0;
                    };
                c.jsLib.each(a, function (a) {
                    return a.sort(m);
                });
                a[0].reverse();
                a[1].reverse();
                var f,
                    g,
                    k = function () {
                        g[1] + g[3] > f[1] && (g[1] = f[1] - g[3] - 1);
                    },
                    l = function () {
                        g[1] < f[1] + f[3] && (g[1] = f[1] + f[3] + 1);
                    },
                    n = function (a, b) {
                        return function (e, c) {
                            g = d(e);
                            !c && b && ((f = b), a());
                            c && a();
                            f = g;
                        };
                    };
                c.jsLib.each(a[0], n(k));
                c.jsLib.each(a[1], n(k));
                c.jsLib.each(a[2], n(l));
                c.jsLib.each(a[3], n(l));
                var p = c.jsLib.map(a, function (a) {
                        return c.bboxLib.bboxUnion(c.jsLib.map(a, d)) || [];
                    }),
                    r;
                (r = gb(p[0], p[3])).overlap && (c.jsLib.each(a[0], n(k, c.bboxLib.translate(p[3], [0, r.overlap / 2]))), c.jsLib.each(a[3], n(l, p[0])));
                (r = gb(p[1], p[2])).overlap && (c.jsLib.each(a[1], n(k, c.bboxLib.translate(p[2], [0, r.overlap / 2]))), c.jsLib.each(a[2], n(l, p[1])));
            };
            return b;
        })(c.SeriesBaseType),
        rc = 1 / 1.618,
        Bd = function (c) {
            var b = function (a, b) {
                    a = a.y;
                    b = b.y;
                    return a < b ? -1 : a > b ? 1 : 0;
                },
                a = function (a, c) {
                    return b(c, a);
                };
            return c ? a : b;
        },
        Mb = function () {
            return { axes: "y", values: "x,y", privateAxes: "x,y", requiredData: "y", supportedData: "x,y", customAxisOptions: { z: { visible: !1, scale: { includeOrigin: !0 } }, y: { visible: !1 } } };
        },
        ab = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "funnel";
                a.typeConfig = Mb();
                return a;
            }
            K(b, d);
            b.prototype.getTypeConfigDefault = function () {
                return Mb();
            };
            b.prototype.setCoordinatesWith = function (a, b, d) {
                var e = this,
                    h = e.series,
                    g = h.currentOptions,
                    k = e.getShapeOptions(h.contentRect(), a);
                a = c.bboxLib.fromRect(d || a);
                var l = [],
                    n = [],
                    p = [],
                    r = [],
                    q = h.indexer,
                    t,
                    u,
                    v = h.points().items.slice(0),
                    w,
                    x,
                    y,
                    z = 0;
                c.jsLib.evalPath(g, "emptyPointMode");
                var E = [[], [], [], []];
                q.indexKeys(["coordinates"], {}, 0);
                d = c.jsLib.pick(k.cxy, c.bboxLib.center(a));
                var D = d[0],
                    F = d[1];
                if ((g = k.offset)) (D += g[0]), (F += g[1]);
                k.cxy = d;
                g = c.bboxLib.fromCenter([D, F], [a[2], a[3]]);
                e.coordRect = c.rectLib.fromBBox(g);
                k.size = k.size.length ? k.size : [a[2], a[3]];
                v.sort(Bd(!k.inverted));
                a = function (a, d) {
                    w = v[a];
                    u = w._i;
                    y = w.currentOptions;
                    x = h.getPointAttr(y);
                    q.getValue("pos", u);
                    var f = w.replaceTokens({ token: "%percentOfSeries" }) / 100,
                        g = [D, F];
                    a = qc([z, z + f], k, !a, a === d - 1);
                    d = a.path;
                    var m = c.bboxLib.center(a.bounds),
                        A = c.pathLib.fromString(d);
                    r.push(a.bounds);
                    t = { path: d, xyz: m.slice(0), xyzs: m.slice(0), cxy: g.slice(0), meta: { label: c.undefVal }, bbox: a.bounds.slice(0), pathOptions: a };
                    x.labelVisible &&
                        ((g = e.positionLabel(w, A, x, t, b.phase)),
                        t.meta.labelOutside || "outsideLabels" === b.phase ? (E["right" === ("left" === x.label.align ? "left" : "right") ? (k.inverted ? 0 : 3) : k.inverted ? 1 : 2].push(u), p.push(g)) : n.push(g),
                        l.push((t.meta.label = g)));
                    var C = e.getLabelHitTest();
                    t.hitTest = function (a, b) {
                        return A.hitTest(a, b) || C(this, a, b);
                    };
                    q.setValue("coordinates", u, t);
                    z += f;
                };
                g = 0;
                for (d = v.length; g < d; g++) a(g, d);
                c.bboxLib.collideAny(p) && e.unsquishLabels(E);
                r.length && ((e.coordShapeBbox = c.bboxLib.bboxUnion(r)), (a = [c.bboxLib.bboxUnion(l)]), e.coordShapeBbox && a.push(e.coordShapeBbox), (a = c.bboxLib.bboxUnion(a)), (e.coordRectAll = c.rectLib.fromBBox(a)));
                e.labelBoxes = { inside: n, outside: p };
                e.coordDirty = !1;
                return this;
            };
            b.prototype.positionLabel = function (a, b, d, m, f) {
                var e = d.label.placement,
                    h = "outsideLabels" === f ? "outside" : e || "auto",
                    l = d.label.autoHide;
                e = m.xyz;
                if ((f = m.meta)) f.labelFits = !0;
                this.initPointLabel(a, m, d);
                var n = f.labelSize;
                if ((b = "outside" !== h ? c.polyFitLib.fitBoxInPath(b, n, e) : c.undefVal)) return (b = c.bboxLib.fromCenter(c.bboxLib.center(b), n)), (f.labelOutside = !1), b;
                if ("inside" === h) return (f.labelFits = !l), (f.labelOutside = !1), c.bboxLib.fromCenter(e, n);
                a = this.outsideLabelMargin + c.jsLib.pick(a.options("label.margin"), 5);
                b = m.pathOptions.labelAnchors.right;
                "right" === ("left" === d.label.align ? "left" : "right") ? (b = [b[0] + a, e[1] - n[1] / 2]) : ((b = m.pathOptions.labelAnchors.left), (b = [b[0] - a - n[0], e[1] - n[1] / 2]));
                b.push.apply(b, G(n));
                this.hasOutsideLabels = f.labelOutside = !0;
                return b;
            };
            b.prototype.renderLabel = function (a, b, d, m, f) {
                m = this.series;
                var e = a.visuals,
                    h = m.renderer,
                    l = m.rootVisuals,
                    n = d.meta,
                    p = b.label.autoHide,
                    r;
                !1 === d.meta.labelFits && p && (r = !0);
                var q = n && n.labelText ? n.labelText : a.replaceTokens(m.info.labelTextInfo.label),
                    t = n && n.labelAttr ? n.labelAttr : c.stylingLib.labelToAttr(b.label);
                !d.meta.labelOutside && b.label.hcColor && (t.fill = b.label.hcColor);
                (p = e.label) ? (t.val = q) : (p = e.label = h.textStack(q));
                p.composeCombinations();
                if (n) {
                    if ((q = n.label.slice(0))) (t = this.render_applyDynamicAttrVals([t, { x: q[0], y: q[1], zIndex: m.zIndex + c.consts.zIndexReference.label }], f)), p.attr(t);
                    q = c.bboxLib.pad(q, -c.jsLib.pick(a.options("label.margin"), 5));
                    t = c.bboxLib.center(q);
                    if (d.meta.labelOutside && b.labelConnector) {
                        var u = "left" === b.label.align ? "left" : "right";
                        d = [d.pathOptions.labelAnchors[u], ["left" === u ? q[0] + q[2] : q[0], t[1]]];
                        d = c.dmUtils.snapPointsToPanel(l.points, d, 1);
                        d = c.shapeLib.pointsToPath(d);
                        d = hb(c.pathLib.fromString(d), 3, 0);
                        t = this.render_applyDynamicAttrVals([{ opacity: 1, d: d, zIndex: m.zIndex + c.consts.zIndexReference.labelConnector }, b.labelConnectorAttr], f);
                        (p = e.labelConnector) ? p.attr(t) : (e.labelConnector = h.renderer.path().attr(t).add(l.points));
                    } else c.hideVisual(e.labelConnector);
                    if ((a.labelAutoHidden = r))
                        c.hideVisual(e.label), c.emitter.emit("tip", m.name || "", "pLabelHidden", { data: [m.name || m.currentOptions.id || " ", c.strLib.shortenEllipsis(n.labelText, 10)], container: m.chartArea.chart.getWrapper() });
                }
            };
            b.prototype.getShapeOptions = function (a, b) {
                a = d.prototype.getShapeOptions.call(this, a, b);
                var e = this.series.ctManager;
                b = e.settingVal("funnelOrientationType");
                var m = e.isType("pyramid");
                e = e.isType("cone");
                var f = m || e;
                "inverted" === b && (f = !f);
                c.jsLib.merge(a, { inverted: f, neck: e || m ? 0 : 0.2 });
                return a;
            };
            b.prototype.getIconPaths = function (a, b) {
                return c.getColumnIconPathsStatic(this, a, b);
            };
            return b;
        })($a),
        Nb = function () {
            return { axes: "x,y,z", values: "x,y,z", requiredData: "x,y,z", supportedData: "x,y,z", privateAxes: "", customAxisOptions: { z: { visible: !1 } } };
        },
        Ob = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "heatmap";
                a.hcLabelsOnly = !0;
                a.typeConfig = Nb();
                a.skipSubvalues = !0;
                return a;
            }
            K(b, d);
            b.prototype.getTypeConfigDefault = function () {
                return Nb();
            };
            b.prototype.setCoordinates = function (a, b) {
                var e = this;
                b = e.series;
                var d = b.indexer,
                    f = e.getShapeOptions(a).innerPadding,
                    g = e.isHoriz(),
                    k,
                    l,
                    n = b.xAxis,
                    p = b.yAxis,
                    r = a.x,
                    q = a.y,
                    t = a.width,
                    u = a.height,
                    v = function (a) {
                        return (a.unZoomedRange.max - a.unZoomedRange.min) / (a.range.max - a.range.min);
                    },
                    w = [g ? u : t, g ? t : u],
                    x = [n.dataSortedUniq.length, p.dataSortedUniq.length],
                    y = [(w[0] / x[0]) * v(n), (w[1] / x[1]) * v(p)];
                g && y.reverse();
                f && ((g = Math.min.apply(Math, G(y))), (n = y.slice(0)), n.unshift(0, 0), (y = c.bboxLib.pad(n, 1 <= f ? f : g * f).slice(2)));
                d.indexKeys(["coordinates"], {}, 0);
                var z = b.points().items;
                f = function (a, b) {
                    k = d.getValue("pos", a);
                    b = [r + k.xyz[0] * t, q + k.xyz[1] * u];
                    var h = c.bboxLib.fromCenter(b, y);
                    l = { path: e.toPointPath(z[a], h), xyz: b, xyzs: b, cxy: b, meta: { label: { bounds: h.slice(0) } }, bbox: h.slice(0) };
                    !1 !== z[a].currentOptions.mouseTracking &&
                        (l.hitTest = function (a, b) {
                            return c.bboxLib.pointInside(h, [a, b]);
                        });
                    e.clearPrevCoord(d.getValue("coordinates", a));
                    d.setValue("coordinates", a, l);
                };
                g = 0;
                for (n = z.length; g < n; g++) f(g);
                e.coordRect = a;
                e.coordDirty = !1;
                e.renderOrder = b.indexer.sortByNone();
                e.renderOrderRev = e.renderOrder.slice(0);
                e.renderOrderRev.reverse();
                return this;
            };
            b.prototype.toPointPath = function (a, b) {
                return c.bboxLib.toPath(b);
            };
            b.prototype.getIconPaths = function (a, b) {
                return c.getColumnIconPathsStatic(this, a, b);
            };
            return b;
        })(
            (function (c) {
                function b() {
                    var a = (null !== c && c.apply(this, arguments)) || this;
                    a.collidePointBoxes = !1;
                    return a;
                }
                K(b, c);
                b.prototype.possibleLabelPositions = function (a, b, c, d, f) {
                    return [d.bbox];
                };
                return b;
            })(c.SeriesBaseType)
        ),
        Cd = "stroke stroke-opacity stroke-width stroke-dasharray stroke-linejoin stroke-linecap".split(" "),
        Dd = ["opacity", "fill", "hatchPattern", "hatch"],
        Ed = c.timeLib.CalendarPattern,
        Pb = function () {
            return { axes: "x,y,z", values: "x,y,z", requiredData: "x,y,z", supportedData: "x,y,z", privateAxes: "", customAxisOptions: { z: { visible: !1 } } };
        },
        Fd = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "calendar";
                a.hcLabelsOnly = !0;
                a.typeConfig = Pb();
                a.pointDataKeys = "x y z complete completeX complete.y complete.x name".split(" ");
                a.skipSubvalues = !0;
                a.highlightVisuals = [];
                a.highlightAttrs = [];
                return a;
            }
            K(b, d);
            b.prototype.render = function (a, b) {
                if (!((this.series.chart.isRendered && this.isRendered) || this.series.isVisible)) return this;
                d.prototype.render.call(this, a, b);
                return this.renderPatternHighlights(a);
            };
            b.prototype.wrapLabel = function (a, b, c) {
                if (32 > Math.min(b.maxWidth, b.maxHeight)) return d.prototype.wrapLabel.call(this, a, b, c);
                var e = this.series.chartArea.renderer.panel({ type: "scroll" }).attr(b);
                a.attr({ maxWidth: b.maxWidth, maxHeight: b.maxHeight }).add(e);
                (c.label = c.label || {}).wrapped = !0;
                return e;
            };
            b.prototype.toPointPath = function (a, b) {
                return c.bboxLib.toPath(b);
            };
            b.prototype.renderPatternHighlights = function (a) {
                var b,
                    d,
                    m,
                    f = this,
                    g = f.series,
                    k = c.bboxLib.toLTRB(c.bboxLib.fromRect(g.contentRect())),
                    l = g.indexer,
                    n = f.isHoriz(),
                    p = g.currentOptions.attributes,
                    r = f.series.chart._highlights,
                    q = function (a) {
                        return c.jsLib.filter(g._points, function (b) {
                            return a.isInside(b.currentOptions.attributes.date);
                        });
                    },
                    t = function (a) {
                        var b,
                            e = [];
                        try {
                            for (var c = B(a), d = c.next(); !d.done; d = c.next()) {
                                var h = d.value;
                                e[h.x + "," + h.y] = h;
                            }
                        } catch (ma) {
                            var f = { error: ma };
                        } finally {
                            try {
                                d && !d.done && (b = c.return) && b.call(c);
                            } finally {
                                if (f) throw f.error;
                            }
                        }
                        return e;
                    },
                    u = function (a) {
                        var b = a.slice(0);
                        a = [];
                        var e,
                            d,
                            h = function () {
                                d = [];
                                l = b.pop();
                                e = l[1];
                                d = [l[0], l[1]];
                            },
                            f = function (a) {
                                e = a[1];
                                d.push(e);
                                c.jsLib.removeArrItem(b, a);
                            },
                            g = function (a) {
                                var e = a[0] + "," + a[1];
                                return c.jsLib.filter(b, function (a) {
                                    a = a[0];
                                    return a[0] + "," + a[1] === e;
                                });
                            },
                            k = function (a, b) {
                                b = c.trigLib.angleOfPoints(b[0], b[1]);
                                return va(a, b);
                            };
                        for (h(); ; ) {
                            var m = g(e);
                            if (1 === m.length) {
                                var l = m[0];
                                f(l);
                            } else if (2 === m.length) {
                                var n = c.trigLib.angleOfPoints(l[1], l[0]);
                                l = k(n, m[0]) < k(n, m[1]) ? m[0] : m[1];
                                f(l);
                            } else if (!m.length && b.length) d.length && a.push(d), h();
                            else {
                                d.length && a.push(d);
                                break;
                            }
                        }
                        return a;
                    },
                    v = g.xAxis.getRange(),
                    w = g.yAxis.getRange(),
                    x = [l.min("x"), l.max("x")],
                    y = [l.min("y"), l.max("y")],
                    z = [v.min + 0.5, v.max + 0.5],
                    E = [w.min + 0.5, w.max + 0.5];
                !g.xAxis.isInverted() && z.reverse();
                !g.yAxis.isInverted() && E.reverse();
                n && ((b = [E, z]), (d = N(b, 2)), (z = d[0]), (E = d[1]), b);
                var D = n
                        ? function (a) {
                              return [c.mathLib.mapValue(k[0], k[2], z[0], z[1], a[1]), c.mathLib.mapValue(k[1], k[3], E[0], E[1], a[0])];
                          }
                        : function (a) {
                              return [c.mathLib.mapValue(k[0], k[2], z[0], z[1], a[0]), c.mathLib.mapValue(k[1], k[3], E[0], E[1], a[1])];
                          },
                    F = [],
                    C = [],
                    A = function (a) {
                        var b = a.split(",");
                        a = parseInt(b[0]);
                        b = parseInt(b[1]);
                        (a !== x[0] && C[a - 1 + "," + b]) ||
                            F.push([
                                [a, b + 1],
                                [a, b],
                            ]);
                        (b !== y[0] && C[a + "," + (b - 1)]) ||
                            F.push([
                                [a, b],
                                [a + 1, b],
                            ]);
                        (a !== x[1] && C[a + 1 + "," + b]) ||
                            F.push([
                                [a + 1, b],
                                [a + 1, b + 1],
                            ]);
                        (b !== y[1] && C[a + "," + (b + 1)]) ||
                            F.push([
                                [a + 1, b + 1],
                                [a, b + 1],
                            ]);
                    },
                    H = function (a, b, e) {
                        var d;
                        if (b.length) {
                            var h = !1;
                            C = t(b);
                            F = [];
                            try {
                                for (var f = B(b), g = f.next(); !g.done; g = f.next()) {
                                    var k = g.value,
                                        m = k.userOptions.z;
                                    !c.jsLib.isNull(m) && c.jsLib.def(m) && ("", (h = !0));
                                    A(k.x + "," + k.y);
                                }
                            } catch (od) {
                                var l = { error: od };
                            } finally {
                                try {
                                    g && !g.done && (d = f.return) && d.call(f);
                                } finally {
                                    if (l) throw l.error;
                                }
                            }
                            b = u(F);
                            b = c.jsLib
                                .map(b, function (a) {
                                    a = c.jsLib.map(a, D);
                                    return c.shapeLib.flattenD(c.shapeLib.pointsToPath(a)) + " Z ";
                                })
                                .join(" ");
                            l = c.jsLib.merge({}, a.currentOptions);
                            !h && a.asEmpty(l);
                            return c.jsLib.merge(c.stylingLib.shapeToAttr(l), { d: b, key: a.id + e });
                        }
                        return [];
                    };
                if (r) {
                    var L = [],
                        G = g.id,
                        M = [];
                    b = function (a) {
                        var b,
                            e,
                            c = [],
                            d = new Ed(a.currentOptions.pattern);
                        if (d.isInterval) {
                            d.setRange(p.date, p.endDate);
                            var h = [];
                            f.eachPoint(function (a) {
                                var b = d.isInside(a.currentOptions.attributes.date);
                                -1 < b && (c.push(a), h[b] ? h[b].push(a) : (h[b] = [a]));
                            });
                            var g = 0,
                                k = c.length;
                            try {
                                for (var m = ((b = void 0), B(h)), l = m.next(); !l.done; l = m.next()) {
                                    var n = l.value;
                                    n && (L.push([k, H(a, n, g++)]), M.push(k));
                                }
                            } catch (na) {
                                b = { error: na };
                            } finally {
                                try {
                                    l && !l.done && (e = m.return) && e.call(m);
                                } finally {
                                    if (b) throw b.error;
                                }
                            }
                        } else (c = q(d)), (k = c.length), L.push([k, H(a, c, 0)]), M.push(k);
                        a.updateItemSet(G, c);
                    };
                    try {
                        for (var J = B(r), I = J.next(); !I.done; I = J.next()) b(I.value);
                    } catch (X) {
                        var K = { error: X };
                    } finally {
                        try {
                            I && !I.done && (m = J.return) && m.call(J);
                        } finally {
                            if (K) throw K.error;
                        }
                    }
                    M = c.jsLib.sortedUniq(
                        c.jsLib.sortBy(M, function (a) {
                            return a;
                        })
                    );
                    var O = g.zIndex;
                    L = c.jsLib.map(L, function (a) {
                        a[1].zIndex = O + M.indexOf(a[0]) - 1;
                        return a[1];
                    });
                    f.updateHighlights(L, a);
                }
                return f;
            };
            b.prototype.updateHighlights = function (a, b) {
                var e = this,
                    d = e.series.renderer.renderer,
                    f = e.series.rootVisuals.area;
                e.highlightAttrs = c.jsLib.map(a, function (a) {
                    return e.render_applyDynamicAttrVals(a, b);
                });
                var g = [];
                c.jsLib.each(e.highlightAttrs, function (b) {
                    g.push(c.jsLib.omit(b, Cd));
                    var e = b.zIndex + 2 * a.length,
                        d = b.key + "OL";
                    g.push(c.jsLib.merge(c.jsLib.omit(b, Dd), { key: d, zIndex: e }));
                });
                (a = e.highlightAttrs = g) &&
                    c.jsLib.mergeCollections(
                        a,
                        e.highlightVisuals,
                        function (a) {
                            var b = d.path(a).add(f);
                            b.data.key = a.key;
                            e.highlightVisuals.push(b);
                        },
                        function (a, b) {
                            return b.attr(a);
                        },
                        function (a) {
                            f.removeChild(a.el);
                            c.jsLib.removeArrItem(e.highlightVisuals, a);
                        },
                        function (a) {
                            return a.key;
                        },
                        function (a) {
                            return a.data.key;
                        }
                    );
                return e;
            };
            b.prototype.clearHighlightVisuals = function () {
                var a = this.series,
                    b;
                if ((b = this.highlightVisuals) && a.rootVisuals) {
                    var d = a.rootVisuals.area;
                    c.jsLib.each(b, function (a) {
                        d.removeChild(a.el);
                        a.destroy();
                    });
                }
            };
            b.prototype.getTypeConfigDefault = function () {
                return Pb();
            };
            b.prototype.styleIconVisual = function (a, b) {};
            b.prototype.getIconVisual = function (a, b, d) {
                var e = this.series,
                    h = e.chart;
                b = e.renderer;
                var g = { z: { fStr: "d4" } },
                    k = parseFloat(e.replaceTokens("{%zMaxSum}", g)),
                    l = parseFloat(e.replaceTokens("{%zMinSum}", g));
                d = d.iconVisual || {};
                var n = (d.root = d.root || b.panel({ yAlignment: "center" })),
                    p = [0 > l ? l : 0, 0 < k ? k : 0];
                g = parseFloat(e.replaceTokens("{%zSum}", g));
                e = e.options("palette") || h.palette;
                "object" === c.jsLib.getValType(e) ? ((h = h.getSmartPalette(e)), (h = h.getValueColor(c.mathLib.mapValue(h.axisRange[0], h.axisRange[1], p[0], p[1], g)))) : (h = e[0]);
                d.base = d.base || b.createVisual({ type: "bar", max: 0 < k ? k : 0, min: 0 > l ? l : 0, width: a[0], height: a[1], colors: [h, h, "rgba(193,193,193,.4)"], data: [g] }).add(n);
                return d;
            };
            b.prototype.setIconVisualAttr = function (a, b) {
                b.isStyled = !0;
            };
            b.prototype.getIconPaths = function (a) {};
            return b;
        })(Ob),
        Qb = function () {
            return { axes: "y,z", values: "x,y,z", privateAxes: "x,y,z", requiredData: "y", supportedData: "x,y,z", customAxisOptions: { z: { visible: !1, scale: { includeOrigin: !0 } }, y: { visible: !1 } } };
        },
        Gd = (function (d) {
            function b(a) {
                var b = d.call(this, a) || this;
                b.series = a;
                b.kind = "pie";
                b.typeConfig = Qb();
                return b;
            }
            K(b, d);
            b.prototype.getTypeConfigDefault = function () {
                return Qb();
            };
            b.prototype.pointArrayExpander = function (a) {
                return { x: a[0], y: a[1], z: a[2] };
            };
            b.prototype.render = function (a) {
                var b = this.series.rootVisuals.points;
                a = a || {};
                a.coordinatesCorrection = function (a) {
                    return c.dmUtils.snapPointToPanel(b, a, 1);
                };
                d.prototype.render.call(this, a);
                a.coordinatesCorrection = null;
                return this;
            };
            b.prototype.setCoordinates = function (a, b) {
                var e = this.series,
                    d = c.bboxLib.fromRect(a),
                    f = c.bboxLib.center(d),
                    g = a,
                    k = (function (a) {
                        c.jsLib.def(a.x) && (a = c.bboxLib.fromRect(a));
                        var b = Math.min(a[2], a[3]);
                        return c.bboxLib.fromCenter(c.bboxLib.center(a), [b, b]);
                    })(a),
                    l = e.indexer.data.coordinates || e.prevCoords;
                l && (l = l.slice(0));
                b = c.jsLib.merge({ phase: "outsideLabels" }, b);
                this.setCoordinatesWith(c.rectLib.fromBBox(k), b);
                b.phase = "";
                var n = c.bboxLib.fromRect(this.coordRectAll),
                    p = c.bboxLib.fromRect(this.coordRect),
                    r = c.bboxLib.center(n);
                if (c.bboxLib.bInsideA(d, n)) (d = g = qa(p, this.coordShapeBbox)), this.setCoordinatesWith(a, b, d);
                else if (!(n[2] <= d[2] && n[3] <= d[3])) {
                    r = function () {
                        var a = Math.min(k[2] + q, k[2] + t);
                        k = c.bboxLib.fromCenter(f, [a, a]);
                        g = c.rectLib.fromBBox(k);
                    };
                    var q = Math.min(d[2] - n[2], 0),
                        t = Math.min(d[3] - n[3], 0);
                    r();
                    10 < g.width && this.setCoordinatesWith(a, b, g);
                    n = c.bboxLib.fromRect(this.coordRectAll);
                    q = Math.max(d[2] - n[2], 0);
                    t = Math.max(d[3] - n[3], 0);
                    r();
                    this.setCoordinatesWith(a, b, g);
                }
                n = c.bboxLib.fromRect(this.coordRectAll);
                r = c.bboxLib.center(n);
                a = f[0] - r[0];
                d = f[1] - r[1];
                (a || d) && this.setCoordinatesWith(c.rectLib.translate(g, a, d), b);
                if (l) for (b = 0, a = e.points().items.length; b < a; b++) e.indexer.getValue("coordinates", b).coordPrev = this.clearPrevCoord(l[b]);
                this.renderOrder = e.indexer.sortByNone();
                this.renderOrderRev = this.renderOrder.slice(0);
                this.renderOrderRev.reverse();
                return this;
            };
            b.prototype.setCoordinatesWith = function (a, b, d) {
                var e = b ? b.coordinatesCorrection : null,
                    h = this,
                    g = h.series,
                    k = g.currentOptions,
                    l = h.getShapeOptions(g.contentRect(), a),
                    n = la(g);
                a = d || a;
                var p = [],
                    r = [],
                    q = [],
                    t = [],
                    u = g.indexer,
                    v,
                    w = g.points().items,
                    x,
                    y,
                    z,
                    E,
                    D = 0,
                    F = c.jsLib.pick(k.explodeOffset, 15);
                c.jsLib.evalPath(k, "emptyPointMode");
                var C,
                    A,
                    B = [[], [], [], []],
                    G = function (a) {
                        return c.jsLib.def(a) ? c.mathLib.mapValue(K || 0, J, 0, 1, a) : a;
                    };
                h.hasOutsideLabels = !1;
                var I = c.jsLib.evalPath(n, "start") || 0,
                    M = 2 * Math.PI;
                if ((k = c.jsLib.evalPath(n, "end"))) M = c.trigLib.toRadians(k - I);
                I -= 90;
                u.hasAllKeys("zs,ze");
                u.indexKeys(["coordinates"], {}, 0);
                k = "donut" === g.ctManager.settingVal("pieType", g);
                var J = c.jsLib.pick(l.size[0], Math.max(10, Math.min(a.height, a.width))) / 2,
                    K = c.jsLib.def(l.innerSize) ? (1 < l.innerSize ? l.innerSize / 2 : G(l.innerSize)) : G(k ? 0.33 : 0),
                    O = G(0.66);
                k = c.jsLib.pick(l.cxy, c.bboxLib.center(c.bboxLib.fromRect(a)));
                var N = k[0],
                    Q = k[1];
                if ((l = l.offset)) (N += l[0]), (Q += l[1]);
                l = c.bboxLib.fromCenter([N, Q], [2 * J, 2 * J]);
                h.coordRect = c.rectLib.fromBBox(l);
                var S = g.zAxis.range && 0 > g.zAxis.range.min;
                l = u.getValue("pos", 0).xyzOrigins;
                var R = S ? l[2] : c.undefVal,
                    U = 0 < R && 1 > R ? G(R) : J;
                l = function (a, d) {
                    x = w[a];
                    E = x.currentOptions;
                    y = g.getPointAttr(E);
                    z = u.getValue("pos", a).xyz;
                    A = c.jsLib.def(z[2]) && !c.jsLib.isNaN(z[2]) ? G(z[2]) : J;
                    C = K;
                    var f = void 0;
                    S && (z[2] < R ? ((C = G(z[2])), (A = U)) : ((C = U), (A = G(z[2]))));
                    f = A;
                    var k = c.jsLib.def(z[2]) ? (c.jsLib.def(0.66) ? c.mathLib.mapValue(C, A, 0, 1, 0.66) : 0.66) : O;
                    if (u.getValue("isEmpty", a)) return "continue";
                    d = x.replaceTokens({ token: "%percentOfSeries" });
                    var m = [N, Q],
                        l = c.mathLib.mapValue(0, M, 0, 100, d),
                        n = c.mathLib.mapValue(0, M, 0, 100, D),
                        H = c.trigLib.toDegrees(n);
                    I && ((H += I), (n = c.trigLib.toRadians(H)));
                    H = n + l / 2;
                    E.exploded && (m = c.bboxLib.fromRect(c.trigLib.getPolarPoint(m[0], m[1], H, F)).slice(0, 2));
                    v = { sweep: l, angle: n, path: c.undefVal, xyz: c.undefVal, xyzs: c.undefVal, cxy: m.slice(0), outerR: f, innerR: K, meta: { label: c.undefVal } };
                    f = [m[0], m[1]];
                    f = e ? e(f) : f;
                    k = c.trigLib.getPolarPoint(f[0], f[1], H, k);
                    v.xyzs = v.xyz = [k.x, k.y];
                    k = v.pathOptions = { start: v.angle, end: v.angle + v.sweep, open: !1, r: A, innerR: C, cxy: f };
                    k = v.path = c.shapeLib.arc(f[0], f[1], A, A, k);
                    var L = c.pathLib.fromString(k);
                    t.push(L.bbox());
                    y.labelVisible &&
                        ((k = h.positionLabel(x, L, y, v, b.phase)), v.meta.labelOutside || "outsideLabels" === b.phase ? (B[c.trigLib.quadrant(v.angle + v.sweep / 2)].push(a), q.push(k)) : r.push(k), p.push((v.meta.label = k)));
                    var P = h.getLabelHitTest();
                    v.hitTest = function (a, b) {
                        return L.hitTest(a, b) || P(this, a, b);
                    };
                    h.clearPrevCoord(u.getValue("coordinates", a));
                    u.setValue("coordinates", a, v);
                    D += d;
                };
                k = 0;
                for (n = w.length; k < n; k++) l(k);
                c.bboxLib.collideAny(q) && h.unsquishLabels(B);
                t.length && ((h.coordShapeBbox = c.bboxLib.bboxUnion(t)), (l = [c.bboxLib.bboxUnion(p)]), h.coordShapeBbox && l.push(h.coordShapeBbox), (l = c.bboxLib.bboxUnion(l)), (h.coordRectAll = c.rectLib.fromBBox(l)));
                h.labelBoxes = { inside: r, outside: q };
                h.coordDirty = !1;
                return this;
            };
            b.prototype.positionLabel = function (a, b, d, m, f) {
                var e = d.label.placement;
                e = "outsideLabels" === f ? "outside" : e || "auto";
                var h = d.label.autoHide,
                    l = m.xyz;
                if ((f = m.meta)) f.labelFits = !0;
                this.initPointLabel(a, m, d);
                d = f.labelSize;
                if ((b = "outside" !== e ? c.polyFitLib.fitBoxInPath(b, d, l) : c.undefVal)) return (a = c.bboxLib.center(b)), (b = c.bboxLib.fromCenter(a, d)), (f.labelOutside = !1), b;
                if ("inside" === e) return (f.labelFits = !h), (f.labelOutside = !1), c.bboxLib.fromCenter(l, d);
                b = c.bboxLib.fromRect(this.coordRect);
                e = c.bboxLib.center(b);
                h = b[2] / 2;
                l = c.trigLib.normalizeAngle(c.trigLib.toDegrees(m.angle));
                m = c.trigLib.toDegrees(m.sweep);
                m = (l + m / 2 + 90) % 360;
                e = c.trigLib.getPolarDegPoint(e[0], e[1], c.trigLib.normalizeAngle(m - 90), h);
                a = this.outsideLabelMargin + c.jsLib.pick(a.options("label.margin"), 5);
                b = 180 > m ? [b[0] + b[2] + a, e.y - d[1] / 2] : [b[0] - d[0] - a, e.y - d[1] / 2];
                b.push.apply(b, G(d));
                this.hasOutsideLabels = f.labelOutside = !0;
                return b;
            };
            b.prototype.renderLabel = function (a, b, d, m, f) {
                m = this.series;
                var e = a.visuals,
                    h = m.renderer,
                    l = m.rootVisuals,
                    n = d.meta,
                    p = b.label.autoHide,
                    r;
                !1 === d.meta.labelFits && p && (r = !0);
                var q = n && n.labelText ? n.labelText : a.replaceTokens(m.info.labelTextInfo.label),
                    t = n && n.labelAttr ? n.labelAttr : c.jsLib.omit(c.stylingLib.labelToAttr(b.label, ["offset"]), ["offsetX", "offsetY"]);
                !d.meta.labelOutside && b.label.hcColor && (t.fill = b.label.hcColor);
                (p = e.label) ? (t.val = q) : (p = e.label = h.textStack(q));
                p.composeCombinations();
                if (n) {
                    if ((q = n.label.slice(0))) (t = this.render_applyDynamicAttrVals([t, { x: q[0], y: q[1], zIndex: m.zIndex + c.consts.zIndexReference.label }], f)), p.attr(t);
                    q = c.bboxLib.pad(q, -c.jsLib.pick(a.options("label.margin"), 5));
                    if (((t = b.label.line) && !1 === t.visible) || !d.meta.labelOutside || !b.labelConnector) c.hideVisual(e.labelConnector);
                    else {
                        t = d.angle + d.sweep / 2;
                        var u = Math.min(this.coordRect.width / 2, d.outerR);
                        d = c.trigLib.quadrant(t);
                        d = 1 === d || 2 === d ? "left" : "right";
                        var v = [
                                [q[0], q[1] + q[3] / 2],
                                [q[0] + q[2], q[1] + q[3] / 2],
                            ],
                            w = c.bboxLib.center(c.bboxLib.fromRect(this.coordRect)),
                            x = c.trigLib.getPolarPoint(w[0], w[1], t, this.coordRect.width / 2);
                        x = [w, [x.x, x.y]];
                        x = c.trigLib.lineIntersect(v[0], v[1], x[0], x[1]);
                        null === x.x && ((v = v["right" === d ? 0 : 1]), (x.x = v[0]), (x.y = v[1]));
                        t = c.bboxLib.fromRect(c.trigLib.getPolarPoint(w[0], w[1], t, u)).slice(0, 2);
                        u = c.bboxLib.center(q);
                        u[0] = "left" === d ? q[0] + q[2] + 3 : q[0] - 3;
                        q = [x.x, x.y];
                        "left" === d ? (q[0] < u[0] && (q = u), t[0] < q[0] && (t = q), p.attr({ xAlignment: "right" })) : (q[0] > u[0] && (q = u), t[0] > q[0] && (t = q), p.attr({ xAlignment: "left" }));
                        q = [u, q, t];
                        q = c.dmUtils.snapPointsToPanel(l.points, q, 1);
                        q = c.shapeLib.pointsToPath(q);
                        q = hb(c.pathLib.fromString(q), 0, 0);
                        t = this.render_applyDynamicAttrVals(
                            [{ opacity: 1, d: q, zIndex: m.zIndex + c.consts.zIndexReference.labelConnector, caps: { size: 7, overflow: !1, type: "none", fill: b.baseColor, start: { type: "circle" } } }, b.labelConnectorAttr],
                            f
                        );
                        (p = e.labelConnector) ? p.attr(t) : (e.labelConnector = h.renderer.path().attr(t).add(l.points));
                    }
                    r && (c.hideVisual(e.label), c.emitter.emit("tip", m.name || "", "pLabelHidden", { data: [m.name || m.currentOptions.id || " ", c.strLib.shortenEllipsis(n.labelText, 10)], container: m.chartArea.chart.getWrapper() }));
                    a.labelAutoHidden = r;
                }
            };
            b.prototype.hideUnusedPointVisuals = function (a) {
                var b = a.visuals;
                c.hideVisual(b.rect);
                this.series.options("forceMarker") || a.options("marker.visible") || c.hideVisual(b.marker);
                c.hideVisual(b.rectComplete);
                c.hideVisual(b.rect);
                c.hideVisual(b.errorX);
                c.hideVisual(b.errorY);
                c.hideVisual(b.errorXV);
                c.hideVisual(b.errorYV);
            };
            b.prototype.render_applyDynamicAttrVals = function (a, b, c) {
                return d.prototype.render_applyDynamicAttrVals.call(this, a, b, c);
            };
            b.prototype.getIconPaths = function (a, b) {
                return c.getColumnIconPathsStatic(this, a, b);
            };
            b.prototype.getPointAnimatorOptions = function (a, b) {
                return a.coordPrev ? { slice: { to: a.pathOptions, from: a.coordPrev.pathOptions } } : {};
            };
            return b;
        })($a),
        Rb = function () {
            return { axes: "y,z", values: "x,y,z", privateAxes: "x,y,z", requiredData: "y", supportedData: "x,y,z", customAxisOptions: { z: { visible: !1, scale: { includeOrigin: !0 } }, y: { visible: !1 } } };
        },
        fa = function (c) {
            c = c.userOptions;
            return c.sets || (c.x ? [c.x] : c.name ? [c.name] : void 0);
        },
        Hd = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a.kind = "venn";
                a.typeConfig = Rb();
                a.pointValueParser = function (a, b) {
                    var e = function () {
                        return b.sets && 1 === b.sets.length ? b.sets[0] : void 0;
                    };
                    return c.parsePointValues(a, ha(ha({}, b), { x: b.x || e() || b.name, y: b.y, name: b.name || b.x || e() }), ["x", "y", "name"]);
                };
                a.validateData = c.jsLib.Memoize("validateData", function (b) {
                    var e = a.series,
                        d = c.jsLib.reduce(
                            b,
                            function (a, b) {
                                (b = b.sets) && 1 === b.length ? (a.circles[b[0]] = !0) : b && a.intersections.push(b);
                                return a;
                            },
                            { circles: {}, intersections: [] }
                        ),
                        f = c.jsLib.filter(b, function (a) {
                            if (a.sets) {
                                var b = 1 === a.sets.length;
                                a = !c.jsLib.find(a.sets, function (a) {
                                    return !d.circles[a];
                                });
                                return b || a;
                            }
                            return !1;
                        });
                    b.length !== f.length && c.emitter.emit("error", e.id, "invalidData", { data: [e.name || e.id], container: e.chart.getWrapper() });
                    return f;
                });
                a.getVennLayout = function (b, d, m) {
                    var e = a.series.chart.getWrapper();
                    if (b.length) {
                        var h = Bc(b, { lossFunction: ya }),
                            k = (h = Ec(h, (Math.PI * m) / 180, null));
                        m = [];
                        h = [];
                        for (var l in k) k.hasOwnProperty(l) && (h.push(l), m.push(k[l]));
                        var n = d.x,
                            p = d.y,
                            r = d.width,
                            q = d.height;
                        l = Ra(m);
                        d = l.xRange;
                        l = l.yRange;
                        if (d.max == d.min || l.max == l.min) c.emitter.emit("warning", "Venn Layout", "Not scaling solution: zero size detected", { container: e }), (m = k);
                        else {
                            k = Math.min(q / (l.max - l.min), r / (d.max - d.min));
                            n += (r - (d.max - d.min) * k) / 2;
                            p += (q - (l.max - l.min) * k) / 2;
                            r = {};
                            for (q = 0; q < m.length; ++q) {
                                var t = m[q];
                                r[h[q]] = { radius: k * t.radius, x: n + (t.x - d.min) * k, y: p + (t.y - l.min) * k };
                            }
                            m = r;
                        }
                        h = m;
                        d = {};
                        l = {};
                        k = [];
                        for (var u in h) k.push(u), (l[u] = []);
                        for (u = 0; u < k.length; u++)
                            for (p = h[k[u]], n = u + 1; n < k.length; ++n) (r = h[k[n]]), (q = V(p, r)), q + r.radius <= p.radius + 1e-10 ? l[k[n]].push(k[u]) : q + p.radius <= r.radius + 1e-10 && l[k[u]].push(k[n]);
                        for (u = 0; u < b.length; ++u) {
                            k = b[u].sets;
                            p = {};
                            n = {};
                            for (r = 0; r < k.length; ++r) for (p[k[r]] = !0, q = l[k[r]], t = 0; t < q.length; ++t) n[q[t]] = !0;
                            r = [];
                            q = [];
                            for (var v in h) v in p ? r.push(h[v]) : v in n || q.push(h[v]);
                            p = ub(r, q);
                            d[k] = p;
                            p.disjoint && 0 < b[u].size && c.emitter.emit("warning", "Venn Layout", "Area " + k + " not represented on screen", { container: e });
                        }
                        b = { circles: m, textCentres: d };
                    } else b = {};
                    return b;
                };
                a.getVennLayoutMemo = c.jsLib.Memoize("getVennLayout", a.getVennLayout);
                return a;
            }
            K(b, d);
            b.prototype.contextDefaults = function () {
                return {
                    states: { muted: { enabled: !0 } },
                    shape: { padding: 0.1 },
                    defaultPoint: { hoverAction: "highlightPoint", label: { visible: !0 }, states: { muted: { opacity: 0.1 }, hover: { enabled: !1, fill: "currentColor" } } },
                };
            };
            b.prototype.getTypeConfigDefault = function () {
                return Rb();
            };
            b.prototype.pointArrayExpander = function (a) {
                return { x: a[0], y: a[1], sets: a[2] };
            };
            b.prototype.render = function (a) {
                var b = this.series,
                    h = b.points().items.map(function (a) {
                        return { sets: fa(a), size: a.currentOptions.y };
                    });
                this.data = this.validateData(h);
                this.isEuler = Gc(this.data);
                var m = b.rootVisuals.points;
                a = a || {};
                a.coordinatesCorrection = function (a) {
                    return c.dmUtils.snapPointToPanel(m, a, 1);
                };
                d.prototype.render.call(this, a);
                a.coordinatesCorrection = null;
                return this;
            };
            b.prototype.setCoordinates = function (a, b) {
                var e,
                    d = this.series,
                    f = "colorbypoint" !== this.series.ctSv("vennType"),
                    g = la(d),
                    k = b
                        ? b.coordinatesCorrection
                        : function (a) {
                              return a;
                          },
                    l = this.getShapeOptions(d.contentRect(), a);
                b = d.indexer;
                var n = d.points().items;
                n = n
                    .filter(function (a) {
                        var b = fa(a);
                        return b && b.length && (!c.jsLib.isUndefined(a.name || a.x) || 1 === b.length);
                    })
                    .sort(function (a, b) {
                        a = fa(a).length;
                        b = fa(b).length;
                        return a === b ? 0 : a > b ? 1 : -1;
                    });
                b.indexKeys(["coordinates"], {}, 0);
                var p = l.cxy,
                    r = l.offset,
                    q = l.size;
                l = ha({}, a);
                a = c.bboxLib.fromRect(a);
                q && q.length && ((q = q[0]), (a = c.bboxLib.setSize(a, [q, q])));
                p && p.length && (a = c.bboxLib.fromCenter(p, a.slice(2)));
                r && r.length && (a = c.bboxLib.translate(a, r));
                c.jsLib.merge(l, c.rectLib.fromBBox(a));
                g = this.getVennLayoutMemo(this.data, l, g.start || (this.isEuler ? 0 : 90));
                var t = g.circles;
                g = g.textCentres;
                p = [];
                var u = {};
                r = 0;
                for (var v = n.length; r < v; r++) {
                    a = n[r];
                    q = fa(a);
                    var w = t[b.getValue("x", r)],
                        x = (l = g[q.join(",")]) && k([l.x, l.y]);
                    l = void 0;
                    if (w) {
                        var y = k([w.x, w.y]);
                        l = { path: c.shapes.circle(y[0] - w.radius, y[1] - w.radius, 2 * w.radius, 2 * w.radius).join(" "), xyz: x, xyzs: x, styleSet: d.getPointAttr(a.currentOptions), meta: { label: c.undefVal } };
                        u[q[0]] = l;
                    } else
                        (y = q.map(function (a) {
                            return t[a];
                        })),
                            f &&
                                !a.userOptions.color &&
                                ((q = q.map(function (a) {
                                    return u[a] && u[a].styleSet.baseColor;
                                })),
                                (a.currentOptions.color = c.colorLib.simplify(q))),
                            0 > y.indexOf(void 0) && (l = { path: Fc(y), xyz: x, xyzs: x, styleSet: d.getPointAttr(a.currentOptions), meta: { label: c.undefVal } });
                    this.clearPrevCoord(b.getValue("coordinates", a._i));
                    b.setValue("coordinates", a._i, l);
                    p.push(a._i);
                }
                f = [];
                for (r = n.length - 1; 0 <= r; r--)
                    (a = n[r]),
                        (q = fa(a)),
                        (l = b.getValue("coordinates", a._i)),
                        (k = (null === (e = l) || void 0 === e ? void 0 : e.styleSet) || d.getPointAttr(a.currentOptions)),
                        k.labelVisible &&
                            l &&
                            ((y = g[q.join(",")]),
                            (l.meta.label = { bounds: c.bboxLib.fromCenter([y.x, y.y], [y.size, y.size]) }),
                            this.initPointLabel(a, l, k),
                            (k = c.bboxLib.fromCenter([y.x, y.y], l.meta.labelInternalSize)),
                            l.meta.labelText && (c.bboxLib.collideList(f, k) ? (l.meta.labelFits = !1) : f.push(k)),
                            (l.meta.label.bounds = k));
                this.coordDirty = !1;
                this.renderOrder = p;
                this.renderOrderRev = this.renderOrder.slice(0);
                this.renderOrderRev.reverse();
                return this;
            };
            b.prototype.pointLeVisible = function (a) {
                return !(!a.x && !a.name);
            };
            b.prototype.renderLabel = function (a, b, d, m, f) {
                m = this.series;
                var e = a.visuals,
                    h = m.renderer,
                    l = m.chartArea.collisionManager,
                    n = d.meta,
                    p;
                !1 === d.meta.labelFits && !1 !== c.jsLib.epa(a.currentOptions, ["label", "autoHide"]) && (p = !0);
                var r = n && n.labelText ? n.labelText : a.replaceTokens(m.info.labelTextInfo.label),
                    q = n && n.labelAttr ? n.labelAttr : c.jsLib.omit(c.stylingLib.labelToAttr(b.label, ["offset"]), ["offsetX", "offsetY"]);
                !d.meta.labelOutside && b.label.hcColor && (q.fill = b.label.hcColor);
                (b = e.label) ? (q.val = r) : (b = e.label = h.textStack(r));
                if (n && n.label) {
                    if ((d = n.label.bounds.slice(0))) (q = this.render_applyDynamicAttrVals([q, { x: d[0], y: d[1], width: d[2], height: d[3], zIndex: m.zIndex + c.consts.zIndexReference.label }], f)), b.attr(q);
                    p && c.hideVisual(e.label);
                    a.labelAutoHidden = p;
                    l.addLabelBox(d);
                }
            };
            b.prototype.hideUnusedPointVisuals = function (a) {
                var b = a.visuals;
                c.hideVisual(b.rect);
                this.series.options("forceMarker") || a.options("marker.visible") || c.hideVisual(b.marker);
                c.hideVisual(b.rectComplete);
                c.hideVisual(b.rect);
                c.hideVisual(b.errorX);
                c.hideVisual(b.errorY);
                c.hideVisual(b.errorXV);
                c.hideVisual(b.errorYV);
            };
            b.prototype.getIconPaths = function (a, b) {
                return c.getColumnIconPathsStatic(this, a, b);
            };
            return b;
        })($a),
        I = { scrollbarHeight: 16, handleControlSize: 19, scrollbarControlSize: 8, toolbarHeight: 36, toolbarItemsHeight: 24, toolbarButtonsNumber: 3, iconStrokeWidth: 1, itemMargin: 6, rangeFormat: "MM/dd/yyyy" },
        Sb = function (c) {
            return {
                type: "button",
                style: "cursor:ew-resize;",
                position: "inside " + c,
                boxVisible: !1,
                margin: 0,
                icon: { d: "M 0 0 H 10 V 20 H 0 V 0 M 4 5 V 15 M 6 5 V 15", size: I.handleControlSize, fill: "#f2f2f2", stroke: "#999999", strokeWidth: I.iconStrokeWidth },
            };
        },
        Tb = function (c, b) {
            return {
                type: "input",
                position: "tltl",
                value: c,
                width: 90,
                "text-align": "center",
                "background-color": "white",
                border: "1px solid #bdbdbd",
                margin: [-I.toolbarHeight + I.itemMargin, 0, 0, I.itemMargin],
                height: I.toolbarItemsHeight,
                events_focusout: b,
            };
        },
        Ic = (function () {
            function d(b, a) {
                this.chart = b;
                this.chartAxesX = [];
                this.chartAxesY = [];
                this.rendered = !1;
                this.rangeBarItems = [];
                this.scrollBarItems = [];
                this.clientXOffset = 0;
                this.state = {};
                this.defaults = I;
                this.docVUp = this.docMM = c.undefVal;
                this.actionIdleDefer = new c.idleDefer();
                var e = b.boxDefaults(1);
                this.options = c.jsLib.merge({ fill: e.fill, toolbar: { fill: e.fill, outline: e.outline.color }, previewArea: { scrollbar: { color: e.fill } } }, a);
                this.init(b.chartAreaSet.items);
            }
            d.prototype.init = function (b) {
                this.state.scrollbar = !1 !== this.options.xScrollbarEnabled;
                this.state.toolbar = !1 !== this.options.toolbar.visible;
                this.state.previewArea = !1 !== this.options.previewArea.visible;
                for (var a = 0, e = b.length; a < e; a++) {
                    var c = b[a];
                    a === e - 1 && this.state.previewArea ? (this.refAxis = c.axes(0)) : (this.chartAxesX.push(c.axes(0)), this.chartAxesY.push([c.axes(1), c.axes(2)]));
                    c.rootPanel.attr({ offsetY: -a });
                }
                this.refAxis = this.refAxis || this.chartAxesX[0];
                this.refRange = this.refAxis.range;
                this._docElement || (this._docElement = this.chart.renderer.renderer.documentElement);
            };
            d.prototype.setRange = function (b) {
                var a = this;
                a.chart.chartAreaSet.each(function (b) {
                    b.readyDefer.release(b.navHold);
                    a.rendered && (b.navHold = b.readyDefer.hold("navZoom"));
                });
                a.currentRange = { min: b.min, max: b.max };
                c.jsLib.each(a.chartAxesX, function (a) {
                    return a.zoom(b.min, b.max);
                });
                c.jsLib.each(a.chartAxesY, function (a) {
                    return c.jsLib.each(a, function (a) {
                        return a && a.zoom();
                    });
                });
                a.rendered ? (a.state.toolbar && a.updateToolbarItems(), a.state.previewArea && a.updateScrollBarItems()) : (a.state.toolbar && a.addToolbarItems(), a.state.previewArea && a.addScrollBarItems(), a.refAxis.chart.redraw());
                a.chart.chartAreaSet.each(function (a) {
                    a.readyDefer.release(a.navHold);
                });
                a.rendered = !0;
            };
            d.prototype.updateToolbarItems = function () {
                var b = this.rangeBarItems,
                    a = b[0];
                b = b[2];
                var e = this.getFormattedRange(this.currentRange);
                a.options({ value: e.min });
                b.options({ value: e.max });
                b = this.chartAxesX[0].chartArea;
                a = b.rootVisuals.contentStroke.getBbox();
                b = c.dmUtils.snapPointToPanel(b.rootVisuals.contentOverlay, [a.x, a.y], 1);
                this.toolbarBackground.attr({ width: a.width, offsetX: b[0], offsetY: b[1] });
            };
            d.prototype.updateScrollBarItems = function () {
                var b = this.refAxis,
                    a = this.currentRange,
                    e = this.valToPx(b, a.min);
                b = this.valToPx(b, a.max);
                1 < Math.abs(this.leftX - e) && (this.leftX = e);
                1 < Math.abs(this.rightX - b) && (this.rightX = b);
                this.updateLeftCurtain();
                this.updateRightCurtain();
                this.updateScrollbarIcon();
            };
            d.prototype.scrollBarVisibility = function () {
                return Math.abs(this.rightX - this.leftX) > 2 * I.scrollbarControlSize ? "visible" : "hidden";
            };
            d.prototype.getLeftCurtainIconPosition = function () {
                return c.dmUtils.snapPointToPanel(this.refAxis.chart.rootVisuals.uiItemsFront, [this.leftX - I.handleControlSize / 2, this.handleTopOffset], 1);
            };
            d.prototype.getRightCurtainIconPosition = function () {
                return c.dmUtils.snapPointToPanel(this.refAxis.chartArea.rootVisuals.contentOverlay, [this.rightX - 2 - I.handleControlSize / 2, this.handleTopOffset], 1);
            };
            d.prototype.getScrollbarIconPosition = function () {
                return c.dmUtils.snapPointToPanel(
                    this.refAxis.chartArea.rootVisuals.contentOverlay,
                    [(this.leftX + this.rightX) / 2 - I.scrollbarControlSize / 2, this.scrollBarTopOffset + (I.scrollbarHeight - I.scrollbarControlSize) / 2],
                    1
                );
            };
            d.prototype.valToPx = function (b, a) {
                return b._sizeMetrics.length * b.viewState.valToLin(a);
            };
            d.prototype.attachDoc = function () {
                var b = this,
                    a = b.refAxis.chartArea,
                    e = this._docElement;
                (b.docMM && b.docVUp) ||
                    ((a = a.rootVisuals.content),
                    (this.docMM = a.externalOn(e, "vmove", function (a) {
                        return b.docVMoveHandler(a);
                    })),
                    (this.docVUp = a.externalOn(e, "vup", function (a) {
                        return b.vupHandler();
                    })));
            };
            d.prototype.detachDoc = function () {
                this.docMM && this.docMM.un();
                this.docVUp && this.docVUp.un();
                this.docMM = this.docVUp = null;
            };
            d.prototype.addScrollBarItems = function () {
                var b = this,
                    a = this,
                    e = a.refAxis,
                    d = a.currentRange,
                    m = a.state.scrollbar,
                    f = a.state.toolbar,
                    g = e.chartArea,
                    k = g.rootVisuals.contentStroke.getBbox(),
                    l = a.options.toolbar,
                    n = g.rootVisuals.contentOverlay,
                    p = a.options.previewArea;
                a.actionIdleDefer = a.actionIdleDefer || new c.idleDefer();
                a.leftX = a.valToPx(e, d.min) - 1;
                a.rightX = a.valToPx(e, d.max) + 1;
                if (m) {
                    var r = c.dmUtils.snapPointToPanel(n, [0, k.y + k.height], 1);
                    a.scrollBar = g.renderer
                        .shape("rectangle", { width: k.width, offsetX: r[0], offsetY: r[1], height: I.scrollbarHeight, fill: c.colorLib.modifyColor(c.colorLib.colorMods.crysBright, p.scrollbar.color), stroke: l.outline })
                        .add(n);
                }
                l = c.dmUtils.snapPointToPanel(n, [0, k.y], 0);
                a.leftCurtain = g.renderer.shape("rectangle", { width: a.leftX, offsetX: l[0], offsetY: l[1], height: k.height + (m ? I.scrollbarHeight : 0), fill: p.scrollbar.color, opacity: 0.7 }).add(n);
                l = c.dmUtils.snapPointToPanel(n, [a.rightX, k.y], 0);
                a.rightCurtain = g.renderer.shape("rectangle", { width: k.width - a.rightX, offsetX: l[0], offsetY: l[1], height: k.height + (m ? I.scrollbarHeight : 0), fill: p.scrollbar.color, opacity: 0.7 }).add(n);
                g = e.chartArea.rootPanel.getBbox();
                n = a.chartAxesX.length;
                p = 2 * I.iconStrokeWidth;
                a.markerHeight = k.height;
                a.handleTopOffset = g.y - n - (f ? I.toolbarHeight : 0) + (k.height - I.handleControlSize) / 2 - p;
                a.scrollBarTopOffset = g.y - n - (f ? I.toolbarHeight : 0) + k.height - p;
                e.chart.uiItems.add(Sb(a.getLeftCurtainIconPosition()));
                e.chart.uiItems.add(Sb(a.getRightCurtainIconPosition()));
                a.scrollBarItems = e.chart.uiItems().items.splice(-2);
                f = function (b) {
                    return function () {
                        a.currentItemId = b;
                        a.attachDoc();
                    };
                };
                a.scrollBarItems[0].rootPanel.el.on("vdown", f(0));
                a.scrollBarItems[1].rootPanel.el.on("vdown", f(1));
                a.scrollBarItems[0].rootPanel.el.on("vup", function () {
                    return a.vupHandler();
                });
                a.scrollBarItems[1].rootPanel.el.on("vup", function () {
                    return a.vupHandler();
                });
                e.chartArea.rootPanel.el.on("vup", function () {
                    return a.vupHandler();
                });
                e.chartArea.rootPanel.el.on("vdown", function (a) {
                    var e = b.getNavigatorAreaBbox();
                    a.clientX - e.left < b.leftX || a.clientX - e.left > b.rightX ? ((b.currentItemId = 2), b.updateNavigatorFast(a, d)) : ((b.currentItemId = 3), (b.clientXOffset = a.clientX - (b.rightX + b.leftX) / 2));
                    b.attachDoc();
                });
                e.chartArea.rootPanel.el.on("vmove", function (b) {
                    return a.vMoveHandler(b);
                });
                m &&
                    (e.chart.uiItems.add({
                        type: "button",
                        style: "cursor:ew-resize;",
                        position: "inside " + a.getScrollbarIconPosition(),
                        boxVisible: !1,
                        margin: 0,
                        icon: { d: "M 0 0 V 8 M 4 0 V 8 M 8 0 V 8", size: I.scrollbarControlSize, fill: "#f2f2f2", stroke: "#999999", strokeWidth: I.iconStrokeWidth },
                    }),
                    (a.scrollbarControlIcon = a.refAxis.chart.uiItems(-1)),
                    a.scrollbarControlIcon.rootPanel.el.on("vdown", f(2)),
                    a.scrollbarControlIcon.rootPanel.el.on("vup", function () {
                        return a.vupHandler();
                    }));
            };
            d.prototype.vMoveHandler = function (b) {
                void 0 !== this.currentItemId && this.updateNavigatorFast(b, this.currentRange);
            };
            d.prototype.vupHandler = function () {
                this.actionCaUpdate();
                this.actionIdleDefer.clearAll();
                this.currentItemId = void 0;
                this.detachDoc();
            };
            d.prototype.actionCaUpdate = function () {
                var b = c.jsLib.isUndefined(this.currentItemId),
                    a = this.currentRange.min,
                    e = this.currentRange.max,
                    d = a > e;
                this.clientXOffset = 0;
                !b && this.setRange({ min: d ? e : a, max: d ? a : e });
            };
            d.prototype.docVMoveHandler = function (b) {
                this.vMoveHandler(b.eventArgs) && b.eventArgs.preventDefault();
            };
            d.prototype.addToolbarItems = function () {
                var b = this,
                    a = b.refRange,
                    e = [],
                    d = b.getFormattedRange(b.currentRange);
                e.push(
                    Tb(d.min, function (e) {
                        e = b.getRangeFromString(e);
                        !c.jsLib.isNaN(e) && e < b.currentRange.max && b.setRange({ min: Math.max(e, a.min), max: b.currentRange.max });
                    })
                );
                e.push({ position: "tltl", label: "-", height: I.toolbarItemsHeight, boxVisible: !1, margin: [-I.toolbarHeight + I.itemMargin, 0, 0, I.itemMargin] });
                e.push(
                    Tb(d.max, function (e) {
                        e = b.getRangeFromString(e);
                        !c.jsLib.isNaN(e) && e > b.currentRange.min && b.setRange({ min: b.currentRange.min, max: Math.min(e, a.max) });
                    })
                );
                d = c.jsLib.evalPath(b.options, "toolbar.quickZoomIntervals");
                d = b.getToolbarButtonHandlers(d);
                c.jsLib.each(d, function (c) {
                    e.push({
                        position: "trtr",
                        label: { text: c.name, autoWrap: "none" },
                        height: I.toolbarItemsHeight,
                        margin: [-I.toolbarHeight + I.itemMargin, I.itemMargin, 0, 0],
                        events_click: function () {
                            if (c.range) {
                                var e = b.currentRange;
                                b.setRange({ min: Math.max(e.max - c.range, a.min), max: e.max });
                            } else b.setRange({ min: a.min, max: a.max });
                        },
                    });
                });
                b.chart.uiItems.add(e);
                d = b.chartAxesX[0].chartArea;
                var m = d.rootVisuals.contentStroke.getBbox(),
                    f = b.options.toolbar,
                    g = d.rootVisuals.contentOverlay,
                    k = c.dmUtils.snapPointToPanel(g, [m.x, m.y], 1);
                b.toolbarBackground = d.renderer.shape("rectangle", { width: m.width, offsetX: k[0], offsetY: k[1], height: I.toolbarHeight, margin: [-I.toolbarHeight, 0, 0], fill: f.fill, stroke: f.outline }).add(g);
                b.rangeBarItems = b.chart.uiItems().items.splice(-(I.toolbarButtonsNumber + 4));
            };
            d.prototype.getFormattedRange = function (b) {
                var a = this.refAxis,
                    e = a.formatter(),
                    c = "time" === a.type,
                    d = function (b) {
                        return c ? e.formatDate(new Date(b), I.rangeFormat) : a.format(b);
                    };
                return { min: d(b.min), max: d(b.max) };
            };
            d.prototype.getRangeFromString = function (b) {
                return "time" === this.refAxis.type ? new Date(b).getTime() : parseFloat(b);
            };
            d.prototype.getToolbarButtonHandlers = function (b) {
                var a = this,
                    e = a.refRange.range,
                    d = [];
                if (b)
                    (b = b.split(",")),
                        c.jsLib.each(b, function (b) {
                            b = b.split("=");
                            var c = a.parseInterval(b[0], e);
                            c && (b[1] && (c.name = b[1]), d.push(c));
                        });
                else {
                    b = a.chartAxesX[0].unZoomedRange;
                    b = new Date(b.max - b.min).getTime();
                    var m = [];
                    for (d.push({ name: "Max" }); m.length < I.toolbarButtonsNumber; ) {
                        var f = a.parseInterval((b /= 1.5), e),
                            g = f.name;
                        -1 < m.indexOf(g) || (d.unshift(f), m.push(g));
                    }
                }
                return d;
            };
            d.prototype.parseInterval = function (b, a) {
                var e = "ms s m h d m y".split(" "),
                    d = [1e3, 60, 60, 24, 30, 12];
                if (c.jsLib.isString(b)) {
                    b = b.trim();
                    if ("Max" === b) return { name: b };
                    var m = b.match("[0-9]+"),
                        f = b.match("[a-zA-Z]+");
                    if (m && f) {
                        var g = parseInt(m[0]) || 1;
                        f = f[0];
                        m = 0;
                        for (var k = d.length; m < k; m++) {
                            if (e[m] === f && 100 > a / g) return { name: b, range: g };
                            g *= d[m];
                        }
                        return;
                    }
                } else g = b;
                f = g;
                b = -1;
                g = 0;
                for (m = a = 1; 1 < f; ) (a *= m), (m = d.shift()), b++, (g = f), (f /= m);
                a: {
                    d = [
                        [1, 10, 100],
                        [1, 30],
                        [1, 5, 30],
                        [1, 12],
                        [1, 7],
                        [1, 3, 6],
                        [1, 2, 5, 50],
                    ][b];
                    f = d[0];
                    m = Math.abs(g - f);
                    k = 1;
                    for (var l = d.length; k < l; k++) {
                        f = d[k];
                        var n = Math.abs(g - f);
                        if (n > m) {
                            d = d[k - 1];
                            break a;
                        } else m = n;
                    }
                    d = f;
                }
                return { name: "" + d + e[b], range: a * d };
            };
            d.prototype.getNavigatorAreaBbox = function () {
                return this.refAxis.chartArea.rootPanel.el.el.getBoundingClientRect();
            };
            d.prototype.updateNavigatorFast = function (b, a) {
                a = this.getNavigatorAreaBbox();
                var e = this.currentItemId,
                    d = b.clientX,
                    m = a.width - 0;
                if (0 === e) this.leftX = c.jsLib.clamp(d - a.left, 0, this.rightX);
                else if (1 === e) this.rightX = c.jsLib.clamp(d - a.left, this.leftX, m);
                else if (e || !b) (b = 2 === e ? a.left : this.clientXOffset), (a = this.rightX - this.leftX), (this.leftX = d = c.jsLib.clamp(d - b - a / 2, 0, m - a)), (this.rightX = d + a);
                1 !== e && this.updateLeftCurtain();
                0 !== e && this.updateRightCurtain();
                this.state.scrollbar && this.updateScrollbarIcon();
            };
            d.prototype.updateLeftCurtain = function () {
                var b = this.refAxis,
                    a = b.linToVal(this.leftX);
                this.leftCurtain.attr({ width: Math.ceil(this.leftX + 1) });
                this.scrollBarItems[0].options({ position: "inside " + this.getLeftCurtainIconPosition() });
                this.currentRange.min = Math.max(b.range.min, a);
            };
            d.prototype.updateRightCurtain = function () {
                var b = this.refAxis,
                    a = b.linToVal(this.rightX),
                    e = b.chartArea.rootVisuals.contentOverlay,
                    d = Math.ceil(this.rightX),
                    m = c.dmUtils.snapPointToPanel(b.chartArea.rootVisuals.contentOverlay, [this.rightX, 0], 0);
                this.rightCurtain.attr({ width: Math.ceil(e.getBbox().width - d + 1), offsetX: m[0] });
                this.scrollBarItems[1].options({ position: "inside " + this.getRightCurtainIconPosition() });
                this.currentRange.max = Math.min(b.range.max, a);
            };
            d.prototype.updateScrollbarIcon = function () {
                this.state.scrollbar && this.scrollbarControlIcon.options({ position: "inside " + this.getScrollbarIconPosition(), visibility: this.scrollBarVisibility() });
            };
            return d;
        })(),
        Id = c.timeLib.GroupingFunctions,
        bb = c.timeLib.CalendarPattern,
        da = { millisecond: 1, second: 1e3, minute: 6e4, hour: 36e5, day: 864e5, week: 6048e5, month: 24192e5, year: 314496e5, decade: 314496e6 },
        cb = da.day,
        Ub = da.hour,
        Jd = da.minute,
        db = function (c) {
            return c;
        },
        R = function (c) {
            return c.getMonth ? c : new Date(c);
        },
        Q = function (c) {
            return R(c).getTime();
        },
        eb = { years: 12, decade: 11, year: 10, quarter: 9, month: 8, week: 7, dayofyear: 6.2, day: 6.1, weekday: 6, hour: 3, minuteofday: 2.1, minute: 2, secondofhour: 1.1, second: 1 },
        Vb = function (c) {
            return c.unit ? (c.mod ? 0 : (eb[c.unit] * (c.mul ? c.mul : 1)) / (c.mod ? c.mod : 1)) : eb[c];
        },
        Ca = function (c) {
            return Kd[Math.floor(eb[c.unit || c])];
        },
        Kd = [, "second", "minute", "hour", , , "day", "week", "month", "quarter", "year", "decade", "years"],
        Wb = function (d) {
            return c.jsLib.isString(d) ? c.timeLib.intervalToSpan({ unit: Ca(d) }) : c.timeLib.intervalToSpan({ unit: Ca(d.unit), multiplier: d.mul || 1 });
        },
        Da = {
            decade: {
                x: "month",
                y: "year",
                z: "month",
                v: "day",
                interval: "decade",
                format: {
                    series: "year",
                    point: "year,month",
                    x: {
                        unit: "month",
                        toDate: function (c) {
                            return new Date(2020, c - 1, 1);
                        },
                    },
                    y: {
                        unit: "year",
                        toDate: function (c) {
                            return new Date(c, 0, 1);
                        },
                    },
                },
                spans: { interval: 11 * da.year },
            },
            years: {
                x: "month",
                y: "year",
                z: "month",
                v: "day",
                interval: "none",
                format: {
                    series: "year",
                    point: "year,month",
                    x: {
                        unit: "month",
                        toDate: function (c) {
                            return new Date(2020, c - 1, 1);
                        },
                    },
                    y: {
                        unit: "year",
                        toDate: function (c) {
                            return new Date(c, 0, 1);
                        },
                    },
                },
            },
            year: { x: "week", y: "weekday", z: "day", v: "hour", interval: "year", format: { point: "day,month,year" }, defPattern: { month: "*" } },
            quarter: { x: "week", y: "weekday", z: "day", v: "hour", interval: "quarter", defPattern: { month: "*" } },
            month: { x: "weekday", y: "week", z: "day", v: "hour", interval: "month" },
            week: { x: "hour", y: "weekday", z: "hour", v: "minute", interval: "week", format: { point: "weekday,hour" } },
            week30min: {
                x: { unit: "minuteofday", mul: 30, mod: 48 },
                y: "weekday",
                z: "hour",
                v: "minute",
                interval: "week",
                format: {
                    point: "weekday,hour,minute",
                    x: {
                        interval: 6,
                        unit: "hour",
                        toDate: function (c) {
                            return new Date(2020, 0, 1).setMinutes(30 * c);
                        },
                    },
                },
            },
            day: { x: "hour", y: "minute", z: "minute", v: "second", interval: "day" },
            dayminutes: { x: "hour", y: "minute", z: "minute", v: "second", interval: "day", format: { series: "day,month,year", point: "hour,minute" } },
            dayhours: {
                x: { unit: "hour", mul: 1, mod: 6 },
                y: { unit: "hour", mul: 6 },
                z: "hour",
                v: "minute",
                interval: "day",
                format: {
                    x: "hidden",
                    y: {
                        interval: 1,
                        unit: { hour: "numeric", minute: "2-digit" },
                        toDate: function (c) {
                            return new Date(2020, 0, 1).setHours(6 * c);
                        },
                    },
                    series: "day,month",
                    point: "hour,minute",
                },
            },
            day30min: {
                x: { unit: "minuteofday", mul: 30, mod: 6 },
                y: { unit: "hour", mul: 3 },
                z: { unit: "minuteofday", mul: 30, mod: 6 },
                v: "minute",
                interval: "day",
                format: { y: { interval: 1 }, series: "day,month", point: "hour,minute" },
            },
            day15min: { x: { unit: "minuteofday", mul: 15, mod: 12 }, y: { unit: "hour", mul: 3 }, z: "minute", v: "second", interval: "day", format: { y: { interval: 1 }, series: "day,month,year", point: "hour,minute" } },
            day5min: {
                x: { unit: "minuteofday", mul: 5, mod: 12 },
                y: { unit: "hour", mul: 1 },
                z: { unit: "minuteofday", mul: 5, mod: 12 },
                v: "minute",
                interval: "day",
                format: {
                    y: { interval: 3 },
                    x: {
                        unit: { minute: "2-digit" },
                        toDate: function (c) {
                            return new Date(2020, 0, 1).setMinutes(5 * c);
                        },
                    },
                    series: "day,month",
                    point: "hour,minute",
                },
            },
            hour: { x: "hour", y: "second", z: "second", v: "millisecond", interval: "hour" },
            hourseconds: { x: "hour", y: "second", z: "second", v: "millisecond", interval: "hour" },
            hour30sec: { x: { unit: "secondofhour", mul: 30, mod: 10 }, y: { unit: "minuteofday", mul: 5 }, z: "second", v: { unit: "millisecond", mul: 50 }, interval: "hour", format: { x: "hidden" } },
            hour10sec: { x: { unit: "secondofhour", mul: 10, mod: 30 }, y: { unit: "minuteofday", mul: 5 }, z: "second", v: { unit: "millisecond", mul: 50 }, interval: "hour", format: { x: "hidden" } },
            hourminutes: { x: { unit: "minute", mul: 1, mod: 10 }, y: { unit: "minuteofday", mul: 10 }, z: "minute", v: { unit: "second", mul: 10 }, interval: "hour", format: { x: "hidden" } },
            minute: { x: "second", y: "millisecond", z: "millisecond", v: "millisecond", interval: "hour" },
        },
        Ld = ["day", "hour"],
        Nd = function (d, b, a, e) {
            var h = Q(b) - Q(d);
            d = function (a) {
                return { hour: "hourMinutes", day: "dayHours" }[a] || a;
            };
            b = "";
            for (var m in da) 1.3 * h >= da[m] && (b = m);
            return a &&
                ((m = c.jsLib.filter(Md, function (b) {
                    return b.cell >= a && b.interval >= h;
                })),
                m.length)
                ? ((m = c.jsLib.sortBy(m, function (a) {
                      return a.interval;
                  })[0]),
                  m.interval > 5 * h ? d(b) : d(m.name))
                : d(b);
        },
        Md = (function () {
            var d = [],
                b = function (a) {
                    return Wb(
                        c.jsLib.sortBy([a.x, a.y], function (a) {
                            return Vb(a);
                        })[0]
                    );
                },
                a;
            for (a in Da) {
                var e = Da[a];
                d.push({ cell: c.jsLib.evalPath(e, "spans.cell") || b(e), interval: c.jsLib.evalPath(e, "spans.interval") || Wb(e.interval), name: a });
            }
            return c.jsLib.sortBy(d, function (a) {
                return a.cell;
            });
        })(),
        Od = function (d) {
            var b = [],
                a = {},
                e = c.jsLib.evalPath;
            d = c.jsLib.map(d, function (a) {
                b.push(a.attributes);
                return c.jsLib.omit(a, ["attributes"]);
            });
            d = c.jsLib.merge.apply(c.jsLib, G([{}], d));
            c.jsLib.each(b, function (b) {
                var c, d;
                for (d in b) e(a, d + ".pop") && b[d].pop ? (c = a[d]).push.apply(c, G(b[d])) : (a[d] = b[d].pop ? b[d].slice(0) : b[d]);
            });
            for (var h in a) a[h].pop && (a[h] = a[h].join(""));
            d.attributes = a;
            return d;
        },
        Pd = function (d, b) {
            for (
                var a = d.length,
                    e,
                    h,
                    m,
                    f = function (a) {
                        return c.jsLib.def(a) && !c.jsLib.isNaN(a);
                    },
                    g = function (b) {
                        for (; b < a; b++) if (f(d[b])) return b;
                        return -1;
                    },
                    k = 0;
                k < a;
                k++
            )
                (m = d[k]), f(m) ? ((e = m), (h = k)) : ((m = g(k)), c.jsLib.def(h) && -1 < m ? (d[k] = c.mathLib.mapValue(e, d[m], h, m, k)) : b && (d[k] = 0));
            return d;
        },
        Lc = (function () {
            function d(b, a) {
                this.chart = b;
                this.chartOptions = a;
                this.userOptions = {};
                this.currentOptions = {};
                this.legendEntries = [];
                this.resetData().options(a.calendar || {});
            }
            d.prototype.resetData = function () {
                this.data = [];
                this.dateRange = [];
                this.dataInfo = { subValsMin: Number.MAX_VALUE, subValsMax: Number.MIN_VALUE };
                return this;
            };
            d.prototype.hasData = function () {
                return this.data && this.data.length;
            };
            d.prototype.options = function (b, a) {
                a = this.optionsGetter(b);
                if ("NotGetter" !== a) return a;
                c.jsLib.merge(this.userOptions, b);
                this.setOptions();
                return this;
            };
            d.prototype.optionsGetter = function (b) {
                var a = c.jsLib.getValType(b),
                    e = this.currentOptions;
                return "undefined" === a ? e : "string" === a ? c.jsLib.evalPath(e, b.replace(/_/g, ".")) : "NotGetter";
            };
            d.prototype.setOptions = function () {
                var b = this.chart.ctManager,
                    a = (this.currentOptions = c.jsLib.merge(this.defaultOptions(), this.userOptions)),
                    e = -1 < b.curCtDst().ct.explicit.indexOf("calendarType");
                a.view = e ? b.settingVal("calendarType") : a.view || "auto";
                this.fnSet = new Id(a.weekStart);
                a.view && this.setView(a.view);
                a.culture = this.chart.currentOptions.defaultCultureName || a.culture;
                this.isHoriz = this.chart.ctManager.isHoriz();
                return this;
            };
            d.prototype.defaultOptions = function () {
                return {
                    view: "auto",
                    calculation: "sum",
                    culture: "us-en",
                    weekStart: 0,
                    defaultEmptyPoint: {
                        mouseTracking: !1,
                        color: "#fff",
                        outline: { color: "#c9c9c9" },
                        hatch: { style: "dark-upward-diagonal", color: "#f0f0f0" },
                        legendEntry: { name: "No Data", value: " ", sortOrder: 1e3, cursor: "default" },
                    },
                    defaultEdgePoint: { color: "#fdfdfd", label: { color: "#dfdfdf" } },
                };
            };
            d.prototype.setRange = function (b, a) {
                this.range = [Q(b), Q(a)];
            };
            d.prototype.setView = function (b) {
                var a = b.toLowerCase(),
                    e = Da[a];
                -1 < Ld.indexOf(b) || ("auto" === b ? (this.groupingFns = this.groupings = this.view = c.undefVal) : ((this.view = a), this.setGroupings(e)));
            };
            d.prototype.setAutoView = function (b) {
                b = Nd(b[0], b[1], this.dataInfo.minInterval, this.currentOptions.view);
                this.setView(b);
            };
            d.prototype.setGroupings = function (b) {
                var a = this.fnSet,
                    e = b.x,
                    d = b.y,
                    m = b.z,
                    f = b.v,
                    g = b.interval;
                this.groupings = b;
                this.sortedGroupingNames = c.jsLib.sortBy([e, d], function (a) {
                    return Vb(a);
                });
                var k = {};
                k[b.interval] = "*";
                this.calPatInterval = new bb(k);
                this.groupingFns = { x: a.fn(e), y: a.fn(d), z: a.fn(m), v: a.fn(f), interval: a.fn(g) };
                this.formatters = { x: db, y: db, z: db };
                return this;
            };
            d.prototype.indexRawDataItem = function (b, a) {
                b = Q(b);
                var e = this.calPatInterval.isInside(b),
                    c = [this.groupingFns.x(b), this.groupingFns.y(b), b];
                this.addDataAt(e, c[0], c[1], { x: b, y: a });
                return c;
            };
            d.prototype.setData = function (b) {
                var a,
                    e,
                    d = this.currentOptions;
                this.rawData = b;
                this.resetData();
                if (b) {
                    var m = function (a) {
                        return !0;
                    };
                    if (d.range) {
                        var f = c.jsLib.map(d.range, Q);
                        m = function (a) {
                            return c.rangeLib.isValInsideInc(f, a);
                        };
                    }
                    d = [];
                    var g = Number.MAX_VALUE,
                        k = void 0,
                        l = void 0,
                        n = [];
                    try {
                        for (var p = B(b), r = p.next(); !r.done; r = p.next()) {
                            var q = r.value,
                                t = Q(q[0]);
                            !c.jsLib.isNaN(t) && m(t) && (d.push(t), c.jsLib.def(k) && ((l = t - k), (g = l < g ? l : g)), (k = t), n.push(q));
                        }
                    } catch (y) {
                        var u = { error: y };
                    } finally {
                        try {
                            r && !r.done && (a = p.return) && a.call(p);
                        } finally {
                            if (u) throw u.error;
                        }
                    }
                    this.dateRange = [R(oa(d, "min")), R(oa(d, "max"))];
                    this.dataInfo.minInterval = g;
                    !this.view && this.setAutoView(this.dateRange);
                    this.setViewRange(this.dateRange);
                    try {
                        for (var v = B(n), w = v.next(); !w.done; w = v.next()) (q = w.value), this.indexRawDataItem(q[0], q[1]);
                    } catch (y) {
                        var x = { error: y };
                    } finally {
                        try {
                            w && !w.done && (e = v.return) && e.call(v);
                        } finally {
                            if (x) throw x.error;
                        }
                    }
                } else d.range && this.setViewRange(d.range);
                return this;
            };
            d.prototype.setViewRange = function (b) {
                var a = this.fnSet,
                    e = a.fn(this.groupings.interval)(b[0]);
                e = a.reverseFn(this.groupings.interval)(b[0], e);
                var c = a.fn(this.groupings.interval)(b[1]);
                b = a.reverseFn(this.groupings.interval)(b[1], c + 1);
                b = R(Q(b) - 1);
                this.viewRange = [e, b];
                this.calPatInterval.setRange(e, b);
                return this;
            };
            d.prototype.addDataAt = function (b, a, e, d) {
                var h = this.data;
                c.jsLib.def(h[b]) || (h[b] = []);
                h = h[b];
                c.jsLib.def(h[a]) ? c.jsLib.def(h[a][e]) || (h[a][e] = []) : ((h[a] = []), (h[a][e] = []));
                h[a][e].push(d);
            };
            d.prototype.getDataAt = function (b, a, e, d) {
                var h = this.currentOptions,
                    f = h.calculation,
                    g = h.interpolateSubvalues;
                if ((b = this.data[b])) {
                    a = b[a] ? b[a][e] : void 0;
                    if (c.jsLib.def(a) && !a.grouped) {
                        var k = this.groupingFns.v,
                            l = 0,
                            n = [],
                            p = [];
                        d = [k(d[0]), k(d[1])];
                        for (e = d[0]; e < d[1] + 1; e++) n[e] = [];
                        c.jsLib.each(a, function (a) {
                            var b = k(a.x);
                            c.jsLib.def(p[b]) ? p[b].push(a.y) : ((p[b] = [a.y]), l++);
                            n[b].push(a.y);
                        });
                        var r = [];
                        c.jsLib.each(p, function (a, b) {
                            c.jsLib.def(a) && ((a = oa(a, f)), !c.jsLib.isNaN(a) && r.push(a));
                        });
                        a.grouped = c.jsLib.map(n, function (a) {
                            return oa(a, f, g || "sum" !== f ? NaN : 0);
                        });
                        a.groupCount = l;
                        g && (a.grouped = Pd(a.grouped, "sum" === f));
                        a.calc = oa(r, f);
                    }
                    return a;
                }
            };
            d.prototype.preGetPoints = function () {
                var b = this,
                    a = [],
                    e = [];
                c.jsLib.each(b.chart.userOptions.series, function (b) {
                    return a.push.apply(
                        a,
                        G(
                            c.jsLib.map(b.points, function (a) {
                                return b.defaultPoint ? c.jsLib.merge({}, a, b.defaultPoint || {}) : a;
                            })
                        )
                    );
                });
                c.jsLib.each(a, function (a) {
                    var d = a.date,
                        h = c.jsLib.getValType(d);
                    "object" !== h ? e.push([d.pop ? c.jsLib.map(d, R) : R(d), a]) : e.push([new bb("object" === h ? c.jsLib.expandOptionsProperties(d) : { date: d }, b), a]);
                });
                return e;
            };
            d.prototype.getPoints = function (b, a) {
                var e = this,
                    d = b || e.range,
                    m = e.formatters;
                b = e.calPatInterval.isInside(d[0]);
                var f = [],
                    g = e.hasData(),
                    k = function (a, b, d, h, k, l, n) {
                        var p = e.dataInfo,
                            q = p.pointSubValsMax,
                            r = p.subValsMin,
                            t = p.subValsMax,
                            u = Math.min.apply(Math, G(h)),
                            v = Math.max.apply(Math, G(h));
                        a = { name: m.pointName(l[0]), x: a, y: b, z: d, subvalue: { values: [h] }, attributes: { date: Q(l[0]), endDate: Q(l[1]), groupCount: k } };
                        c.jsLib.isNull(d) && !n && g && (c.jsLib.merge(a, e.currentOptions.defaultEmptyPoint), (a.tooltip || a.events) && delete a.mouseTracking);
                        n && c.jsLib.merge(a, c.jsLib.omit(n, ["x", "y"]));
                        n && !c.jsLib.def(n.z) && !c.jsLib.def(n.color) && c.jsLib.isNull(d) ? (a.color = "#ffffff") : n || g || (a.color = "#ffffff");
                        f.push(a);
                        p.pointSubValsMax = h.length > q ? h.length : q;
                        p.subValsMin = u < r ? u : r;
                        p.subValsMax = v > t ? v : t;
                    },
                    l = function (b) {
                        var e = new bb({ date: { range: b } }),
                            d = c.jsLib.filter(a, function (a) {
                                return a[0].pop ? c.rangeLib.intersect(b, a[0]) || a[0][1].getTime() === b[0].getTime() : a[0].isInside ? a[0].isInside(b[0]) : e.isInside(a[0]);
                            });
                        return 1 < d.length
                            ? ((d = c.jsLib.map(d, function (a) {
                                  return c.jsLib.omit(a[1], ["date"]);
                              })),
                              Od(d))
                            : d[0] && c.jsLib.omit(d[0][1], ["date"]);
                    };
                if (d) {
                    var n = function (a, b) {
                            return function (e) {
                                return d[1] - d[0] >= a ? [0, b] : e;
                            };
                        },
                        p = {
                            weekday: function (a) {
                                return 7 > Math.ceil((d[1] - d[0]) / cb) && a[0] < a[1] ? a : [0, 6];
                            },
                            hour: n(24 * Ub, 23),
                            minute: n(Ub, 59),
                            second: n(Jd, 59),
                        };
                    n = !1;
                    var r = [e.groupingFns.x(d[0]), e.groupingFns.x(d[1])],
                        q = [e.groupingFns.y(d[0]), e.groupingFns.y(d[1])];
                    p[e.groupings.x] && (r = p[e.groupings.x](r));
                    p[e.groupings.y] && (q = p[e.groupings.y](q));
                    for (
                        var t = function (a) {
                                a = R(this.options("attributes.date"));
                                c.rangeLib.isValInsideInc(e.dateRange, a) && this.chart.zoom(a);
                            },
                            u = r[0];
                        u <= r[1];
                        u++
                    )
                        for (var v = q[0]; v <= q[1]; v++) {
                            var w = e.xyToDate(u, v, d[0]);
                            if (c.rangeLib.isValInsideInc(d, w[0]))
                                if ((p = e.getDataAt(b, u, v, w))) {
                                    var x = p.calc;
                                    k(u, v, p.calc, p.grouped, p.groupCount, w, l(w));
                                    !c.jsLib.isNaN(x) && e.zVals.push(x);
                                } else k(u, v, null, [], 0, w, l(w)), (n = !0);
                            else k(u, v, null, [], 0, w, c.jsLib.merge({ nativeClick: t }, e.currentOptions.defaultEdgePoint));
                        }
                    e.hasEmptyPoints = n;
                }
                return f;
            };
            d.prototype.getSeries = function () {
                var b,
                    a = this.currentOptions,
                    e = this.preGetPoints();
                this.zVals = [];
                this.dataInfo.pointSubValsMax = 0;
                this.setFormatting();
                var d = this.formatters,
                    m = this.calPatInterval.intervalRanges,
                    f = [];
                a = a.initial ? R(a.initial) : c.undefVal;
                try {
                    for (var g = B(m), k = g.next(); !k.done; k = g.next()) {
                        var l = k.value;
                        f.push({ name: d.seriesName(R(l[0])), visible: !1, attributes: { date: l[0], endDate: l[1], maxSubVals: this.dataInfo.pointSubValsMax }, points: this.getPoints(l, e) });
                        if (a && c.rangeLib.isValInsideInc(l, a)) var n = (f[f.length - 1].visible = !0);
                    }
                } catch (r) {
                    var p = { error: r };
                } finally {
                    try {
                        k && !k.done && (b = g.return) && b.call(g);
                    } finally {
                        if (p) throw p.error;
                    }
                }
                (a && n) || ((f[0].visible = !0), (f[0].legendEntry = { initialCursor: "default" }));
                this.dataInfo.zValRange = [Math.min.apply(Math, G(this.zVals)), Math.max.apply(Math, G(this.zVals))];
                return f;
            };
            d.prototype.xyToDate = function (b, a, e) {
                var d = this.sortedGroupingNames[1],
                    m = this.sortedGroupingNames[0],
                    f = this.groupings.x === d,
                    g = f ? b : a;
                b = f ? a : b;
                d = this.fnSet.reverseFn(d);
                m = this.fnSet.reverseFn(m);
                e = Q(c.jsLib.pick(e, this.range ? this.range[0] : this.dateRange[0]));
                e = d(e, g);
                return [m(e, b), R(Q(m(e, b + 1)) - 1)];
            };
            d.prototype.setFormatting = function () {
                var b = this,
                    a = b.currentOptions,
                    e = b.groupings,
                    d = c.jsLib.evalPath(e, "format.series"),
                    m = c.jsLib.evalPath(e, "format.point"),
                    f = b.options("seriesFormat"),
                    g = b.options("pointFormat"),
                    k = function (b) {
                        var e = new c.formatting.Formatter(a.culture || "en-US", b);
                        return function (a) {
                            return e.formatDate(R(a), {});
                        };
                    },
                    l = function (b) {
                        var e = new c.formatting.Formatter(a.culture || "en-US", b);
                        return function (a) {
                            return e.formatDate(R(a), b);
                        };
                    },
                    n = function (a) {
                        return "week" === a
                            ? function (e) {
                                  return "Week " + b.fnSet.fn(a)(e);
                              }
                            : k(c.timeLib.unitToFormatOptions(a));
                    },
                    p = function (a) {
                        return c.jsLib.merge.apply(c.jsLib, G(c.timeLib.unitListToFormatOptions(a.split(","))));
                    };
                d = f ? l(f) : d ? k(p(d)) : n(e.interval);
                e = g ? l(g) : m ? k(p(m)) : n(e.z);
                b.formatters = { seriesName: d, pointName: e };
            };
            d.prototype.getAxisOptions = function () {
                var b = this,
                    a = b.currentOptions,
                    e = b.groupings,
                    d = a.weekStart,
                    m = { x: Ca(e.x), y: Ca(e.y) },
                    f = function (b, e) {
                        var d = !c.jsLib.isString(b);
                        return new c.formatting.Formatter(a.culture || "en-US", d ? b : c.timeLib.unitToFormatOptions(b, e));
                    },
                    g = f("hour"),
                    k = f("minute", !0),
                    l = function (a, e, c) {
                        var d = f(e);
                        return function (h) {
                            return d.formatDate(c ? c(h) : b.fnSet.reverseFn(e)(a, h), {});
                        };
                    },
                    n = {
                        year: {},
                        month: {},
                        week: (function () {
                            for (var a = f("month"), e = b.fnSet.fn("week"), d = Q(b.viewRange[0]), h = [], g = 0; 12 > g; g++) {
                                var k = c.timeLib.addTimeInterval(d, c.jsLib.def(void 0) ? { unit: "month", multiplier: void 0 } : { unit: "month" });
                                k = Q(k);
                                var m = [e(R(d)), e(R(Q(k) - 1))];
                                h.push({ value: Math.floor((m[0] + m[1]) / 2), label: { text: a.formatDate(R(d), {}) } });
                                d = k;
                            }
                            return { defaultTick: { enabled: !1, line: { length: 0 }, gridLine: { width: 0 } }, customTicks: h };
                        })(),
                        weekday: (function () {
                            var a = f("weekday"),
                                b = [],
                                e = Q("4/1/2018");
                            e += d * cb;
                            for (var h = 0; 7 > h; h++) b.push(a.formatDate(R(e), {})), (e += cb);
                            return {
                                defaultTick: { line: { length: 0 }, gridLine: { width: 0 } },
                                customTicks: c.jsLib.map(b, function (a, b) {
                                    return { value: b, label: { text: a } };
                                }),
                            };
                        })(),
                        hour: {
                            scale: { interval: 3 },
                            defaultTick: {
                                label: {
                                    text: function (a) {
                                        return g.formatDate(new Date(2020, 0, 1, a), {});
                                    },
                                },
                            },
                        },
                        minute: {
                            scale: { interval: 10 },
                            defaultTick: {
                                label: {
                                    text: function (a) {
                                        return k.formatDate(new Date(2020, 0, 1, 0, a), {});
                                    },
                                },
                            },
                        },
                        hidden: { defaultTick: { enabled: !1 } },
                    },
                    p = function (a) {
                        var b = e[a],
                            d = c.jsLib.evalPath(e, "format." + a),
                            h = d || {},
                            f = c.jsLib.isString(h);
                        if (d || (!c.jsLib.isString(b) && !f)) {
                            var g = function (a) {
                                return a;
                            };
                            if ("hidden" === h || (b.mul && b.mod && !h.toDate)) return n.hidden;
                            !b.mul ||
                                b.mod ||
                                h.toDate ||
                                (g = function (a) {
                                    return a * b.mul;
                                });
                            var k = l(R("1/1/2020"), h.unit || m[a], h.toDate);
                            a = {
                                defaultTick: {
                                    label: {
                                        text: function (a) {
                                            return k(g(a));
                                        },
                                    },
                                },
                            };
                            h.interval && c.jsLib.setPathVal(a, "scale.interval", h.interval);
                            return a;
                        }
                        return n[f ? h : b];
                    };
                return { x: p("x"), y: p("y") };
            };
            d.prototype.updateChart = function (b) {
                var a = this,
                    e = this.chart,
                    d = this.currentOptions,
                    m = this.isHoriz,
                    f = !!b.data,
                    g = !!d.range,
                    k = !!e.userOptions.series,
                    l = this.dataInfo;
                b = b || e.currentOptions;
                e.dirty = !0;
                if (f || g || k) {
                    l = void 0;
                    e.isRendered &&
                        ((l =
                            (l = e.series().find(function (a) {
                                return a.isVisible;
                            })) && c.jsLib.evalPath(l.currentOptions, "attributes.date")),
                        (this.currentOptions.initial = l));
                    var n = c.jsLib.evalPath(e, "data.val");
                    this.setData(n || b.data);
                    l = this.dataInfo;
                    g || f || !k || ((g = Oc(b)) && this.setViewRange(g));
                    k = this.getSeries();
                    g = this.getAxisOptions();
                    b.series = k;
                    n || (b.data && b.data.length)
                        ? ((l = l.zValRange), (n = Math.abs), (n = Math.max(n(l[0]), n(l[1]))), (l = Math.min.apply(Math, G(l))), (b.palette = c.palettes.getPaletteConfig(b.palette, [l, n])))
                        : b.palette || (b.palette = ["#ffffff"]);
                    c.jsLib.merge(b, g);
                    l = function () {
                        return { alternateGridFill: "none", originTick: { enabled: !1 }, defaultTick: { gridLine: { width: 0 } }, line: { width: 0 } };
                    };
                    n = { orientation: "top" };
                    k = { scale: { invert: !0 } };
                    e.typeContextOptions = {
                        axes: c.jsLib.merge(g, { x: c.jsLib.merge(m ? k : n, l()), y: c.jsLib.merge(m ? n : k, l()) }),
                        legend: {
                            defaultEntry: {
                                value: d.calculation ? "%" + d.calculation : c.undefVal,
                                style: { fontWeight: "bold" },
                                states: { hidden: { style: { fontWeight: "normal" } }, hover: { style: { fontWeight: "normal" } } },
                                events: {
                                    mouseOver: function (a) {
                                        return !1;
                                    },
                                },
                            },
                        },
                        chartArea: { clipContent: !1 },
                        chart: {
                            palette: b.palette,
                            defaultSeries: {
                                shape: { innerPadding: "1px" },
                                legendEntry: { visible: !0, value: f ? "%z" + this.currentOptions.calculation : " " },
                                defaultPoint: { legendEntry: { visible: !1 }, tooltip: Mc(this), label: { text: Nc(this), autoHide: !0, padding: 5 } },
                            },
                        },
                    };
                    e.isRendered &&
                        e.axes().each(function (b) {
                            b.defaultContextOptions = c.jsLib.evalPath(a.chart, "typeContextOptions.axes." + b.prefix) || {};
                            b.ticks().remove(!1);
                        });
                    d = void 0;
                    b = e.userOptions.highlights = e.userOptions.highlights || [];
                    b.length &&
                        (d = c.jsLib.find(b, function (a) {
                            return a.isDefault;
                        })) &&
                        c.jsLib.removeArrItem(b, d);
                    (d = Da[this.view].defPattern) && b.unshift({ isDefault: !0, pattern: d, outline: {} });
                    pa(e, !1);
                } else c.emitter.emit("error", "initCal", "calNoData", { container: e.getWrapper() });
            };
            d.prototype.syncLegendEntries = function (b) {
                var a,
                    e = (a = this.legendEntries).length;
                if (this.hasEmptyPoints && this.hasData())
                    return (
                        e
                            ? c.jsLib.each(a, function (a) {
                                  return a.setColumns();
                              })
                            : (a.push((b = b.addEntry(new c.EntryWrapper(b.chart, this.currentOptions.defaultEmptyPoint)))), b.setColumns(), (this.legendEntries = a)),
                        a
                    );
                e && a.shift().destroy();
            };
            return d;
        })(),
        Pc = (function (d) {
            function b(a, b, c) {
                void 0 === c && (c = []);
                b = d.call(this, a, b, c) || this;
                b.chart = a;
                return b;
            }
            K(b, d);
            b.prototype.defaultOptions = function () {
                return c.jsLib.merge({ outline: { width: 1, color: "#353535" }, empty: { opacity: 0.3 } }, this.chart.userOptions.defaultHighlight);
            };
            b.prototype.render = function (a, b) {
                this.chart.series().each(function (a) {
                    a.isVisible && a.visualizer.renderPatternHighlights && a.visualizer.renderPatternHighlights(b);
                });
                return this;
            };
            b.prototype.items = function () {
                var a = [];
                c.jsLib.each(this.itemSets, function (b) {
                    return a.push.apply(a, G(b));
                });
                return new c.UpdatablesCollection(a);
            };
            b.prototype.updateItemSet = function (a, b) {
                this.itemSets = this.itemSets || {};
                this.itemSets[a] = b;
            };
            b.prototype.asEmpty = function (a) {
                return c.jsLib.merge(a, this.currentOptions.empty);
            };
            b.prototype.remove = function (a) {
                var b = this;
                a = this.chart;
                var d = a.userOptions,
                    m = a.currentOptions,
                    f = a._highlights.indexOf(this),
                    g = function (a) {
                        c.jsLib.remove(a.highlights, function (a) {
                            return a.id === b.id;
                        });
                    };
                g(d);
                g(m);
                a._highlights.splice(f, 1);
                this.render();
            };
            b.prototype.setRootVisuals = function () {
                return this;
            };
            return b;
        })(c.BaseChartItem),
        ca = Math.PI,
        Qd = {
            radialGradient: {},
            stops: [
                [0, "black", 0.4],
                [0.1, "black", 0.4],
                [1, "black", 0],
            ],
        },
        Rd = c.jsLib.plainArray("start end transform animation fill stroke".split(" ")),
        Td = (function (c) {
            function b() {
                return (null !== c && c.apply(this, arguments)) || this;
            }
            K(b, c);
            b.prototype.applierType = function () {
                return Sd;
            };
            b.prototype.bbox = function () {
                return this.attrApplier.bbox();
            };
            b.prototype.hitTest = function (a, b) {
                return this.attrApplier.hitTest && this.attrApplier.hitTest(a, b);
            };
            return b;
        })(c.CompositeElement),
        Sd = (function (d) {
            function b() {
                var a = (null !== d && d.apply(this, arguments)) || this;
                a._pathObjects = [];
                return a;
            }
            K(b, d);
            b.prototype.animAttrs = function () {
                return Rd;
            };
            b.prototype.registerPathObj = function (a, b) {
                a = c.pathLib.fromString(a);
                return (this._pathObjects[b] = a);
            };
            b.prototype.getPathObj = function (a) {
                return this._pathObjects[a];
            };
            b.prototype.clearPathObjList = function () {
                this._pathObjects = [];
            };
            b.prototype.constructChildren = function (a) {
                var b,
                    d = this,
                    m = c.jsLib.pick(a["stroke-width"], 1);
                d._cornerR = void 0;
                var f = [];
                d.clearPathObjList();
                var g = c.colorLib.toHexOpacity(c.colorLib.simplify(a.fill)),
                    k = function (a) {
                        a = c.jsLib.merge({}, a);
                        "gap" === a.caps.start && (a.caps.start = "flat");
                        "gap" === a.caps.end && (a.caps.end = "flat");
                        return a;
                    },
                    l = function (a) {
                        a.omit = ["key"];
                        f.push(a);
                    };
                if (a.r - a.innerR && "none" !== a.fill && 0 !== g.opacity) {
                    g = void 0;
                    a.breaks && ((g = d.applyBreaks(a)), (g = (null === (b = g) || void 0 === b ? 0 : b.length) ? g : void 0));
                    var n = d.splitArcs(g || [a], ca / 4),
                        p = c.jsLib.map(n, function (a) {
                            return Ta(c.shapeLib.arc(a.cxy[0], a.cxy[1], a.r, a.r, a));
                        }),
                        r = "solid" !== a.shading || a.fill.stops ? d.arcsToGradients(n, a) : [];
                    b = n[0];
                    g = c.jsLib.last(n);
                    b = b.inverted ? b.end : b.start;
                    var q = g.inverted ? g.start : g.end;
                    g = q - b;
                    var t = 0 > g;
                    g = Math.abs(g) > 2 * ca - 0.8 * vb(a);
                    var u = d.shadowClip(a, { start: b, end: q, autoShadow: g, inverted: t });
                    c.jsLib.each(p, function (b, e) {
                        if ((e === p.length - 1 || 1 === p.length) && u)
                            if ("round" !== c.jsLib.evalPath(a, "caps.end")) {
                                var h = Ja({ start: q, end: q + 0.08, r: a.r, innerR: a.innerR }, 0);
                                l({
                                    key: "sh" + e,
                                    fill: {
                                        linearGradient: t ? [h[2], h[3], h[0], h[1]] : h,
                                        stops: [
                                            [0, "black", 0.2],
                                            [0.1, "black", 0.2],
                                            [1, "black", 0],
                                        ],
                                    },
                                    d: u,
                                });
                            } else (h = N(c.trigLib.gpp(a.cxy, q, (a.r + a.innerR) / 2), 2)), l({ key: "shadow" + e, elType: "circle", cx: h[0], cy: h[1], r: ((a.r - a.innerR) / 2) * 1.5, fill: Qd, clipPath: u });
                        h = "f" + e;
                        var f = r[e] ? d.arcPathToGradient(n[e], b, r[e], h) : a.fill,
                            g = n[e];
                        g = Ta(c.shapeLib.arc(g.cxy[0], g.cxy[1], g.r, g.r, k(g)));
                        l({ key: h, d: g, fill: f, stroke: "none" });
                        a.stroke && l({ key: "s" + e, d: b, fill: "none", "stroke-width": m, stroke: a.stroke });
                    });
                    b = 1 === n.length ? !1 : t;
                    d._outlinePath = Ta(
                        c.shapeLib.arc(a.cxy[0], a.cxy[1], a.r, a.r, g ? { innerR: a.innerR, start: 0, end: 2 * ca } : { r: a.r, innerR: a.innerR, cxy: a.cxy, start: b ? a.end : a.start, end: b ? a.start : a.end, caps: a.caps })
                    );
                }
                d.bindConfig(f);
            };
            b.prototype.hitTest = function (a, b) {
                for (var e in this._pathObjects) if (this._pathObjects[e].hitTest && this._pathObjects[e].hitTest(a, b)) return !0;
            };
            b.prototype.outlinePath = function () {
                return this._outlinePath;
            };
            b.prototype.bbox = function () {
                var a,
                    b = [];
                for (a in this._pathObjects) b.push(this._pathObjects[a].bbox());
                return c.bboxLib.bboxUnion(b);
            };
            b.prototype.applyBreaks = function (a) {
                var b = a.breaks,
                    d = a.start,
                    m = a.end,
                    f = a.caps,
                    g = a.r,
                    k = a.innerR,
                    l = a.cxy,
                    n = Math.abs(m - d) / (2 * ca);
                a = vb(a) / (2 * ca) + 0.01;
                a = c.jsLib.pick(b.gap, a / n);
                var p = [];
                a = c.rangeLib.positionsToPadRanges(b.intervals, [0, 1], a);
                Rc(a) || ((a = c.rangeLib.positionsToPadRanges(b.intervals, [0, 1], 0.01 / n)), (this._cornerR = g - k));
                b.invert || (a = c.rangeLib.invert(a, [0, 1]));
                c.jsLib.each(a, function (a) {
                    var b = c.mathLib.mapValue(d, m, 0, 1, a[0]),
                        e = c.mathLib.mapValue(d, m, 0, 1, a[1]);
                    p.push({ r: g, innerR: k, cxy: l, start: b, end: e, caps: f, pos: a });
                });
                return p.length ? p : void 0;
            };
            b.prototype.splitArcs = function (a, b) {
                var e = [];
                c.jsLib.each(a, function (a) {
                    return e.push.apply(e, G(Qc(a, b)));
                });
                this._cornerR && this.applyMinCornerR(e);
                return e;
            };
            b.prototype.applyMinCornerR = function (a) {
                var b = [];
                if (this._cornerR) {
                    for (var d in a) {
                        var m = a[d];
                        b.push(c.shapeLib.arcCornerR(m.r, m.innerR, m.start, m.end, this._cornerR).cornerR);
                    }
                    var f = Math.min.apply(Math, G(b)),
                        g = function (a) {
                            return "gap" === a ? "gap" : "round" === a ? "cornerR" : "flat";
                        };
                    for (d in a) (b = a[d]), (m = b.caps), (b.cornerR = f), (b.caps = { start: g(m.start), end: g(m.end) });
                }
            };
            b.prototype.arcsToGradients = function (a, b) {
                var e = Math.abs((b.end - b.start) / (2 * ca)),
                    d = c.colorLib.toHexOpacity(c.colorLib.simplify(b.fill)).hex,
                    f = b.altColor || c.colorLib.toHexOpacity(c.colorLib.modifyColor(c.colorLib.colorMods.hueEffect, d)).hex,
                    g = [0, e],
                    k = function (a) {
                        return c.colorLib.tween(d, f, 100 * c.mathLib.mapValue(g[0], g[1], 0, 1, a));
                    },
                    l;
                if ((l = b.fill.stops)) {
                    var n = c.jsLib.map(l, function (a) {
                        return a[0];
                    });
                    k = function (a) {
                        for (var b, e, d = 0, h = l.length; d < h; d++)
                            if (d && ((e = l[d]), (b = l[d - 1]), a >= b[0] && a <= e[0]))
                                return (a = c.mathLib.mapValue(0, 1, b[0], e[0], a)), c.colorLib.tween(c.colorLib.toHexOpacity(b[1]).hex, c.colorLib.toHexOpacity(e[1]).hex, 100 * a);
                        b = l[l.length - 1];
                        if (a > b[0]) return b[1];
                    };
                }
                b = function (a) {
                    a = a.slice(0);
                    var b = a[1] - a[0];
                    a[0] += 0.01 * b;
                    a[1] -= 0.01 * b;
                    b = a.slice(0);
                    for (var e = 0, d = n.length; e < d; e++) {
                        var h = n[e];
                        h > a[0] && h < a[1] && b.push(h);
                    }
                    return c.jsLib.sortBy(b);
                };
                e = [];
                for (var p = 0, r = a.length; p < r; p++) {
                    var q = a[p];
                    e[p] = q.colors = c.jsLib.map(l ? b(q.pos) : q.pos, function (a) {
                        return k(a);
                    });
                    e[p].push(c.trigLib.toDegrees(q.start + (q.end - q.start) / 2) + 90);
                }
                return e;
            };
            b.prototype.arcPathToGradient = function (a, b, d, m) {
                d = c.colorLib.parseJscFill(d);
                var e = (a.innerR / a.r + 1.8) / 3;
                b = this.registerPathObj(b, m);
                b = Ja(a, 0, { widthFactor: e, pathObj: b });
                d.linearGradient = a.inverted ? [b[2], b[3], b[0], b[1]] : b;
                return d;
            };
            b.prototype.shadowClip = function (a, b) {
                if (!1 !== a.shadow) {
                    var e = a.cxy,
                        d = a.r,
                        f = a.innerR,
                        g = a.caps,
                        k = b.end,
                        l = b.inverted;
                    if (b.autoShadow || a.shadow)
                        return (
                            (a = k + 0.08 * (l ? -1 : 1)),
                            (b = N("round" === g.end ? ["insideround", "round"] : ["", ""], 2)),
                            (g = b[0]),
                            (b = b[1]),
                            (k = N(l ? [a, k, b, g] : [k, a, g, b], 4)),
                            c.pathLib.fromString(c.shapeLib.arc(e[0], e[1], d, d, { r: d, innerR: f, cxy: e, start: k[0], end: k[1], caps: { start: k[2], end: k[3] } }))
                        );
                }
            };
            return b;
        })(c.CompositeAttrApplier),
        Va = { padding: 0, stroke: "#4b4b4b", none: "none", axisMarkerColor: "gray", markerRadius: 3, dataDelimiter: /[ ,]/, colorsDelimiter: /(?=[^\d.]),(?=[^\d.])/ },
        ea = (function () {
            function d(b, a) {
                var e = this;
                this.currentOptions = { data: [] };
                this.elements = [];
                this.defaults = Va;
                this.getColor = function (a) {
                    var b = e.currentOptions;
                    return b.colors && b.colors[a];
                };
                this.allColors = function () {
                    return e.currentOptions.colors || [];
                };
                this.renderer = b;
                this.palette = c.palettes.getPalette("default");
                this.options(a);
            }
            d.prototype.updateOptions = function (b) {
                c.jsLib.extend(this.currentOptions, this.normalizeOptions(b));
            };
            d.prototype.options = function (b, a) {
                this.updateOptions(b);
                b = this.currentOptions;
                var c = this.defaultSize();
                b = { width: parseInt(b.width || b.size || c.width), height: parseInt(b.height || b.size || c.height) };
                this.render(b, a);
            };
            d.prototype.fixedSize = function () {
                return { width: void 0, height: void 0 };
            };
            d.prototype.max = function (b) {
                return this.extremum(b, function (a, b) {
                    return a > b;
                });
            };
            d.prototype.min = function (b) {
                return this.extremum(b, function (a, b) {
                    return a < b;
                });
            };
            d.prototype.extremum = function (b, a) {
                for (var c = b[0], d = 1, m = b.length; d < m; d++) {
                    var f = b[d];
                    !this.isEmptyValue(f) && a(f, c) && (c = f);
                }
                return c;
            };
            d.prototype.isEmptyValue = function (b) {
                return null === b || void 0 === b || b !== b;
            };
            d.prototype.parseData = function (b) {
                return Ua(b);
            };
            d.prototype.normalizeOptions = function (b) {
                var a = b.data,
                    e = b.colors,
                    d = b.axisMarker,
                    m = b.snapToZero,
                    f = b.antialias,
                    g = b.size,
                    k = b.rotate,
                    l = b.radius;
                a && (a.length ? (b.data = this.parseData(a)) : c.jsLib.isNumber(a) && (b.data = [a]));
                e && c.jsLib.isString(e) && (b.colors = e.split(Va.colorsDelimiter));
                (a = b.padding) && c.jsLib.isString(a) ? (b.padding = parseInt(a)) : a && c.jsLib.isArray(a) && (b.padding = parseInt(a[0]));
                c.jsLib.def(d) && (c.jsLib.isString(d) ? (b.axisMarker = Ua(d)) : c.jsLib.isNumber(d) ? (b.axisMarker = [d]) : c.jsLib.isArray(d) && d.length && (b.axisMarker = d));
                c.jsLib.def(m) && (b.snapToZero = "true" === m || !0 === m);
                c.jsLib.def(f) && (b.antialias = "true" === f || !0 === f);
                c.jsLib.def(k) && (b.rotate = parseFloat(k) || 0);
                c.jsLib.def(l) && (b.radius = parseFloat(l) || 0);
                c.jsLib.def(g) && c.jsLib.isString(g) && -1 < g.indexOf("x") && ((d = g.split("x")), (b.width = b.width || d[0]), (b.height = b.height || d[1]), delete b.size);
                return b;
            };
            d.prototype.primaryColor = function () {
                return this.getColor(0) || this.currentOptions.color || this.palette[0];
            };
            d.prototype.stroke = function () {
                return this.currentOptions.stroke || this.defaults.stroke;
            };
            d.prototype.secondaryColor = function () {
                return this.getColor(1) || this.palette[1];
            };
            d.prototype.axisMarkerColor = function () {
                return this.getColor(3) || this.defaults.axisMarkerColor;
            };
            d.prototype.addShading = function (b, a) {
                switch (parseInt(a)) {
                    case 1:
                        var e = c.colorLib.cushionEffect(b, [0, 0.25]);
                        break;
                    case 2:
                        e = c.colorLib.aquaEffect(b, !0);
                        break;
                    case 3:
                        e = c.colorLib.roundedEffect(b, !0);
                        break;
                    case 4:
                        e = c.colorLib.modifyFill("jumpButton", b);
                        break;
                    case 5:
                        e = c.colorLib.modifyFill("titleBox", b);
                }
                return e || b;
            };
            d.prototype.padding = function () {
                var b = this.currentOptions.padding || this.defaults.padding;
                0 < b && 1 > b && (b = Math.floor(b * Math.max(this.width, this.height)));
                return b;
            };
            d.prototype.defaultSize = function () {
                return { width: 80, height: 20 };
            };
            d.prototype.render = function (b, a, e) {
                var d = this.currentOptions;
                this.gWrapper ||
                    ((this.gWrapper = this.renderer.element("g")),
                    d.tooltip &&
                        (this.renderer.element("title").attr({ text: d.tooltip }).add(this.gWrapper),
                        (this.hoverRect = this.renderer.element("rect").attr({ width: b.width, height: b.height, fill: "transparent", strokeWidth: 0 }).add(this.gWrapper))));
                d = d.rotate;
                var m = this.width !== b.width || this.height !== b.height,
                    f = d !== this.angle;
                if (c.jsLib.def(d) && 0 !== d && (f || m)) {
                    f = b.width;
                    var g = b.height;
                    f = c.bboxLib.rotatedAt([0, 0, f, g], [d, f / 2, g / 2]);
                    this.rotatedWidth = f[2];
                    this.rotatedHeight = f[3];
                    this.gWrapper.attr({ rotate: [d, Math.round(b.width / 2), Math.round(b.height / 2)], translate: [-f[0], -f[1]] });
                    this.angle = d;
                }
                (m || a) && this.renderData(b, e);
            };
            d.prototype.getChartData = function (b, a) {
                return { elements: [] };
            };
            d.prototype.getAxisMarkerElement = function (b, a, e, d) {
                var h = this.currentOptions.axisMarker,
                    f = h[0] || 0,
                    g = h[1];
                h = c.jsLib.def(g) && null !== g;
                f = Math.round(((b - f) * d) / (b - a)) + 0.5;
                b = h ? Math.round(((b - g) * d) / (b - a)) + 0.5 : f + 1;
                return this.renderer.path({
                    d: "M 0.5 " + f + " L " + (Math.floor(e) + 0.5) + " " + f + " L " + (Math.floor(e) + 0.5) + " " + b + " L 0.5 " + b + " Z",
                    strokeWidth: 0,
                    stroke: this.defaults.none,
                    opacity: h ? 0.6 : 0.9,
                    fill: this.axisMarkerColor(),
                });
            };
            d.prototype.correctSize = function (b, a) {
                return 0 < b && 0 < a;
            };
            d.prototype.renderData = function (b, a) {
                var e = this,
                    d = b.width,
                    m = b.height;
                if (e.correctSize(d, m)) {
                    e.width = d;
                    e.height = m;
                    c.jsLib.each(e.elements, function (a) {
                        return a.destroy();
                    });
                    this.updateBackground(d, m);
                    if ((d = e.getChartData(d, m)))
                        (m = d.size),
                            e.rotatedWidth && ((m = m || {}), (m = c.jsLib.extend(m, { width: e.rotatedWidth, height: e.rotatedHeight })), (e.height = m.height), (e.width = m.width)),
                            a && a(m),
                            (e.elements = d.elements),
                            c.jsLib.each(e.elements, function (a) {
                                return a.add(e.gWrapper);
                            });
                    e.hoverRect && e.hoverRect.attr(b);
                }
            };
            d.prototype.add = function (b) {
                this.gWrapper.add(b);
                return this;
            };
            d.prototype.getElement = function () {
                return this.gWrapper && this.gWrapper.el;
            };
            d.prototype.pixelCorrection = function (b) {
                var a = this.currentOptions.rotate;
                (a && a % 90) ||
                    (a ? ((a = this.gWrapper.attr("transform").translate || [0, 0]), (a = N(c.snapPixels([a[0], a[1], 0, 0], 1, b), 2)), (b = a[0]), (a = a[1])) : ((a = N(c.snapPixels([0, 0, 0, 0], 1, b), 2)), (b = a[0]), (a = a[1])),
                    this.gWrapper.attr({ translate: [b, a] }));
            };
            d.prototype.rectPath = function (b, a, c, d, m) {
                void 0 === m && (m = [0, 0, 0, 0]);
                var e = m[0],
                    h = m[1],
                    k = m[2];
                m = m[3];
                return (
                    "M" +
                    (b + e) +
                    "," +
                    a +
                    "h" +
                    (c - h - e) +
                    (h ? "a" + h + "," + h + " 0 0 1 " + h + "," + h : "") +
                    "v" +
                    (d - k - h) +
                    (k ? "a" + k + "," + k + " 0 0 1 " + -k + "," + k : "") +
                    "h" +
                    (m + k - c) +
                    (m ? "a" + m + "," + m + " 0 0 1 " + -m + "," + -m : "") +
                    "v" +
                    (e + m - d) +
                    (e ? "a" + e + "," + e + " 0 0 1 " + e + "," + -e : "") +
                    "z"
                );
            };
            d.prototype.updateBackground = function (b, a) {
                var c = this.currentOptions;
                if (c.fill || c.outline) (b = { d: "M .5 .5 l " + b + " 0 l 0 " + a + " l " + -b + " 0 Z", fill: c.fill }), this.background ? this.background.attr(b) : (this.background = this.renderer.path(b).add(this.gWrapper));
            };
            d.prototype.destroy = function () {
                var b = this.gWrapper;
                b = b && b.el && b.el.parentNode;
                c.jsLib.each(this.elements, function (a) {
                    return a.destroy();
                });
                this.gWrapper.destroy();
                b && "svg" === b.tagName && b.parentNode.removeChild(b);
            };
            return d;
        })(),
        Xb = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.primaryColor = function () {
                return this.defaults.none;
            };
            b.prototype.stroke = function () {
                return this.getColor(0) || this.currentOptions.color || this.defaults.stroke;
            };
            b.prototype.complexPath = function (a, b, c) {
                return [this.renderer.path({ d: a, strokeWidth: 1, stroke: this.stroke(), fill: this.primaryColor() })];
            };
            b.prototype.axisMarkerColor = function () {
                return this.getColor(3) || this.palette[0];
            };
            b.prototype.getChartData = function (a, b) {
                var d = this,
                    e = this,
                    f = e.currentOptions.data || [],
                    g = f.length,
                    k = [];
                if (!f || 2 > g) return { elements: k };
                var l = this.currentOptions,
                    n = parseFloat(l.max),
                    p = parseFloat(l.min);
                l = l.axisMarker ? f.concat(l.axisMarker) : f;
                var r = c.jsLib.isNaN(n) ? e.max(l) : n,
                    q = c.jsLib.isNaN(p) ? e.min(l) : p,
                    t = a / (g - 1);
                p = e.allColors();
                n = p[1];
                p = p[2];
                var u = r === q;
                0 < r && 0 > q && ((l = Math.round((r * b) / (r - q))), k.push(this.renderer.path({ d: "M 0 " + l + " L " + a + " " + l, strokeWidth: 0.3, stroke: this.axisMarkerColor(), opacity: 0.6, fill: this.defaults.none })));
                var v = "",
                    w = [],
                    x = [],
                    y;
                c.jsLib.each(f, function (c, d) {
                    if (e.isEmptyValue(c)) d === g - 1 && (v += "L " + a + " " + y + " ");
                    else {
                        var f = v ? "L" : "M",
                            h = Math.floor(d * t) + 0.5,
                            k = c < q ? q : c > r ? r : c;
                        y = Math.round(u ? (0 === r ? b : b / 2) : ((r - k) * b) / (r - q));
                        v += f + " " + h + " " + y + " ";
                        0 === d && (w[0] = { x: h, y: y });
                        d === g - 1 && (w[1] = { x: h, y: y });
                        u || (c === r && (x[0] = { x: h, y: y }), c === q && (x[1] = { x: h, y: y }));
                    }
                });
                f = this.complexPath(v, a, b);
                k.push(f[0]);
                f[1] && k.push(f[1]);
                (l = e.currentOptions.axisMarker) && l.length && k.push(e.getAxisMarkerElement(r, q, a, b));
                var z = "";
                l = function (c, f) {
                    var h = d.defaults.markerRadius + 1,
                        g = c.x;
                    c = c.y;
                    k.push(e.renderer.circle(g, c, d.defaults.markerRadius).attr({ fill: f }));
                    z = z || "M -1 -1 l " + (a + 2) + " 0 l 0 " + (b + 2) + " l " + (-a - 2) + " 0 l 0 " + (-b - 2);
                    z += "M " + (g - h) + ", " + c + " A " + h + "," + h + " 0 1,0 " + (g + h) + "," + c + " A " + h + "," + h + " 0 1,0 " + (g - h) + "," + c;
                };
                n && n !== this.defaults.none && (l(w[0], n), l(w[1], n));
                p && p !== this.defaults.none && !u && (l(x[0], p), l(x[1], p));
                z && f[0].attr({ clipPath: z });
                z && f[1] && f[1].attr({ clipPath: z });
                return { elements: k };
            };
            return b;
        })(ea),
        Ud = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.primaryColor = function () {
                return this.getColor(0) || this.currentOptions.color || this.palette[0];
            };
            b.prototype.complexPath = function (a, b, d) {
                return [
                    this.renderer.path({ d: a, strokeWidth: 1, stroke: this.primaryColor(), fill: this.defaults.none }),
                    this.renderer.path({
                        d: a + ("L " + (Math.floor(b) + 0.5) + " " + (Math.floor(d) + 0.5) + " L 0.5 " + (Math.floor(d) + 0.5) + " Z"),
                        strokeWidth: 0,
                        stroke: this.defaults.none,
                        fill: c.colorLib.addOpacity(this.primaryColor(), 0.5),
                    }),
                ];
            };
            return b;
        })(Xb),
        Yb = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.getColumns = function () {
                return 1;
            };
            b.prototype.primaryColor = function () {
                var a = d.prototype.primaryColor.call(this),
                    b = this.currentOptions.shading;
                b && (a = this.addShading(a, b));
                return a;
            };
            b.prototype.getChartData = function (a, b) {
                var d = this.currentOptions,
                    e = c.jsLib.pick(d.radius, 3),
                    f = d.data,
                    g = f ? f[0] : 0;
                f = f[1];
                var k = c.jsLib.isNumber(f),
                    l = parseFloat(d.max);
                d = parseFloat(d.min);
                if (c.jsLib.isNumber(g) && !c.jsLib.isNaN(g)) {
                    if (!c.jsLib.isNumber(l) || c.jsLib.isNaN(l)) {
                        var n = k ? Math.max(g, f) : g;
                        l = 0 > n && !k ? 0 : n + (1.33 - 1) * Math.abs(k ? g - f : n);
                    }
                    if (!c.jsLib.isNumber(d) || c.jsLib.isNaN(d)) (n = k ? Math.min(g, f) : g), (d = 0 < n && !k ? 0 : n - (1.33 - 1) * Math.abs(k ? g - f : n));
                    if (!(l < d)) {
                        g = g > l ? l : g < d ? d : g;
                        k && (f = f > l ? l : f < d ? d : f);
                        n = k ? Math.min(g, f) : 0;
                        f = Math.round((a * ((k ? Math.max(g, f) : g) - d)) / (l - d));
                        l = k ? Math.round((a * Math.abs(n - d)) / (l - d)) : 0 <= d ? 0 : 0 >= l ? a : Math.round((a * Math.abs(d)) / (l - d));
                        g = k || 0 < g ? this.primaryColor() : this.secondaryColor();
                        k = [this.renderer.path({ d: this.rectPath(0.5, 0.5, a, b, [e, e, e, e]), stroke: this.defaults.none, fill: this.getColor(2) || "rgba(0,0,0,0.05)" })];
                        for (d = this.getColumns(); 5 > a / d && 1 < d; ) --d;
                        n = Math.ceil((a - 2 * (d - 1)) / d);
                        for (var p = Math.max(l, f) + 0.5, r = Math.min(l, f) - 0.5, q = 0; r < p; r += n + 2, q++) {
                            var t = r + n + 2 > p ? Math.round(p - r) : n,
                                u = e && 0 === Math.min(l, f) && 0 === q,
                                v = e && p > a - e && ((0 === q && 1 === d) || r + n > a - e);
                            u = [u ? e : 0, v ? e : 0, v ? e : 0, u ? e : 0];
                            2 < t && k.push(this.renderer.path({ d: this.rectPath(r, 0.5, t, b, u), stroke: "none", strokeWidth: 0, fill: g }));
                        }
                        k.push(this.renderer.path({ d: this.rectPath(0, 0, a, b, [e, e, e, e]), strokeWidth: 1, stroke: this.getColor(3) || this.defaults.none, fill: this.defaults.none }));
                        return { elements: k };
                    }
                }
            };
            return b;
        })(ea),
        Vd = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.primaryColor = function () {
                var a = this.getColor(0) || this.currentOptions.color || this.defaults.stroke,
                    b = this.currentOptions.shading;
                b && (a = this.addShading(a, b));
                return a;
            };
            b.prototype.getChartData = function (a, b) {
                var d = this.currentOptions.data || [],
                    e = parseFloat(this.currentOptions.max),
                    f = parseFloat(this.currentOptions.min),
                    g = N(d),
                    k = g[0],
                    l = g[1];
                g = g.slice(2);
                var n = this.currentOptions.color;
                if (Y(k) && Y(l) && (Y(e) || (e = 0 > k ? 0 : 1.33 * this.max(d)), Y(f) || (f = 0 < k ? 0 : 1.33 * this.min(d)), !(e < f || e < k || e < l || f > l || f > k))) {
                    var p = Math.max(1, (7 * b) / 24),
                        r = Math.floor(Math.max(1, (3 * b) / 24));
                    d = Math.floor((0 > k ? a : 0) + (a * (k - Math.max(f, 0) - Math.min(e, 0))) / (e - f));
                    var q = Math.floor((0 > k ? a : 0) + (a * (l - Math.max(f, 0) - Math.min(e, 0))) / (e - f)) + 0.5;
                    l = Math.ceil(p) - 0.5;
                    var t = Math.ceil(b - p) + 0.5,
                        u = l - r;
                    r = t + r;
                    var v = 0 > k ? Math.floor(a) : 0;
                    d = this.rectPath(0 > k ? d + 0.5 : v + 0.5, l, Math.abs(d - v), t - l, 20 > b ? [0, 0, 0, 0] : [0 === v ? 0 : 1, 0 === v ? 1 : 0, 0 === v ? 1 : 0, 0 === v ? 0 : 1]);
                    p = Math.min(p - 1, c.jsLib.pick(this.currentOptions.radius, c.jsLib.clamp(Math.floor(b / 10), 2, 5)));
                    l = Math.ceil(Math.min(5, Math.max(1, b / 20)));
                    q = "M " + q + " " + u + " L " + q + " " + r;
                    u = [this.renderer.path({ d: this.rectPath(0.5, 0.5, Math.floor(a), Math.floor(b), [p, p, p, p]), stroke: this.defaults.none, fill: this.getColor(g.length + 2) || "rgba(0,0,0,0.05)" })];
                    r = 1 < g.length && g[0] > g[1];
                    t = (1 < g.length && Y(g[0]) && Y(g[1]) && g[0] < g[1]) || (!g[1] && 0 < g[0]);
                    t = [t ? p : 0, t ? 0 : p, t ? 0 : p, t ? p : 0];
                    n = n || "#666666";
                    v = (1 - c.colorLib.brightness(n)) / (g.length + 1);
                    for (var w = g.length - 1; 0 <= w; w--) {
                        var x = g[w];
                        if (Y(x)) {
                            var y = this.getColor(w + 2) || c.colorLib.changeBrightness(n, (w + 1) * v);
                            if (!(x < f || x > e)) {
                                var z = (0 > k ? Math.floor(a) : 0) + 0.5;
                                x = Math.floor((0 > k ? a : 0) + (a * (x - Math.max(f, 0))) / (e - f)) + 0.5;
                                r && ((z = x), (x = Math.floor(a) + 0.5));
                                u.push(this.renderer.path({ d: this.rectPath(Math.min(x, z), 0.5, Math.abs(x - z), b, t), stroke: "none", fill: y }));
                            }
                        }
                    }
                    u = u.concat([
                        this.renderer.path({ d: d, strokeWidth: 0, stroke: this.defaults.none, fill: this.primaryColor() }),
                        this.renderer.path({ d: q, stroke: this.getColor(1) || "#262626", fill: this.defaults.none, "stroke-width": 2 * l, "stroke-linecap": "round" }),
                        this.renderer.path({ d: this.rectPath(0, 0, Math.floor(a), Math.floor(b), [p, p, p, p]), strokeWidth: 1, stroke: this.getColor(g.length + 3) || this.defaults.none, fill: this.defaults.none }),
                    ]);
                    return { elements: u };
                }
            };
            return b;
        })(ea),
        Wd = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.secondaryColor = function () {
                return this.getColor(1) || "red";
            };
            b.prototype.axisMarkerColor = function () {
                return this.getColor(2) || this.defaults.axisMarkerColor;
            };
            b.prototype.normalizeOptions = function (a) {
                var b = a.columnWidth;
                b && c.jsLib.isString(b) && (a.columnWidth = parseInt(b));
                return d.prototype.normalizeOptions.call(this, a);
            };
            b.prototype.getChartData = function (a, b) {
                var d = this,
                    e = this,
                    f = e.currentOptions,
                    g = f.data || [];
                if (2 > g.length) return { elements: [] };
                var k = [],
                    l = 1 * (g.length + 1),
                    n = parseFloat(f.max),
                    p = parseFloat(f.min),
                    r = f.axisMarker ? g.concat(f.axisMarker) : g,
                    q = c.jsLib.isNaN(n) ? e.max(r) : n,
                    t = c.jsLib.isNaN(p) ? Math.min(e.min(r), 0) : p,
                    u = e.primaryColor(),
                    v = e.secondaryColor(),
                    w = Math.ceil(b * (q === t ? 1 : q / (q - t))) - 0.5;
                n = f.columnWidth || (a - l) / g.length;
                var x = f.antialias ? n : Math.floor(n);
                l = Math.round((a - (f.antialias ? a : l + x * g.length)) / 2);
                var y = (f.columnWidth ? 0 : l) + 1 + 0.5;
                (f = e.currentOptions.axisMarker) && f.length && k.push(e.getAxisMarkerElement(q, t, a, b));
                var z = 4 > x ? void 0 : [1, 1, 0, 0],
                    E = 4 > x ? void 0 : [0, 0, 1, 1];
                c.jsLib.each(g, function (a) {
                    if (!e.isEmptyValue(a)) {
                        var c = Math.floor(q === t ? 0 : (b * a) / (q - t)) || 1;
                        k.push(e.renderer.path({ d: d.rectPath(y, 0 > c ? w : w - c, x, Math.abs(c), 0 > c ? E : z), strokeWidth: 0, fill: 0 <= a ? u : v }));
                    }
                    y += 1 + x;
                });
                return { elements: k };
            };
            return b;
        })(ea),
        Xd = (function (c) {
            function b() {
                return (null !== c && c.apply(this, arguments)) || this;
            }
            K(b, c);
            b.prototype.getColumns = function () {
                return 10;
            };
            return b;
        })(Yb),
        Yd = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.defaultSize = function () {
                return { width: 30, height: 30 };
            };
            b.prototype.addShading = function (a, b) {
                switch (parseInt(b)) {
                    case 1:
                        var c = {
                            linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },
                            stops: [
                                [0, "#fff", 0.66],
                                [0.4, "#fff", 0],
                                [0.6, "#fff", 0],
                                [1, "#fff", 0.66],
                            ],
                        };
                        break;
                    case 2:
                        c = {
                            radialGradient: { cx: 0.5, cy: 0.5, r: 0.5 },
                            stops: [
                                [0, "#fff", 0],
                                [0.8, "#fff", 0.2],
                                [1, "#fff", 0.8],
                            ],
                        };
                        break;
                    case 3:
                        c = {
                            linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },
                            stops: [
                                [0, "#000", 0.33],
                                [0.4, "#000", 0],
                                [0.6, "#000", 0],
                                [1, "#000", 0.33],
                            ],
                        };
                        break;
                    case 4:
                        c = {
                            radialGradient: { cx: 0.5, cy: 0.5, r: 0.5 },
                            stops: [
                                [0, "#000", 0],
                                [1, "#000", 0.25],
                            ],
                        };
                }
                return c || a;
            };
            b.prototype.getChartData = function (a, b) {
                var d = this,
                    e = this,
                    f = e.currentOptions,
                    g = f.data || [],
                    k = g.length;
                if (1 > k) return { elements: [] };
                var l = f.color,
                    n = "black" === l ? 0 : k,
                    p = (f.colors && f.colors.slice(1)) || (l ? c.jsLib.slice(c.colorLib.colorToPalette(l, { lightness: 1 }, k + n, 0), n) : e.palette),
                    r = a / 2,
                    q = b / 2,
                    t = Math.min(a, b) / 2,
                    u = c.jsLib.sum(c.jsLib.map(g, Math.abs));
                a = f.shading;
                var v = [],
                    w = 0,
                    x = 0,
                    y = Math.PI / 90;
                c.jsLib.each(g, function (a, b) {
                    a = Math.abs(a);
                    0 < a &&
                        ((a = (2 * Math.PI * a) / u),
                        (w += a),
                        1 < k
                            ? v.push(
                                  e.renderer.path({
                                      d:
                                          "M " +
                                          r +
                                          ", " +
                                          q +
                                          " \n\t\t\t\t\t\t\tL " +
                                          (r + t * Math.sin(w)) +
                                          ", " +
                                          (q - t * Math.cos(w)) +
                                          "\n\t\t\t\t\t\t\tA " +
                                          t +
                                          "," +
                                          t +
                                          " 0 " +
                                          (a > Math.PI ? 1 : 0) +
                                          " 0 " +
                                          (r + t * Math.sin(x)) +
                                          ", " +
                                          (q - t * Math.cos(x)) +
                                          " \n\t\t\t\t\t\t\tL " +
                                          r +
                                          ", " +
                                          q,
                                      strokeWidth: 0.5,
                                      stroke: e.getColor(0) || d.defaults.none,
                                      fill: p[b],
                                  })
                              )
                            : v.push(e.renderer.circle(r, q, t).attr({ strokeWidth: 0.5, stroke: e.getColor(0) || d.defaults.none, fill: p[b] })),
                        (x = y > w ? w : w - y));
                });
                a &&
                    ((g = Math.ceil(t)),
                    v.push(
                        e.renderer.path({
                            d: "M " + (r - g) + ", " + q + "\n\t\t\t\tA " + g + "," + g + " 0 1,0 " + (r + g) + "," + q + "\n\t\t\t\tA " + g + "," + g + " 0 1,0 " + (r - g) + "," + q,
                            strokeWidth: 0,
                            stroke: this.defaults.none,
                            fill: e.addShading("transparent", a),
                        })
                    ));
                return { elements: v };
            };
            return b;
        })(ea),
        Zd = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.render = function (a, b) {
                var c = this.currentOptions,
                    e = c.cellSize,
                    f = c.padding || this.defaults.padding,
                    g = c.data.length,
                    k = c.cells;
                k || (k = this.autoGrid(g));
                c.cells = k;
                e &&
                    k &&
                    (0 < f && 1 > f
                        ? ((c.width = (e[0] * k[0]) / (1 - f * (k[0] + 1))), (c.height = e[1] * k[1] + (k[1] + 1) * f * c.width))
                        : ((f = 1 < f ? f : 1), (c.width = e[0] * k[0] + (k[0] + 1) * f), (c.height = e[1] * k[1] + (k[1] + 1) * f)));
                d.prototype.render.call(this, a, b);
            };
            b.prototype.fixedSize = function () {
                var a = this.currentOptions;
                return a.cells && a.cellSize ? { width: a.width, height: a.height } : d.prototype.fixedSize.call(this);
            };
            b.prototype.autoGrid = function (a) {
                var b = Math.ceil(Math.sqrt(a)),
                    c = Math.floor(Math.sqrt(a));
                for (b * c < a && b++; 1.618 > (b + 1) / c && ((b + 1) * c - a < b / 2 || (b + 1) * (c - 1) > a); ) b++, (c - 1) * b >= a && c--;
                return [b, c];
            };
            b.prototype.normalizeXValue = function (a, b, d) {
                var e = a[b];
                e &&
                    c.jsLib.isString(e) &&
                    ((e = c.jsLib.map(e.split("x"), function (a) {
                        return d(a);
                    })),
                    Y(e[0]) && Y(e[1]) ? (a[b] = e) : Y(e[0]) ? (a[b] = [e[0], e[0]]) : delete a[b]);
            };
            b.prototype.normalizeOptions = function (a) {
                var b = a.colorsNumber,
                    h = a.padding;
                h && c.jsLib.isString(h) && (a.padding = parseFloat(h));
                b && c.jsLib.isString(b) && (a.colorsNumber = parseInt(b));
                this.normalizeXValue(a, "cells", parseInt);
                this.normalizeXValue(a, "cellSize", parseFloat);
                return d.prototype.normalizeOptions.call(this, a);
            };
            b.prototype.getChartData = function (a, b) {
                var d = this.currentOptions,
                    e = this.currentOptions.data || [],
                    f = d.cells,
                    g = d.cellSize,
                    k = d.colors || [],
                    l = k && 3 === k.length;
                if (!e.length) return { elements: [] };
                var n = f[1];
                f = f[0];
                var p = this.padding() || 1,
                    r = g ? g[0] : (a - p * (f + 1)) / f,
                    q = g ? g[1] : (b - p * (n + 1)) / n;
                g = d.antialias ? r : Math.floor(r);
                r = d.antialias ? q : Math.floor(q);
                var t = parseFloat(this.currentOptions.max),
                    u = parseFloat(this.currentOptions.min);
                q = this.max(e);
                var v = this.min(e);
                t = c.jsLib.isNaN(t) ? q : t;
                u = c.jsLib.isNaN(u) ? v : u;
                var w = Math.max(Math.max(t, -v), 0),
                    x = Math.max(u, 0),
                    y = Math.min(0, t),
                    z = Math.min(0, Math.min(u, -q));
                if (d.snapToZero || q === v) y = x = 0;
                d = function (a) {
                    return 0 <= a ? c.colorLib.tween(l ? k[1] : "white", l ? k[2] : "#4285f4", (100 * (a - x)) / (w - x || 1)) : c.colorLib.tween(l ? k[1] : "white", l ? k[0] : "#fe4c14", (100 * (a - y)) / (z - y || 1));
                };
                q = [];
                a = Math.round((a - (g * f + p * (f + 1))) / 2);
                v = 0.5 + p + Math.round((b - (r * n + p * (n + 1))) / 2);
                for (t = u = 0; t < n; t++) {
                    b = 0.5 + p + a;
                    for (var B = 0; B < f; B++) {
                        var D = e[u];
                        this.isEmptyValue(D) || q.push(this.renderer.path({ d: this.rectPath(b, v, g, r, [1.5, 1.5, 1.5, 1.5]), strokeWidth: 0, stroke: this.defaults.none, fill: c.jsLib.def(D) ? d(D) : this.defaults.none }));
                        b += p + g;
                        u++;
                    }
                    v += p + r;
                }
                return { elements: q };
            };
            return b;
        })(ea),
        $d = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.defaultSize = function () {
                return { width: 80, height: void 0 };
            };
            b.prototype.stroke = function () {
                return this.getColor(0) || this.currentOptions.color || this.defaults.stroke;
            };
            b.prototype.parseData = function (a) {
                return c.jsLib.isString(a) ? a.split(this.defaults.dataDelimiter) : a;
            };
            b.prototype.normalizeOptions = function (a) {
                var b = a.interval;
                b && c.jsLib.isString(b) && (a.interval = parseFloat(b));
                return d.prototype.normalizeOptions.call(this, a);
            };
            b.prototype.getChartData = function (a, b) {
                var d = this,
                    e = d.currentOptions,
                    f = parseFloat(e.min || 0) || 0,
                    g = parseFloat(e.max || 0) || 0,
                    k = "bottom" === e.orientation,
                    l = e.interval,
                    n = e.data || [],
                    p = !!n.length;
                if (n || g - f) {
                    if (!n.length) {
                        var r = g - f;
                        if (l && l < r) {
                            r %= l;
                            var q = f + r;
                            n = [f];
                            for (r && n.push(q); q < g; ) (q += l), n.push(q);
                        } else n = [f, ((g + f) / 2).toFixed(g % 1 ? Math.min(2, ("" + (g % 1)).length - 2) : 0), g];
                    }
                    var t = n.length - 1,
                        u = e.value,
                        v = function (a) {
                            return u ? u.replace("%value", a) : "" + a;
                        },
                        w = b ? Math.ceil(Math.max(0, (b - 18) / 2)) : 0,
                        x = Math.floor(a / t),
                        y = 0,
                        z = 0,
                        B = [
                            this.renderer.path({
                                d:
                                    "M 0 " +
                                    (k ? w + 3 : (b || 18) - w - 3) +
                                    " l 0 " +
                                    1.5 * (k ? -1 : 1) +
                                    " a 1.5, 1.5 0 0 " +
                                    ((k ? 1 : 0) + " 1.5, " + (k ? -1.5 : 1.5)) +
                                    (" l " + (a - 3) + " 0 a 1.5, 1.5 0 0 ") +
                                    ((k ? 1 : 0) + " 1.5, " + (k ? 1.5 : -1.5)) +
                                    (" l 0 " + 1.5 * (k ? 1 : -1)),
                                strokeWidth: 1,
                                stroke: d.getColor(1) || d.stroke(),
                                fill: this.defaults.none,
                            }),
                        ];
                    a = function (a) {
                        0 < a && a < t && B.push(D.renderer.path({ d: "M " + y + " " + (k ? w : (b || 18) - w - 3) + " l 0 3", strokeWidth: 1, stroke: d.getColor(1) || d.stroke(), fill: D.defaults.none }));
                        var f = v("" + n[a]),
                            g = { fontFamily: "tahoma, geneva, sans-serif", fontSize: 12, fontWeight: "normal", fontStyle: "normal" },
                            h = c.textLib.measureText(f, g, {}),
                            l = y - h * (a === t ? 1 : 0 === a ? 0 : 0.5),
                            m = z > l && a !== t;
                        if (z > l && a === t) {
                            var q = p || 1 === t ? 0.3 : 0;
                            B.slice(B.length - 2).forEach(function (a) {
                                return a.attr({ opacity: q });
                            });
                        }
                        g.text = f;
                        g.fill = d.stroke();
                        g.x = l;
                        g.y = (k ? 3 : 0) + w + 14 - 2;
                        m ? (g.opacity = 0.3) : (g.zIndex = 1);
                        e.rotate && 1 === (Math.abs(e.rotate) / 90) % 2 && (g.rotate = 0.1);
                        (m && !p && 1 !== t) || B.push(D.renderer.element("text", g));
                        y += x;
                        z = m ? z : l + h;
                    };
                    var D = this;
                    for (f = 0; f <= t; f++) a(f);
                    a = { elements: B };
                    b || (a.size = { height: 18 });
                    return a;
                }
            };
            b.prototype.correctSize = function (a, b) {
                return 0 < a;
            };
            return b;
        })(ea),
        ae = (function (d) {
            function b() {
                return (null !== d && d.apply(this, arguments)) || this;
            }
            K(b, d);
            b.prototype.addShading = function (a, b) {
                return d.prototype.addShading.call(this, a, "1" === b ? "5" : b);
            };
            b.prototype.getChartData = function (a, b) {
                var d = this,
                    e = this,
                    f = e.currentOptions,
                    g = f.data || [],
                    k = g.length,
                    l = c.jsLib.pick(f.radius, 3);
                if (2 > k) return { elements: [] };
                var n = f.color,
                    p = "black" === n ? 0 : k,
                    r = (f.colors && f.colors.slice(1)) || (n ? c.jsLib.slice(c.colorLib.colorToPalette(n, { lightness: 1 }, k + p, 0), p) : e.palette),
                    q = f.shading,
                    t = c.jsLib.sum(c.jsLib.map(g, Math.abs)),
                    u = [],
                    v = 0.5;
                c.jsLib.each(g, function (c, f) {
                    c = Math.abs(c);
                    0 < c &&
                        ((c = Math.round((a * c) / t)),
                        u.push(
                            e.renderer.path({
                                d: d.rectPath(v, 0.5, Math.round((f === g.length - 1 ? a : v + c) - v), b, [0 === f ? l : 0, f === g.length - 1 ? l : 0, f === g.length - 1 ? l : 0, 0 === f ? l : 0]),
                                strokeWidth: 0,
                                stroke: d.defaults.none,
                                fill: q ? d.addShading(r[f], q) : r[f],
                            })
                        ),
                        (v += c));
                });
                u.push(this.renderer.path({ d: this.rectPath(0, 0, a, b, [l, l, l, l]), strokeWidth: 1, stroke: this.getColor(0) || this.defaults.none, fill: this.defaults.none }));
                return { elements: u };
            };
            return b;
        })(ea),
        Ea = { sparkline: Xb, arealine: Ud, bar: Yb, bullet: Vd, column: Wd, progress: Xd, pie: Yd, heatmap: Zd, scale: $d, barfull: ae },
        be = (function (d) {
            function b(a, b) {
                var e = this,
                    m = b.data;
                e = function () {
                    return (m && m.length && (1 === Ua(m).length ? Ea.bar : Ea.sparkline)) || Ea.sparkline;
                };
                if (b.type) {
                    var f = void 0;
                    return (f = "chart" === b.type ? e() : Ea[b.type.toLowerCase()] || e()) && new f(a, c.jsLib.omit(b, ["type"]));
                }
                return (e = d.call(this, a, b) || this);
            }
            K(b, d);
            return b;
        })(ea),
        Wc = (function () {
            function d(b, a) {
                this.currentOptions = {};
                this.renderer = b;
                this.options(a);
            }
            d.prototype.options = function (b, a) {
                var d = this.currentOptions,
                    h = b.size;
                c.jsLib.def(h) && c.jsLib.isString(h) && -1 < h.indexOf("x") && ((h = h.split("x")), (b.width = b.width || h[0]), (b.height = b.height || h[1]), delete b.size);
                c.jsLib.extend(d, b);
                this.nanoChart && this.nanoChart.updateOptions(b);
                this.render(a);
            };
            d.prototype.render = function (b) {
                var a = this,
                    c = a.currentOptions,
                    d = function (b) {
                        a.skipSetSize = !0;
                        b && b.height && a.rootPanel && a.rootPanel.attr({ height: b.height });
                        b && b.width && a.rootPanel && a.rootPanel.attr({ width: b.width });
                    };
                if (a.rootPanel) a.nanoChart.render(a.getRootSize(), b, d);
                else {
                    a.nanoChart = new be(a.renderer.renderer, c);
                    var m = a.nanoChart.defaultSize(),
                        f = a.nanoChart.fixedSize();
                    a.rootPanel = a.renderer.panel({
                        width: c.width || c.size || f.width || m.width,
                        height: c.height || c.size || f.height || m.height,
                        margin: c.margin,
                        xAlignment: c.align || "left",
                        yAlignment: c.verticalAlign || "top",
                    });
                    a.nanoChart.render(a.getRootSize(), b, d);
                    a.nanoChart.add(a.rootPanel);
                }
            };
            d.prototype.add = function (b) {
                var a = this,
                    c = this.rootPanel;
                c.add(b);
                c.on("setSize", function () {
                    !0 !== a.skipSetSize && a.nanoChart.render(a.getRootSize());
                    a.skipSetSize = !1;
                });
                c.on("pixelCorrection", function () {
                    a.nanoChart.pixelCorrection(c);
                });
                this.nanoChart.pixelCorrection(c);
                return c;
            };
            d.prototype.getRootSize = function () {
                var b = this.rootPanel;
                return { width: b.width.px, height: b.height.px };
            };
            d.prototype.destroy = function () {
                this.nanoChart.destroy();
                this.rootPanel.destroy();
            };
            return d;
        })(),
        Vc = "sparkline arealine bar bullet column progress pie heatmap scale chart barfull".split(" ");
    (function () {
        c.registerTag("arcShape", function (c, b) {
            return c.createElement(Td, "g", b);
        });
        Tc();
    })();
    c.moduleLoader.registerModule("modules/types") &&
        (c.registerSeriesType("annotation", ud),
        c.registerPanes(zd),
        c.registerSeriesType("treemap", Ad),
        c.registerSeriesType("funnel", ab),
        c.registerSeriesType("cone", ab),
        c.registerSeriesType("pyramid", ab),
        c.registerSeriesType("heatmap", Ob),
        c.registerSeriesType("calendar", Fd),
        c.registerSeriesType("pie", Gd),
        c.registerSeriesType("venn", Hd),
        (c.chartOptionsAppliers.navigator = Hc),
        Jc(c.chartOptionsAppliers, c.chartOptionsModifiers),
        Uc(),
        (c.chartInitializers.types = Xc));
})(JSC.internal._modules.types.export);
